mirror of
https://github.com/YunaiV/ruoyi-vue-pro.git
synced 2025-11-02 06:29:50 +08:00
feat:【system 系统管理】dept 增加批量删除
This commit is contained in:
@ -56,6 +56,15 @@ public class DeptController {
|
|||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete-list")
|
||||||
|
@Operation(summary = "批量删除部门")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('system:dept:delete')")
|
||||||
|
public CommonResult<Boolean> deleteDeptList(@RequestParam("ids") List<Long> ids) {
|
||||||
|
deptService.deleteDeptList(ids);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
@Operation(summary = "获取部门列表")
|
@Operation(summary = "获取部门列表")
|
||||||
@PreAuthorize("@ss.hasPermission('system:dept:query')")
|
@PreAuthorize("@ss.hasPermission('system:dept:query')")
|
||||||
|
|||||||
@ -36,6 +36,13 @@ public interface DeptService {
|
|||||||
*/
|
*/
|
||||||
void deleteDept(Long id);
|
void deleteDept(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除部门
|
||||||
|
*
|
||||||
|
* @param ids 部门编号数组
|
||||||
|
*/
|
||||||
|
void deleteDeptList(List<Long> ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得部门信息
|
* 获得部门信息
|
||||||
*
|
*
|
||||||
|
|||||||
@ -88,6 +88,21 @@ public class DeptServiceImpl implements DeptService {
|
|||||||
deptMapper.deleteById(id);
|
deptMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@CacheEvict(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST,
|
||||||
|
allEntries = true) // allEntries 清空所有缓存,因为操作一个部门,涉及到多个缓存
|
||||||
|
public void deleteDeptList(List<Long> ids) {
|
||||||
|
// 校验是否有子部门
|
||||||
|
for (Long id : ids) {
|
||||||
|
if (deptMapper.selectCountByParentId(id) > 0) {
|
||||||
|
throw exception(DEPT_EXITS_CHILDREN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量删除部门
|
||||||
|
deptMapper.deleteByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void validateDeptExists(Long id) {
|
void validateDeptExists(Long id) {
|
||||||
if (id == null) {
|
if (id == null) {
|
||||||
|
|||||||
@ -105,12 +105,40 @@ public class DeptServiceImplTest extends BaseDbUnitTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testValidateDeptExists_notFound() {
|
public void testDeleteDeptList_success() {
|
||||||
|
// mock 数据
|
||||||
|
DeptDO deptDO1 = randomPojo(DeptDO.class);
|
||||||
|
deptMapper.insert(deptDO1);
|
||||||
|
DeptDO deptDO2 = randomPojo(DeptDO.class);
|
||||||
|
deptMapper.insert(deptDO2);
|
||||||
// 准备参数
|
// 准备参数
|
||||||
Long id = randomLongId();
|
List<Long> ids = Arrays.asList(deptDO1.getId(), deptDO2.getId());
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
deptService.deleteDeptList(ids);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(deptMapper.selectById(deptDO1.getId()));
|
||||||
|
assertNull(deptMapper.selectById(deptDO2.getId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteDeptList_exitsChildren() {
|
||||||
|
// mock 数据
|
||||||
|
DeptDO parentDept = randomPojo(DeptDO.class);
|
||||||
|
deptMapper.insert(parentDept);
|
||||||
|
DeptDO childrenDeptDO = randomPojo(DeptDO.class, o -> {
|
||||||
|
o.setParentId(parentDept.getId());
|
||||||
|
o.setStatus(randomCommonStatus());
|
||||||
|
});
|
||||||
|
deptMapper.insert(childrenDeptDO);
|
||||||
|
DeptDO anotherDept = randomPojo(DeptDO.class);
|
||||||
|
deptMapper.insert(anotherDept);
|
||||||
|
|
||||||
|
// 准备参数(包含有子部门的 parentDept)
|
||||||
|
List<Long> ids = Arrays.asList(parentDept.getId(), anotherDept.getId());
|
||||||
|
|
||||||
// 调用, 并断言异常
|
// 调用, 并断言异常
|
||||||
assertServiceException(() -> deptService.validateDeptExists(id), DEPT_NOT_FOUND);
|
assertServiceException(() -> deptService.deleteDeptList(ids), DEPT_EXITS_CHILDREN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user