Exemplo n.º 1
0
        public async Task <PagedDto <AssetPageDto> > GetPageAsync(AssetPagingDto pagingDto)
        {
            if (pagingDto.CreateStartTime != null && pagingDto.CreateEndTime == null)
            {
                throw new KnownException("创建时间参数有误", ServiceResultCode.ParameterError);
            }
            pagingDto.Sort = pagingDto.Sort.IsNullOrEmpty() ? "id ASC" : pagingDto.Sort.Replace("-", " ");
            var parentIds = new List <string>();

            if (!string.IsNullOrWhiteSpace(pagingDto.ParentIds))
            {
                parentIds = pagingDto.ParentIds.Split(",").ToList();
            }
            var assets = await _assetRepo
                         .Select
                         .WhereIf(!string.IsNullOrWhiteSpace(pagingDto.AssetName), a => a.Name.Contains(pagingDto.AssetName))
                         .WhereIf(parentIds != null && parentIds.Any(), a => parentIds.Contains(a.ParentId.ToString()))
                         .WhereIf(!string.IsNullOrWhiteSpace(pagingDto.Type), c => c.Type.Equals(pagingDto.Type))
                         .WhereIf(pagingDto.CreateStartTime != null, a => a.CreateTime >= pagingDto.CreateStartTime && a.CreateTime <= pagingDto.CreateEndTime)
                         .OrderBy(pagingDto.Sort)
                         .ToPageListAsync(pagingDto, out long totalCount);

            var assetDtos = assets.Select(a =>
            {
                var dto = Mapper.Map <AssetPageDto>(a);
                AssetEntity category = null;
                if (a.ParentId != 0)
                {
                    category = _assetRepo.Get(a.ParentId);
                }
                dto.ParentName = category?.Name;
                dto.TypeName   = SystemConst.Switcher.AssetType(a.Type);
                dto.IconUrl    = _fileRepo.GetFileUrl(a.IconUrl);
                return(dto);
            }).ToList();

            return(new PagedDto <AssetPageDto>(assetDtos, totalCount));
        }
Exemplo n.º 2
0
 public async Task <ServiceResult <PagedDto <AssetPageDto> > > GetPageAsync([FromQuery] AssetPagingDto pagingDto)
 {
     return(ServiceResult <PagedDto <AssetPageDto> > .Successed(await _assetService.GetPageAsync(pagingDto)));
 }