From 0ddc553ce40a60405f1291f8aea99e8dc2719c78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=82=9C=E7=BF=94?= <2307953404@qq.com> Date: Wed, 16 Jul 2025 15:19:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=9F=A5=E4=B8=8D?= =?UTF-8?q?=E5=88=B0=E5=AD=90=E8=8F=9C=E5=8D=95=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=88=E5=85=B6=E5=AE=9E=E6=84=9F=E8=A7=89=E4=B9=9F=E6=B2=A1?= =?UTF-8?q?=E6=94=B9=E5=95=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGSS/Services/MenuService.cs | 39 +++++++++++------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/AGSS/Services/MenuService.cs b/AGSS/Services/MenuService.cs index 90766fa..346d426 100644 --- a/AGSS/Services/MenuService.cs +++ b/AGSS/Services/MenuService.cs @@ -266,9 +266,10 @@ public class MenuService /// private List BuildMenuTree(List allMenus) { - var menuDict = allMenus.ToDictionary(m => m.Uuid); + var menuResponseDict = new Dictionary(); var rootMenus = new List(); + // 第一步:创建所有菜单的响应对象 foreach (var menu in allMenus) { var menuResponse = new MenuResponse @@ -289,6 +290,14 @@ public class MenuService UpdateTime = menu.UpdateTime }; + menuResponseDict[menu.Uuid] = menuResponse; + } + + // 第二步:构建树形结构 + foreach (var menu in allMenus) + { + var menuResponse = menuResponseDict[menu.Uuid]; + if (string.IsNullOrEmpty(menu.ParentId)) { // 根菜单 @@ -297,13 +306,9 @@ public class MenuService else { // 子菜单 - if (menuDict.TryGetValue(menu.ParentId, out var parentMenu)) + if (menuResponseDict.TryGetValue(menu.ParentId, out var parentResponse)) { - var parentResponse = FindMenuResponse(rootMenus, menu.ParentId); - if (parentResponse != null) - { - parentResponse.Children.Add(menuResponse); - } + parentResponse.Children.Add(menuResponse); } } } @@ -311,25 +316,5 @@ public class MenuService return rootMenus; } - /// - /// 在菜单树中查找指定UUID的菜单响应对象 - /// - private MenuResponse? FindMenuResponse(List menus, string uuid) - { - foreach (var menu in menus) - { - if (menu.Uuid == uuid) - { - return menu; - } - var found = FindMenuResponse(menu.Children, uuid); - if (found != null) - { - return found; - } - } - - return null; - } } \ No newline at end of file