修复了查不到子菜单的问题(其实感觉也没改啥)
This commit is contained in:
parent
3fce35c51b
commit
0ddc553ce4
@ -266,9 +266,10 @@ public class MenuService
|
||||
/// </summary>
|
||||
private List<MenuResponse> BuildMenuTree(List<MenuModel> allMenus)
|
||||
{
|
||||
var menuDict = allMenus.ToDictionary(m => m.Uuid);
|
||||
var menuResponseDict = new Dictionary<string, MenuResponse>();
|
||||
var rootMenus = new List<MenuResponse>();
|
||||
|
||||
// 第一步:创建所有菜单的响应对象
|
||||
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,39 +306,15 @@ public class MenuService
|
||||
else
|
||||
{
|
||||
// 子菜单
|
||||
if (menuDict.TryGetValue(menu.ParentId, out var parentMenu))
|
||||
{
|
||||
var parentResponse = FindMenuResponse(rootMenus, menu.ParentId);
|
||||
if (parentResponse != null)
|
||||
if (menuResponseDict.TryGetValue(menu.ParentId, out var parentResponse))
|
||||
{
|
||||
parentResponse.Children.Add(menuResponse);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rootMenus;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在菜单树中查找指定UUID的菜单响应对象
|
||||
/// </summary>
|
||||
private MenuResponse? FindMenuResponse(List<MenuResponse> 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;
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user