فهرست منبع

fix: 移除后端菜单 promotion,保留完整树结构交给前端处理

后端 buildMenuTree 中 showParent=false 且单子节点时会把子节点
提升为一级,导致路径错位(/dashboard/index vs /dashboard),
与静态路由路径不匹配,dedup 失效,rank 全部丢失。
改为始终返回完整树结构,单子节点提升由前端 SidebarItem 组件完成。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 1 هفته پیش
والد
کامیت
836e982139
1فایلهای تغییر یافته به همراه5 افزوده شده و 23 حذف شده
  1. 5 23
      haha-service/src/main/java/com/haha/service/impl/MenuServiceImpl.java

+ 5 - 23
haha-service/src/main/java/com/haha/service/impl/MenuServiceImpl.java

@@ -155,30 +155,12 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements Me
             // 递归构建子节点
             List<Map<String, Object>> childNodes = buildMenuTree(menu.getId(), allMenus);
             if (!childNodes.isEmpty()) {
-                // showParent为false且只有一个子节点时,提升子节点为一级菜单
-                boolean showParent = menu.getShowParent() == null || menu.getShowParent();
-                if (!showParent && childNodes.size() == 1) {
-                    Map<String, Object> childNode = childNodes.get(0);
-                    Map<String, Object> childMeta = (Map<String, Object>) childNode.get("meta");
-                    // 合并父级 icon(子级优先)
-                    if ((childMeta.get("icon") == null || childMeta.get("icon").toString().isEmpty())
-                            && menu.getIcon() != null && !menu.getIcon().isEmpty()) {
-                        childMeta.put("icon", menu.getIcon());
-                    }
-                    // 使用父级 title 覆盖子级(更概括)
-                    childMeta.put("title", menu.getTitle());
-                    // 继承父级 rank(子级优先)
-                    if (childMeta.get("rank") == null && menu.getRank() != null) {
-                        childMeta.put("rank", menu.getRank());
-                    }
-                    tree.add(childNode);
-                } else {
-                    node.put("children", childNodes);
-                    if (menu.getRedirect() != null && !menu.getRedirect().isEmpty()) {
-                        node.put("redirect", menu.getRedirect());
-                    }
-                    tree.add(node);
+                // 保留完整的树结构,单子节点提升交给前端 SidebarItem 组件处理
+                node.put("children", childNodes);
+                if (menu.getRedirect() != null && !menu.getRedirect().isEmpty()) {
+                    node.put("redirect", menu.getRedirect());
                 }
+                tree.add(node);
             } else {
                 // 叶子节点需要 component
                 if (menu.getComponent() != null && !menu.getComponent().isEmpty()) {