package com.tanpu.community.manager; import com.tanpu.community.api.beans.qo.CommentQo; import com.tanpu.community.api.beans.req.comment.CreateCommentReq; import com.tanpu.community.api.beans.req.comment.LikeCommentReq; import com.tanpu.community.api.enums.CollectionTypeEnum; import com.tanpu.community.api.enums.CommentTypeEnum; import com.tanpu.community.api.enums.OperationTypeEnum; import com.tanpu.community.dao.entity.community.CommentEntity; import com.tanpu.community.dao.entity.user.UserInfoEntity; import com.tanpu.community.service.CollectionService; import com.tanpu.community.service.CommentService; import com.tanpu.community.service.HomePageService; import com.tanpu.community.service.UserInfoService; import com.tanpu.community.util.ConvertUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Set; @Service public class CommentManager { @Autowired private CommentService commentService; @Autowired private HomePageService homePageService; @Autowired private CollectionService collectionService; @Resource private UserInfoService userInfoService; // 评论(对主题) public void comment(CreateCommentReq req, String userId) { CommentEntity commentEntity = CommentEntity.builder() .themeId(req.getThemeId()) .parentId(req.getParentId()) .replyId(req.getReplyId()) .authorId(userId) .content(req.getComment()) .commentType(CommentTypeEnum.THEME.getCode()) .build(); commentService.insertComment(commentEntity); } //查询 public List<CommentQo> queryComments(String themeId, String userId) { List<CommentEntity> commentEntities = commentService.selectByThemeIdAndParentId(themeId, null); List<CommentQo> commentQos = ConvertUtil.commentEntity2Qos(commentEntities); Set<String> likeCommentList = collectionService.getListByUser(userId, CollectionTypeEnum.LIKE_COMMENT); for (CommentQo commentQo : commentQos) { //用户信息 String authorId = commentQo.getAuthorId(); UserInfoEntity userInfo = userInfoService.queryUserById(authorId); if (userInfo != null) { commentQo.setUserImg(userInfo.getUiHeadimgMp()); commentQo.setNickName(userInfo.getUiUsernameMp()); } //是否点赞及点赞数 String commentId = commentQo.getCommentId(); if (likeCommentList.contains(commentId)) { commentQo.setHasLiked(true); } else { commentQo.setHasLiked(false); } Integer countByTypeAndId = collectionService.getCountByTypeAndId(commentId, CollectionTypeEnum.LIKE_COMMENT); commentQo.setLikeCount(countByTypeAndId); //二级评论,本期不上线 // List<CommentEntity> CommentLv2Entities = commentService.selectByThemeIdAndParentId(themeId, commentId); // List<CommentLv2Qo> commentLv2Qos = ConvertUtil.commentLv2Entity2Qos(CommentLv2Entities); // commentQo.setCommentLv2Qos(commentLv2Qos); } return commentQos; } //点赞评论/取消点赞 public void likeComment(LikeCommentReq req, String userId) { if (OperationTypeEnum.CONFIRM.getCode().equals(req.getType())) { collectionService.addIfNotExist(req.getCommentId(), userId, CollectionTypeEnum.LIKE_COMMENT); } else if (OperationTypeEnum.CANCEL.getCode().equals(req.getType())) { collectionService.delete(req.getCommentId(), userId, CollectionTypeEnum.LIKE_COMMENT); } } }