コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }