From 1b137a662cf48ddad94b48de606ac36061fac4dd Mon Sep 17 00:00:00 2001
From: yanderong <307678080@qq.com>
Date: 星期二, 25 八月 2026 10:00:11 +0800
Subject: [PATCH] feat 用户角色菜单配置相关功能

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index 131861a..82071a8 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/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

--
Gitblit v1.7.1