コード例 #1
0
        public async Task <List <Base_Action> > GetDataListAsync(Base_ActionsInputDTO input)
        {
            var q = GetIQueryable();

            q = q
                .WhereIf(!input.parentId.IsNullOrEmpty(), x => x.ParentId == input.parentId)
                .WhereIf(input.types?.Length > 0, x => input.types.Contains(x.Type))
                .WhereIf(input.ActionIds?.Length > 0, x => input.ActionIds.Contains(x.Id))
            ;

            return(await q.OrderBy(x => x.Sort).ToListAsync());
        }
コード例 #2
0
        public async Task <List <Base_ActionDTO> > GetTreeDataListAsync(Base_ActionsInputDTO input)
        {
            var qList = await GetDataListAsync(input);

            var treeList = qList.Select(x => new Base_ActionDTO
            {
                Id         = x.Id,
                NeedAction = x.NeedAction,
                Text       = x.Name,
                ParentId   = x.ParentId,
                Type       = x.Type,
                Url        = x.Url,
                Value      = x.Id,
                Icon       = x.Icon,
                Sort       = x.Sort,
                selectable = input.selectable
            }).ToList();

            //菜单节点中,若子节点为空则移除父节点
            if (input.checkEmptyChildren)
            {
                treeList = treeList.Where(x => x.Type != 0 || TreeHelper.GetChildren(treeList, x, false).Count > 0).ToList();
            }

            await SetProperty(treeList);

            return(TreeHelper.BuildTree(treeList));

            async Task SetProperty(List <Base_ActionDTO> _list)
            {
                var ids            = _list.Select(x => x.Id).ToList();
                var allPermissions = await GetIQueryable()
                                     .Where(x => ids.Contains(x.ParentId) && (int)x.Type == 2)
                                     .ToListAsync();

                _list.ForEach(aData =>
                {
                    var permissionValues = allPermissions
                                           .Where(x => x.ParentId == aData.Id)
                                           .Select(x => $"{x.Name}({x.Value})")
                                           .ToList();

                    aData.PermissionValues = permissionValues;
                });
            }
        }
コード例 #3
0
        public async Task <List <Base_Action> > GetDataListAsync(Base_ActionsInputDTO input)
        {
            var q = input.q ?? GetIQueryable();

            var where = LinqHelper.True <Base_Action>();
            if (!input.keyword.IsNullOrEmpty())
            {
                where = where.And(x => EF.Functions.Like(x.Name, $"%{input.keyword}%"));
            }
            if (!input.parentId.IsNullOrEmpty())
            {
                where = where.And(x => x.ParentId == input.parentId);
            }
            if (input.types?.Count > 0)
            {
                where = where.And(x => input.types.Contains((int)x.Type));
            }

            return(await q.Where(where).OrderBy(x => x.Sort).ToListAsync());
        }