基于java的微信小程序的实现(八)用户点赞/取消点赞功能相关后端接口开发
基于Java的微信小程序的实现(八)用户点赞/取消点赞功能相关后端接口开发需求分析
当用户进入视频详情页后,会当前登录用户与视频进行交互。其中一个常见的操作是点赞或取消点赞。这个功能涉及到两个主要方面:一是用户的点赞状态改变,二是对应的数据库表结构更新。
用户的点赞与取消点赞的接口编写
1. 数据库表结构分析关于点赞和取消点赞功能,一共需要关联到3张表的操作。相关联的表如下:
* users_like_videos:记录用户对视频的点赞信息* videos:记录视频基本信息* users:记录用户基本信息2. 点赞接口设计2.1 点赞接口请求参数| 参数名称 | 类型 | 必须填写 | 备注 |
| --- | --- | --- | --- |
| video_id | int | 是 | 视频ID |
| user_id | int | 是 | 用户ID |
2.2 点赞接口响应结果| 参数名称 | 类型 | 备注 |
| --- | --- | --- |
| code | int | 状态码 |
| msg | string | 消息提示 |
| data | object | 数据内容 |
3. 取消点赞接口设计3.1 取消点赞接口请求参数| 参数名称 | 类型 | 必须填写 | 备注 |
| --- | --- | --- | --- |
| video_id | int | 是 | 视频ID |
| user_id | int | 是 | 用户ID |
3.2 取消点赞接口响应结果| 参数名称 | 类型 | 备注 |
| --- | --- | --- |
| code | int | 状态码 |
| msg | string | 消息提示 |
| data | object | 数据内容 |
4. 点赞和取消点赞接口的实现4.1 点赞接口实现```java@PostMapping("/like")
public Result like(@RequestParam("video_id") Integer videoId, @RequestParam("user_id") Integer userId) {
// 判断用户是否已经点过赞 if (usersLikeVideosMapper.existsByVideoIdAndUserId(videoId, userId)) {
return Result.error(40001, "您已经点过赞了");
}
// 点赞 usersLikeVideosMapper.save(new UsersLikeVideos(userId, videoId));
return Result.success();
}
```
4.2 取消点赞接口实现```java@PostMapping("/unlike")
public Result unlike(@RequestParam("video_id") Integer videoId, @RequestParam("user_id") Integer userId) {
// 判断用户是否已经取消过赞 if (!usersLikeVideosMapper.existsByVideoIdAndUserId(videoId, userId)) {
return Result.error(40002, "您没有点过赞");
}
// 取消点赞 usersLikeVideosMapper.deleteByVideoIdAndUserId(videoId, userId);
return Result.success();
}
```
5. 点赞和取消点赞接口的测试5.1 点赞接口测试* 测试场景:用户点击视频的点赞按钮* 预期结果:用户点过赞,数据库表users_like_videos中记录了用户对视频的点赞信息5.2 取消点赞接口测试* 测试场景:用户点击视频的取消点赞按钮* 预期结果:用户取消了点赞,数据库表users_like_videos中删除了用户对视频的点赞信息