【青训营】抖音项目介绍

243 阅读1分钟

项目

技术

  • gin
  • jwt4
  • gorm
  • viper配置文件
  • mysql

image.png

架构

image.png

技术点

  • 数据库表的设定

    • 一对一

      • user----userLogin
    • 一对多

      • user----videos
      • user----comments
      • video----comments
    • 多对多

      • user-----favorVideo-----表favor_videos
      • user----follows(关注的人)----表follows
  • 视频存放

    • static:存放所有用户的视频
    • 文件夹:每个用户在static下都有一个名为其id的文件夹,创建时机为第一次上传视频时
    • 文件名:采取年月日+filename的方式
    • 数据库存放该视频在本地的url,如http://192.168.93.7:8080/static/1/202206091.mp4
  • 时区

    • time包解析字符串--->时间,如果不用gorm约束的CreatedAt和UpdatedAt要格外注意从数据库解析时间字符串

      • Parse函数,需要layout和timestr都有时区,默认返回utc时间
      • ParseInLocation函数,使用本地时间,或者指定时区
    • gorm的时间配置parseTime=True&loc=Asia%2fShanghai

      • 使用约束的CreatedAt和UpdatedAt,自动把当前时间存入数据库,把数据库时间字符串转为time
  • 密码

    • 采用标准库的md5加密
  • dao操作

    • 使用Preload和Association方法操作表关系
  • token

    • 按顺序从query,form,header中拿去token,有一个有就可以
    • 按顺序从query,form拿取userId,用来和token的useId校验,没有就不用校验
  • 功能的细节

    • user

      • name和password长度都是 0<len<=32
    • 点赞

      • 可以点赞自己的视频
      • 未点赞才可以点赞,点赞了才可以取消点赞,否则返回err
    • 评论

      • 可以发多条评论
      • 对title进行长度限制,0<title<=32