From 64f3e25714e2b8c64f90d46ba2f2ae85b2d0efb6 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 3 Jan 2026 13:57:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E8=AE=A1=E5=B8=88=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=94=AF=E6=8C=81=E9=80=92=E5=BD=92=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=AD=90=E9=83=A8=E9=97=A8=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - 部门负责人指定设计师时,只能看到直属部门成员 - 如果设计师在2级或3级部门,无法被上级部门负责人看到 修改: - UserService.getDesignersWithWorkload: - 增加 getAllSubDepartmentIds 递归查询方法 - 使用 IN 查询获取该部门及其所有子部门下的成员 --- .../com/designhub/service/UserService.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/designhub/service/UserService.java b/backend/src/main/java/com/designhub/service/UserService.java index 77debc6..f843b5c 100644 --- a/backend/src/main/java/com/designhub/service/UserService.java +++ b/backend/src/main/java/com/designhub/service/UserService.java @@ -1213,7 +1213,9 @@ public class UserService { queryWrapper.eq(User::getStatus, 1); // 只查询启用的用户 queryWrapper.eq(User::getDeleted, 0); // 未删除 if (deptId != null) { - queryWrapper.eq(User::getDeptId, deptId); + // 递归获取所有子部门ID(包含自身) + List allDeptIds = getAllSubDepartmentIds(deptId); + queryWrapper.in(User::getDeptId, allDeptIds); } queryWrapper.orderByAsc(User::getRealName); @@ -1280,6 +1282,28 @@ public class UserService { return result; } + /** + * 递归获取所有子部门ID(包括自身) + */ + private List getAllSubDepartmentIds(Long deptId) { + List deptIds = new ArrayList<>(); + deptIds.add(deptId); + + // 查询直接子部门 + List subDepts = departmentMapper.selectList( + new LambdaQueryWrapper() + .eq(Department::getParentId, deptId) + .eq(Department::getStatus, 1) + .eq(Department::getDeleted, 0) + ); + + for (Department subDept : subDepts) { + deptIds.addAll(getAllSubDepartmentIds(subDept.getId())); + } + + return deptIds; + } + /** * 设置/取消管理员 */