Пример #1
0
        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()));
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }