项目启动
- 启动Nacos
- 启动Nginx
- 启动SpringBoot各个微服务模块
- 打开前端项目,选择在终端中打开,输入指令npm run dev
后台管理系统
登录页面与首页
教师管理模块
教师列表
添加教师
编辑教师
课程分类模块
-
添加课程分类
- 读取excel里的课程分类数据,添加到数据库中(easyexcel)
- 读取excel里的课程分类数据,添加到数据库中(easyexcel)
-
课程分类列表显示
- 使用树形结构显示课程分类列表
- 使用树形结构显示课程分类列表
课程管理模块
-
课程列表功能
-
添加课程
- 课程发布流程:
-
填写课程信息
-
添加课程大纲
-
课程信息确认
-
最终课程发布
-
- 课程发布流程:
-
视频上传功能
课程如何判断是否已经发布了?
- 根据数据库中status字段来判断
- 点击确认发布后,status会改成已发布状态
课程添加后没有最终发布,如果找到之前的课程继续发布?
- 课程列表中筛选未发布课程编辑课程信息
统计分析模块
-
生成统计数据
-
统计数据图表显示
前台用户系统
首页数据显示
- 显示幻灯片功能
- 热门课程以及名师显示
用户注册
- 获取手机验证码(阿里云短信服务)
用户登录
- 普通登录
- SSO(单点登录)
使用token实现
token生成方式(JWT)
JWT由三部分组成
- 头信息
- 有效载荷(包含主体信息,用户信息)
- 签名哈希,防伪标志
- 登录调用接口返回token字符串
- 把返回token字符串放到cookie里面
- 创建前端拦截器进行判断
- 如果cookie里面包含token字符串,把token放到header里面
- 根据token获取用户信息(调用接口)
- 把用户信息放入cookie进行显示
- 微信扫码登录
OAuth2
针对特定问题的解决方案
主要有两个问题:开放系统间授权,分布式访问问题
- 如何获取扫码人的信息(实现过程)
- 扫描之后,执行本地的callback方法,在callback获取两个值,在跳转的时候传递
- state:原因传递
- code:类似手机验证码,随机唯一的值
- 拿着第一步获取到的code值,请求微信提供固定的地址,获取到两个值
- access_token:访问凭证
- openid:每个微信唯一标识
- 拿着之前获取到的两个值,再去请求一个微信提供的固定地址,最终可以获取到微信扫描人的信息(头像,昵称)
教师列表功能
教师详情功能
课程列表功能
- 条件查询
- 分页
课程详情功能
- 课程信息的显示(包含课程基本信息,分类,讲师,课程大纲)
- 判断课程是否需要购买
课程视频在线播放
课程支付功能(微信支付)
- 生成课程订单
- 生成微信支付二维码
- 微信最终支付
微信支付实现流程
- 如果课程是收费课程,点击立即购买,生成课程订单
- 点击订单页面去支付,生成微信支付二维码
- 使用微信扫描二维码实现支付
- 支付之后,每隔三秒查询支付状态(是否支付成功),如果支付成功,更新订单状态(已经支付状态),向支付记录表中添加支付成功记录