//[AdminAuthorize(Permissions = "admin.article.index")] public IActionResult PagedList(PagedQueryArticleRequest request) { var list = _articleService.PagedQueryArticles(request); var result = new { Code = 0, Message = "", Total = list.TotalCount, Data = list.List }; return(Json(result)); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <returns></returns> public PagedQueryArticleResponse PagedQueryArticles(PagedQueryArticleRequest request) { var page = request.Page ?? 1; var pageSize = request.PageSize ?? 20; ArticleModel model = null; using (var client = DbFactory.GetClient()) { model = client.Queryable <ArticleModel>().InSingle(request.ArticleModelId); } if (model == null) { throw new AlertException("找不到文章模型"); } //设置字段 var articleProperties = GenericCache <ArticleTypeInfo> .GetOrSet(() => new ArticleTypeInfo { PropertyInfos = typeof(Article).GetProperties() }) .PropertyInfos; var configs = JsonConvert.DeserializeObject <List <ArticleConfiguration> >(model.Configuration); var selectFields = configs.Where(it => it.IsEnable && it.IsShowedInList) .Select(it => { var sugarColumn = articleProperties .FirstOrDefault(x => x.Name.Equals(it.FiledName, StringComparison.OrdinalIgnoreCase)) .GetCustomAttribute <SugarColumn>(); return(sugarColumn == null ? it.FiledName : sugarColumn.ColumnName); }).ToArray().Join(","); selectFields += selectFields.IsNullOrEmpty() ? "id,category_id" : ",id,category_id"; //类别 var categories = new long[] { }; //if (request.CategoryId > 0) // categories = _categoryService.GetChildrenIdsByParentId(request.CategoryId).ToArray(); using (var client = DbFactory.GetClient()) { var total = 0; var query = client.Queryable <Article>() .Where(it => it.ArticleTypeId == request.ArticleModelId) .WhereIF(request.CategoryId > 0, it => categories.Contains(it.CategoryId.Value)); query = query.Select(selectFields); var list = query .OrderBy("id DESC") .ToPageList(page, pageSize, ref total); return(new PagedQueryArticleResponse() { List = list.Select(it => new QueryArticleItem { Id = it.Id, CategoryId = it.CategoryId, Title = it.Title, SubTitle = it.SubTitle, TitleColor = it.TitleColor, TitleBold = it.TitleBold, Summary = it.Summary, Content = it.Content, Tags = it.Tags, ThumbImage = it.ThumbImage.GetFullPath(), Video = it.Video, Source = it.Source, Author = it.Author, Hits = it.Hits, Addtime = it.Addtime, OrderIndex = it.OrderIndex, IsTop = it.IsTop, IsRecommend = it.IsRecommend, SeoTitle = it.SeoTitle, SeoKeyword = it.SeoKeyword, SeoDescription = it.SeoDescription, String1 = it.String1, String2 = it.String2, String3 = it.String3, String4 = it.String4, Int1 = it.Int1, Int2 = it.Int2, Int3 = it.Int3, Int4 = it.Int4, Decimal1 = it.Decimal1, Decimal2 = it.Decimal2, Decimal3 = it.Decimal3, Decimal4 = it.Decimal4, Datetime1 = it.Datetime1, Datetime2 = it.Datetime2, Datetime3 = it.Datetime3, Datetime4 = it.Datetime4, Bool1 = it.Bool1, Bool2 = it.Bool2, Bool3 = it.Bool3, Bool4 = it.Bool4, Text1 = it.Text1, Text2 = it.Text2, Text3 = it.Text3, Text4 = it.Text4 }).ToList(), Page = page, PageSize = pageSize, TotalCount = total }); } }