/// <summary>
        /// 获取页面文章
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public GetPageDatasOutput GetPageDatas(GetPageDatasInput input)
        {
            PageBase page = null;

            if (!string.IsNullOrWhiteSpace(input.PageName))
            {
                page = _repository.GetAllIncluding(e => e.PageDatas).FirstOrDefault(e => e.Name == input.PageName);
            }

            if (page == null && input.Id != null)
            {
                page = _repository.GetAllIncluding(e => e.PageDatas).FirstOrDefault(e => e.Id == input.Id);
            }

            if (page == null)
            {
                throw new UserFriendlyException("获取文章列表失败,未找到页面");
            }

            return(new GetPageDatasOutput()
            {
                PageDatas = _objectMapper.Map <List <PageDataDto> >(page.PageDatas),
                ResourceNum = page.PageDatas.Count,
                PageIndex = input.PageIndex
            });
        }
예제 #2
0
        /// <summary>
        /// 获取页面文章
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public GetPageDatasOutput GetPageDatas(GetPageDatasInput input)
        {
            IQueryable <PageData> pageDatas = null;

            if (input.EnablePageFilter)
            {
                // 除了可访问的页面文章之外,还有用户发表过的文章
                pageDatas = _pageDataManager.PostRepository.GetAllIncluding(e => e.Tags).Where(e => input.FilterPageNames.Contains(e.PageName) || (_abpSession.UserId != null && e.Creator.EditorId == _abpSession.UserId));
            }
            else
            {
                pageDatas = _pageDataManager.PostRepository.GetAllIncluding(e => e.Tags);
            }

            if (!string.IsNullOrWhiteSpace(input.PageName))
            {
                pageDatas = pageDatas.Where(e => e.PageName == input.PageName);
            }

            if (!string.IsNullOrWhiteSpace(input.SearchKey))
            {
                pageDatas = pageDatas.Where(e => e.Title.Contains(input.SearchKey));
            }

            if (input.Tags != null && input.Tags.Count > 0)
            {
                foreach (var item in input.Tags)
                {
                    pageDatas = pageDatas.Where(e => e.Tags.Any(ie => ie.Name == item));
                }
            }

            int num = pageDatas.Count();

            if (input.IsScore())
            {
                pageDatas = pageDatas.OrderByDescending(e => e.Score);
            }
            else if (input.IsClick())
            {
                pageDatas = pageDatas.OrderByDescending(e => e.Click);
            }
            else
            {
                pageDatas = pageDatas.OrderByDescending(e => e.Id);
            }

            var queryResults = pageDatas.Skip((input.PageIndex - 1) * input.PageSize + input.Top).Take(input.PageSize).ToList();

            return(new GetPageDatasOutput()
            {
                PageDatas = _objectMapper.Map <List <PageDataDto> >(queryResults),
                ResourceNum = num,
                PageIndex = input.PageIndex
            });
        }
예제 #3
0
        public GetPageDatasOutput GetPageDatas(GetPageDatasInput input)
        {
            var page = _repository.GetAllIncluding(e => e.PageDatas).FirstOrDefault(e => e.Name == input.PageName);

            return(new GetPageDatasOutput()
            {
                PageDatas = AutoMapper.Mapper.Map <List <PageDataDto> >(page.PageDatas),
                PageDataNum = page.PageDatas.Count
            });
        }