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)); }
public async Task <ServiceResult <PagedDto <AssetPageDto> > > GetPageAsync([FromQuery] AssetPagingDto pagingDto) { return(ServiceResult <PagedDto <AssetPageDto> > .Successed(await _assetService.GetPageAsync(pagingDto))); }