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