diff --git a/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/menu/service/impl/SysMenuServiceImpl.java b/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/menu/service/impl/SysMenuServiceImpl.java index d144b412..581ae3ce 100644 --- a/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/menu/service/impl/SysMenuServiceImpl.java +++ b/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/menu/service/impl/SysMenuServiceImpl.java @@ -48,6 +48,7 @@ import com.cn.xiaonuo.sys.modular.menu.mapper.SysMenuMapper; import com.cn.xiaonuo.sys.modular.menu.node.MenuBaseTreeNode; import com.cn.xiaonuo.sys.modular.menu.param.SysMenuParam; import com.cn.xiaonuo.sys.modular.menu.service.SysMenuService; +import com.cn.xiaonuo.sys.modular.org.enums.SysOrgExceptionEnum; import com.cn.xiaonuo.sys.modular.role.service.SysRoleMenuService; import com.cn.xiaonuo.sys.modular.user.entity.SysUser; import com.cn.xiaonuo.sys.modular.user.service.SysUserRoleService; @@ -472,6 +473,14 @@ public class SysMenuServiceImpl extends ServiceImpl impl if (sysMenuParam.getId().equals(sysMenuParam.getPid())) { throw new ServiceException(SysMenuExceptionEnum.PID_CANT_EQ_ID); } + + // 如果是编辑,父id不能为自己的子节点 + List childIdListById = this.getChildIdListById(sysMenuParam.getId()); + if(ObjectUtil.isNotEmpty(childIdListById)) { + if(childIdListById.contains(sysMenuParam.getPid())) { + throw new ServiceException(SysMenuExceptionEnum.PID_CANT_EQ_CHILD_ID); + } + } } Long id = sysMenuParam.getId(); diff --git a/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java b/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java index 7b499664..e4f4c74b 100644 --- a/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java +++ b/xiaonuo-base/xiaonuo-system/src/main/java/com/cn/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java @@ -272,6 +272,14 @@ public class SysOrgServiceImpl extends ServiceImpl impleme //不能修改状态,用修改状态接口修改状态 sysOrg.setStatus(null); this.updateById(sysOrg); + //将所有子的父id进行更新 + List childIdListById = this.getChildIdListById(sysOrg.getId()); + childIdListById.forEach(subChildId -> { + SysOrg child = this.getById(subChildId); + SysOrgParam childParam = new SysOrgParam(); + BeanUtil.copyProperties(child, childParam); + this.edit(childParam); + }); } @Override @@ -385,6 +393,14 @@ public class SysOrgServiceImpl extends ServiceImpl impleme if (sysOrgParam.getId().equals(sysOrgParam.getPid())) { throw new ServiceException(SysOrgExceptionEnum.ID_CANT_EQ_PID); } + + // 如果是编辑,父id不能为自己的子节点 + List childIdListById = this.getChildIdListById(sysOrgParam.getId()); + if(ObjectUtil.isNotEmpty(childIdListById)) { + if(childIdListById.contains(sysOrgParam.getPid())) { + throw new ServiceException(SysOrgExceptionEnum.PID_CANT_EQ_CHILD_ID); + } + } } LambdaQueryWrapper queryWrapperByName = new LambdaQueryWrapper<>();