抖音大项目(二) | 青训营笔记

114 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天

项目部分逻辑

登录的实现

与用户的登录注册有关的接口有三个/douyin/user、/douyin/user/register/、/douyin/user/login其中user主要存储用户信息,不必多言。这里主要关注一下登录和注册功能的具体实现。

用户注册

用户注册接口的实现大致逻辑为:

获取用户输入的username和password之后,首先对其进行长度验证(不可超过32位),然后使用Gorm链接数据库,在此期间若遇到错误会有相应的文字错误提示。然后生成useriID,userID是从100000开始,以后每新增一个用户向后递增1,在这里主要是参考了qq账号和B站uid的位数,id仅是账户唯一标识的功能。最后生成token,这里使用了JWT生成token,因为对于单体应用而言,HS256 和 RS256 的安全性没有任何差别。当以上三步都完毕之后,返回信息。

点赞模块

  1. 判断是否是登录状态

  2. 下面是查redis的逻辑

    1. 首先先查看当前用户是否对该视频进行了点赞,通过key查询出来用户的点赞信息,会出现三种情况(0,1,2)

      1. 0代表没有点赞呢,1代表点赞了,2代表取消了点赞
    2. 此时判断当前传入的点赞类型和查出的类型

      1. 如果传入的是1,而查出来的不是1,那么就说明,当前用户对该视频点赞成功
      2. 如果传入的是2,而查出来的是1,表示已经点赞了,现在取消了赞,如果查出来的是0或者2,那么什么也不做
    3. 此时应该记录好了用户对某个视频的点赞类型,同时应该也记录上哪个用户给哪个视频点赞了

查询点赞列表
  1. 通过查询Set数据结构,传入用户id就可拿到当前用户所有的点赞视频id
  2. 然后根据视频id查询出所有的视频
视频点赞总数

通过查询ZSet来查询分数是1的元素数量,也就是统计每个视频的点赞数量