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; + } + /** * 设置/取消管理员 */