优化:优化删除部门的代码逻辑

1.如果存在下级部门,不允许删除
This commit is contained in:
Charles7c 2023-03-26 13:51:43 +08:00
parent 59d9fd33e4
commit 28334f6c9a
2 changed files with 19 additions and 5 deletions

View File

@ -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();
}
/**
* 更新子部门祖级列表
*

View File

@ -158,7 +158,7 @@
<template #icon><icon-edit /></template>修改
</a-button>
<a-popconfirm
content="确定要删除当前选中的数据吗?如果存在下级部门则一并删除,此操作不能撤销!"
content="确定要删除当前选中的数据吗?"
type="warning"
@ok="handleDelete([record.id])"
>
@ -490,8 +490,7 @@
proxy.$modal.warning({
title: '警告',
titleAlign: 'start',
content:
'确定要删除当前选中的数据吗?如果存在下级部门则一并删除,此操作不能撤销!',
content: '确定要删除当前选中的数据吗?',
hideCancel: false,
onOk: () => {
handleDelete(ids.value);