فهرست منبع

搜索评论接口优化

fangqing 4 ماه پیش
والد
کامیت
f4d532322c

+ 44 - 6
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityCommentController.java

@@ -16,12 +16,14 @@ import com.ruoyi.generator.domain.Community.CommunityCommentReply;
 import com.ruoyi.generator.mapper.community.CommunityArticleCommentMapper;
 import com.ruoyi.generator.mapper.community.CommunityArticleMapper;
 import com.ruoyi.generator.mapper.community.CommunityCommentLikeMapper;
+import com.ruoyi.generator.mapper.community.CommunityCommentReplyMapper;
 import com.ruoyi.generator.service.ICommunityArticleCommentService;
 import com.ruoyi.generator.service.ICommunityArticleService;
 import com.ruoyi.generator.service.ICommunityCommentReplyService;
 import com.ruoyi.generator.vo.CommunityArticleCommentVo;
 import com.ruoyi.generator.vo.CommunityCommentRaffleVo;
 import com.ruoyi.generator.vo.CommunityCommentReplyVo;
+import com.ruoyi.generator.vo.CommunitySearchCommentVo;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.system.service.impl.SysUserServiceImpl;
 import io.swagger.annotations.Api;
@@ -75,6 +77,9 @@ public class CommunityCommentController extends BaseController {
     @Autowired
     private CommunityArticleCommentMapper communityArticleCommentMapper;
 
+    @Autowired
+    private CommunityCommentReplyMapper communityCommentReplyMapper;
+
     /**
      * 获取文章评论
      */
@@ -248,9 +253,6 @@ public class CommunityCommentController extends BaseController {
             }
             communityCommentReply.setAddress(address);
             communityCommentReplyService.save(communityCommentReply);
-
-
-
         } catch (Exception e) {
             System.out.println(e.getMessage());
             throw new ProjectException();
@@ -337,16 +339,52 @@ public class CommunityCommentController extends BaseController {
         if (Objects.isNull(articleId)) {
             return AjaxResult.error("参数异常!");
         }
-        List<CommunityArticleComment> communityArticleComments = null;
+        List<CommunitySearchCommentVo> commentVos = new ArrayList<>();
         try {
             int offset = (pageNum - 1) * pageSize;
-            communityArticleComments = communityArticleCommentMapper.queryComment(articleId, comment,offset,pageSize);
+            //获取一二级评论
+            List<CommunityArticleComment> communityArticleComments = communityArticleCommentMapper.queryComment(articleId, comment,offset,pageSize);
+            //一二级评论合集Vo
+            CommunitySearchCommentVo commentVo = null;
+            for (CommunityArticleComment communityArticleComment : communityArticleComments) {
+                commentVo = new CommunitySearchCommentVo();
+                BeanUtils.copyProperties(communityArticleComment, commentVo);
+                commentVos.add(commentVo);
+            }
+            for (CommunitySearchCommentVo vo : commentVos) {
+                //拼接头像 信息
+                vo.setAvatar(sysUserService.selectUserById(vo.getUserId()).getAvatar());
+                vo.setNickName(sysUserService.selectUserById(vo.getUserId()).getNickName());
+                vo.setCommentLikeCount(communityCommentLikeMapper.selectList(new QueryWrapper<CommunityCommentLike>().eq("comment_id", vo.getId())).size());
+
+                //如果是二级评论则执行这个接口
+                CommunityCommentReply communityCommentReply = communityCommentReplyMapper.selectOne(new QueryWrapper<CommunityCommentReply>().eq("id", vo.getId()).and((wrapper) -> {
+                    wrapper.ne("is_delete", true).or().isNull("is_delete");
+                }));
+
+                //如果二级评论不为空执行
+                if (!Objects.isNull(communityCommentReply)){
+                    //点赞数量
+                    List<CommunityCommentLike> commentLikeList = communityCommentLikeMapper.selectList(new QueryWrapper<CommunityCommentLike>()
+                            .eq("reply_id", communityCommentReply.getId()));
+                    vo.setCommentLikeCount(commentLikeList.size());
+                    //找到一级评论获取 父评论 用户头像和ID
+                    CommunityArticleComment communityArticleComment = communityArticleCommentMapper.selectOne(new QueryWrapper<CommunityArticleComment>().eq("id", communityCommentReply.getCommentId()).and((wrapper) -> {
+                        wrapper.ne("is_delete", true).or().isNull("is_delete");
+                    }));
+                    SysUser sysUser1 = sysUserService.selectUserById(communityArticleComment.getUserId());
+                    vo.setParentNickName(sysUser1.getNickName());
+                    vo.setParentUserId(sysUser1.getUserId());
+                    vo.setParentAvatar(sysUser1.getAvatar());
+                }
+            }
         } catch (Exception e) {
             e.printStackTrace();
             System.out.println(e.getMessage());
             throw new ProjectException();
         }
-        return AjaxResult.success(communityArticleComments);
+        System.out.println(commentVos);
+        return AjaxResult.success(commentVos);
     }
 
 }

+ 124 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunitySearchCommentVo.java

@@ -0,0 +1,124 @@
+package com.ruoyi.generator.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+* 文章评价记录表
+* @TableName community_article_comment
+*/
+@EqualsAndHashCode(callSuper = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class CommunitySearchCommentVo extends BaseEntity implements Serializable {
+
+    /**
+    * 评论id
+    */
+    @NotNull(message="[评论id]不能为空")
+    @ApiModelProperty("评论id")
+    @TableId("id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    /**
+    * 文章id
+    */
+    @ApiModelProperty("文章id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long articleId;
+    /**
+    * 评论人id
+    */
+    @ApiModelProperty("评论人id")
+    private Long userId;
+
+    /**
+     * 评论人昵称
+     */
+    @ApiModelProperty("评论人昵称")
+    private String nickName;
+
+    /**
+     * 评论点赞数
+     */
+    @ApiModelProperty("评论点赞数")
+    private int commentLikeCount;
+
+    /**
+     * 评论点赞数
+     */
+    @ApiModelProperty("当前用户是否已点赞")
+    private boolean isCommentLike;
+
+    /**
+     * 评论人头像
+     */
+    @ApiModelProperty("评论人头像")
+    private String avatar;
+
+
+    /**
+     * 评论内容
+     */
+    @ApiModelProperty("评论内容")
+    private String content;
+
+    /**
+     * 评论首条回复
+     */
+    @ApiModelProperty("评论首条回复")
+    private List<CommunityCommentReplyVo> firstReply;
+
+    /**
+     * 评论下回复总数
+     */
+    @ApiModelProperty("评论下回复剩余总数")
+    private int replyCount;
+
+    /**
+     * 是否是回复
+     */
+    @ApiModelProperty("是否是回复")
+    private boolean isReply;
+
+    /**
+     * 图片地址
+     */
+    @ApiModelProperty("图片地址")
+    private String imageUrl;
+
+    /**
+     * 用户地址
+     */
+    @ApiModelProperty("用户地址")
+    private String address;
+
+    /**
+     * 父回复用户id
+     */
+    @ApiModelProperty("父回复用户id")
+    private Long parentUserId;
+    /**
+     * 父回复用户昵称
+     */
+    @ApiModelProperty("父回复用户昵称")
+    private String parentNickName;
+    /**
+     * 父回复用户头像
+     */
+    @ApiModelProperty("父回复用户头像")
+    private String parentAvatar;
+}