PostsCommentsServiceImpl.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package com.sumbytes.helloblog.posts.service.impl;
  2. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  3. import com.sumbytes.common.base.domain.Result;
  4. import com.sumbytes.common.base.domain.vo.UserSessionVO;
  5. import com.sumbytes.common.base.service.impl.BaseServiceImpl;
  6. import com.sumbytes.common.constant.Constants;
  7. import com.sumbytes.common.enums.ErrorEnum;
  8. import com.sumbytes.common.util.ExceptionUtil;
  9. import com.sumbytes.common.util.PageUtil;
  10. import com.sumbytes.common.util.SessionUtil;
  11. import com.sumbytes.helloblog.auth.dao.AuthUserDao;
  12. import com.sumbytes.helloblog.auth.domain.po.AuthUser;
  13. import com.sumbytes.helloblog.posts.dao.PostsCommentsDao;
  14. import com.sumbytes.helloblog.posts.dao.PostsDao;
  15. import com.sumbytes.helloblog.posts.domain.po.Posts;
  16. import com.sumbytes.helloblog.posts.domain.po.PostsComments;
  17. import com.sumbytes.helloblog.posts.domain.vo.PostsCommentsVO;
  18. import com.sumbytes.helloblog.posts.service.PostsCommentsService;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import java.time.LocalDateTime;
  22. import java.util.List;
  23. import java.util.Optional;
  24. /**
  25. * <p>
  26. * 评论表 服务实现类
  27. * </p>
  28. * @author sumbytes
  29. * @since 2019-09-03
  30. */
  31. @Service
  32. public class PostsCommentsServiceImpl extends BaseServiceImpl<PostsCommentsDao, PostsComments> implements PostsCommentsService {
  33. @Autowired
  34. private PostsCommentsDao postsCommentsDao;
  35. @Autowired
  36. private PostsDao postsDao;
  37. @Autowired
  38. private AuthUserDao authUserDao;
  39. @Override
  40. public Result savePostsComments(PostsCommentsVO postsCommentsVO) {
  41. UserSessionVO userSessionInfo = SessionUtil.getUserSessionInfo();
  42. PostsComments postsComments = new PostsComments();
  43. postsComments.setAuthorId(userSessionInfo.getId());
  44. postsComments.setContent(postsCommentsVO.getContent());
  45. postsComments.setPostsId(postsCommentsVO.getPostsId());
  46. postsComments.setCreateTime(LocalDateTime.now());
  47. String treePath;
  48. if (postsCommentsVO.getParentId() == null) {
  49. this.postsCommentsDao.insert(postsComments);
  50. treePath = postsComments.getId() + Constants.TREE_PATH;
  51. } else {
  52. PostsComments parentPostsComments = this.postsCommentsDao.selectById(postsCommentsVO.getParentId());
  53. if (parentPostsComments == null) {
  54. ExceptionUtil.rollback(ErrorEnum.DATA_NO_EXIST);
  55. }
  56. postsComments.setParentId(postsCommentsVO.getParentId());
  57. this.postsCommentsDao.insert(postsComments);
  58. treePath = parentPostsComments.getTreePath() + postsComments.getId() + Constants.TREE_PATH;
  59. }
  60. this.postsCommentsDao.updateById(postsComments.setTreePath(treePath));
  61. this.postsDao.incrementComments( postsCommentsVO.getPostsId());
  62. return Result.createWithSuccessMessage();
  63. }
  64. @Override
  65. public Result replyComments(PostsCommentsVO postsCommentsVO) {
  66. // 由于是使用后台管理系统直接评论,所以此处直接将评论对象设置为管理员
  67. AuthUser authUser=authUserDao.selectAdmin();
  68. PostsComments postsComments=postsCommentsDao.selectById(postsCommentsVO.getParentId());
  69. // 准备更新前的参数内容
  70. postsComments.setParentId(postsCommentsVO.getParentId())
  71. .setContent(postsCommentsVO.getContent())
  72. .setAuthorId(authUser.getId())
  73. .setCreateTime(LocalDateTime.now())
  74. .setId(null);
  75. // 添加评论
  76. this.postsCommentsDao.insert(postsComments);
  77. // 增加完成后会默认获取id,此时需要将id,增加到层级结构当中
  78. this.postsCommentsDao.updateById(postsComments.setTreePath(postsComments.getTreePath() + postsComments.getId() + Constants.TREE_PATH));
  79. // 为文章添加评论数
  80. this.postsDao.incrementComments( postsCommentsVO.getPostsId());
  81. return Result.createWithSuccessMessage();
  82. }
  83. @Override
  84. public Result getPostsCommentsByPostsIdList(PostsCommentsVO postsCommentsVO) {
  85. Page page = Optional.ofNullable(PageUtil.checkAndInitPage(postsCommentsVO)).orElse(PageUtil.initPage());
  86. List<PostsCommentsVO> postsCommentsVOLis = this.postsCommentsDao.selectPostsCommentsByPostsIdList(page, postsCommentsVO.getPostsId());
  87. return Result.createWithPaging(postsCommentsVOLis, PageUtil.initPageInfo(page));
  88. }
  89. @Override
  90. public Result getPostsCommentsList(PostsCommentsVO postsCommentsVO) {
  91. Page page = Optional.ofNullable(PageUtil.checkAndInitPage(postsCommentsVO)).orElse(PageUtil.initPage());
  92. List<PostsCommentsVO> postsCommentsVOLis = this.postsCommentsDao.selectPostsCommentsList(page, postsCommentsVO);
  93. return Result.createWithPaging(postsCommentsVOLis, PageUtil.initPageInfo(page));
  94. }
  95. @Override
  96. public Result deletePostsComments(Long id) {
  97. this.postsCommentsDao.deleteById(id);
  98. return Result.createWithSuccessMessage();
  99. }
  100. @Override
  101. public Result getPostsComment(Long id) {
  102. ExceptionUtil.isRollback(id==null,ErrorEnum.PARAM_ERROR);
  103. List<PostsCommentsVO> postsCommentsVOLis = this.postsCommentsDao.selectPostsCommentsList(new PostsCommentsVO().setId(id));
  104. if (postsCommentsVOLis!=null && postsCommentsVOLis.size()>0){
  105. return Result.createWithModel(postsCommentsVOLis.get(0));
  106. }
  107. return Result.createWithError();
  108. }
  109. }