修复了查不到子菜单的问题(其实感觉也没改啥)
This commit is contained in:
parent
3fce35c51b
commit
0ddc553ce4
@ -266,9 +266,10 @@ public class MenuService
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private List<MenuResponse> BuildMenuTree(List<MenuModel> allMenus)
|
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>();
|
var rootMenus = new List<MenuResponse>();
|
||||||
|
|
||||||
|
// 第一步:创建所有菜单的响应对象
|
||||||
foreach (var menu in allMenus)
|
foreach (var menu in allMenus)
|
||||||
{
|
{
|
||||||
var menuResponse = new MenuResponse
|
var menuResponse = new MenuResponse
|
||||||
@ -289,6 +290,14 @@ public class MenuService
|
|||||||
UpdateTime = menu.UpdateTime
|
UpdateTime = menu.UpdateTime
|
||||||
};
|
};
|
||||||
|
|
||||||
|
menuResponseDict[menu.Uuid] = menuResponse;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 第二步:构建树形结构
|
||||||
|
foreach (var menu in allMenus)
|
||||||
|
{
|
||||||
|
var menuResponse = menuResponseDict[menu.Uuid];
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(menu.ParentId))
|
if (string.IsNullOrEmpty(menu.ParentId))
|
||||||
{
|
{
|
||||||
// 根菜单
|
// 根菜单
|
||||||
@ -297,39 +306,15 @@ public class MenuService
|
|||||||
else
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return rootMenus;
|
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