public async Task <ServiceResult <PagedDto <ArticleDto> > > GetPagesByTagAsync([FromQuery] ArticlePagingByTagDto pagingDto, long tagId) { var validation = pagingDto.Validation(); if (validation.Fail) { return(ServiceResult <PagedDto <ArticleDto> > .Failed(validation.Msg)); } return(await Task.FromResult(await _articleSvc.GetPagesByTagAsync(pagingDto, tagId))); }
public async Task <ServiceResult <PagedDto <ArticleDto> > > GetPagesByTagAsync(ArticlePagingByTagDto pagingDto, long tagId) { pagingDto.Sort = pagingDto.Sort.IsNullOrEmpty() ? "create_time DESC" : pagingDto.Sort.Replace("-", " "); var articleIds = await _articleTagRepo.Select.Where(at => at.TagId == tagId).ToListAsync(at => at.ArticleId); var articles = await _articleRepo .Select .Include(a => a.Category) .Include(a => a.User) .IncludeMany(a => a.Tags) .Where(a => !a.IsDeleted) .Where(a => articleIds.Contains(a.Id)) .OrderBy(pagingDto.Sort) .ToPageListAsync(pagingDto, out long total); var dtos = articles.Select(a => Mapper.Map <ArticleDto>(a)).ToList(); return(await Task.FromResult(ServiceResult <PagedDto <ArticleDto> > .Successed(new PagedDto <ArticleDto>(dtos, total)))); }