大项目-视频需求 | 青训营笔记

184 阅读3分钟

这是我参与[第五届青训营]伴学笔记创作活动的第5天

主要是我做需求的时候提前搭建的框架,只不过很多不足的地方,等后续功能做得差不多了再来完善。 我在团队中主要针对video表的做的三个需求,如下:

image.png

(1)视频投稿接口

接受参数:用户鉴权token、视频流数据data、视频标题title

请求类型:POST /douyin/publish/action

请求体:JSON数据

响应体:状态码status_code 返回状态status_msg

image.png

视频投稿业务流程

登录用户选择视频上传。

image.png

1 鉴权(判断用户是否登录)

(1)如果已经登录,进入2

(2)如果未登录,则返回status_code=0 status_msg = "投稿失败,您未登录"

2 判断用户视频数据或者视频标题是否为空

(1)只要有一个为空则返回status_code=0 ,status_msg = "投稿失败,请保证填写必要数据"

(2)都不为空,进入3 ,并且返回status_code=1 ,status_msg = "投稿成功"

3把视频数据存放在后台

4添加记录到数据库

视频稿件表中添加一条记录,包括以下字段

id(递增), user_id(根据token去用户信息表查id) ,play_url(视频存放地址),title,(传过来的参数),cover_url(这个从哪里来?),favorite_count(默认为0),comment_count(赋0),is_favorite(赋0)、create_time(go语言会自动生成应该)

5返回给前端status_code status_msg

(2)发布列表接口

接受参数:用户鉴权token、目标用户id

请求类型:GET /douyin/publish/list

请求体:JSON数据

响应体:状态码status_code 返回状态status_msg video_list

image.png

发布列表业务流程

image.png 登录用户的视频发布列表,直接列出某个用户所有投稿过的视频。

1 鉴权(判断用户是否登录)

(1)如果已经登录,进入2

(2)如果未登录,则返回status_code=0 status_msg = "请先登录"

2 根据目标用户id查询目标用户信息 author

(1)如果查不到则返回status_code=0 status_msg = "目标用户不存在"

(2)如果能查到,则进入3

3.video_list包括以下字段

根据目标用户id查询

author User(2中查出来的用户信息)

Video:

id(递增),play_url(视频播放地址)、cover_url(视频封面地址)、favoriteCount(视频点赞总数)、commentCount(视频评论总数)、isFavorite(是否点赞)、userID(目标用户)

4.封装到video_list中

5返回给前端status_code = 1 status_msg="查询成功" ,video_list

 

(3)视频流接口业务流程

接受参数:lastest_time(可选参数,限制返回视频的最新投稿时间)、用户鉴权(可选参数)token

请求类型:GET /douyin/feed

请求体:JSON数据

响应体:状态码status_code 返回状态status_msg video_list

next_time 本次返回视频中,发布最早的时间,作为下次请求时的lastest_time

image.png

视频流业务流程

image.png

不限制登录状态,返回按投稿时间倒序的视频列表,视频数由服务端控制,单次最多30个

1.video_list包括以下字段

查询前30个最新时间 Video:

id(递增),play_url(视频播放地址)、cover_url(视频封面地址)、favoriteCount(视频点赞总数)、commentCount(视频评论总数)、isFavorite(是否点赞)、userID(目标用户)

author User(根据userID查询)

status_code = 1 status_msg="查询成功"

next_time(根据video去拿)

问题:(1)如何查询前30个? (2)如何拿到这30个中的最后一个? 使用gorm中的limit和排序

3.封装到video_list中

4.返回给前端status_code = 1 status_msg="查询成功" ,video_list next_time(返回的30中最早的)