yanderong
2026-08-25 1b137a662cf48ddad94b48de606ac36061fac4dd
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -4,8 +4,10 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.slf4j.Logger;
@@ -23,6 +25,7 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.vo.MetaVo;
import com.ruoyi.system.domain.vo.MenuPermissionVo;
import com.ruoyi.system.domain.vo.RouterVo;
import com.ruoyi.system.mapper.SysMenuMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
@@ -53,6 +56,45 @@
    private SysRoleMenuMapper roleMenuMapper;
    /**
     * 查询全部菜单,并转换为权限配置表格直接使用的三级结构。
     */
    @Override
    public List<MenuPermissionVo> selectMenuPermissionList()
    {
        List<SysMenu> menus = menuMapper.selectMenuList(new SysMenu());
        Map<Long, MenuPermissionVo> modules = new LinkedHashMap<>();
        Map<Long, MenuPermissionVo.Page> pages = new LinkedHashMap<>();
        for (SysMenu menu : menus)
        {
            if (UserConstants.TYPE_DIR.equals(menu.getMenuType()) && MENU_ROOT_ID.equals(menu.getParentId()))
            {
                modules.put(menu.getMenuId(), new MenuPermissionVo(menu.getMenuId(), menu.getMenuName()));
            }
        }
        for (SysMenu menu : menus)
        {
            MenuPermissionVo module = modules.get(menu.getParentId());
            if (module != null && UserConstants.TYPE_MENU.equals(menu.getMenuType()))
            {
                MenuPermissionVo.Page page = new MenuPermissionVo.Page(menu.getMenuId(), menu.getMenuName());
                module.getPages().add(page);
                pages.put(menu.getMenuId(), page);
            }
        }
        for (SysMenu menu : menus)
        {
            MenuPermissionVo.Page page = pages.get(menu.getParentId());
            if (page != null && UserConstants.TYPE_BUTTON.equals(menu.getMenuType()))
            {
                page.getPermissions().add(new MenuPermissionVo.Permission(
                        menu.getMenuId(), menu.getMenuName(), menu.getPerms()));
            }
        }
        return new ArrayList<>(modules.values());
    }
    /**
     * 根据用户查询系统菜单列表
     * 
     * @param userId 用户ID