项目概览
项目用的b2c模式,有前台管理系统和后台管理系统
后台系统的功能
-
登录功能(集成SpringSecurity框架)
-
权限管理模块
(1) 菜单管理:列表,添加,修改,删除
(2) 角色管理:列表,添加,修改,删除,为角色分配菜单
(3) 用户管理:列表,添加,修改,删除,为用户分配角色
(4) 权限管理表的关系
-
讲师管理模块
(1) 条件查询分页列表,添加,修改,删除
-
课程分类模块
(1)添加课程分类 (读取Excel中里面课程分类数据,添加到数据库中)
(2)课程分类列表显示(使用树形结构实现课程分类列表)
-
课程管理模块
(1)添加课程
- 第一步 填写课程基本信息
- 第二步 添加课程大纲(章节和小节)
- 第三步 课程信息确认,最终课程发布
(2)课程列表(条件查询分页列表,增删改查已发布和未发布课程)
(3)添加小节上传课程视频
-
轮播图管理
-
订单管理(有待补充)
前台系统的功能
-
首页数据显示(redis缓存)
(1) 显示幻灯片功能
(2) 显示热门课程
(3) 显示名师
-
注册功能
(1) 填写基本信息(加密密码)
(2) 获取手机验证码(阿里云短信服务)
-
登录功能
(1) 手机账号登录
-
SSO(单点登录) JWT生成token实现
-
JWT为头信息,有效载荷(用户信息),签名哈希(防伪标志)组成
-
登录调用登录接口返回token,把返回token放入cookie,创建前端拦截器进行拦截,
如果有token,放入header,根据token获取用户信息,用户信息放入cookie,登录成功
(2) 社交账号(微信)扫码登录
-
OAuth2
针对特定问题的解决方案,主要两个问题:开发系统间的授权,分布式访问(JWT为OAuth
2的具体实现之一)
-
如何获取扫描人信息
扫码之后微信接口返回code(临时票据),拿着code请求微信固定地址,得到两个值:
access_token(访问凭证)和openid(微信唯一标识),拿着这两个值在请求固定地址,
得到微信扫码人信息(比如昵称,头像等等)
-
-
名师列表功能
- 分页显示名师信息
-
名师详情页
- 点击名师跳转名师详情与他所教的课程
-
课程列表功能
- 更具课程分类分页查询课程
- 根据销量,价格等排序课程
- 课程列表分页显示
-
课程详情页
- 课程信息显示(课程基本信息,分类,讲师,课程大纲)
- 判断课程是否需要购买
- 课程评论
-
课程视频在线播放
- 整合阿里云视频播放器
- 阿里云视频点播
-
课程支付功能(微信支付)
-
生成课程订单
-
生成微信支付二维码
-
微信扫码支付实现过程
如果课程收费,点击购买,生成课程订单,向订单表加数据,点击订单页面中去支付,
生成微信支付的二维码,用微信扫描二维码实现支付
-
支付之后,每隔三秒查询是否支付成功,如果没有,等待,支付成功之后,改订单状态
变为已支付,在支付记录表中加一条数据,把订单表中字段改为已支付,返回课程
详情页面,可观看视频
-
项目使用的前端技术
-
vue
-
基本语法
-
指令
v-bind() (单向绑定) v-model (双向绑定) v-if v-for v-html
-
生命周期
created(): 页面渲染之前执行
mounted(): 页面渲染之后执行
-
ES6规范
-
-
Element-ui
-
nodejs
-
NPM
- 包管理工具,类似Maven
-
Babel
- 把es6转换成es5
-
前端模块化
-
后台系统使用vue-admin-template(基于vue加element ui)
-
前台系统使用Nuxt(基于vue)
-
Echarts
- 图表工具
项目使用的后端技术
-
项目采用微服务架构
-
SpringBoot
- SpringBoot本质上是Spring,只是快速构建Spring工程脚手架
- 细节
- 启动类包扫描机制
- 设置扫描规则@ComponentScan(“包路径”)
- 配置类
- SpringBoot配置文件
- 加载顺序: bootstrap application application-dev
- 版本:2.2.1
-
SpringCloud
- 很多框架的总称,使用这些框架实现微服务架构,基于SpringBoot实现
- 项目使用Nacos替代了一些组件
- Nacos
- 使用Nacos作为注册中心
- 使用Nacos作为配置中心
- Feign
- 服务调用
- 熔断器
- GateWay网关,不用zuul
- 版本Hoxton
-
MybatisPlus
- MybatisPlus是对Mybatis增强
- 自动填充
- 乐观锁
- 逻辑删除
- 代码生成器
- MybatisPlus是对Mybatis增强
-
EasyExcel
- 阿里巴巴提供的excel工具
- EasyExcel对poi进行封装,采用SAX方式解析
- 项目应用在添加课程分类,读取excel数据
-
SpringSecurity
-
整合实现权限管理
-
SpringSecurity组成认证和授权
-
认证授权过程
-
执行过程
-
-
Redis
- 首页Redis缓存
- 其他一些数据缓存(验证码,授权)
-
Nginx
- 反向代理服务器
- 使用请求转发
-
QAuth2+JWT
- 登录
-
HttpClient
- 请求微信地址
-
Cookie
- 存token,用户信息
-
微信登录
-
微信支付
-
阿里云OSS
- 文件存储(头像)
-
阿里云视频点播
- 视频生成,播放凭证播放,阿里云播放器
-
阿里云短信服务
- 发送短信验证码
-
Git
- 上传码云
-
Docker
- 部署
-
jekins
- 部署