public async Task <PagedDto <CategoryPageDto> > GetPageAsync(CategoryPagingDto pagingDto) { if (pagingDto.CreateStartTime != null && pagingDto.CreateEndTime == null) { throw new KnownException("创建时间参数有误", ServiceResultCode.ParameterError); } var parentIds = new List <string>(); if (!string.IsNullOrWhiteSpace(pagingDto.ParentIds)) { parentIds = pagingDto.ParentIds.Split(",").ToList(); } pagingDto.Sort = pagingDto.Sort.IsNullOrEmpty() ? "id ASC" : pagingDto.Sort.Replace("-", " "); var categories = await _categoryRepo .Select .WhereIf(!string.IsNullOrWhiteSpace(pagingDto.CategoryName), c => c.Name.Contains(pagingDto.CategoryName)) .WhereIf(parentIds != null && parentIds.Any(), c => parentIds.Contains(c.ParentId.ToString())) .WhereIf(!string.IsNullOrWhiteSpace(pagingDto.Type), c => c.Type.Equals(pagingDto.Type)) .WhereIf(pagingDto.CreateStartTime != null, c => c.CreateTime >= pagingDto.CreateStartTime && c.CreateTime <= pagingDto.CreateEndTime) .OrderBy(pagingDto.Sort) .ToPageListAsync(pagingDto, out long totalCount); var categoryDtos = categories.Select(c => { var dto = Mapper.Map <CategoryPageDto>(c); CategoryEntity category = null; if (c.ParentId != 0) { category = _categoryRepo.Get(c.ParentId); } dto.ParentName = category?.Name; dto.TypeName = SystemConst.Switcher.CategoryType(c.Type); dto.IconUrl = _fileRepo.GetFileUrl(c.IconUrl); return(dto); }).ToList(); return(new PagedDto <CategoryPageDto>(categoryDtos, totalCount)); }
public async Task <ServiceResult <PagedDto <CategoryPageDto> > > GetPageAsync([FromQuery] CategoryPagingDto pagingDto) { return(ServiceResult <PagedDto <CategoryPageDto> > .Successed(await _categoryService.GetPageAsync(pagingDto))); }