public List <LayuiTreeDto> GetMenuTreeByRole(long roleId) { List <LayuiTreeDto> trees = new List <LayuiTreeDto>(); var list = menuService.GetMenuList(new QueryModel() { limit = 99999999, page = 1 }).data as List <MenuDto>; list = list.OrderBy(p => p.Order).ToList(); //list存放所有的菜单. //只允许用户授权自己才有权限的菜单 list = list.Where(p => p.State == (int)MenuStatus.Normal).ToList(); var nowSelected = menuService.FindMenusByRole(new RoleDto() { Id = roleId }); List <MenuDto> nowSelectResult = new List <MenuDto>(); foreach (var item in nowSelected) { nowSelectResult.Add(new MenuDto() { CreateTs = item.CreateTs, Icon = item.Icon, Id = item.Id, Name = item.Name, Order = item.Order, ParentId = item.ParentId, Url = item.Url }); ExpandTreeViewNode(item.Children, ref nowSelectResult); } foreach (var item in list) { if (item.ParentId.HasValue) { continue; } LayuiTreeDto dto = new LayuiTreeDto(); dto.@checked = nowSelectResult.Where(p => p.Id == item.Id).Any() ? true : false; dto.children = findAllParents(item, list, nowSelectResult); dto.id = item.Id; dto.title = item.Name; trees.Add(dto); } foreach (var item in trees) { item.@checked = false; DebugTree(item.children); } return(trees); }
/// <summary> /// 找到所有的父节点 /// </summary> /// <returns></returns> private List <LayuiTreeDto> findAllParents(MenuDto menu, List <MenuDto> allData, List <MenuDto> nowSelected) { List <LayuiTreeDto> treeList = new List <LayuiTreeDto>(); if (allData != null) { foreach (var item in allData) { if (item.ParentId == menu.Id) { LayuiTreeDto myTree = new LayuiTreeDto(); myTree.@checked = nowSelected.Where(p => p.Id == item.Id).Any(); myTree.children = findAllParents(item, allData, nowSelected); myTree.id = item.Id; myTree.title = item.Name; treeList.Add(myTree); } } } if (treeList.Count == 0) { treeList = null; } return(treeList); }