mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-12 06:57:13 +08:00
优化:优化删除部门的代码逻辑
1.如果存在下级部门,不允许删除
This commit is contained in:
@@ -119,12 +119,11 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
|
||||
Optional<DeptDO> isSystemData = list.stream().filter(d -> DataTypeEnum.SYSTEM.equals(d.getType())).findFirst();
|
||||
CheckUtils.throwIf(isSystemData::isPresent, "所选部门 [{}] 是系统内置部门,不允许删除",
|
||||
isSystemData.orElseGet(DeptDO::new).getName());
|
||||
CheckUtils.throwIf(this.countChildren(ids) > 0, "所选部门存在下级部门,不允许删除");
|
||||
CheckUtils.throwIf(userService.countByDeptIds(ids) > 0, "所选部门存在用户关联,请解除关联后重试");
|
||||
|
||||
// 删除角色和部门关联
|
||||
roleDeptService.deleteByDeptIds(ids);
|
||||
// 删除子部门
|
||||
baseMapper.lambdaUpdate().in(DeptDO::getParentId, ids).remove();
|
||||
// 删除部门
|
||||
super.delete(ids);
|
||||
}
|
||||
@@ -193,6 +192,22 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptVO,
|
||||
return baseMapper.lambdaQuery().apply(String.format("find_in_set(%s, `ancestors`)", id)).list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询子部门数量
|
||||
*
|
||||
* @param ids
|
||||
* ID 列表
|
||||
* @return 子部门数量
|
||||
*/
|
||||
private Long countChildren(List<Long> ids) {
|
||||
if (CollUtil.isEmpty(ids)) {
|
||||
return 0L;
|
||||
}
|
||||
return ids.stream()
|
||||
.mapToLong(id -> baseMapper.lambdaQuery().apply(String.format("find_in_set(%s, `ancestors`)", id)).count())
|
||||
.sum();
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新子部门祖级列表
|
||||
*
|
||||
|
Reference in New Issue
Block a user