From fb203d7eb8bbef8c465e3171b4da2b91e9b98f6e Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Tue, 27 Jan 2026 10:04:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(dept):=20=E6=B7=BB=E5=8A=A0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=83=A8=E9=97=A8ID=E6=9F=A5=E8=AF=A2=E6=89=80?= =?UTF-8?q?=E6=9C=89=E5=AD=90=E9=83=A8=E9=97=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 ISysDeptService 中新增 selectChildDeptsById 方法定义 - 在 SysDeptController 中新增 listWithChildren 接口用于查询部门及子部门 - 在 SysDeptServiceImpl 中实现 selectChildDeptsById 方法,使用 ancestors 字段递归查询 - 使用注解权限控制确保接口安全性 - 返回完整的部门树形结构数据 --- .../klp/web/controller/system/SysDeptController.java | 12 ++++++++++++ .../java/com/klp/system/service/ISysDeptService.java | 8 ++++++++ .../klp/system/service/impl/SysDeptServiceImpl.java | 10 ++++++++++ 3 files changed, 30 insertions(+) diff --git a/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java b/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java index 81193513..3375f416 100644 --- a/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java +++ b/klp-admin/src/main/java/com/klp/web/controller/system/SysDeptController.java @@ -116,4 +116,16 @@ public class SysDeptController extends BaseController { deptService.checkDeptDataScope(deptId); return toAjax(deptService.deleteDeptById(deptId)); } + + /** + * 查询部门及其所有子部门 + * + * @param deptId 部门ID + */ + @SaCheckPermission("system:dept:list") + @GetMapping("/list/{deptId}") + public R> listWithChildren(@PathVariable Long deptId) { + List depts = deptService.selectChildDeptsById(deptId); + return R.ok(depts); + } } diff --git a/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java b/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java index 8c5732cb..5b3cea5a 100644 --- a/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java +++ b/klp-system/src/main/java/com/klp/system/service/ISysDeptService.java @@ -113,4 +113,12 @@ public interface ISysDeptService { * @return 结果 */ int deleteDeptById(Long deptId); + + /** + * 根据部门ID查询所有子部门(递归) + * + * @param deptId 部门ID + * @return 所有子部门列表 + */ + List selectChildDeptsById(Long deptId); } diff --git a/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java b/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java index 84026b55..d74d682b 100644 --- a/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java +++ b/klp-system/src/main/java/com/klp/system/service/impl/SysDeptServiceImpl.java @@ -270,6 +270,16 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { .in(SysDept::getDeptId, Arrays.asList(deptIds))); } + @Override + public List selectChildDeptsById(Long deptId) { + // 创建查询条件,查找祖先列表中包含指定部门ID的所有部门 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(SysDept::getDelFlag, "0") + .apply(DataBaseHelper.findInSet(deptId, "ancestors")); + + return baseMapper.selectList(lqw); + } + /** * 修改子元素关系 *