简历视频项目准备
首行占位
一、项目需求分析,业务逻辑分析
项目需求:
1.首页展示
2.用户登录注册
3.课程展示,课程详情展示
4.视频播放
5.添加购物车,购物车调整
6.创建订单
7.支付
业务逻辑:
1.进入首页
2.点击查看课程列表
3.点击进入课程详情
4.点击播放视频
5.未登录则跳转到登录页面,已登录的就检查是否有权限,有权限则进入播放页面,无权限提醒购买
6.加入购物车,创建订单,支付
首页模块
轮播图:接口提供image+link
导航:name+link
登录注册
登录:
基于Django默认提供的认证系统,在项目中引入了JWT认证机制来代替Session机制,将用户的身份凭据存放在Token中,然后对接Django的认证系统,实现登录
Django REST framework JWT提供了登录获取token的视图,可以直接使用默认的返回值仅有token,为了方便在客户端页面中显示当前登录用户,修改了jwt视图的默认返回值,增加id跟username
Django认证系统中提供的用户模型类及方法很方便,但无法满足本项目需求,如无保存手机号的字段,所以我们扩展了它提供的用户模型类
多条件登录:JWT扩展的登录视图,在收到用户名与密码时,也是调用Django的认证系统中提供的authenticate()来检查用户名与密码是否正确。
我们通过修改Django认证系统的认证后端(主要是authenticate方法)来支持登录账号既可以是用户名也可以是手机号
极验验证:
1.页面加载向后端请求验证流水号
2.滑动成功完成,向后端发送滑动结果进行校验,校验成功给前端返回允许点击登录按钮的消息
短信注册:
1.点击发送短信
2.将短信保存在redis,并提醒前端发送成功
3.点击注册,将输入的验证码与redis里面的验证码对比,成功则进行下一步
课程
通过django-filter模块实现课程分类展示,使用drf的排序和分页功能实现课程的分页与排序
课程分类:
默认不分类,显示所有
课程展示:
展示的课程包含课程分类,课程信息,课程章节,课时信息,老师信息,价格策略这些内容
详情页:
CKEditor富文本编辑器,保利威,用户向后端请求token并播放视频
视频播放
使用保利威视频服务平台,来实现收费视频的播放,借助保利威的开发文档
具体流程是:前端向后端请求视频播放的token,后端验证无误后向前端发送可以获取视频的token,前端拿到token后向保利威获取视频。
购物
添加购物车:
使用Redis,管道(事务)
状态更改:
切换勾选状态和课程有效期
移除购物车:
订单
生成订单(订单记录与订单详情):
用户提交订单,后端进行校验信息,确保课程等信息无误有效,计算真实价格,开始生成订单,使用事务生成订单,成功删除购物车里面的数据,失败回滚操作
支付
步骤:
1.前端请求支付
2.后端验证请求支付宝生成支付连接,发送给前端
3.前端进行支付
4.支付成功后,支付宝会发送两个请求,get到前端,post到后端,后端进行验证添加购买记录