xiangpei
2024-07-08 9f0b76de38b1d73c9827ec378130603d2a21aea2
登录递归查询子级部门
3个文件已修改
27 ■■■■■ 已修改文件
src/main/java/com/mindskip/xzs/configuration/spring/security/RestAuthenticationProvider.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mindskip/xzs/repository/DepartmentMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/DepartmentMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
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);
}
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>