update 修改 菜单service用法 与最新mapper同步

This commit is contained in:
疯狂的狮子Li
2026-03-30 19:47:32 +08:00
parent 070b4bd9bb
commit 71153d59d1
2 changed files with 29 additions and 30 deletions

View File

@@ -6,6 +6,7 @@ import org.dromara.system.domain.bo.SysMenuBo;
import org.dromara.system.domain.vo.RouterVo;
import org.dromara.system.domain.vo.SysMenuVo;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -56,7 +57,7 @@ public interface ISysMenuService {
* @param roleIds 角色ID列表
* @return 角色权限映射
*/
Map<Long, Set<String>> selectMenuPermsByRoleIds(List<Long> roleIds);
Map<Long, Set<String>> selectMenuPermsByRoleIds(Collection<Long> roleIds);
/**
* 根据用户ID查询菜单树信息
@@ -112,7 +113,7 @@ public interface ISysMenuService {
* @param menuIds 菜单ID串
* @return 结果 true 存在 false 不存在
*/
boolean hasChildByMenuId(List<Long> menuIds);
boolean hasChildByMenuId(Collection<Long> menuIds);
/**
* 查询菜单是否存在角色
@@ -152,7 +153,7 @@ public interface ISysMenuService {
* @param menuIds 菜单ID串
* @return 结果
*/
void deleteMenuById(List<Long> menuIds);
void deleteMenuById(Collection<Long> menuIds);
/**
* 校验菜单名称是否唯一
@@ -169,4 +170,5 @@ public interface ISysMenuService {
* @return 结果
*/
boolean checkRouteConfigUnique(SysMenuBo menu);
}

View File

@@ -56,27 +56,25 @@ public class SysMenuServiceImpl implements ISysMenuService {
/**
* 查询系统菜单列表
*
* @param menu 菜单信息
* @param menu 菜单筛选条件
* @param userId 当前查询的用户主键
* @return 菜单列表
*/
@Override
public List<SysMenuVo> selectMenuList(SysMenuBo menu, Long userId) {
List<SysMenuVo> menuList;
LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
// 管理员显示所有菜单信息 不是管理员 按用户id过滤菜单
if (!LoginHelper.isSuperAdmin(userId)) {
// 通过用户id获取角色id 通过角色id获取菜单id 然后in菜单
wrapper.inSql(SysMenu::getMenuId, baseMapper.buildMenuByUserSql(userId));
if (LoginHelper.isSuperAdmin(userId)) {
return baseMapper.selectVoList(
new LambdaQueryWrapper<SysMenu>()
.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
.eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible())
.eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus())
.eq(StringUtils.isNotBlank(menu.getMenuType()), SysMenu::getMenuType, menu.getMenuType())
.eq(ObjectUtil.isNotNull(menu.getParentId()), SysMenu::getParentId, menu.getParentId())
.orderByAsc(SysMenu::getParentId)
.orderByAsc(SysMenu::getOrderNum));
}
menuList = baseMapper.selectVoList(
wrapper.like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName())
.eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible())
.eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus())
.eq(StringUtils.isNotBlank(menu.getMenuType()), SysMenu::getMenuType, menu.getMenuType())
.eq(ObjectUtil.isNotNull(menu.getParentId()), SysMenu::getParentId, menu.getParentId())
.orderByAsc(SysMenu::getParentId)
.orderByAsc(SysMenu::getOrderNum));
return menuList;
return baseMapper.selectMenuListByUserId(menu, userId);
}
/**
@@ -108,7 +106,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
* @return 角色权限映射
*/
@Override
public Map<Long, Set<String>> selectMenuPermsByRoleIds(List<Long> roleIds) {
public Map<Long, Set<String>> selectMenuPermsByRoleIds(Collection<Long> roleIds) {
return baseMapper.selectMenuPermsByRoleIds(roleIds);
}
@@ -116,7 +114,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
* 根据用户ID查询菜单
*
* @param userId 用户ID
* @return 菜单列表
* @return 按树结构组织的菜单列表
*/
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId) {
@@ -124,17 +122,17 @@ public class SysMenuServiceImpl implements ISysMenuService {
if (LoginHelper.isSuperAdmin(userId)) {
menus = baseMapper.selectMenuTreeAll();
} else {
LambdaQueryWrapper<SysMenu> wrapper = new LambdaQueryWrapper<>();
menus = baseMapper.selectList(
wrapper.in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU)
.eq(SysMenu::getStatus, SystemConstants.NORMAL)
.inSql(SysMenu::getMenuId, baseMapper.buildMenuByUserSql(userId))
.orderByAsc(SysMenu::getParentId)
.orderByAsc(SysMenu::getOrderNum));
menus = baseMapper.selectMenuTreeByUserId(userId);
}
return TreeBuildUtils.build(menus, Constants.TOP_PARENT_ID, SysMenu::getParentId, (menu, nodeTreeMaps) -> {
// 将当前节点的菜单ID用作父节点ID
Long menuParentId = menu.getMenuId();
// 从动态规划表中取出子节点列表
// 如果不存在子节点则返回一个空的列表确保数据在进行JSON序列化时该字段的类型和结构是正确的
List<SysMenu> childMenus = nodeTreeMaps.getOrDefault(menuParentId, Collections.emptyList());
// 设置子节点
// 如果存在根节点指向尾节点的情况,则会出现环形依赖。但在菜单表中基本不会出现这种情况...
menu.setChildren(childMenus);
});
}
@@ -258,7 +256,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
* @return 结果
*/
@Override
public boolean hasChildByMenuId(List<Long> menuIds) {
public boolean hasChildByMenuId(Collection<Long> menuIds) {
return baseMapper.exists(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getParentId, menuIds).notIn(SysMenu::getMenuId, menuIds));
}
@@ -312,11 +310,10 @@ public class SysMenuServiceImpl implements ISysMenuService {
* 批量删除菜单管理信息
*
* @param menuIds 菜单ID串
* @return 结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteMenuById(List<Long> menuIds) {
public void deleteMenuById(Collection<Long> menuIds) {
baseMapper.deleteByIds(menuIds);
roleMenuMapper.deleteByMenuIds(menuIds);
}