CMS—评论功能设计

一、需求分析 

1.1、常见行为

1.敏感词过滤
2.新增评论(作品下、评论下)
3.删除评论(作品作者、上级评论者、本级作者)
4.上级评论删除关联下级评论
5.逻辑状态变更(上线、下线、废弃...)
6.上逻辑状态变更关联下级评论
7.评论通知(作品作者、上级评论作者)
8.点赞通知
9.评论回复(下级品论者)
10.评论的已读未读
11.评论的媒体文件处理(包情包、图片)
12.评论赞、踩 
13.一级评论查询(分页、倒排)
14.上级评论关联下级评论(分页、倒排)
15.评论数量统计 
16.可见范围(自己、上级、粉丝)
17.操作范围(允许他人评、点、踩)
18.评论置顶(权重排序)
19.作者点赞显示 

1.2、数据特性

1.评论层级设计(两、三层)
2.数据量大如何存储、查询
3.赞、踩的高并发

二、使用案例 

2.1、评论功能设计 

2.1.1、表结构设计(暂用Mysql)

CREATE TABLE `cms_comments` (`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',`work_id` bigint DEFAULT NULL COMMENT '作品ID',`work_user_id` bigint DEFAULT NULL COMMENT '作品作者ID',`work_user_like` tinyint NOT NULL DEFAULT '1' COMMENT '作者点赞(1不赞,2点赞)',`comment_user_id` bigint DEFAULT NULL COMMENT '评论人ID',`comment_time` timestamp NULL DEFAULT NULL COMMENT '评论时间',`parent_id` bigint DEFAULT NULL COMMENT '上级ID(一级评论为作品ID)',`reply_user_id` bigint DEFAULT NULL COMMENT '被回复用户ID(三级时用)',`read_status` tinyint NOT NULL DEFAULT '1' COMMENT '阅读状态(1未阅读、2已阅读、3其它)',`level` tinyint NOT NULL DEFAULT '1' COMMENT '级别(1一级;2二级;3三级)',`state` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT '01' COMMENT '评论状态(01草稿、02待审核、03未通过、04已上线、05已下线、06删除)',`comment_content` varchar(150) DEFAULT NULL COMMENT '评论内容',`top_status` tinyint NOT NULL DEFAULT '1' COMMENT '置顶状态(1不置顶,2置顶)',`like_number` bigint DEFAULT '0' COMMENT '点赞数',`remark_number` bigint DEFAULT '0' COMMENT '评论数',PRIMARY KEY (`id`),KEY `work_id` (`work_id`) USING BTREE,KEY `work_user_id` (`work_user_id`) USING BTREE,KEY `comment_time` (`comment_time`),KEY `reply_user_id` (`reply_user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='内容评论表—JunSouth';

2.1.2、接口设计 

0.评论信息的敏感词过滤、审核。

1.新增评论信息(作品信息、上级信息、用户信息、级别、评论内容);附带功能:通知作品作者、上级作者、增加评论数量。
2.通过作品信息查询一级评论(分页、倒排、上线状态)。
3.通过一级评论信息查询二、三级评论(分页、倒排、上线状态)。
4.通过用户信息查询一级评论。
5.通过用户信息查询二、三级评论。

6.通知一级评论作者、二级评论作者回复信息。
7.通过作品信息下架一级、二级、三级评论。

8.通过一级评论信息下架一级、二级、三级评论。
9.通过二级评论信息下架二级、三级评论。
10.通过用户信息下架用户评论。
11.通过ID数组维护评论逻辑状态(管理端)。
12.通过ID数组物理删除评论信息(管理端)。

13.一级评论点赞(批量一次处理)。
14.一级评论数量统计(批量一次处理)。
15.作者队点赞。
16.一级评论置顶。

2.2、点赞、评论数功能设计 

2.2.1、需求分析 

1.无评论点赞细节应用,只统计单条评论的点赞数量 、评论数量
2.查频率高、写高并发 
3.回显实时性要求高 
4.传输数据量小 
5.数据是单体小,整体范围大、量多 
6.数据有冷热之分 
7.数据价值低 

2.2.2、接口设计 

1.只记录评论赞的总数。
2.用户操作完后前端,调点赞接口,返回点赞结果。
3.后端通过评论ID为Key 操作Redis的Hyperloglog(基数),在此key的基础上+1,并返回结果,此Key的结果。
4.每隔1h,Redis的评论点赞数据同步到DB。

private final RedisTemplate redisTemplate;@PostMapping("/test001")
public R test001(@RequestBody Comment comment){String key = "commentId:"+comment.getId();Long userId = comment.getUserId();// 赛值redisTemplate.opsForHyperLogLog().add(key, userId);// 获取数量Long size = redisTemplate.opsForHyperLogLog().size(key);System.out.println("size(): "+size);return R.ok("Success",size);
}

2.3、数据量过大—处理 

低价值数据,且不涉及修改,和金额处理,可采用MongoDB数据库。

1.内置了 MapReduce 引擎,数据分片,水平扩展性好,便于做集群。
2.通过 Journal日志(预写日志)、Oplog日志(操作记录)保证数据可靠。
3.支持主键索引、单字段索引、组合索引等,基本与Mysql一致。
4.查询功能与 SQL 相似。
5.支持字段扩展。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277873.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在jenkins容器中安装python+httprunner+pytest+git+allure(一)

背景: API接口自动化使用python语言实现,利用httprunner框架编写自动化用例场景(执行的时候还是依赖pytest),使用jenkins自动构建git上的源代码,并产生allure报告可视化展示API执行结果。 步骤 1.进入jenkins容器 注意使用roo…

FAQ:Inheritance 篇——What your mother never told you

文章目录 1、How can I set up my class so it won’t be inherited from?(如何设置类,使它不会被继承?)2、How can I set up my member function so it won’t be overridden in a derived class? (如何设置成员函数…

遇到运维故障,有没有排查和解决故障的正确流程?

稳定是偶然,异常才是常态,用来标注IT运维工作再适合不过。 因为对于IT运维来说,工作最常遇到的就是不稳定性带来的各种故障,经常围绕发现故障、响应故障、定位故障、恢复故障这四大步。 故障处理是最心跳的事情,没有…

十五、YARN辅助架构

1、学习内容 (1)了解什么是代理服务器 (2)了解什么是历史服务器 2、辅助架构 (1)辅助架构的由来 对于YARN架构来讲,除了ResourceManager集群资源总管家、NodeManager单机资源管家两个核心角…

在vue项目中,数据已经在页面渲染,但在后续操作时获取不到数据

如下图 产生这个问题的原因 异步问题 如何解决 方法一:可以将其存放在一个setTimeout里面(利用一个极小的延迟来获取数据),如下图 效果 方法二:将操作放入axios里面,如下图

Jmeter,提取响应体中的数据:正则表达式、Json提取器

一、正则表达式 1、线程组--创建线程组; 2、线程组--添加--取样器--HTTP请求; 3、Http请求--添加--后置处理器--正则表达式提取器; 4、线程组--添加--监听器--查看结果树; 5、线程组--添加--取样器--调试取样器。 响应体数据…

【设计模式--行为型--中介者模式】

设计模式--行为型--中介者模式 中介者模式定义结构案例实现优缺点使用场景 中介者模式 定义 又叫调停模式,定义一个中介角色来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立的改变它们之间的交互。 结构 抽象中介者角色…

Java基础回顾——数据类型

文章目录 基本数据类型引用类型数组类型遍历数组排序多维数组 常量var关键字四则运算移位操作位运算类型自动提升和强制转型浮点数运算三元运算符 内容摘自https://www.liaoxuefeng.com/wiki/1252599548343744/1255883729079552 基本数据类型 整数类型:byte&#…

网络协议 - DNS 相关详解

网络协议 - DNS 相关详解 DNS简介域名层级结构域名服务器 DNS 解析流程为什么DNS通常基于UDP DNS 查询dig 查询host查询nslookup查询whois查询在线工具查询 DNS 调度原理地理位置调度不准确规则变更生效时间不确定高可用 DNS 安全相关什么是DNS劫持什么是DNS污染为什么要DNS流量…

代付系统源码/第三方API代付系统源码/手工代付系统/批量代付系统/集成QQ微信支付宝API代付系统

源码介绍: 这是一款代付系统源码、API代付系统源码,也是手工代付系统、批量代付系统和第三方API代付系统,它是QQ微信支付宝API代付系统,余额充值接口集成易支付。 系统以0S秒下发,支持支付宝、微信、QQ等主流支付通道…

QT笔记(节选)具体图片等下载资源

QT笔记(节选)具体图片等下载资源 根据b站视频做的笔记: https://www.bilibili.com/video/BV1g4411H78N?p44&spm_id_frompageDriver&vd_sourcea3e6a48ccd3d7d1f969f662653ed68c9 qt是一个跨平台的c图形用户界面应用程序框架&#x…

从最近爆火的ChatGPT,我看到了电商的下一个形态

爆火的ChatGPT似乎让每个行业有了改造的可能性,电商行业也不例外。 在讨论了很多流量红利消失的话题后,我们看到互联网电商行业不再性感,从淘宝天猫,京东,到拼多多,再到抖音,快手,电…