From 3984187468d7af3b24dbc0edbeb893abf186b1ad Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 12 七月 2024 18:52:37 +0800
Subject: [PATCH] 登录判断是否能管理三级单位

---
 src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java |   24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
index 5104811..b9d6e21 100644
--- a/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
+++ b/src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java
@@ -2,9 +2,11 @@
 
 
 import com.mindskip.xzs.context.WebContext;
+import com.mindskip.xzs.domain.Department;
 import com.mindskip.xzs.domain.enums.DeptAdminEnum;
 import com.mindskip.xzs.domain.enums.RoleEnum;
 import com.mindskip.xzs.domain.enums.UserStatusEnum;
+import com.mindskip.xzs.domain.vo.CascaderDataVO;
 import com.mindskip.xzs.repository.DepartmentMapper;
 import com.mindskip.xzs.service.AuthenticationService;
 import com.mindskip.xzs.service.UserService;
@@ -23,6 +25,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 
 /**
@@ -66,16 +69,23 @@
             grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.DEPT_ADMIN.getRoleName()));
         }
         grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.fromCode(user.getRole()).getRoleName()));
-        // 鑾峰彇璇ョ敤鎴风鐞嗛儴闂ㄥ強鍏朵笅绾�
-        List<Integer> deptAdminIds = userService.getDeptAdminIds(user.getId());
-        if (! CollectionUtils.isEmpty(deptAdminIds)) {
-            deptAdminIds = departmentMapper.getChilds(deptAdminIds); // 鏌ヨ瀛愰儴闂�
+        // 鑾峰彇璇ョ敤鎴风鐞嗛儴闂ㄥ強鍏朵笅绾eptAdminIds
+        List<Department> deptList = userService.getDeptAdminIdAndInfo(user.getId());
+        List<Integer> deptIds = deptList.stream().map(dept -> dept.getId()).collect(Collectors.toList());
+        if (! CollectionUtils.isEmpty(deptIds)) {
+            deptIds = departmentMapper.getChilds(deptIds); // 鏌ヨ瀛愰儴闂�
+            // 濡傛灉璇ラ儴闂ㄨ繕琚祴浜堜簡绠$悊涓夌骇鍗曚綅鐨勭殑鏉冮檺锛屽垯鏌ュ嚭鏉�
+            if (deptList.stream().anyMatch(Department::getSpecial)) {
+                List<CascaderDataVO> levelDeptList = departmentMapper.getLevelDeptList(3);
+                List<Integer> level3DeptIds = levelDeptList.stream().map(CascaderDataVO::getValue).collect(Collectors.toList());
+                deptIds.addAll(level3DeptIds);
+            }
         }
-        if (CollectionUtils.isEmpty(deptAdminIds)) {
+         else if (CollectionUtils.isEmpty(deptIds)) {
             // 濡傛灉鏄櫘閫氬鍛橈紝鏌ュ嚭鎵�鍦ㄩ儴闂�
-            deptAdminIds = userService.getDeptIds(user.getId());
+            deptIds = userService.getDeptIds(user.getId());
         }
-        MyUser authUser = new MyUser(user.getUserName(), user.getPassword(), grantedAuthorities, user.getRole(), deptAdminIds);
+        MyUser authUser = new MyUser(user.getUserName(), user.getPassword(), grantedAuthorities, user.getRole(), deptIds);
         return new UsernamePasswordAuthenticationToken(authUser, authUser.getPassword(), authUser.getAuthorities());
     }
 

--
Gitblit v1.8.0