public List <ArticleTopic> GetList(ArticleTopicSearchView searchView) { var expression = ExtLinq.True <ArticleTopic>(); if (!string.IsNullOrEmpty(searchView.Keyword)) { expression = expression.And(t => t.Title.Contains(searchView.Keyword)); expression = expression.Or(t => t.ShortTitle.Contains(searchView.Keyword)); } return(_Respository.Get(expression, o => o.OrderBy(t => t.SortCode)).ToList()); }
public ActionResult GetGridJson(ArticleTopicSearchView searchView, int page) { var data = _ArticleTopicService.GetTopicsList(searchView, page, PageSize); //用户信息 var memberIds = data.Where(w => w.ParentId != null).Select(u => u.MemberId).Distinct().ToArray(); Dictionary <string, string> memberDIcs = new Dictionary <string, string>(); if (memberIds.Any()) { memberDIcs = _IMemberService.GetMemNames(memberIds); } //取出分类 var parentIds = data.Where(w => w.ParentId != null).Select(u => u.ParentId).Distinct().ToArray(); Dictionary <string, string> cateDictory = new Dictionary <string, string>(); if (parentIds.Any()) { cateDictory = _ArticleTopicService.GetCates(parentIds).ToDictionary(k => k.Code, v => v.Text); } if (data.Any()) { data.ForEach(cate => { cate.MemberName = "系统管理员"; if (memberDIcs.Any()) { cate.MemberName = memberDIcs.TryGetValue(cate.MemberId); } if (cateDictory.Any() && !cate.ParentId.IsEmpty()) { cate.Category = cateDictory.TryGetValue(cate.ParentId); } }); } return(Content(new { rows = data, total = data.PageCount, page = data.PageIndex, records = data.TotalCount }.ToJson())); }
/// <summary> /// 包含详细信息 /// </summary> /// <param name="searchView"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public PagedList <TopicDetailView> GetTopicInfoList(ArticleTopicSearchView searchView, int pageIndex, int pageSize) { var expression = base.GetFilterEnabled(); var order = base.Order(); if (searchView.IgnoreCate.HasValue && searchView.IgnoreCate == true) { expression = expression.And(w => w.ParentId != null); if (!searchView.ParentId.IsEmpty()) { expression = expression.And(w => searchView.ParentId.Contains(w.ParentId)); } } else { if (searchView.ParentId == null) { expression = expression.And(w => w.ParentId == null); } else { expression = expression.And(w => searchView.ParentId.Contains(w.ParentId)); } } if (!searchView.TopicId.IsEmpty()) { expression = expression.And(w => w.Id == searchView.TopicId); } if (searchView.HotTopic.HasValue && searchView.HotTopic.Value) { order = o => o.OrderByDescending(w => w.ReadCount); } var data = _Respository.GetPagedList(u => new TopicDetailView { Id = u.Id, Title = u.Title, CreatorTime = u.CreatorTime, ParentId = u.ParentId, ShortTitle = u.ShortTitle, CoverUrl = u.CoverUrl, BigCoverUrl = u.BigCoverUrl, ReadCount = u.ReadCount, MemberId = u.CreatorUserId, PackageAmount = u.PackageAmount, TopicStatus = u.TopicStatus, MemberName = "admin", ResourceCount = u.ResourceCount }, expression, pageIndex, pageSize, o => o.OrderBy(b => b.SortCode)); var parentIds = data.Where(w => w.ParentId != null).Select(u => u.Id).Distinct().ToList(); Dictionary <string, int> valuePairs = new Dictionary <string, int>(); if (parentIds.Any()) { //资源数量统计 if (parentIds.Any()) { var articleService = CoreContextProvider.GetService <IArticleRespository>(); valuePairs = articleService.GetStaticsCount(parentIds, true); } } //默认全是管理员 List <Member> memberDics = new List <Member>(); var memberIds = data.Where(w => w.MemberId != null).Select(u => u.MemberId).Distinct().ToArray(); if (memberIds.Any()) { var memberRespository = CoreContextProvider.GetService <IMemberRespository>(); memberDics = memberRespository.GetMemberInfos(memberIds); } //相关用户统计 data.ForEach(cate => { var statics = valuePairs.TryGetValue(cate.Id); if (cate.ResourceCount == 0 && parentIds.Any()) { cate.ResourceCount = statics; } if (memberDics.Any()) { var mem = memberDics.Where(w => w.Id == cate.MemberId).FirstOrDefault(); if (mem != null) { cate.MemberName = mem.UserName; cate.MemHeader = mem.HeadIcon; cate.UserLevel = mem.UserLevel; } } }); return(data); }
/// <summary> /// 加载列表 /// </summary> /// <param name="searchView"></param> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <returns></returns> public PagedList <TopicDetailView> GetTopicsList(ArticleTopicSearchView searchView, int pageIndex = 1, int pageSize = 20) { var expression = base.GetFilterEnabled(); var order = base.Order(); if (!searchView.Keyword.IsEmpty()) { expression = expression.And(w => w.Title.Contains(searchView.Keyword)); } if (searchView.IgnoreCate.HasValue && searchView.IgnoreCate == true) { expression = expression.And(w => w.ParentId != null); if (!searchView.ParentId.IsEmpty()) { expression = expression.And(w => searchView.ParentId.Contains(w.ParentId)); } } else { //if (searchView.ParentId == null) //{ // expression = expression.And(w => w.ParentId == null); //} //else //{ // expression = expression.And(w => searchView.ParentId.Contains(w.ParentId)); //} if (searchView.ParentId != null) { searchView.ParentId = searchView.ParentId.Where(w => !w.IsEmpty()).ToArray(); if (searchView.ParentId.Any()) { expression = expression.And(w => searchView.ParentId.Contains(w.ParentId)); } } } if (searchView.TopicStatus.HasValue) { expression = expression.And(w => w.TopicStatus == (int)searchView.TopicStatus); } if (!searchView.MemberId.IsEmpty()) { expression = expression.And(w => w.CreatorUserId == searchView.MemberId); } if (searchView.IsRemmand.HasValue) { order = o => o.OrderBy(w => w.SortCode); } var data = _Respository.GetPagedList(u => new TopicDetailView { Id = u.Id, Title = u.Title, CreatorTime = u.CreatorTime, ParentId = u.ParentId, ShortTitle = u.ShortTitle, CoverUrl = u.CoverUrl, BigCoverUrl = u.BigCoverUrl, ReadCount = u.ReadCount, MemberId = u.CreatorUserId, TopicStatus = u.TopicStatus, EnabledMark = u.EnabledMark, Description = u.Description, SortCode = u.SortCode, PackageAmount = u.PackageAmount }, expression, pageIndex, pageSize, order); if (searchView.IsRemmand.HasValue) { var parentIds = data.Select(u => u.Id).ToArray(); var articles = CoreContextProvider.GetService <IArticleService>().GetTopArticles(ArticleTopEnum.NewHotArticle, 14, parentIds); data.ForEach(cate => { cate.ArticleDetails = articles.Where(w => w.CategoryId == cate.Id).ToList(); }); } return(data); }