Selaa lähdekoodia

用户新增或者修改时,增加对角色的校验和与角色的映射关系
更新密码或者重置密码时,清除redis里用户token的信息

v_HuilingDeng 4 vuotta sitten
vanhempi
commit
6332357506

+ 1 - 3
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/controller/console/UserManagerController.java

@@ -52,9 +52,7 @@ public class UserManagerController {
     @PostMapping("updateUser")
     public BaseResponse updateUser(@Validated @RequestBody UpdateUserReq updateUserReq) throws Exception{
         //修改用户
-        userManagerService.updateUser(updateUserReq);
-        //包装出参
-        return BaseResponse.create();
+        return userManagerService.updateUser(updateUserReq);
     }
 
     @ApiOperation("查询单个用户信息")

+ 1 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/UserManagerService.java

@@ -38,7 +38,7 @@ public interface UserManagerService {
      * @param updateUserReq
      * @throws Exception
      */
-    void updateUser(UpdateUserReq updateUserReq) throws Exception;
+    BaseResponse updateUser(UpdateUserReq updateUserReq) throws Exception;
 
     /**
      * 根据id查询单个用户信息

+ 70 - 3
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/UserManagerServiceImpl.java

@@ -2,11 +2,13 @@ package com.abi.qms.platform.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.abi.qms.platform.dao.entity.UserInfo;
+import com.abi.qms.platform.dao.entity.UserMappingInfoRole;
 import com.abi.qms.platform.dao.entity.UserRole;
 import com.abi.qms.platform.dao.enums.BaseFinal;
 import com.abi.qms.platform.dao.enums.ErrorCodeEnum;
 import com.abi.qms.platform.dao.enums.RedisKey;
 import com.abi.qms.platform.dao.mapper.UserInfoMapper;
+import com.abi.qms.platform.dao.mapper.UserMappingInfoRoleMapper;
 import com.abi.qms.platform.dao.mapper.UserRoleMapper;
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetUserInfoRes;
@@ -53,6 +55,8 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
     @Resource
     private RedisUtils redisUtil;
 
+    @Autowired
+    private UserMappingInfoRoleMapper userMappingInfoRoleMapper;
 
     @Override
     public BaseResponse login(LoginReq req) {
@@ -101,6 +105,13 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
     public BaseResponse createUser(CreateUserReq createUserReq) {
         UserInfo userInfo = new UserInfo();
         BeanUtils.copyProperties(createUserReq, userInfo);
+        QueryWrapper<UserRole> roleQueryWrapper = new QueryWrapper<>();
+        roleQueryWrapper.eq("role_code", userInfo.getRoleCode());
+        roleQueryWrapper.eq("is_delete", 0);
+        UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
+        if (Objects.isNull(userRole)) {
+            return BaseResponse.createFail(null, ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getCode(), ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getMessage());
+        }
         if (lambdaQuery().eq(UserInfo::getEmployeeNo, userInfo.getEmployeeNo().trim()).count() > 0) {
             log.info("工号" + userInfo.getEmployeeNo() + "已存在,请勿重复创建。");
             return BaseResponse.create(null, ErrorCodeEnum.EMPLOYEE_NO_DUPLICATE.getCode(), "工号" + userInfo.getEmployeeNo() + "已存在,请勿重复创建。");
@@ -113,7 +124,22 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
         userInfo.setCreateBy(userInfo1.getId());
 //        userInfo.setCreateTime(LocalDateTime.now());
         save(userInfo);
-
+        //添加用户和角色的映射关系
+        QueryWrapper<UserMappingInfoRole> qwUR = new QueryWrapper<>();
+        qwUR.eq("user_id", userInfo.getId());
+        qwUR.eq("is_delete", 0);
+        UserMappingInfoRole userMappingInfoRole = userMappingInfoRoleMapper.selectOne(qwUR);
+        if(Objects.nonNull(userMappingInfoRole)){
+            userMappingInfoRole.setRoleCode(userRole.getRoleCode());
+            userMappingInfoRole.setRoleName(userRole.getRoleName());
+            userMappingInfoRoleMapper.updateById(userMappingInfoRole);
+        }else{
+            userMappingInfoRole = new UserMappingInfoRole();
+            userMappingInfoRole.setUserId(userInfo.getId());
+            userMappingInfoRole.setRoleCode(userRole.getRoleCode());
+            userMappingInfoRole.setRoleName(userRole.getRoleName());
+            userMappingInfoRoleMapper.insert(userMappingInfoRole);
+        }
         return BaseResponse.create();
     }
 
@@ -122,10 +148,34 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
      **/
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateUser(UpdateUserReq updateUserReq) {
+    public BaseResponse updateUser(UpdateUserReq updateUserReq) {
         UserInfo userInfo = new UserInfo();
         BeanUtils.copyProperties(updateUserReq, userInfo);
+        QueryWrapper<UserRole> roleQueryWrapper = new QueryWrapper<>();
+        roleQueryWrapper.eq("role_code", userInfo.getRoleCode());
+        roleQueryWrapper.eq("is_delete", 0);
+        UserRole userRole = userRoleMapper.selectOne(roleQueryWrapper);
+        if (Objects.isNull(userRole)) {
+            return BaseResponse.createFail(null, ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getCode(), ErrorCodeEnum.USER_ROLE_NOT_EXISTED.getMessage());
+        }
         userInfoMapper.updateById(userInfo);
+        //添加用户和角色的映射关系
+        QueryWrapper<UserMappingInfoRole> qwUR = new QueryWrapper<>();
+        qwUR.eq("user_id", userInfo.getId());
+        qwUR.eq("is_delete", 0);
+        UserMappingInfoRole userMappingInfoRole = userMappingInfoRoleMapper.selectOne(qwUR);
+        if(Objects.nonNull(userMappingInfoRole)){
+            userMappingInfoRole.setRoleCode(userRole.getRoleCode());
+            userMappingInfoRole.setRoleName(userRole.getRoleName());
+            userMappingInfoRoleMapper.updateById(userMappingInfoRole);
+        }else{
+            userMappingInfoRole = new UserMappingInfoRole();
+            userMappingInfoRole.setUserId(userInfo.getId());
+            userMappingInfoRole.setRoleCode(userRole.getRoleCode());
+            userMappingInfoRole.setRoleName(userRole.getRoleName());
+            userMappingInfoRoleMapper.insert(userMappingInfoRole);
+        }
+        return BaseResponse.create();
     }
 
     /**
@@ -179,7 +229,15 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
             userInfo.setPassword(req.getPassword());
             userInfoMapper.updateById(userInfo);
             UserUtil.releaseUser();
-
+            //删除redis用户token信息
+            if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
+                //有key,value为null的情况;就把key删掉
+                Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
+                if (Objects.nonNull(loginkey)) {
+                    redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
+                }
+                redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
+            }
         }
     }
 
@@ -190,6 +248,15 @@ public class UserManagerServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo
         if (oldPassword.equals(req.getOldPassword())) {
             userInfo.setPassword(req.getNewPassword());
             userInfoMapper.updateById(userInfo);
+            //删除redis用户token信息
+            if (redisUtil.exists(RedisKey.USER_ID_TOKEN + ":" + req.getId())) {
+                //有key,value为null的情况;就把key删掉
+                Object loginkey = redisUtil.get(RedisKey.USER_ID_TOKEN + ":" + req.getId());
+                if (Objects.nonNull(loginkey)) {
+                    redisUtil.del(RedisKey.USER_TOKEN_ID + ":" + loginkey.toString());
+                }
+                redisUtil.del(RedisKey.USER_ID_TOKEN + ":" + req.getId());
+            }
         } else {
             log.info("请输入正确的密码");
             return BaseResponse.create(null, ErrorCodeEnum.PASSWORD_ERROR.getCode(), ErrorCodeEnum.PASSWORD_ERROR.getMessage());