public async Task <PagedResultDto <ArticleListDto> > GetSubscribeArticleAsync(PageDto pageDto) { long userId = CurrentUser.Id ?? 0; List <long> subscribeUserIds = await _userSubscribeService.GetSubscribeUserIdAsync(userId); var articles = await _articleRepository .Select .Include(r => r.Classify) .Include(r => r.UserInfo) .IncludeMany(r => r.Tags, r => r.Where(u => u.Status)) .IncludeMany(r => r.UserLikes)//, r => r.Where(u => u.CreateUserId == userId)) .Where(r => r.IsAudit) .WhereIf(subscribeUserIds.Count > 0, r => subscribeUserIds.Contains(r.CreateUserId)) .WhereIf(subscribeUserIds.Count == 0, r => false) .OrderByDescending(r => r.CreateTime).ToPagerListAsync(pageDto, out long totalCount); List <ArticleListDto> articleDtos = articles .Select(r => { ArticleListDto articleDto = Mapper.Map <ArticleListDto>(r); articleDto.IsLiked = r.UserLikes.Any(); articleDto.ThumbnailDisplay = _fileRepository.GetFileUrl(articleDto.Thumbnail); return(articleDto); }) .ToList(); return(new PagedResultDto <ArticleListDto>(articleDtos, totalCount)); }
public async Task <PagedResultDto <ArticleListDto> > GetArticleAsync(ArticleSearchDto searchDto) { DateTime monthDays = DateTime.Now.AddDays(-30); DateTime weeklyDays = DateTime.Now.AddDays(-7); DateTime threeDays = DateTime.Now.AddDays(-3); long? userId = CurrentUser.Id; List <Article> articles = await _articleRepository .Select .Include(r => r.UserInfo) .IncludeMany(r => r.Tags, r => r.Where(u => u.Status == true)) .IncludeMany(r => r.UserLikes, r => r.Where(u => u.CreateUserId == userId)) .Where(r => r.IsAudit == true) .WhereCascade(r => r.IsDeleted == false) .WhereIf(searchDto.UserId != null, r => r.CreateUserId == searchDto.UserId) .WhereIf(searchDto.TagId.HasValue, r => r.Tags.AsSelect().Any(u => u.Id == searchDto.TagId)) .WhereIf(searchDto.ClassifyId.HasValue, r => r.ClassifyId == searchDto.ClassifyId) .WhereIf(searchDto.ChannelId.HasValue, r => r.ChannelId == searchDto.ChannelId) .WhereIf(searchDto.Title.IsNotNullOrEmpty(), r => r.Title.Contains(searchDto.Title)) .WhereIf(searchDto.Sort == "THREE_DAYS_HOTTEST", r => r.CreateTime > threeDays) .WhereIf(searchDto.Sort == "WEEKLY_HOTTEST", r => r.CreateTime > weeklyDays) .WhereIf(searchDto.Sort == "MONTHLY_HOTTEST", r => r.CreateTime > monthDays) .OrderByDescending( searchDto.Sort == "THREE_DAYS_HOTTEST" || searchDto.Sort == "WEEKLY_HOTTEST" || searchDto.Sort == "MONTHLY_HOTTEST" || searchDto.Sort == "HOTTEST", r => (r.ViewHits + r.LikesQuantity * 20 + r.CommentQuantity * 30)) .OrderByDescending(r => r.CreateTime).ToPagerListAsync(searchDto, out long totalCount); List <ArticleListDto> articleDtos = articles .Select(a => { ArticleListDto articleDto = Mapper.Map <ArticleListDto>(a); articleDto.IsLiked = userId != null && a.UserLikes.Any(); articleDto.ThumbnailDisplay = _fileRepository.GetFileUrl(articleDto.Thumbnail); return(articleDto); }) .ToList(); return(new PagedResultDto <ArticleListDto>(articleDtos, totalCount)); }