Welcome everyone

毕业设计 帖子评论回复的实现

毕业设计 汪明鑫 987浏览 0评论

在帖子下评论以及对评论回复,为了降低难度,我只做了这2级评论,即对帖子的评论和对评论回复。

当然可以做更多级的回复,但是考虑到前端的复杂度,没做更多层回复。

 

效果:

 

对帖子的评论:

 

对评论进行回复

 

我们先看主要涉及的2张表:

 

帖子表:

CREATE TABLE topic(
     id INT PRIMARY KEY AUTO_INCREMENT,
     user_id INT, #发表人
     title VARCHAR(50),
     content TEXT,
     create_time DATETIME ,
     update_time DATETIME ,
     like_num INT DEFAULT 0,   #赞
     dislike_num INT DEFAULT 0 #踩	
)DEFAULT CHARSET=utf8 ;

 

评论表:

CREATE TABLE reply(
     id INT PRIMARY KEY AUTO_INCREMENT,
     parent_id INT DEFAULT -1, #表示没有父亲
     topic_id INT,
     user_id INT, #评论人
     content TEXT,
     create_time DATETIME DEFAULT NOW()
)DEFAULT CHARSET=utf8 ;

评论和回复我使用的都是reply这张表,为了区分他们两个之间的层级关系,我引入了一个字段 parent_id。

若是对帖子的评论,则 parent_id = -1;

若是对某条评论的回复,则parent_id  = 该评论的id。

 

先查询reply表把topic_id等于该帖子id的数据找出来,再遍历这些数据的把reply表中parent_id等于数据中的id找出来就是评论的回复。

 

这样的好处可以方便查出某帖子下的所有评论和评论下的所有回复。

限于前端水平有限我只做了2层,但由于parent_id,可以做更多层,比如对回复的回复。

 

核心代码:

//得到该帖子下的所有评论
        List<Reply> replyList = replyService.findReplyList(id);

//遍历所有评论,得到所有评论下的回复
        replyList.forEach(e->{
            
            List<Reply> children = replyService.findChildren(e.getId());
            
            e.setChildren(children);
        });

 

@Select("select * from  reply where parent_id = #{parentId} order by create_time desc")
    List<Reply> findChildren(@Param(value = "parentId")Integer id);

找到回复中parent_id = 该条评论的id

 

转载请注明:汪明鑫的个人博客 » 毕业设计 帖子评论回复的实现

喜欢 (1)

说点什么

您将是第一位评论人!

提醒
avatar
wpDiscuz