在帖子下评论以及对评论回复,为了降低难度,我只做了这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
转载请注明:汪明鑫的个人博客 » 毕业设计 帖子评论回复的实现
说点什么
您将是第一位评论人!