lin 3 лет назад
Родитель
Сommit
c7b5432005

+ 1 - 0
src/main/java/com/zoniot/ccrc/commom/model/ResultStatus.java

@@ -21,6 +21,7 @@ public enum ResultStatus {
     ACCOUNT_DISABLED_ERROR(-404, "账户已被禁用"),
     ACCESS_DENIED_ERROR(-405, "权限不足,无法访问"),
     ACCESS_UNVERIFIED_ERROR(-406, "身份未认证,请重新登录"),
+    ACCOUNT_ERROR(-407, "您输入的手机号或密码错误,请重新输入。"),
     APPLICATION_ERROR(-900, "应用异常"),
     SERVICE_ERROR(-901, "业务逻辑验证错误"),
     CLEARING_DATA_QUERY_NO_CUSTOMER(-602,"查询客户不存在"),

+ 15 - 1
src/main/java/com/zoniot/ccrc/controller/UserController.java

@@ -48,6 +48,20 @@ public class UserController {
     private SiteUserMapper siteUserMapper;
 
 
+
+    @PostMapping("mobileLogin")
+    @ApiOperation(value = "手机号码登录")
+    public AjaxMessage mobileLogin(
+            @ApiParam(value = "手机号码", required = true, defaultValue = "13265537610") @RequestParam(required = true) String mobile,
+            @ApiParam(value = "密码", required = true, defaultValue = "123456") @RequestParam(required = true) String password,
+            HttpServletRequest httpServletRequest
+    ) {
+
+        //这里只写控制层为了提供swagger api, 具体实现逻辑在spring security
+        return new AjaxMessage<>(ResultStatus.OK);
+    }
+
+
     @PostMapping("smsCodeLogin")
     @ApiOperation(value = "手机验证码登录")
     public AjaxMessage smsCodeLogin(
@@ -56,7 +70,7 @@ public class UserController {
             HttpServletRequest httpServletRequest
     ) {
 
-        //这里只写控制层为了提供swagger api, 具体实现逻辑在spring security(com.bz.smart_city.commom.security.smsCode)
+        //这里只写控制层为了提供swagger api, 具体实现逻辑在spring security
         return new AjaxMessage<>(ResultStatus.OK);
     }
 

+ 7 - 4
src/main/java/com/zoniot/ccrc/controller/system/UserManageController.java

@@ -77,9 +77,11 @@ public class UserManageController {
             @ApiParam(value = "真实姓名", required = false) @RequestParam(required = false) String name,
             @ApiParam(value = "手机号码", required = true) @RequestParam(required = true) String mobilePhone,
             @ApiParam(value = "角色id", required = false) @RequestParam(required = false) Integer roleId,
-            @ApiParam(value = "机构id", required = false) @RequestParam(required = false) Integer orgId
+            @ApiParam(value = "机构id", required = false) @RequestParam(required = false) Integer orgId,
+            @ApiParam(value = "密码", required = false) @RequestParam(required = false) String password,
+            @ApiParam(value = "是否启用 0:不启用 1:启用", required = false) @RequestParam(required = false) Integer enable
     ) {
-        userService.addUser(StringUtils.trim(username), StringUtils.trim(name), StringUtils.trim(mobilePhone), roleId,orgId);
+        userService.addUser(StringUtils.trim(username), StringUtils.trim(name), StringUtils.trim(mobilePhone), roleId,orgId,password,enable);
         return new AjaxMessage(ResultStatus.OK);
     }
 
@@ -91,10 +93,11 @@ public class UserManageController {
             @ApiParam(value = "真实姓名", required = false) @RequestParam(required = false) String name,
             @ApiParam(value = "手机号码", required = true) @RequestParam(required = true) String mobilePhone,
             @ApiParam(value = "角色id", required = false) @RequestParam(required = false) Integer roleId,
-            @ApiParam(value = "机构id", required = false) @RequestParam(required = false) Integer orgId
+            @ApiParam(value = "机构id", required = false) @RequestParam(required = false) Integer orgId,
+            @ApiParam(value = "是否重置密码 0:否 1:是", required = false) @RequestParam(required = false) Integer reset
     ) {
 
-        userService.editUser(id, StringUtils.trim(name), StringUtils.trim(mobilePhone), roleId,orgId);
+        userService.editUser(id, StringUtils.trim(name), StringUtils.trim(mobilePhone), roleId,orgId,reset);
         return new AjaxMessage(ResultStatus.OK);
     }
 

+ 2 - 0
src/main/java/com/zoniot/ccrc/dao/OrganizationMapper.java

@@ -42,4 +42,6 @@ public interface OrganizationMapper {
     List<Integer> findCommunityIds(@Param("orgId") Integer orgId);
 
     Integer findSiteId(@Param("customerId") Integer customerId);
+
+    Organization findById(@Param("organId") Integer organId);
 }

+ 2 - 0
src/main/java/com/zoniot/ccrc/dto/LoginUser.java

@@ -41,6 +41,8 @@ public class LoginUser extends User implements UserDetails {
     //组织ID
     private  Integer orgId;
 
+    private  String orgName;
+
 
     //是否是站点管理员
     private Integer isSiteAdmin = 0;

+ 4 - 3
src/main/java/com/zoniot/ccrc/security/SecurityHandlerConfig.java

@@ -131,10 +131,11 @@ public class SecurityHandlerConfig {
                                                 AuthenticationException exception) throws IOException, ServletException {
                 response.setContentType("application/json;charset=UTF-8");
                 ObjectMapper objectMapper = new ObjectMapper();
-                if (exception instanceof BadCredentialsException ||
-                        exception instanceof UsernameNotFoundException) {
+                if (exception instanceof BadCredentialsException ) {
+                    ajaxMessage.setMsg(ResultStatus.ACCOUNT_ERROR);
+                } else if (exception instanceof BadCredentialsException) {
                     ajaxMessage.setMsg(ResultStatus.USERNAME_NOT_FOUND_ERROR);
-                } else if (exception instanceof LockedException) {
+                }else if (exception instanceof LockedException) {
                     ajaxMessage.setMsg(ResultStatus.ACCOUNT_LOCKED_ERROR);
                 } else if (exception instanceof CredentialsExpiredException) {
                     ajaxMessage.setMsg(ResultStatus.CREDENTIALS_EXPIRED_ERROR);

+ 2 - 2
src/main/java/com/zoniot/ccrc/security/mobile/MobileLoginAuthenticationProvider.java

@@ -42,8 +42,8 @@ public class MobileLoginAuthenticationProvider implements AuthenticationProvider
 
     @Override
     public boolean supports(Class<?> authentication) {
-        //return MobileLoginAuthenticationToken.class.isAssignableFrom(authentication);
-        return false;
+        return MobileLoginAuthenticationToken.class.isAssignableFrom(authentication);
+        //return false;
     }
 
     public void setPasswordEncoder(PasswordEncoder passwordEncoder) {

+ 9 - 6
src/main/java/com/zoniot/ccrc/security/mobile/MobileLoginUserDetailService.java

@@ -1,14 +1,12 @@
 package com.zoniot.ccrc.security.mobile;
 
 import com.zoniot.ccrc.commom.utils.RedisUtil;
+import com.zoniot.ccrc.dao.OrganizationMapper;
 import com.zoniot.ccrc.dao.SiteMapper;
 import com.zoniot.ccrc.dao.SiteUserMapper;
 import com.zoniot.ccrc.dao.UserMapper;
 import com.zoniot.ccrc.dto.LoginUser;
-import com.zoniot.ccrc.entity.Permission;
-import com.zoniot.ccrc.entity.Site;
-import com.zoniot.ccrc.entity.SiteUser;
-import com.zoniot.ccrc.entity.User;
+import com.zoniot.ccrc.entity.*;
 import com.zoniot.ccrc.service.IotService;
 import com.zoniot.ccrc.service.PermissionService;
 import org.springframework.beans.BeanUtils;
@@ -36,12 +34,14 @@ public class MobileLoginUserDetailService implements UserDetailsService {
     private RedisUtil redisUtil;
     @Autowired
     private IotService iotService;
+    @Autowired
+    private OrganizationMapper organizationMapper;
 
     @Override
     public UserDetails loadUserByUsername(String mobile) throws UsernameNotFoundException {
         User user = userMapper.findUserByMobile(mobile);
         if (user == null) {
-            throw new UsernameNotFoundException("该用户不存在");
+            throw new UsernameNotFoundException("您的手机号尚未注册,请注册后进行登录。");
         }
 
         //判断是否禁用
@@ -72,10 +72,13 @@ public class MobileLoginUserDetailService implements UserDetailsService {
                 loginUser.setPermissionList(permissionService.getPermissionByUserId(user.getId(), site.getId()));
             }
 
-
+            Organization org = organizationMapper.findById(siteUser.getOrganId());
             loginUser.setType(siteUser.getType());
             loginUser.setRoleType(siteUser.getRoleType());
             loginUser.setOrgId(siteUser.getOrganId());
+            if (org != null) {
+                loginUser.setOrgName(org.getName());
+            }
             loginUser.setSiteId(site.getId());
             loginUser.setIsSiteAdmin(siteUser.getIsAdmin());//站点管理员
             loginUser.setSite(site);

+ 2 - 1
src/main/java/com/zoniot/ccrc/security/smsCode/SmsCodeLoginAuthenticationProvider.java

@@ -36,7 +36,8 @@ public class SmsCodeLoginAuthenticationProvider implements AuthenticationProvide
 
     @Override
     public boolean supports(Class<?> authentication) {
-        return MobileLoginAuthenticationToken.class.isAssignableFrom(authentication);
+        //return MobileLoginAuthenticationToken.class.isAssignableFrom(authentication);
+        return false;
     }
 
     public void setPasswordEncoder(PasswordEncoder passwordEncoder) {

+ 2 - 2
src/main/java/com/zoniot/ccrc/service/UserService.java

@@ -24,12 +24,12 @@ public interface UserService {
     /**
      * 添加用户
      */
-    void addUser(String username, String name, String mobilePhone, Integer roleId, Integer orgId);
+    void addUser(String username, String name, String mobilePhone, Integer roleId, Integer orgId, String password, Integer enable);
 
     /**
      * 编辑用户
      */
-    void editUser(Integer id, String name, String mobilePhone, Integer roleId, Integer orgId);
+    void editUser(Integer id, String name, String mobilePhone, Integer roleId, Integer orgId, Integer reset);
 
     /**
      * 启用/禁用用户 更新状态

+ 7 - 3
src/main/java/com/zoniot/ccrc/service/impl/TokenServiceJWTImpl.java

@@ -9,6 +9,7 @@ import com.zoniot.ccrc.service.TokenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
@@ -26,7 +27,8 @@ public class TokenServiceJWTImpl implements TokenService {
     private JwtTokenUtil jwtTokenUtil;
     @Value("360000")
     private Long expiration;
-
+    @Autowired
+    private RedisTemplate redisTemplate;
 
     @Override
     public String saveToken(LoginUser loginUser) {
@@ -35,15 +37,17 @@ public class TokenServiceJWTImpl implements TokenService {
         }
 
         //保存redis
-        String key = "loginToken:" + loginUser.getLoginToken();
+        String tokenKey = "loginToken:" + loginUser.getLoginToken();
         loginUser.setExpireTime(LocalDateTime.now().plusSeconds(expiration));
-        redisUtil.setExpire(key.getBytes(), ByteArrayUtils.objectToBytes(loginUser).get(), expiration);
+        redisUtil.setExpire(tokenKey.getBytes(), ByteArrayUtils.objectToBytes(loginUser).get(), expiration);
 
        /* if (loginUser.getLoginToken() != null) {
             String iotTokenKey = "iotToken:" + loginUser.getLoginToken();
             redisUtil.setExpire(iotTokenKey.getBytes(), loginUser.getIotToken().getBytes(), expiration);
         }*/
 
+        //String userKey = "loginUser:" + loginUser.getId();
+        //redisTemplate.opsForSet().add(userKey,tokenKey);
 
         return loginUser.getLoginToken();
     }

+ 13 - 5
src/main/java/com/zoniot/ccrc/service/impl/UserServiceImpl.java

@@ -143,7 +143,7 @@ public class UserServiceImpl implements UserService {
 
     @Override
     @Transactional
-    public void addUser(String username, String name, String mobilePhone, Integer roleId, Integer orgId) {
+    public void addUser(String username, String name, String mobilePhone, Integer roleId, Integer orgId, String password, Integer enable) {
         log.info("begin addUser username={},name={},roleId={},mobilePhone={}", username,name,roleId,mobilePhone);
         LoginUser loginUser = UserUtil.getCurrentUser();
         /*User u = userMapper.findUserByUsername(username);
@@ -181,11 +181,11 @@ public class UserServiceImpl implements UserService {
 
 
         }else {
-
+            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
             //添加用户
             User user = new User();
             user.setUsername(username);
-            //user.setPassword(encode);
+            user.setPassword(encoder.encode(password));
             user.setMobilePhone(mobilePhone);
             user.setName(name);
             user.setStatus(1);
@@ -195,6 +195,7 @@ public class UserServiceImpl implements UserService {
             user.setUpdateBy(UserUtil.getCurrentUser().getUsername());
             user.setUpdateDate(LocalDateTime.now());
             user.setIsSuperAdmin(0);
+            user.setEnable(enable);
             //user.setType(loginUser.getType() == 1 ? 2 : 3);
             userMapper.insertSelective(user);
             u = user;
@@ -234,7 +235,7 @@ public class UserServiceImpl implements UserService {
 
     @Override
     @Transactional
-    public void editUser(Integer userId, String name, String mobilePhone, Integer roleId, Integer orgId) {
+    public void editUser(Integer userId, String name, String mobilePhone, Integer roleId, Integer orgId, Integer reset) {
         log.info("begin addUser userId=" + userId + ",name=" + name + ",roleId=" + roleId + ",mobilePhone=" + mobilePhone);
         LoginUser loginUser = UserUtil.getCurrentUser();
         /*int mobilePhoneUniqueResult = userMapper.findUserByMobilePhoneUnique(userId, mobilePhone);
@@ -254,12 +255,19 @@ public class UserServiceImpl implements UserService {
         }
         User editUser = userMapper.findUserById(userId);
 
+
         User user = new User();
         user.setId(userId);
         user.setName(name);
         user.setMobilePhone(mobilePhone);
         user.setUpdateBy(loginUser.getUsername());
         user.setUpdateDate(LocalDateTime.now());
+
+        if(reset == 1){
+            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
+            user.setPassword(encoder.encode("123456"));
+        }
+
         userMapper.update(user);
 
         //更新用户角色关系
@@ -385,7 +393,7 @@ public class UserServiceImpl implements UserService {
         User user = UserUtil.getCurrentUser();
         BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
         if (!encoder.matches(oldPassword, user.getPassword())) {
-            throw new ServiceException("密码不正确");
+            throw new ServiceException("您输入的原密码有误,请重新输入");
         }
         String str = encoder.encode(newPassword);
 

+ 1 - 1
src/main/resources/mapper/DeviceMapper.xml

@@ -664,7 +664,7 @@
                  left join sc_organization so on(so.id = sc.org_id)
                  left join sc_device_type sdt on(sdt.id = sd.device_type_id)
                  left join sc_device_manufacturer sdm on(sdm.id = sd.manufacturer_id)
-                 left join sc_grid_management sgm on(sgm.device_id = sd.id)
+                 left join sc_grid_management sgm on(sgm.device_id = sd.id and sgm.status = 1)
                  left join sc_user su on(su.id = sgm.user_id)
     where sd.status = 1 and sd.id = #{deviceId}
   </select>

+ 4 - 0
src/main/resources/mapper/OrganizationMapper.xml

@@ -284,5 +284,9 @@
     <select id="findSiteId" resultType="java.lang.Integer">
         select site_id from sc_customer where status = 1 and id = #{customerId}
     </select>
+
+    <select id="findById" resultMap="BaseResultMap">
+        select * from sc_organization where id = #{organId}
+    </select>
 </mapper>