Przeglądaj źródła

fix:用户修改-手机号清空问题
用户批量导入方法更改

caozixuan 3 lat temu
rodzic
commit
37986ec1f3

+ 56 - 38
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/SysUserServiceImpl.java

@@ -109,7 +109,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Transactional
     @Override
     public boolean saveUser(UserSaveParams userSaveParams) {
-        return saveUserCommon(userSaveParams);
+        return saveUserCommon(userSaveParams,null);
     }
 
     @Override
@@ -295,7 +295,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Transactional
     @Override
     public boolean saveCustomer(UserSaveParams userSaveParams) {
-        return saveUserCommon(userSaveParams);
+        return saveUserCommon(userSaveParams,null);
     }
 
     @Override
@@ -335,15 +335,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @param userSaveParams
      * @return
      */
-    public boolean saveUserCommon(UserSaveParams userSaveParams) {
+    public boolean saveUserCommon(UserSaveParams userSaveParams,Long requestUserId) {
         SysUserService sysUserService = SpringContextHolder.getBean(SysUserService.class);
         boolean isSuccess = true;
         try {
-            Long schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
+            Long schoolId = userSaveParams.getSchoolId();
             if (schoolId == null) {
-                schoolId = userSaveParams.getSchoolId();
+                schoolId = Objects.nonNull(ServletUtil.getRequestHeaderSchoolIdByNotVaild()) ? Long.valueOf(ServletUtil.getRequestHeaderSchoolIdByNotVaild().toString()) : null;
+            }
+            if (!SystemConstant.longNotNull(requestUserId)){
+                SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+                requestUserId = requestUser.getId();
             }
-            SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
 
             String code = userSaveParams.getCode();
             String mobileNumber = userSaveParams.getMobileNumber();
@@ -368,17 +371,27 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             userSaveParams.setSchoolId(schoolId);
             SysUser sysUser = gson.fromJson(gson.toJson(userSaveParams), SysUser.class);
             if (Objects.isNull(sysUser.getId())) {//新增用户
-                sysUser.insertInfo(requestUser.getId());
+                sysUser.insertInfo(requestUserId);
                 sysUserService.save(sysUser);
                 commonService.addUserRolePrivilege(sysUser, userSaveParams.getRoleIds());
             } else {//修改用户
                 List<SysUserRole> sysUserRoleList = commonCacheService.userRolePrivilegeCache(sysUser.getId());
                 List<Long> userRolesList = Arrays.asList(userSaveParams.getRoleIds());
                 Set<Long> dbUserRolesList = sysUserRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet());
-                int count = (int) dbUserRolesList.stream().filter(s -> userRolesList.contains(s)).count();
+                int count = (int) dbUserRolesList.stream().filter(userRolesList::contains).count();
                 SysUser dbUser = sysUserService.getById(sysUser.getId());
-                sysUser.updateInfo(requestUser.getId());
-                sysUserService.updateById(sysUser);
+                sysUserService.update(new UpdateWrapper<SysUser>().lambda()
+                        .eq(SysUser::getId,sysUser.getId())
+                        .set(SysUser::getSchoolId,userSaveParams.getSchoolId())
+                        .set(SysUser::getLoginName,sysUser.getLoginName())
+                        .set(SysUser::getRealName,sysUser.getRealName())
+                        .set(SysUser::getCode,sysUser.getCode())
+                        .set(SysUser::getMobileNumber,sysUser.getMobileNumber())
+                        .set(SysUser::getOrgId,sysUser.getOrgId())
+                        .set(SysUser::getEnable,sysUser.getEnable())
+                        .set(SysUser::getUpdateId,requestUserId)
+                        .set(SysUser::getUpdateTime,System.currentTimeMillis())
+                );
                 //如果修改了角色,需要重新登录
                 if (count == 0 || dbUserRolesList.size() != userRolesList.size()) {
                     QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
@@ -553,7 +566,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public Map<String, Object> executeSysUserImportLogic(List<LinkedMultiValueMap<Integer, Object>> finalList, Map<String, Object> map) throws NoSuchAlgorithmException {
         SysUser sysUser = (SysUser) map.get(SystemConstant.SYS_USER);
         Long schoolId = sysUser.getSchoolId();
-        List<UserSaveParams> userSaveParamsList = new ArrayList<>();
+//        List<UserSaveParams> userSaveParamsList = new ArrayList<>();
         for (int i = 0; i < finalList.size(); i++) {
             LinkedMultiValueMap<Integer, Object> excelMap = finalList.get(i);
             List<Object> sysUserImportDtoList = excelMap.get(i);
@@ -579,46 +592,50 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 if (Objects.nonNull(oldUser)) {
                     oldUserId = oldUser.getId();
                 }
+                String loginName = code;
                 if (SystemConstant.longNotNull(oldUserId)) {
                     // 编辑
                     userSaveParams.setId(oldUserId);
+                    loginName = oldUser.getLoginName();
                 }
                 userSaveParams.setOrgId(orgId);
                 userSaveParams.setRealName(name);
+                userSaveParams.setLoginName(loginName);
                 userSaveParams.setRoleIds(roleIdList.toArray(new Long[0]));
                 if (SystemConstant.strNotNull(phoneNumber)) {
                     userSaveParams.setMobileNumber(phoneNumber);
                 }
                 userSaveParams.setCode(code);
-                userSaveParamsList.add(userSaveParams);
+                userSaveParams.setSchoolId(schoolId);
+                this.saveUserCommon(userSaveParams,sysUser.getId());
+//                userSaveParamsList.add(userSaveParams);
             }
         }
-        UserBatchDisposeResult userBatchDisposeResult = this.disposeUserInfoHelp(userSaveParamsList, sysUser);
-        List<SysUser> sysUserList = userBatchDisposeResult.getUserList();
-        List<SysUserRole> sysUserRoleList = userBatchDisposeResult.getUserRoleList();
-        Set<Long> removeUserIdSet = userBatchDisposeResult.getRemoveIdSet();
-        Set<Long> updateUserIdSet = userBatchDisposeResult.getUpdateIdSet();
-        // TODO: 2021/9/1 可以优化 或者直接批量导入变成单个导入 循环调用 
-        // 保存用户
-        this.saveOrUpdateBatch(sysUserList);
-        // 要更新的用户删除原先的权限
-        for (Long id : removeUserIdSet) {
-            QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
-            sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, id);
-            sysUserRoleService.remove(sysUserRoleQueryWrapper);
-            commonCacheService.removeUserRolePrivilegeCache(id);
-        }
-        // 更新用户角色权限
-        sysUserRoleService.saveOrUpdateBatch(sysUserRoleList);
-        // 要更新的角色删除缓存
-        for (Long id : removeUserIdSet) {
-            commonService.removeUserInfo(id, true);
-        }
-        // 基础数据变更更新缓存
-        for (Long id : updateUserIdSet) {
-            commonCacheService.updateUserCache(id);
-            commonCacheService.updateUserAuthCache(id);
-        }
+//        UserBatchDisposeResult userBatchDisposeResult = this.disposeUserInfoHelp(userSaveParamsList, sysUser);
+//        List<SysUser> sysUserList = userBatchDisposeResult.getUserList();
+//        List<SysUserRole> sysUserRoleList = userBatchDisposeResult.getUserRoleList();
+//        Set<Long> removeUserIdSet = userBatchDisposeResult.getRemoveIdSet();
+//        Set<Long> updateUserIdSet = userBatchDisposeResult.getUpdateIdSet();
+//        // 保存用户
+//        this.saveOrUpdateBatch(sysUserList);
+//        // 要更新的用户删除原先的权限
+//        for (Long id : removeUserIdSet) {
+//            QueryWrapper<SysUserRole> sysUserRoleQueryWrapper = new QueryWrapper<>();
+//            sysUserRoleQueryWrapper.lambda().eq(SysUserRole::getUserId, id);
+//            sysUserRoleService.remove(sysUserRoleQueryWrapper);
+//            commonCacheService.removeUserRolePrivilegeCache(id);
+//        }
+//        // 更新用户角色权限
+//        sysUserRoleService.saveOrUpdateBatch(sysUserRoleList);
+//        // 要更新的角色删除缓存
+//        for (Long id : removeUserIdSet) {
+//            commonService.removeUserInfo(id, true);
+//        }
+//        // 基础数据变更更新缓存
+//        for (Long id : updateUserIdSet) {
+//            commonCacheService.updateUserCache(id);
+//            commonCacheService.updateUserAuthCache(id);
+//        }
         return map;
     }
 
@@ -799,6 +816,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      * @param master             创建人信息
      * @return 处理后的结果
      */
+    @Deprecated
     private UserBatchDisposeResult disposeUserInfoHelp(List<UserSaveParams> userSaveParamsList, SysUser master) throws NoSuchAlgorithmException {
         Long schoolId = master.getSchoolId();
         List<SysUser> userList = new ArrayList<>();