develop #5
@ -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,13 +306,9 @@ 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);
 | 
					                    parentResponse.Children.Add(menuResponse);
 | 
				
			||||||
                    if (parentResponse != null)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        parentResponse.Children.Add(menuResponse);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -311,25 +316,5 @@ public class MenuService
 | 
				
			|||||||
        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