From 533217aa103ab2b0a94dc08b2434f36763f5bc03 Mon Sep 17 00:00:00 2001 From: Theo <971366405@qq.com> Date: Sun, 12 Apr 2026 17:33:01 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(dept):=20=E6=B7=BB=E5=8A=A0=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E7=BC=96=E8=BE=91=E6=97=B6=E7=88=B6=E5=AD=90=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E9=AA=8C=E8=AF=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现部门是否存在检查 - 添加上级部门不能为自己的校验 - 实现上级部门不能为当前子部门的递归校验 - 优化部门树路径查询逻辑 ``` --- .../system/service/impl/DeptServiceImpl.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/com/youlai/boot/system/service/impl/DeptServiceImpl.java b/src/main/java/com/youlai/boot/system/service/impl/DeptServiceImpl.java index 51e06434..b2495bfe 100644 --- a/src/main/java/com/youlai/boot/system/service/impl/DeptServiceImpl.java +++ b/src/main/java/com/youlai/boot/system/service/impl/DeptServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -187,7 +188,31 @@ public class DeptServiceImpl extends ServiceImpl implements De .eq(Dept::getCode, code) ); Assert.isTrue(count == 0, "部门编号已存在"); + Dept dept = this.getOne( + new LambdaQueryWrapper() + .eq(Dept::getId, deptId) + .select(Dept::getParentId,Dept::getTreePath) + ); + Assert.notNull(dept, "部门不存在"); + Long parentId = formData.getParentId(); + // 检查不能修改自己节点和子节点作为当前节点的父节点 + Assert.isFalse(Objects.equals(deptId,parentId),"上级部门不能为自己"); + + // 检查是否修改了部门父节点 + if (!Objects.equals(dept.getParentId(),parentId)){ + // 获取当前节点的子节点的ID + List childrenDeptList = this.list( + new LambdaQueryWrapper() + .apply("FIND_IN_SET({0}, tree_path)", deptId) + .select(Dept::getId) + ); + if(!childrenDeptList.isEmpty()) { + Set childrenIds = childrenDeptList.stream().map(Dept::getId).collect(Collectors.toSet()); + Assert.isFalse(childrenIds.contains(parentId),"上级部门不能为当前子部门"); + } + + } // form->entity Dept entity = deptConverter.toEntity(formData);