Crazy 7 months ago
parent
commit
656b9f3e28

+ 1 - 1
yudao-module-md/yudao-module-md-biz/src/main/java/cn/iocoder/yudao/module/md/service/AcsService.java

@@ -299,7 +299,7 @@ public class AcsService {
                 if (userInfoArray != null) {//考勤机里有用户
                     String msg = addFaceByUrl(userNumber, photoUrl);
                     if (msg.contains("下发人脸成功") && msg.contains("但是有异常情况")) {
-                        return "更新人脸失败";
+                        return "更新人脸失败,请检查照片大小和";
                     } else {
                         if (user != null) {
                             user.setPhotoUpdateTime(LocalDateTime.now());

+ 2 - 0
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java

@@ -45,6 +45,8 @@ public interface ErrorCodeConstants {
 
     ErrorCode Supervisor_NOT_EXISTS = new ErrorCode(1_002_003_010, "导师不存在");
 
+    ErrorCode USER_USERNUMBER_EXISTS = new ErrorCode(1_002_003_011, "学号/工号已存在");
+
     // ========== 部门模块 1-002-004-000 ==========
     ErrorCode DEPT_NAME_DUPLICATE = new ErrorCode(1_002_004_000, "已经存在该名字的部门");
     ErrorCode DEPT_PARENT_NOT_EXITS = new ErrorCode(1_002_004_001,"父级部门不存在");

+ 34 - 9
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java

@@ -98,7 +98,7 @@ public class AdminUserServiceImpl implements AdminUserService {
 
         // 1.2 校验正确性
         validateUserForCreateOrUpdate(null, createReqVO.getUsername(),
-                createReqVO.getMobile(), createReqVO.getEmail(), createReqVO.getDeptId(), createReqVO.getPostIds(),createReqVO.getSupervisor());
+                createReqVO.getMobile(), createReqVO.getEmail(), createReqVO.getDeptId(), createReqVO.getPostIds(),createReqVO.getSupervisor(),createReqVO.getUserNumber());
         //
         // 2.1 插入用户
         AdminUserDO user = BeanUtils.toBean(createReqVO, AdminUserDO.class);
@@ -135,19 +135,23 @@ public class AdminUserServiceImpl implements AdminUserService {
         updateReqVO.setPassword(null); // 特殊:此处不更新密码
         // 1. 校验正确性
         AdminUserDO oldUser = validateUserForCreateOrUpdate(updateReqVO.getId(), updateReqVO.getUsername(),
-                updateReqVO.getMobile(), updateReqVO.getEmail(), updateReqVO.getDeptId(), updateReqVO.getPostIds(),updateReqVO.getSupervisor());
+                updateReqVO.getMobile(), updateReqVO.getEmail(), updateReqVO.getDeptId(), updateReqVO.getPostIds(),updateReqVO.getSupervisor(),updateReqVO.getUserNumber());
 
         // 2.1 更新用户
         AdminUserDO updateObj = BeanUtils.toBean(updateReqVO, AdminUserDO.class);
         if ("3".equals(updateReqVO.getUserType())){//是导师直接添加为负责人
-            // TODO 删除原部门负责人
+            // TODO 删除原部门负责人,,,有问题,多个里面删不了,单独的可以
             //获取原来的工作间删除负责人
             AdminUserDO user =getUser(updateObj.getId());
             DeptDO originDept = deptService.getDept(user.getDeptId());
             DeptSaveReqVO originNewDept =BeanUtils.toBean(originDept,DeptSaveReqVO.class);
             List<Long> originLeaderIdList =  originNewDept.getLeaderUserId();
-            originLeaderIdList.remove(user.getId());
+            List<Long> newLeaderIdList = new ArrayList<>(originLeaderIdList); // 创建新列表
+            newLeaderIdList.remove(user.getId()); // 删除指定的 ID
+            originNewDept.setLeaderUserId(newLeaderIdList);
+            System.out.println(newLeaderIdList);
             deptService.updateDept(originNewDept);
+
             //添加部门
             DeptDO dept = deptService.getDept(updateReqVO.getDeptId());
             DeptSaveReqVO newDept =BeanUtils.toBean(dept,DeptSaveReqVO.class);
@@ -488,7 +492,7 @@ public class AdminUserServiceImpl implements AdminUserService {
     }
 
     private AdminUserDO validateUserForCreateOrUpdate(Long id, String username, String email,String mobile,
-                                                      Long deptId, Set<Long> postIds,String supervisor ) {
+                                                      Long deptId, Set<Long> postIds,String supervisor,String userNumber ) {
         // 关闭数据权限,避免因为没有数据权限,查询不到数据,进而导致唯一校验不正确
         return DataPermissionUtils.executeIgnore(() -> {
             // 校验用户存在
@@ -505,6 +509,9 @@ public class AdminUserServiceImpl implements AdminUserService {
             postService.validatePostList(postIds);
             //检验是导师否存在
             validateSupervisorExist(id,supervisor );
+            //
+            validateUserNumberUnique(id, userNumber);
+
             return user;
         });
     }
@@ -539,6 +546,24 @@ public class AdminUserServiceImpl implements AdminUserService {
         }
     }
 
+    @VisibleForTesting
+    void validateUserNumberUnique(Long id, String userNumber) {
+        if (StrUtil.isBlank(userNumber)) {
+            return;
+        }
+        AdminUserDO user = userMapper.selectByUsername(userNumber);
+        if (user == null) {
+            return;
+        }
+        // 如果 id 为空,说明不用比较是否为相同 id 的用户
+        if (id == null) {
+            throw exception(USER_USERNUMBER_EXISTS);
+        }
+        if (!user.getId().equals(id)) {
+            throw exception(USER_USERNUMBER_EXISTS);
+        }
+    }
+
     @VisibleForTesting
     void validateEmailUnique(Long id, String email) {
         if (StrUtil.isBlank(email)) {
@@ -664,7 +689,7 @@ public class AdminUserServiceImpl implements AdminUserService {
             }
             try {
                 validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
-                        deptId , null, importUser.getSupervisor());
+                        deptId , null, importUser.getSupervisor(),importUser.getUserNumber());
             } catch (ServiceException ex) {
                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
                 return;
@@ -743,7 +768,7 @@ public class AdminUserServiceImpl implements AdminUserService {
                     deptId = TransformDept(importUser.getDeptName());
                 }
                 validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
-                        deptId , null,null);
+                        deptId , null,null,importUser.getUserNumber());
             } catch (ServiceException ex) {
                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
                 return;
@@ -801,7 +826,7 @@ public class AdminUserServiceImpl implements AdminUserService {
         importUsers.forEach(importUser -> {
             try {
                 validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
-                        null , null,null);
+                        null , null,importUser.getSupervisor(),importUser.getUserNumber());
             } catch (ServiceException ex) {
                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
                 return;
@@ -873,7 +898,7 @@ public class AdminUserServiceImpl implements AdminUserService {
                     deptId = TransformDept(importUser.getDeptName());
                 }
                 validateUserForCreateOrUpdate(null, null, importUser.getMobile(), importUser.getEmail(),
-                        deptId , null, importUser.getSupervisor());
+                        deptId , null, importUser.getSupervisor(),importUser.getUserNumber());
             } catch (ServiceException ex) {
                 respVO.getFailureUsernames().put(importUser.getUsername(), ex.getMessage());
                 return;