/// <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)); }
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)); }
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) })); }
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); } }
/// <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; } }