فهرست منبع

feat: update user batch

shc 11 ماه پیش
والد
کامیت
c9a07a364f

+ 10 - 4
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/dto/CommonUserDTO.java

@@ -51,14 +51,20 @@ public class CommonUserDTO implements Serializable {
 	 */
 	private String lockFlag;
 
+
 	/**
-	 * 省份编码
+	 * 企业名称
 	 */
+	private String entName;
 
-	private String provinceCode;
+	/**
+	 * 身份证号
+	 */
+	private String idCard;
 
 	/**
-	 * 城市编码
+	 * 
 	 */
-	private String cityCode;
+	private String district;
+
 }

+ 48 - 44
hnqz-upms/hnqz-upms-api/src/main/java/com/qunzhixinxi/hnqz/admin/api/model/excel/CommonUserExcelModel.java

@@ -14,61 +14,65 @@ import java.io.Serializable;
  */
 @Data
 public class CommonUserExcelModel implements Serializable {
-	private static final long serialVersionUID = -8680773572039025644L;
+    private static final long serialVersionUID = -8680773572039025644L;
 
-	/**
-	 * id
-	 */
-	@ExcelProperty(index = 0)
-	private String id;
+    /**
+     * id
+     */
+    @ExcelProperty(index = 0)
+    private String id;
 
-	/**
-	 * 用户真实姓名
-	 */
-	@ExcelProperty(index = 1)
-	private String realName;
+    /**
+     * 用户真实姓名
+     */
+    @ExcelProperty(index = 1)
+    private String realName;
 
-	/**
-	 * 用户名
-	 */
-	@ExcelProperty(index = 2)
-	private String username;
+    /**
+     * 企业名称
+     */
+    @ExcelProperty(index = 2)
+    private String entName;
 
-	/**
-	 * 省
-	 */
-	@ExcelProperty(index = 3)
-	private String province;
-
-	/**
-	 * 市
-	 */
-	@ExcelProperty(index = 4)
-	private String city;
+    /**
+     * 身份证号
+     */
+    @ExcelProperty(index = 3)
+    private String idCard;
 
+    /**
+     * 用户名/用户名
+     */
+    @ExcelProperty(index = 4)
+    private String username;
 
-	/**
-	 * 角色名称
-	 */
-	@ExcelProperty(index = 5)
-	private String roleName;
+    /**
+     * 省
+     */
+    @ExcelProperty(index = 5)
+    private String province;
 
-	/**
-	 * 锁定状态
-	 */
-	@ExcelProperty(index = 6)
-	private String lockFlag;
+    /**
+     * 市
+     */
+    @ExcelProperty(index = 6)
+    private String city;
 
 	/**
-	 * 省份编码
+	 * 
 	 */
 	@ExcelProperty(index = 7)
-	private String provinceCode;
+	private String district;
 
-	/**
-	 * 城市编码
-	 */
-	@ExcelProperty(index = 8)
-	private String cityCode;
+    /**
+     * 角色名称
+     */
+    @ExcelProperty(index = 8)
+    private String roleName;
 
+    /**
+     * 锁定状态
+     */
+    @ExcelProperty(index = 6)
+    private String lockFlag;
 }

+ 65 - 20
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/SysUserServiceImpl.java

