From 9f0b76de38b1d73c9827ec378130603d2a21aea2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 08 七月 2024 18:07:36 +0800
Subject: [PATCH] 登录递归查询子级部门
---
src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java | 5 ++++-
src/main/resources/mapper/DepartmentMapper.xml | 14 ++++++++++++++
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java | 8 ++++++++
3 files changed, 26 insertions(+), 1 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 d11b5d3..5104811 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
@@ -66,8 +66,11 @@
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); // 鏌ヨ瀛愰儴闂�
+ }
if (CollectionUtils.isEmpty(deptAdminIds)) {
// 濡傛灉鏄櫘閫氬鍛橈紝鏌ュ嚭鎵�鍦ㄩ儴闂�
deptAdminIds = userService.getDeptIds(user.getId());
diff --git a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
index b995bb3..7807bba 100644
--- a/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
+++ b/src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java
@@ -39,4 +39,12 @@
* @return
*/
List<CascaderDataVO> list();
+
+ /**
+ * 鑾峰彇杩欎簺閮ㄩ棬鎷ユ湁鐨勫瓙閮ㄩ棬
+ *
+ * @param deptIds
+ * @return
+ */
+ List<Integer> getChilds(@Param("deptIds") List<Integer> deptIds);
}
diff --git a/src/main/resources/mapper/DepartmentMapper.xml b/src/main/resources/mapper/DepartmentMapper.xml
index 2900432..f1413a2 100644
--- a/src/main/resources/mapper/DepartmentMapper.xml
+++ b/src/main/resources/mapper/DepartmentMapper.xml
@@ -129,4 +129,18 @@
SELECT id as value, name as label, parent_id FROM t_department WHERE deleted = 0
</select>
+ <select id="getChilds" resultType="integer">
+ WITH RECURSIVE temp_table AS (
+ SELECT
+ id, name, parent_id FROM t_department WHERE id in <foreach collection="deptIds" open="(" item="deptId" close=")" separator=",">#{deptId}</foreach>
+ UNION ALL
+ SELECT
+ so.id, so.name, so.parent_id FROM t_department so INNER JOIN temp_table tb ON so.parent_id = tb.id
+ )
+ SELECT
+ DISTINCT id
+ FROM
+ temp_table
+ </select>
+
</mapper>
--
Gitblit v1.8.0