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