SysMenuController
/**
* 删除菜单权限
* @param menuId 菜单权限标识
* @return
*/
@ApiOperation("删除菜单权限")
@DeleteMapping("{menuId}")
@PreAuthorize("hasAuthority('sys:menu:delete')")
public Result<String> removeSysMenu(@PathVariable Long menuId) {
Boolean removed = sysMenuService.removeSysMenuById(menuId);
return Result.handle(removed);
}
SysMenuServiceImpl
/**
* 如果说明当前菜单节点包含子节点,不可删除
* @param menuId
* @return
*/
@Override
@CacheEvict(key = ManagerConstants.SYS_ALL_MENU_KEY)
public Boolean removeSysMenuById(Long menuId) {
// 根据菜单标识查询子菜单集合
List<SysMenu> sysMenuList = sysMenuMapper.selectList(new LambdaQueryWrapper<SysMenu>()
.eq(SysMenu::getParentId, menuId)
);
// 判断子菜单集合是否有值
if (CollectionUtil.isNotEmpty(sysMenuList) && sysMenuList.size() != 0) {
// 说明:当前菜单节点包含子节点集合
throw new BusinessException("当前菜单节点包含子节点集合,不可删除");
}
// 说明:当前菜单节点不包含子节点集合,可以删除
return sysMenuMapper.deleteById(menuId)>0;
}