From b44b174f656aac1fe03e7f96851e564c3982f67d Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 28 三月 2025 16:52:25 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/boymi/YiFeiNN

---
 medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java |   44 +++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 43 insertions(+), 1 deletions(-)

diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
index 71d449b..1356fee 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/system/SysMenuController.java
@@ -8,6 +8,8 @@
 import com.sinata.common.enums.BusinessType;
 import com.sinata.common.utils.StringUtils;
 import com.sinata.system.service.ISysMenuService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -20,20 +22,60 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 菜单信息
  * 
  * @author ruoyi
  */
+@Api(tags = {"菜单相关接口"})
 @RestController
-@RequestMapping("/system/menu")
+@RequestMapping("/backend/system/menu")
 public class SysMenuController extends BaseController
 {
     @Autowired
     private ISysMenuService menuService;
 
+    @ApiOperation("菜单权限(有层级)")
+    @GetMapping("/levelList")
+    public AjaxResult levelList() {
+        // 获取当前角色的菜单列表
+        List<SysMenu> menus = menuService.selectList();
+        if (menus.size() == 0) {
+            return AjaxResult.success(new ArrayList<>());
+        }
+        // 第一级
+        List<SysMenu> s1 = menus.stream().filter(e -> e.getMenuType().equals("M") && e.getParentId().equals(0L)).collect(Collectors.toList());
+        // 构建以 parentId 为键的 Map
+        Map<Long, List<SysMenu>> menuMap = menus.stream()
+                .collect(Collectors.groupingBy(SysMenu::getParentId));
+        // 构建树形结构
+        buildMenuTree(menuMap, s1);
+        return AjaxResult.success(s1);
+    }
+
+    /**
+     * 封装树形层级
+     *
+     * @param menuMap
+     * @param s1
+     */
+    public void buildMenuTree(Map<Long, List<SysMenu>> menuMap, List<SysMenu> s1) {
+        for (SysMenu sysMenu : s1) {
+            // 获取当前菜单的子级
+            List<SysMenu> children = menuMap.getOrDefault(sysMenu.getMenuId(), new ArrayList<>());
+            sysMenu.setChildren(children);
+            //移除当前菜单
+            menuMap.remove(sysMenu.getMenuId());
+            // 递归设置子级菜单
+            buildMenuTree(menuMap, children);
+        }
+    }
+
     /**
      * 获取菜单列表
      */

--
Gitblit v1.7.1