点赞评论功能 | 青训营笔记

113 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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

当然,本次大作业实现的只是一个基础功能,对于回复盖楼之类的进阶功能没有更多要求,后续可以改进。