示例#1
0
        public async Task <PagedResultDto <PostDetailsDto> > GetPostsPagedForByTagName(GetPortalBlogsInput input)
        {
            var tag = input.TagName.IsNullOrWhiteSpace()
                ? null
                : await _tagManager.QueryTagsAsNoTracking().FirstOrDefaultAsync(a => a.Name == input.TagName);



            //if (tag != null)
            //{

            //    var count =   await _tagManager.QueryTagsAsNoTracking().CountAsync();

            //    //var tagPosts =   _postTagRepository.GetAll().Where(a=>a.TagId==tag.Id).Select(new string());

            //    //var posts =   query
            //    //    .OrderByDescending(d => d.CreationTime)
            //    //    .PageBy(input)
            //    //    .ToListAsync();

            //    var tagPostsquery = _postTagRepository.GetAll().AsNoTracking();
            //    var postsquery = _postManager.QueryPostsAsNoTracking();


            //  var da=  postsquery.Where(a => a.Tags.Any(t => t.TagId == tag.Id)).ToList();



            //    //var postDtos = ObjectMapper.Map<List<PostDetailsDto>>(posts);


            //    //return   posts = await _postManager.GetPostsByTagId(tag.Id);
            //}

            return(new PagedResultDto <PostDetailsDto>());
        }
        //// custom codes

        /// <summary>
        /// 根据博客id或者标签查询文章列表
        /// </summary>
        /// <param name="input"> </param>
        /// <returns> </returns>
        public async Task <PagedResultDto <PostDetailsDto> > GetListByBlogIdAndTagName(GetPortalBlogsInput input)
        {
            var query = _postManager.QueryPostsAsNoTracking()
                        //模糊搜索地址
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Url.Contains(input.FilterText))
                        //模糊搜索封面
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.CoverImage.Contains(input.FilterText))
                        //模糊搜索标题
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Title.Contains(input.FilterText))
                        //模糊搜索内容
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Content.Contains(input.FilterText));
            // TODO:根据传入的参数添加过滤条件

            var count = await query.CountAsync();

            var posts = await query.Where(a => a.BlogId == input.BlogId)
                        .OrderByDescending(d => d.CreationTime)
                        .PageBy(input)
                        .ToListAsync();

            var tag = input.TagName.IsNullOrWhiteSpace() ? null : await _tagManager.FindByNameAndBlogIdAsync(input.BlogId, input.TagName);



            var postDtos = ObjectMapper.Map <List <PostDetailsDto> >(posts);



            var userDictionary = new Dictionary <long, UserListDto>();

            foreach (var postDto in postDtos)
            {
                postDto.Tags = await GetTagsOfPost(postDto.Id);

                //获取文章中的评论总数
                postDto.CommentCount = await _commentManager.GetCommentCountOfPostAsync(postDto.Id);

                // 通过文章的创建者userid可以获取关于用户的更多信息

                if (postDto.CreatorUserId.HasValue)
                {
                    if (!userDictionary.ContainsKey(postDto.CreatorUserId.Value))
                    {
                        var tes = AbpSession.TenantId;
                        // AbpSession
                        var creatorUser = await UserManager.Users
                                          .IgnoreQueryFilters()
                                          .FirstOrDefaultAsync(a => a.Id == postDto.CreatorUserId.Value);

                        if (creatorUser != null)
                        {
                            userDictionary[creatorUser.Id] = ObjectMapper.Map <UserListDto>(creatorUser);
                        }
                    }

                    if (userDictionary.ContainsKey(postDto.CreatorUserId.Value))
                    {
                        postDto.Writer = userDictionary[(long)postDto.CreatorUserId];
                    }
                }
            }

            if (tag != null)
            {
                postDtos = await FilterPostsByTag(postDtos, tag);
            }
            return(new PagedResultDto <PostDetailsDto>(count, postDtos));
        }
示例#3
0
        /// <summary>
        /// 获取博客列表下的文章内容
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <PagedResultDto <PostDetailsDto> > GetPostsPagedForHome(GetPortalBlogsInput input)
        {
            var query = _postManager.QueryPostsAsNoTracking()
                        //模糊搜索地址
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Url.Contains(input.FilterText))
                        //模糊搜索标题
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Title.Contains(input.FilterText))
                        //模糊搜索内容
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Content.Contains(input.FilterText));

            // TODO:根据传入的参数添加过滤条件

            var tag = input.TagName.IsNullOrWhiteSpace()
                ? null
                : await _tagManager.QueryTagsAsNoTracking().FirstOrDefaultAsync(a => a.Name == input.TagName);

            if (tag != null)
            {
                query = query.Where(a => a.Tags.Any(t => t.TagId == tag.Id));
            }



            var count = await query.CountAsync();

            var posts = await query
                        .OrderByDescending(d => d.CreationTime)
                        .PageBy(input)
                        .ToListAsync();



            var postDtos = ObjectMapper.Map <List <PostDetailsDto> >(posts);

            var userDictionary = new Dictionary <long, UserListDto>();
            var blogDictionary = new Dictionary <Guid, string>();

            foreach (var postDto in postDtos)
            {
                // 通过文章的创建者userid可以获取关于用户的更多信息


                if (postDto.CreatorUserId.HasValue)
                {
                    if (!userDictionary.ContainsKey(postDto.CreatorUserId.Value))
                    {
                        var tes = AbpSession.TenantId;
                        // AbpSession
                        var creatorUser = await UserManager.Users
                                          .IgnoreQueryFilters()
                                          .FirstOrDefaultAsync(a => a.Id == postDto.CreatorUserId.Value);

                        if (creatorUser != null)
                        {
                            userDictionary[creatorUser.Id] = ObjectMapper.Map <UserListDto>(creatorUser);
                        }
                    }

                    if (userDictionary.ContainsKey(postDto.CreatorUserId.Value))
                    {
                        postDto.Writer = userDictionary[(long)postDto.CreatorUserId];
                    }
                }


                // 获取文章的博客短名称

                if (!blogDictionary.ContainsKey(postDto.BlogId))
                {
                    var blogDto = await _blogManager.FindByIdAsync(postDto.BlogId);

                    blogDictionary[postDto.BlogId] = blogDto.ShortName;
                }


                if (blogDictionary.ContainsKey(postDto.BlogId))
                {
                    postDto.BlogShortName = blogDictionary[postDto.BlogId];
                }

                //获取标签
                var tags = await _tagManager.GetTagsOfPost(postDto.Id);

                postDto.Tags = ObjectMapper.Map <List <TagListDto> >(tags);
            }

            return(new PagedResultDto <PostDetailsDto>(count, postDtos));
        }