From ca199ce3bc626cc1498444dc819983edff69811e Mon Sep 17 00:00:00 2001 From: albed <877617829@qq.com> Date: Mon, 6 Dec 2021 17:02:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E6=97=B6=E5=88=A4=E6=96=AD=E5=AD=90=E6=9C=BA=E6=9E=84?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/enums/SysOrgExceptionEnum.java | 2 +- .../org/service/impl/SysOrgServiceImpl.java | 46 ++++++++++--------- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/enums/SysOrgExceptionEnum.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/enums/SysOrgExceptionEnum.java index 5bf9b981..3e27a59a 100644 --- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/enums/SysOrgExceptionEnum.java +++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/enums/SysOrgExceptionEnum.java @@ -56,7 +56,7 @@ public enum SysOrgExceptionEnum implements AbstractBaseExceptionEnum { /** * 该机构下有员工 */ - ORG_CANNOT_DELETE(4, "该机构下有员工,无法删除"), + ORG_CANNOT_DELETE(4, "该机构或子机构下有员工,无法删除"), /** * 父节点不能和本节点一致,请重新选择父节点 diff --git a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java index 9b3edbb8..9bf7b353 100644 --- a/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java +++ b/snowy-base/snowy-system/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java @@ -206,31 +206,35 @@ public class SysOrgServiceImpl extends ServiceImpl impleme SysOrg sysOrg = this.querySysOrg(sysOrgParam); Long id = sysOrg.getId(); boolean superAdmin = LoginContextHolder.me().isSuperAdmin(); - if (!superAdmin) { - List dataScope = LoginContextHolder.me().getLoginUserDataScopeIdList(); - //数据范围为空 - if (ObjectUtil.isEmpty(dataScope)) { - throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); - } else if (!dataScope.contains(id)) { - //所操作的数据不在自己的数据范围内 - throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); - } - } - // 该机构下有员工,则不能删 - boolean hasOrgEmp = sysEmpService.hasOrgEmp(id); - if (hasOrgEmp) { - throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); - } - - // 该附属机构下若有员工,则不能删除 - boolean hasExtOrgEmp = sysEmpExtOrgPosService.hasExtOrgEmp(id); - if (hasExtOrgEmp) { - throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); - } // 级联删除子节点 List childIdList = this.getChildIdListById(id); childIdList.add(id); + + childIdList.forEach(item ->{ + if (!superAdmin) { + List dataScope = LoginContextHolder.me().getLoginUserDataScopeIdList(); + //数据范围为空 + if (ObjectUtil.isEmpty(dataScope)) { + throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); + } else if (!dataScope.contains(item)) { + //所操作的数据不在自己的数据范围内 + throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); + } + } + // 该机构下有员工,则不能删 + boolean hasOrgEmp = sysEmpService.hasOrgEmp(item); + if (hasOrgEmp) { + throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); + } + + // 该附属机构下若有员工,则不能删除 + boolean hasExtOrgEmp = sysEmpExtOrgPosService.hasExtOrgEmp(item); + if (hasExtOrgEmp) { + throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); + } + }); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.in(SysOrg::getId, childIdList) .set(SysOrg::getStatus, CommonStatusEnum.DELETED.getCode());