From cfc61445380851d621f4dd853fe62941f9c80207 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 09 五月 2024 15:30:52 +0800
Subject: [PATCH] 部门管理员优化

---
 src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java |   39 ++++++++++++++++++---------------------
 1 files changed, 18 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
index 5383ce2..d2d83e3 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/DepartmentServiceImpl.java
@@ -18,9 +18,11 @@
 import org.modelmapper.ModelMapper;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service
 public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements DepartmentService {
@@ -62,17 +64,15 @@
         if (Objects.isNull(entity)) {
             throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪");
         }
-        if (Objects.nonNull(department.getAdminId())) {
-            Integer adminNum = departmentMapper.countByAdminId(department.getAdminId(), department.getId());
-            if (adminNum > 0) {
-                throw new RuntimeException("涓�涓敤鎴峰彧鑳芥槸涓�涓崟浣嶇殑绠$悊鍛�");
-            }
-            if (! Objects.equals(entity.getAdminId(), department.getAdminId())) {
-                // 鍙栨秷鍘熷厛鐨勭鐞嗗憳鏍囪瘑
-                userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue());
+        if (! CollectionUtils.isEmpty(department.getAdminId())) {
+            List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId());
+            List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList());
+            if (! CollectionUtils.isEmpty(userIds)) {
+                // 鍏堟竻闄や箣鍓嶇殑绠$悊鍛樻爣璇�
+                userMapper.clearDeptAdmin(userIds, entity.getId());
             }
             // 鏍囪瘑閮ㄩ棬绠$悊鍛�
-            userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue());
+            userMapper.updateDeptAdmin(department.getAdminId(), DeptAdminEnum.YES.getValue(), entity.getId());
         }
         Integer update = departmentMapper.update(department);
         return update;
@@ -114,24 +114,21 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public void updateAdmin(UpdateDeptAdminVO form) {
         Department entity = departmentMapper.getById(form.getId());
-        if (Objects.isNull(form)) {
+        if (Objects.isNull(entity)) {
             throw new RuntimeException("璇ラ儴闂ㄤ笉瀛樺湪");
         }
-        if (Objects.nonNull(form.getAdminId())) {
-            Integer adminNum = departmentMapper.countByAdminId(form.getAdminId(), form.getId());
-            if (adminNum > 0) {
-                throw new RuntimeException("涓�涓敤鎴峰彧鑳芥槸涓�涓崟浣嶇殑绠$悊鍛�");
-            }
-            if (! Objects.equals(entity.getAdminId(), form.getAdminId())) {
-                // 鍙栨秷鍘熷厛鐨勭鐞嗗憳鏍囪瘑
-                userMapper.updateDeptAdmin(entity.getAdminId(), DeptAdminEnum.NO.getValue());
+        if (! CollectionUtils.isEmpty(form.getAdminIds())) {
+            List<BaseSelect> deptUserList = userDepartmentMapper.getDeptUserList(entity.getId());
+            List<Integer> userIds = deptUserList.stream().map(BaseSelect::getId).collect(Collectors.toList());
+            if (! CollectionUtils.isEmpty(userIds)) {
+                // 鍏堟竻闄や箣鍓嶇殑绠$悊鍛樻爣璇�
+                userMapper.clearDeptAdmin(userIds, entity.getId());
             }
             // 鏍囪瘑閮ㄩ棬绠$悊鍛�
-            userMapper.updateDeptAdmin(form.getAdminId(), DeptAdminEnum.YES.getValue());
+            userMapper.updateDeptAdmin(form.getAdminIds(), DeptAdminEnum.YES.getValue(), entity.getId());
         }
-        entity.setAdminId(form.getAdminId());
-        departmentMapper.update(entity);
     }
 }

--
Gitblit v1.8.0