!28 删除机构时判断当前机构与子机构是否可以删除

Merge pull request !28 from 每天一点/master
pull/29/head
小诺 2021-12-08 09:32:36 +00:00 committed by Gitee
commit d27d349b06
2 changed files with 26 additions and 22 deletions

View File

@ -56,7 +56,7 @@ public enum SysOrgExceptionEnum implements AbstractBaseExceptionEnum {
/** /**
* *
*/ */
ORG_CANNOT_DELETE(4, "该机构下有员工,无法删除"), ORG_CANNOT_DELETE(4, "该机构或子机构下有员工,无法删除"),
/** /**
* *

View File

@ -206,31 +206,35 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
SysOrg sysOrg = this.querySysOrg(sysOrgParam); SysOrg sysOrg = this.querySysOrg(sysOrgParam);
Long id = sysOrg.getId(); Long id = sysOrg.getId();
boolean superAdmin = LoginContextHolder.me().isSuperAdmin(); boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
// 级联删除子节点
List<Long> childIdList = this.getChildIdListById(id);
childIdList.add(id);
childIdList.forEach(item ->{
if (!superAdmin) { if (!superAdmin) {
List<Long> dataScope = LoginContextHolder.me().getLoginUserDataScopeIdList(); List<Long> dataScope = LoginContextHolder.me().getLoginUserDataScopeIdList();
//数据范围为空 //数据范围为空
if (ObjectUtil.isEmpty(dataScope)) { if (ObjectUtil.isEmpty(dataScope)) {
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
} else if (!dataScope.contains(id)) { } else if (!dataScope.contains(item)) {
//所操作的数据不在自己的数据范围内 //所操作的数据不在自己的数据范围内
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE); throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
} }
} }
// 该机构下有员工,则不能删 // 该机构下有员工,则不能删
boolean hasOrgEmp = sysEmpService.hasOrgEmp(id); boolean hasOrgEmp = sysEmpService.hasOrgEmp(item);
if (hasOrgEmp) { if (hasOrgEmp) {
throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE);
} }
// 该附属机构下若有员工,则不能删除 // 该附属机构下若有员工,则不能删除
boolean hasExtOrgEmp = sysEmpExtOrgPosService.hasExtOrgEmp(id); boolean hasExtOrgEmp = sysEmpExtOrgPosService.hasExtOrgEmp(item);
if (hasExtOrgEmp) { if (hasExtOrgEmp) {
throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE); throw new ServiceException(SysOrgExceptionEnum.ORG_CANNOT_DELETE);
} }
});
// 级联删除子节点
List<Long> childIdList = this.getChildIdListById(id);
childIdList.add(id);
LambdaUpdateWrapper<SysOrg> updateWrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<SysOrg> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(SysOrg::getId, childIdList) updateWrapper.in(SysOrg::getId, childIdList)
.set(SysOrg::getStatus, CommonStatusEnum.DELETED.getCode()); .set(SysOrg::getStatus, CommonStatusEnum.DELETED.getCode());