概述
最近忙着做社区功能这一模块,其中在做有关文章的评论以及回复的功能时,刚开始对于这中功能有一些纠结,纠结的是评论与回复的内容是放在两个表还是一个表中,对于放在两张表的结构考虑到后期的数据读取的复杂问题,最后决定将评论和回复的功能都放在同一张表中。
表结构设计
CREATE TABLE "sq_content_comment" (
"id" bigint(20) NOT NULL AUTO_INCREMENT,
"parent_id" bigint(20) DEFAULT NULL,
"user_id" bigint(20) DEFAULT NULL,
"comment_details" longtext,
"comment_date" datetime DEFAULT NULL,
"content_flag" int(11) DEFAULT NULL,
"content_id" bigint(20) DEFAULT NULL,
"reply_comment_id" bigint(20) DEFAULT NULL,
"reply_user_id" bigint(20) DEFAULT NULL,
"user_name" varchar(255) DEFAULT NULL,
"reply_user_name" varchar(20) DEFAULT NULL,
PRIMARY KEY ("id")
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
字段 | ?说明 | id | 主键 | parent_id | 父ID (0:一级评论;其它为一级评论的ID) | user_id | 用户ID | comment_details | 评论内容 | comment_date | 评论日期 | content_id | 文章ID | reply_comment_id | 回复评论的ID | content_flag | 文章标识(1:作者;2:普通用户) | reply_user_id | 回复用户ID | user_name | 用户姓名 | reply_user_name | 回复用户姓名 |
功能实现
对文章进行的评论就会有三种情况:
现假设有"person_A"和"person_B"两人对"文章"评论,则有
1、评论情况就是简单的插入一条评论记录
INSERT INTO `zlp-mall`.`sq_content_comment`(`id`, `parent_id`, `user_id`, `comment_details`, `comment_date`, `content_flag`, `content_id`, `reply_comment_id`, `reply_user_id`, `user_name`, `reply_user_name`) VALUES (1, 0, 1, '给自己一个smile', '2022-03-31 10:28:51', 1, 1001, NULL, NULL, 'person_A', NULL);
INSERT INTO `zlp-mall`.`sq_content_comment`(`id`, `parent_id`, `user_id`, `comment_details`, `comment_date`, `content_flag`, `content_id`, `reply_comment_id`, `reply_user_id`, `user_name`, `reply_user_name`) VALUES (2, 0, 2, '孤勇者', '2022-03-31 10:29:51', 1, 1001, NULL, NULL, 'person_B', NULL);
则用户浏览文章详细时,可以看到文章下有如下两条评论:
此时,有“person_C”是“person_B”的好友,“person_C”在“person_B”的评论下进行了回复,则有
2、评论的回复
“person_C”对“person_B”
INSERT INTO `zlp-mall`.`sq_content_comment`(`id`, `parent_id`, `user_id`, `comment_details`, `comment_date`, `content_flag`, `content_id`, `reply_comment_id`, `reply_user_id`, `user_name`, `reply_user_name`) VALUES (3, 2, 2, '你最近怎么样', '2022-03-31 10:32:51', 1, 1001, NULL, NULL, 'person_C', NULL);
3. 回复的评论
然后“person_B”也对“person_C”进行了回复
INSERT INTO `zlp-mall`.`sq_content_comment`(`id`, `parent_id`, `user_id`, `comment_details`, `comment_date`, `content_flag`, `content_id`, `reply_comment_id`, `reply_user_id`, `user_name`, `reply_user_name`) VALUES (4, 2, 2, '最近不太好', '2022-03-31 10:34:51', 1, 1001, 3, 3, 'person_B', 'person_C');
然后“person_C”也对“person_B”表达了谢意。
INSERT INTO `zlp-mall`.`sq_content_comment`(`id`, `parent_id`, `user_id`, `comment_details`, `comment_date`, `content_flag`, `content_id`, `reply_comment_id`, `reply_user_id`, `user_name`, `reply_user_name`) VALUES (5, 2, 3, '是发生了什么事', '2022-03-31 10:34:51', 1, 1001, 4, 2, 'person_C', 'person_B');
至此,所有的评论与回复已全部完成。
4. 查询一级评论
select * from sq_content_comment where parent_id = 0 and content_id = 1001 ORDER BY id desc
5. 查询一级下的回复与评论
select * from sq_content_comment where parent_id = 2 and content_id = 1001 ORDER BY id asc
前台请求参数封装
添加评论/回复
请求示例
{
"commentDetails": "",
"contentId": 0,
"parentId": 0,
"replyCommentId": 0
}
请求参数
一级评论传参说明:
{
"commentDetails": "",
"contentId": 0,
}
评论的回复传参说明:
{
"commentDetails": "",
"contentId": 0,
"parentId": 0
}
回复的评论传参说明:
{
"commentDetails": "",
"contentId": 0,
"parentId": 0,
"replyCommentId": 0
}
?
|