新东方在线App进度上传业务
大约 2 分钟
新东方在线App进度上传业务
进度业务: 既有时间点概念,对应观看进度; 也有时间片概念, 对应统计时长
视频分为:直播 直播回放 录播
曾经发生过的问题及原因
问题 | 原因 | 问题发生位置 |
---|---|---|
国外学员问题 | 字符串转换成浮点数时,国外的小数点会变成逗号,导致上传失败 | 上传进度组装数据前 |
只上传一次问题 | 更新VideoProcess时,是否上传标志位设置错误 | 存储时 |
数据结构:
- 存储相关的进度数据结构:
类名 | 功能描述 |
---|---|
StudyRecord | 各业务线的进度显示使用,使用范围较广 |
PlayRecord | 仅播放器中使用,存储时间点跟随VideoProcess |
LearningRecordProduct | 仅用于我的->本地学习记录页面 |
VideoProcess | 使底层插入对上层保持透明,屏蔽底层存储数据结构差异,解耦存储不同数据结构的状况 |
- 上传进度时所用的数据结构及对应接口和功能:
tips: 截止到4.5.0
录播进度时长 是一个接口
直播中的 进度和时长是两个接口分开的
直播回放进度时长是一个接口
类名 | 对应接口 | 功能介绍 |
---|---|---|
UploadProgress | /upload/video_process/v1 | 录播进度和时长上传时的json结构 仅在上传进度时方便json转换用,上传进度前会将VideoProcess临时转换 |
UploadLiveProgress | /upload/live_vod_process/v1 | 直播回放进度(暂无时长)上传时的json结构 仅在上传进度时方便json转换用,上传进度前会将VideoProcess临时转换 混排有courseId nodeId isRecommend 直播组时 有groupId |
UploadLiveingProgress | /upload/live_process/ | 直播中学习进度统计 |
UploadLiveingPeriodTimeProgress | /upload/live_time_stat | 直播中学习时长统计 |
进度上传时序图
App业务体现位置:
- 各个业务线课表中的学习进度
- 播放器中的上次学习
- 首页的上次学习
- 课表中的上次学习
- 首页课程的总学习进度
- 微信学习
- 本地学习记录
- 后台时长统计