Ejemplo n.º 1
0
 /// <summary>
 /// 获取帖子总数
 /// </summary>
 /// <returns></returns>
 /// <exception cref="Exception"></exception>
 public int GetPostInfosTotalCount(PostInfoViewModel postInfoViewModel, UserInfo userInfo)
 {
     try
     {
         if (userInfo == null || userInfo.UserId <= 0)
         {
             return(0);
         }
         var query = from p in _dataContext.PostInfos
                     join pm in _dataContext.PostManagers
                     on p.SecondCategory.SecondCategoryId equals pm.SecondCategory.SecondCategoryId
                     where pm.UserInfo.UserId == userInfo.UserId
                     select p;
         //根据二级分类获取
         if (postInfoViewModel.SecondCategoryIds != null && postInfoViewModel.SecondCategoryIds.Count() > 0)
         {
             query = query.Where(p => postInfoViewModel.SecondCategoryIds.Contains(p.SecondCategory.SecondCategoryId));
         }
         if (postInfoViewModel.Status > 0)
         {
             query = query.Where(p => p.Status == postInfoViewModel.Status);
         }
         return(query.Count());
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
        public IActionResult SeePost(int id)
        {
            PostInfoViewModel postInfoViewModel = new PostInfoViewModel
            {
                Post     = this.postsService.GetById <PostViewModel>(id),
                Comments = this.commentsService.GetAllByPostId <CommentViewModel>(id),
            };

            foreach (var comment in postInfoViewModel.Comments)
            {
                comment.Replies = this.commentsService.GetAllReplies <CommentViewModel>(comment.Id);
            }

            return(this.View(postInfoViewModel));
        }
Ejemplo n.º 3
0
        public IActionResult Index(PostSearchViewModel model)
        {
            if (model.PageIndex == 0)
            {
                model.PageIndex = 1;
            }
            if (model.PageSize == 0)
            {
                model.PageSize = 10;
            }

            ViewBag.SearchKey = model.SearchKey;

            var data = _post.GetPostList();

            if (!string.IsNullOrEmpty(model.SearchKey))
            {
                data = data.FindAll(o => o.Content.Contains(model.SearchKey) || o.Title.Contains(model.SearchKey));
            }

            IPagedList <Post> posts = data.OrderByDescending(o => o.DateCreated).ToList().ToPagedList(model.PageIndex, model.PageSize);
            // map to IEnumerable
            IEnumerable <PostListViewModel> postList = _mapper.Map <IEnumerable <PostListViewModel> >(posts);
            // create an instance of StaticPagedList with the mapped IEnumerable and original IPagedList metadata
            IPagedList <PostListViewModel> postListViewModel = new StaticPagedList <PostListViewModel>(postList, posts.GetMetaData());

            foreach (var item in postListViewModel)
            {
                item.UserName     = _userManager.FindByIdAsync(item.UserId).Result.UserName;
                item.CategoryName = _category.GetCategory(o => o.CategoryId == item.CategoryId).CategoryName;
                item.PostTagList  = _mapper.Map <List <PostTag>, List <PostTagViewModel> >(_postTag.GetPostTagList(o => o.PostId == item.PostId));
                foreach (var postTag in item.PostTagList)
                {
                    postTag.TagName = _tag.GetTag(o => o.TagId == postTag.TagId).TagName;
                }
            }

            var postInfoModel = new PostInfoViewModel
            {
                PostList     = postListViewModel,
                TagList      = _mapper.Map <List <Tag>, List <TagViewModel> >(_tag.GetTagList()),
                CategoryList = _mapper.Map <List <Category>, List <CategoryViewModel> >(_category.GetCategoryList())
            };

            return(View(postInfoModel));
        }
Ejemplo n.º 4
0
        public ActionResult GetPosts([FromBody] PostInfoViewModel postInfoViewModel)
        {
            if (postInfoViewModel == null)
            {
                return(null);
            }
            var headerStr = Request.Headers["Authorization"];
            var jwtHelper = new JWTHelper(_configuration);
            var user      = new UserInfo
            {
                UserId = jwtHelper.GetJWTUserData(headerStr)
            };

            return(Ok(new
            {
                posts = _postService.GetPostInfos(postInfoViewModel, user, postInfoViewModel.PageViewModel.CurrentPage, postInfoViewModel.PageViewModel.PageSize),
                totalCount = _postService.GetPostInfosTotalCount(postInfoViewModel, user)
            }));
        }
Ejemplo n.º 5
0
 public ActionResult SearchPost([FromBody] PostInfoViewModel postInfoViewModel)
 {
     try
     {
         if (postInfoViewModel == null)
         {
             return(null);
         }
         if (string.IsNullOrEmpty(postInfoViewModel.PostTitle))
         {
             return(null);
         }
         var headerStr = Request.Headers["Authorization"];
         var jwtHelper = new JWTHelper(_configuration);
         var user      = new UserInfo
         {
             UserId = jwtHelper.GetJWTUserData(headerStr)
         };
         if (postInfoViewModel.PageViewModel == null)
         {
             return(Ok(new
             {
                 posts = _postService.SearchPost(postInfoViewModel.PostTitle, user, 1, 20),
                 totalCount = _postService.SearchPostTotalCount(postInfoViewModel.PostTitle)
             }));
         }
         return(Ok(new
         {
             posts = _postService.SearchPost(postInfoViewModel.PostTitle, user, postInfoViewModel.PageViewModel.CurrentPage, postInfoViewModel.PageViewModel.PageSize),
             totalCount = _postService.SearchPostTotalCount(postInfoViewModel.PostTitle)
         }));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex);
         return(null);
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// 获取帖子
        /// </summary>
        /// <param name="postInfo"></param>
        /// <param name="currentPage"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public List <PostInfoViewModel> GetPostInfos(PostInfoViewModel postInfoViewModel, UserInfo userInfo, int currentPage = 1, int pageSize = 10)
        {
            try
            {
                var query = (from p in _dataContext.PostInfos
                             join u in _dataContext.UserInfos
                             on p.Author.UserId equals u.UserId
                             join sc in _dataContext.SecondCategories
                             on p.SecondCategory.SecondCategoryId equals sc.SecondCategoryId
                             join fc in _dataContext.FirstCategories
                             on sc.FirstCategory.FirstCategoryId equals fc.FirstCategoryId
                             join pm in _dataContext.PostManagers
                             on sc.SecondCategoryId equals pm.SecondCategory.SecondCategoryId
                             where pm.UserInfo.UserId == userInfo.UserId
                             select new PostInfoViewModel
                {
                    PostId = p.PostId,
                    PostTitle = p.PostTitle,
                    SecondCategory = new SecondCategory
                    {
                        SecondCategoryId = sc.SecondCategoryId,
                        SecondCategoryName = sc.SecondCategoryName,
                        Status = sc.Status,
                        FirstCategory = new FirstCategory
                        {
                            FirstCategoryId = fc.FirstCategoryId,
                            FirstCategoryName = fc.FirstCategoryName,
                            Status = fc.Status
                        }
                    },
                    Description = p.Description,
                    CreateDate = p.CreateDate,
                    UpdateDate = p.UpdateDate,
                    Status = p.Status,
                    Author = new UserInfo
                    {
                        UserId = u.UserId,
                        UserName = u.UserName,
                        NickName = u.NickName
                    },
                    ReplyCount = _dataContext.ReplyInfos.Count(rp => rp.PostInfo.PostId == p.PostId),
                    PostGoodCount = _dataContext.PostGoods.Count(pg => pg.PostInfo.PostId == p.PostId),
                    Watch = 0,
                    IsTop = p.IsTop,
                    PostGood = _dataContext.PostGoods
                               .Where(x => x.PostInfo.PostId == p.PostId && x.GoodsUser.UserId == userInfo.UserId)
                               .FirstOrDefault()
                }).OrderBy(p => p.PostId).Skip((currentPage - 1) * pageSize).Take(pageSize);

                if (postInfoViewModel != null && postInfoViewModel.Status > 0)
                {
                    query = query.Where(p => p.Status == postInfoViewModel.Status);
                }

                if (postInfoViewModel != null && !string.IsNullOrEmpty(postInfoViewModel.PostTitle))
                {
                    query = query.Where(p => p.PostTitle.Contains(postInfoViewModel.PostTitle));
                }

                if (postInfoViewModel != null && !string.IsNullOrEmpty(postInfoViewModel.PostContent))
                {
                    query = query.Where(p => p.PostContent.Contains(postInfoViewModel.PostContent));
                }
                //根据二级分类获取
                if (postInfoViewModel.SecondCategoryIds?.Count > 0)
                {
                    query = query.Where(p => postInfoViewModel.SecondCategoryIds.Contains(p.SecondCategory.SecondCategoryId));
                }

                return(query.ToList());
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }