コード例 #1
0
        public async Task <PagedResultDto <BlogListDto> > GetPaged(GetBlogsInput input)
        {
            var query = _blogRepository.GetAllIncluding(x => x.BlogUser)

                        //模糊搜索博客名称
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Name.Contains(input.FilterText))
                        //模糊搜索博客短名称
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.ShortName.Contains(input.FilterText))
                        //模糊搜索博客描述
                        .WhereIf(!input.FilterText.IsNullOrWhiteSpace(), a => a.Description.Contains(input.FilterText))
            ;
            // TODO:根据传入的参数添加过滤条件

            var count = await query.CountAsync();

            var blogList = await query
                           .OrderBy(input.Sorting).AsNoTracking()
                           .PageBy(input)
                           .ToListAsync();

            var blogListDtos = ObjectMapper.Map <List <BlogListDto> >(blogList);


            foreach (var item in blogListDtos)
            {
                var tags = await GetTagsOfBlog(item.Id);

                item.Tags = string.Join(", ", tags.Select(p => p.Name).ToArray());
            }

            return(new PagedResultDto <BlogListDto>(count, blogListDtos));
        }
コード例 #2
0
        public async Task <ListResultDto <BlogDto> > GetBlogs(GetBlogsInput input)
        {
            var blogs = await _blogRepository.GetAllListAsync();

            var dtos = blogs.MapTo <List <BlogDto> >();

            return(new ListResultDto <BlogDto>(dtos));
        }
コード例 #3
0
ファイル: BlogController.cs プロジェクト: yuluoqian/ChiakiYu
        /// <summary>
        /// 日志首页,列表页
        /// </summary>
        /// <returns></returns>
        public virtual ActionResult Home(int pageSize = 8, int pageIndex = 1, SortBy?sortBy = null)
        {
            var input = new GetBlogsInput
            {
                PageSize  = pageSize,
                PageIndex = pageIndex,
                SortBy    = sortBy
            };
            var list = _blogService.GetBlogs(input);

            return(View(list));
        }
コード例 #4
0
ファイル: BlogService.cs プロジェクト: yuluoqian/ChiakiYu
        /// <summary>
        ///     获取所有用户分页列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public PagingList <Blog> GetBlogs(GetBlogsInput input)
        {
            var query = _blogRepository.Table;

            if (!string.IsNullOrWhiteSpace(input.NameKeyWords))
            {
                query = query.Where(m => m.Title.Contains(input.NameKeyWords) || m.Summary.Contains(input.NameKeyWords));
            }
            if (input.SortBy.HasValue)
            {
                switch (input.SortBy.Value)
                {
                case SortBy.CreatedTime:
                    query = query.OrderBy(n => n.Id);
                    break;

                case SortBy.CreatedTimeDesc:
                    query = query.OrderByDescending(n => n.Id);
                    break;

                case SortBy.UpdatedTimeDesc:
                    query = query.OrderByDescending(n => n.UpdatedTime);
                    break;

                case SortBy.CommentCount:
                    query = query.OrderByDescending(n => n.CommentCount);
                    break;

                case SortBy.HitCount:
                    query = query.OrderByDescending(n => n.HitCount);
                    break;

                default:
                    query = query.OrderByDescending(n => n.IsTop).ThenByDescending(n => n.Id);
                    break;
                }
            }
            else
            {
                query = query.OrderByDescending(n => n.IsTop).ThenByDescending(n => n.Id);
            }
            var source = query
                         .Include(n => n.Author).Skip((input.PageIndex - 1) * input.PageSize)
                         .Take(input.PageSize);

            var result = new PagingList <Blog>(source, input.PageIndex, input.PageSize, query.LongCount());

            return(result);
        }