(Java企业 / 公司项目)点赞业务系统设计与完成
按照CSDN文章点赞来进行简单的制作一个点赞和取消点赞的业务需求,当然肯定比他的设计还要简单毕竟这么大的社区。
1.需求分析
点赞功能与其它功能不同,没有复杂的原型和需求,仅仅是一个点赞、取消点赞的操作。
所以,今天我们就不需要从原型图来分析,而是仅仅从这个功能的实现方案来思考。
第一次我们使用的是服务调用openfeign,后来改用了MQ的方式
2.数据结构设计
这个数据结构设计应该都能看得懂吧,有多个id进行关联,实体业务有很多这里就是举例了两个一个用户评论id ,相关的课程比如他讲的好我给这个课程点赞
CREATE TABLE IF NOT EXISTS `liked_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
`user_id` bigint NOT NULL COMMENT '用戶id',
`biz_id` bigint NOT NULL COMMENT '点赞的业务(目标)id',
`biz_type` VARCHAR(16) NOT NULL COMMENT '点赞的业务类型',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON
UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_biz_user` (`biz_id`,`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_0900_ai_ci COMMENT='点赞记录表';
3.创建项目模块
只要先创建这些模块就好了,后面会一步一步的写这些代码的
3.业务需求
- 通用:点赞业务在设计的时候不要与业务系统耦合,必须同时支持不同业务的点赞功能
- 独立:点赞功能是独立系统,并且不依赖其它服务。这样才具备可迁移性。
- 并发:一些热点业务点赞会很多,所以点赞功能必须支持高并发
- 安全:要做好并发安全控制,避免重复点赞
从表面来看,点赞功能要实现的接口就是一个点赞接口。不过仔细观察所有的点赞⻚面,
你会发现点赞按钮有灰色和点亮两种状态。
也就是说我们还需要实现查询用戶点赞状态的接口,这样前端才能根据点赞状态渲染不同
效果。因此我们要实现的接口包括:
• 点赞/取消点赞
• 根据多个业务id批量查询用戶是否点赞多个业务
4.接口设计
需求:用户可以给我喜欢的回答,笔记等点赞,也可以取消点赞
请求参数首先要包含点赞有关的数据,并且要标记是点赞还是取消:
• 点赞的目标业务id:bizId
• 谁在点赞(就是登陆用戶ÿ