这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天。
大作业的功能需求中有关于点赞评论的功能需求,在此对相关功能的学习做一个整理和记录。
1. 点赞
在搜索资料的过程中,我发现很多解决方案都是使用了Redis,但是由于对redis不太熟悉,这里直接采用了MySQL来存储点赞的数据。数据表设计如下:
CREATE TABLE `favorites` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint DEFAULT '0' COMMENT 'user id',
`video_id` bigint DEFAULT '0' COMMENT 'followed user ID',
PRIMARY KEY (`id`),
UNIQUE KEY `user_video` (`user_id`, `video_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'User favorites video';
后端处理流程大致如下:收到点赞请求->创建一条点赞记录->更新用户点赞数据、视频点赞数据、被点赞视频用户的数据,这样可以避免每次查询用户信息和视频信息的时候,频繁对数据库进行查询,导致性能损耗。
另外还要处理的就是/feed请求下显示点赞的情况。在未登录的情况下,/feed不发送token,在登录的时候会发送。我们可以先写死每次返回视频列表中是否点赞字段为false,每次收到feed请求后对token进行解析,若收到token而且token鉴权未报错,就遍历返回的视频列表,处理是否点赞问题。
2. 评论
评论功能最主要的是发表评论和回复评论(删除功能在后台)。评论功能的拓展功能体现有以下几方面:
- 单篇文章的评论数量和信息展示
- 展示用户评论信息
数据库评论表(comment)设计如下:
| 表字段 | 字段说明 |
|---|---|
| id | 主键 |
| compose_id | 作品id |
| compose_type | 作品类型 |
| content | 评论内容 |
| from_userid | 评论用户id |
当然,本次大作业实现的只是一个基础功能,对于回复盖楼之类的进阶功能没有更多要求,后续可以改进。