/// <summary> /// 获取树形菜单 /// </summary> /// <param name="systemId">系统ID</param> /// <returns></returns> public async Task <ResourceIndexViewModel> GetTreeAsync(long systemId) { ResourceIndexViewModel model = new ResourceIndexViewModel(); var dbsys = await _databaseFixture.Db.SysSystem.FindAllAsync(m => m.IsDel == 0); //拉取系统 model.SystemItems = dbsys.Select(m => new SelectListItem() { Value = m.SystemId.ToString(), Text = m.SystemName, Selected = m.SystemId == systemId }).ToList(); var dbres = await _databaseFixture.Db.SysResource.FindAllAsync(m => m.SystemId == systemId); var dblist = dbres.OrderBy(m => m.Sort).ToList(); List <ResourceTreeViewModel> trees = new List <ResourceTreeViewModel>(); foreach (var item in dblist.Where(m => m.ParentId == 0)) { ResourceTreeViewModel tree = new ResourceTreeViewModel { ResourceId = item.ResourceId, ResourceName = item.ResourceName, ParentId = item.ParentId, ResourceUrl = item.ResourceUrl, Sort = item.Sort, Icon = item.Icon, IsDel = item.IsDel, Memo = item.Memo }; tree.Children = dblist.Where(m => m.ParentId == tree.ResourceId && m.IsButton == 0) .Select(m => new ResourceTreeViewModel() { ResourceId = m.ResourceId, ResourceName = m.ResourceName, ParentId = m.ParentId, ResourceUrl = m.ResourceUrl, Sort = m.Sort, Icon = m.Icon, IsDel = m.IsDel, Memo = m.Memo }).ToList(); tree.Buttons = dblist.Where(m => m.ParentId == tree.ResourceId && m.IsButton == 1) .Select(m => new IdAndValue() { Id = m.ResourceId, Value = m.ResourceName }).ToList(); var tempchild = tree.Children; GetChildren(ref tempchild, ref dblist); tree.Children = tempchild; trees.Add(tree); } model.ResourceTree = trees; return(model); }
/// <summary> /// 根据用户获取左侧菜单列表 /// </summary> /// <param name="userid">用户ID</param> /// <returns></returns> public async Task <List <ResourceTreeViewModel> > GetLeftTreeAsync(long userid) { var list = await _databaseFixture.Db.SysResource.GetListByUserIdAsync(userid); var dblist = list.DistinctBy(m => m.ResourceId).OrderBy(m => m.Sort).ToList(); List <ResourceTreeViewModel> trees = new List <ResourceTreeViewModel>(); foreach (var item in dblist.Where(m => m.ParentId == 0)) { ResourceTreeViewModel tree = new ResourceTreeViewModel { ResourceId = item.ResourceId, ResourceName = item.ResourceName, ParentId = item.ParentId, ResourceUrl = item.ResourceUrl, Sort = item.Sort, Icon = item.Icon, IsDel = item.IsDel, Memo = item.Memo }; tree.Children = dblist.Where(m => m.ParentId == tree.ResourceId) .Select(m => new ResourceTreeViewModel() { ResourceId = m.ResourceId, ResourceName = m.ResourceName, ParentId = m.ParentId, ResourceUrl = m.ResourceUrl, Sort = m.Sort, Icon = m.Icon, IsDel = m.IsDel, Memo = m.Memo }).OrderBy(m => m.Sort).ToList(); var tempchild = tree.Children; GetChildren(ref tempchild, ref dblist); tree.Children = tempchild; trees.Add(tree); } return(trees); }