@@ -259,18 +259,23 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (StringUtils.isEmpty(roleName)) {
             errorInfo = "角色名称为空";
         } else {
+
+
+            List<String> roleNames = roleName.contains(StrUtil.SLASH) ? StrUtil.split(roleName, StrUtil.SLASH) : Collections.singletonList(roleName);
+
             // 根据角色名称获取角色
-            SysRole sysRole = sysRoleService.getOne(Wrappers.<SysRole>lambdaQuery()
-                    .eq(SysRole::getRoleName, roleName)
-                    .eq(SysRole::getDelFlag, DelEnum.NOT_DEL.getVal()));
-            if (sysRole == null) {
+            List<Integer> sysRole = sysRoleService.list(Wrappers.<SysRole>lambdaQuery()
+                    .in(SysRole::getRoleName, roleNames)
+                    .eq(SysRole::getDelFlag, DelEnum.NOT_DEL.getVal())).stream().mapToInt(SysRole::getRoleId).boxed().distinct().collect(Collectors.toList());
+
+            if (CollUtil.isEmpty(sysRole)) {
                 errorInfo = "角色不存在或者未启用";
             } else {
-                userDTO.setRole(Collections.singletonList(sysRole.getRoleId()));
+                userDTO.setRole(sysRole);
                 if (userDTO.getRole().contains(2)) {
                     UserDTO tmp = new UserDTO();
                     tmp.setUsername(userDTO.getUsername());
-                    tmp.setDelFlag("0");
+                    userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
                     List<UserVO> userVoList = sysUserMapper.selectByPhone(tmp);
                     if (CollUtil.isNotEmpty(userVoList)) {
                         for (UserVO userVO : userVoList) {
@@ -295,6 +300,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                                     if (r.getRoleId() == 7) {
                                         errorInfo = errorInfo + "用户已存在平台管理员角色,不能同时为财务管理员!";
                                     }
+                                    if (r.getRoleId() == 31) {
+                                        errorInfo = errorInfo + "用户已存在平台管理员角色,不能同时为招商经理";
+                                    }
                                 }
                             }
                         }
@@ -303,7 +311,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 } else if (userDTO.getRole().contains(3)) {
                     UserDTO tmp = new UserDTO();
                     tmp.setUsername(userDTO.getUsername());
-                    tmp.setDelFlag("0");
+                    userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
                     List<UserVO> userVoList = sysUserMapper.selectByPhone(tmp);
                     if (CollUtil.isNotEmpty(userVoList)) {
                         for (UserVO userVO : userVoList) {
@@ -327,16 +335,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                         }
                     }
 
-                } else if (userDTO.getRole().contains(4)) {
+                } else if (userDTO.getRole().contains(4) || userDTO.getRole().contains(37)) {
                     UserDTO tmp = new UserDTO();
                     tmp.setUsername(userDTO.getUsername());
-                    tmp.setDelFlag("0");
+                    userDTO.setDelFlag(CommonConstants.STATUS_NORMAL);
                     List<UserVO> userVoList = sysUserMapper.selectByPhone(tmp);
                     if (CollUtil.isNotEmpty(userVoList)) {
                         for (UserVO userVO : userVoList) {
                             if (null != userVO.getRoleList()) {
                                 for (SysRole r : userVO.getRoleList()) {
-                                    if (sysRole.getRoleId() == 2) {
+                                    if (r.getRoleId() == 2) {
                                         errorInfo = errorInfo + "用户已存在平台管理员角色,不能同时为!";
                                         continue;
                                     }
@@ -356,6 +364,17 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                                             }
                                         }
                                     }
+                                    if (r.getRoleId() == 31) {
+                                        SysUserRole sysUserRole = new SysUserRole();
+                                        sysUserRole.setUserId(userVO.getUserId());
+                                        List<SysUserRole> sysUserRoleList = sysUserRoleMapper.selectById(sysUserRole);
+                                        for (SysUserRole userRole : sysUserRoleList) {
+                                            SysUser sysUser = getById(userRole.getUserId());
+                                            if (!sysUser.getDeptId().equals(userDTO.getDeptId())) {
+                                                errorInfo = errorInfo + "用户已存在招商经理角色,不能为其他机构CSO管理员";
+                                            }
+                                        }
+                                    }
                                 }
                             }
                         }
@@ -452,7 +471,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                         for (UserVO userVO : userVoList) {
                             if (null != userVO.getRoleList()) {
                                 for (SysRole r : userVO.getRoleList()) {
-                                    if (sysRole.getRoleId() == 2) {
+                                    if (r.getRoleId() == 2) {
                                         errorInfo = errorInfo + "用户已存在平台管理员,不能同时为CRO管理员!";
                                         continue;
                                     }
@@ -484,8 +503,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @param errorMap          错误信息记录map
      * @param currentList       正确结果收集信息
      */
-    private void checkoutCommonUserDTOInfo(List<CommonUserDTO> commonUserDTOList, HnqzUser
-            creator, Map<String, String> errorMap, List<UserDTO> currentList) {
+    private void checkoutCommonUserDTOInfo(List<CommonUserDTO> commonUserDTOList, HnqzUser creator, Map<String, String> errorMap, List<UserDTO> currentList) {
 
         // 行编号
         log.info("开始校验数据:{}", commonUserDTOList);
@@ -509,6 +527,35 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             userDTO.setRealname(realName);
         }
 
+        // 校验用户所属企业
+        SysDept dept = sysDeptService.list(Wrappers.<SysDept>lambdaQuery().like(SysDept::getName, StrUtil.cleanBlank(commonUserDTO.getRealName()))).get(0);
+        if (dept == null) {
+            log.error("所属企业不存在");
+            errorMap(errorMap, "所属企业不存在", commonUserDTO.getId());
+        } else {
+            userDTO.setDeptId(dept.getDeptId());
+        }
+
+        // 校验身份证号
+        String idCard = StrUtil.cleanBlank(commonUserDTO.getIdCard());
+        if (StrUtil.isBlank(idCard)) {
+            log.error("身份证号不存在");
+            errorMap(errorMap, "身份证号不存在", commonUserDTO.getId());
+        } else {
+            if (!Validator.isCitizenId(idCard)) {
+                log.error("身份证号格式不正确");
+                errorMap(errorMap, "身份证号格式不正确", commonUserDTO.getId());
+            }
+
+            int count = this.count(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getIdCardNumber, commonUserDTO.getId()));
+            if (count != 0) {
+                log.error("身份证号格式已经被占用");
+                errorMap(errorMap, "身份证号格式已经被占用", commonUserDTO.getId());
+            }
+
+            userDTO.setIdCardNumber(idCard);
+        }
+
         // 校验手机号
         String username = StrUtil.cleanBlank(commonUserDTO.getUsername());
         if (StringUtils.isEmpty(username)) {
@@ -524,8 +571,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
             // 校验部门下是否有启用的用户
             int count = count(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, username)
-                    .eq(SysUser::getDeptId, creator.getDeptId())
-                    .eq(SysUser::getLockFlag, LockEnum.UN_LOCK.getVal()).eq(SysUser::getDelFlag, DelEnum.NOT_DEL.getVal()));
+                    .eq(dept != null, SysUser::getDeptId, dept.getDeptId()));
             if (count != 0) {
                 log.info("手机号被占用");
                 errorMap(errorMap, "手机号被占用", commonUserDTO.getId());
@@ -537,7 +583,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
 
         // 校验用户角色
-        SysDept dept = sysDeptService.getById(creator.getDeptId());
         String roleName = StrUtil.cleanBlank(commonUserDTO.getRoleName());
         String errInfo = checkoutCommonUserRole(roleName, userDTO, dept);
         if (StringUtils.isNotEmpty(errInfo)) {
@@ -552,9 +597,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             errorMap(errorMap, "用户状态为空", commonUserDTO.getId());
         } else {
             if (StringUtils.equals(lockFlag, "活跃")) {
-                userDTO.setLockFlag("0");
+                userDTO.setLockFlag(CommonConstants.STATUS_NORMAL);
             } else if (StringUtils.equals(lockFlag, "休眠")) {
-                userDTO.setLockFlag("9");
+                userDTO.setLockFlag(CommonConstants.STATUS_LOCK);
             } else {
                 log.error("用户状态为值不是\"活跃\"或者\"休眠\"");
                 errorMap(errorMap, "用户状态为值不是\"活跃\"或者\"休眠\"", commonUserDTO.getId());
@@ -563,7 +608,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 
         // 记录正确的结果
         userDTO.setCreateTime(LocalDateTime.now());
-        userDTO.setDeptId(dept.getDeptId());
+        userDTO.setUpdateTime(LocalDateTime.now());
         currentList.add(userDTO);
 
     }
@@ -631,7 +676,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public UserInfo findUserInfo(SysUser sysUser) {
 
         final String errorKey = "login:error:lock:" + sysUser.getUsername();
-        if (Boolean.TRUE.equals(redisTemplate.hasKey(errorKey))){
+        if (Boolean.TRUE.equals(redisTemplate.hasKey(errorKey))) {
             sysUser.setLockFlag(CommonConstants.STATUS_LOCK);
         }