Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }