Пример #1
0
        public ResponseInfoModel List([FromUri] GetArticleListInput input)
        {
            ResponseInfoModel json = new ResponseInfoModel()
            {
                Success = 1, Result = new object()
            };

            try
            {
                CheckModelState();
                int pageSize           = _systemConfigurationService.GetPageSize();
                int limit              = pageSize;
                int offset             = pageSize * (input.PageIndex - 1);
                int total              = 0;
                var articleCategoryIds = _articleCategoryService.ChildInts(input.ArticleCategorysID);
                var outputList         = _articleService.GetArticleList(limit, offset, out total, input, articleCategoryIds);
                json.Result = new PagingInfo()
                {
                    totalCount = total, pageCount = (int)Math.Ceiling((decimal)total / pageSize), pageSize = pageSize, list = outputList
                };
            }
            catch (Exception e)
            {
                DisposeUserFriendlyException(e, ref json, "api/article/list", LocalizationConst.QueryFail);
            }
            return(json);
        }
Пример #2
0
        public async Task <IActionResult> ExportExcel(GetArticleListInput input)
        {
            var content = await _service.ExportExcel(input);

            var memoryStream = new MemoryStream(content);

            return(new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            {
                FileDownloadName = "Article.xlsx"
            });
        }
Пример #3
0
        /// <summary>
        /// 获取文章列表.
        /// </summary>
        /// <param name="categoryCode">分类代码</param>
        /// <param name="title">文章标题</param>
        /// <param name="pageNo">第几页(默认1)</param>
        /// <param name="pageSize">每页几行(默认20)</param>
        /// <returns></returns>
        public IHttpActionResult GetArticleList(string categoryCode, string title = null, int pageNo = 1, int pageSize = 20)
        {
            GetArticleListInput input = new GetArticleListInput()
            {
                CategoryCode = categoryCode,
                Title        = title,
                PageNo       = pageNo,
                PageSize     = pageSize
            };

            var result = this.articleService.GetArticleList(input);

            return(Ok(result));
        }
        /// <summary>
        /// 查询文章.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public ArticleListOutput GetArticleList(GetArticleListInput input)
        {
            using (MyArticleContext context = new MyArticleContext())
            {
                var query =
                    from data in context.Articles.Include("ArticleCategory")
                    where
                    // 指定分类.
                    data.ArticleCategoryCode == input.CategoryCode
                    // 数据有效.
                    && data.Status == Article.STATUS_IS_ACTIVE
                    // 今天不应显示  文章日期是明天或者更后的文章.
                    && data.ArticleDate <= DateTime.Now
                    select new ArticleOutput()
                {
                    ArticleID           = data.ArticleID,
                    ArticleTitle        = data.ArticleTitle,
                    ArticleDate         = data.ArticleDate,
                    ShortArticleContent = data.ShortArticleContent
                };

                if (!String.IsNullOrEmpty(input.Title))
                {
                    // 指定了标题.
                    query = query.Where(p => p.ArticleTitle.Contains(input.Title));
                }

                // 初始化翻页.
                PageInfo pgInfo = new PageInfo(
                    pageSize: input.PageSize,
                    pageNo: input.PageNo,
                    rowCount: query.Count());

                query = query.OrderByDescending(p => p.ArticleDate)
                        .Skip(pgInfo.SkipValue)
                        .Take(pgInfo.PageSize);


                ArticleListOutput result = new ArticleListOutput()
                {
                    PageIndex   = pgInfo.PageIndex,
                    PageSize    = pgInfo.PageSize,
                    RowCount    = pgInfo.RowCount,
                    ArticleList = query.ToList()
                };

                return(result);
            }
        }
Пример #5
0
        public async Task <PagedResultDto <GetArticleListDto> > GetArticleList(GetArticleListInput input)
        {
            var query = _articleInfoRepository.GetAllIncluding(aa => aa.ColumnInfo, aa => aa.ArticleSourceInfo, aa => aa.ArticleTagInfos);

            if (input.ColumnInfoId.HasValue)
            {
                query = query.Where(aa => aa.ColumnInfoId == input.ColumnInfoId);
            }
            else if (!string.IsNullOrWhiteSpace(input.ColumnInfoCode))
            {
                query = query.Where(aa => aa.ColumnInfo.Code == input.ColumnInfoCode);
            }

            if (!string.IsNullOrWhiteSpace(input.KeyWord))
            {
                query = query.Where(aa => aa.Title.Contains(input.KeyWord) || aa.ColumnInfo.Title.Contains(input.KeyWord));
            }

            if (input.ArticleSourceId.HasValue)
            {
                query = query.Where(aa => aa.ArticleSourceInfoId == input.ArticleSourceId.Value);
            }

            switch (input.RecommendedTypes)
            {
            case GetArticleListInput.RecommendedTypesEnum.Common:
                query = query.Where(aa => aa.RecommendedType == RecommendedTypes.Common);
                break;

            case GetArticleListInput.RecommendedTypesEnum.Hot:
                query = query.Where(aa => aa.RecommendedType == RecommendedTypes.Hot);
                break;

            case GetArticleListInput.RecommendedTypesEnum.Recommend:
                query = query.Where(aa => aa.RecommendedType == RecommendedTypes.Recommend);
                break;

            case GetArticleListInput.RecommendedTypesEnum.Top:
                query = query.Where(aa => aa.RecommendedType == RecommendedTypes.Top);
                break;
            }

            var resultCount = query.Count();

            var queryObjectAttach = GetObjectAttachmentInfo(AttachmentObjectTypes.ArticleInfo);

            var data = await(from aa in query
                             join oa in queryObjectAttach
                             on aa.Id equals oa.ObjectId
                             into temp
                             from tt in temp.DefaultIfEmpty()
                             select new
            {
                ArticleInfoId         = aa.Id,
                Title                 = aa.Title,
                Intro                 = aa.Content.Length > 20 ? $"{aa.Content.Substring(0, 20)}..." : "",
                ThumbnailUrl          = tt != null ? tt.AttachmentInfo.Url : "",
                Publisher             = aa.Publisher,
                ColumnInfoTitle       = aa.ColumnInfo.Title,
                ArticleSourceInfoName = aa.ArticleSourceInfo.Name,
                RecommendedTypes      = aa.RecommendedType,
                ReleaseTime           = aa.ReleaseTime
            }).OrderBy(input.Sorting)
                       .PageBy(input)
                       .ToListAsync();

            var output = data.Select(aa => new GetArticleListDto
            {
                ArticleInfoId         = aa.ArticleInfoId,
                Title                 = aa.Title,
                Intro                 = _editorHelper.ClearHTML(aa.Intro),
                ThumbnailUrl          = aa.ThumbnailUrl,
                Publisher             = aa.Publisher,
                ColumnInfoTitle       = aa.ColumnInfoTitle,
                ArticleSourceInfoName = aa.ArticleSourceInfoName,
                RecommendedTypes      = GetArticleListDtoRecType(aa.RecommendedTypes),
                ReleaseTime           = aa.ReleaseTime
            }).ToList();

            GetArticleListDto.RecommendedTypesEnum GetArticleListDtoRecType(RecommendedTypes recommendedTypes)
            {
                GetArticleListDto.RecommendedTypesEnum rt;
                switch (recommendedTypes)
                {
                case RecommendedTypes.Common:
                    rt = GetArticleListDto.RecommendedTypesEnum.Common;
                    break;

                case RecommendedTypes.Hot:
                    rt = GetArticleListDto.RecommendedTypesEnum.Hot;
                    break;

                case RecommendedTypes.Recommend:
                    rt = GetArticleListDto.RecommendedTypesEnum.Recommend;
                    break;

                case RecommendedTypes.Top:
                    rt = GetArticleListDto.RecommendedTypesEnum.Top;
                    break;

                default:
                    rt = GetArticleListDto.RecommendedTypesEnum.Common;
                    break;
                }
                return(rt);
            }

            return(new PagedResultDto <GetArticleListDto>(resultCount, output));
        }