文章目录
前言
谷粒学院知识点总结,准备实习面试
一、项目功能点
1.后台管理系统功能
- 登录功能(SpringSecurity框架)
-
权限管理功能
(1)菜单管理:列表、添加、修改、删除
(2)角色管理:列表、添加、修改、删除(批量删除)、分配菜单
(3)用户管理:列表、添加、修改、删除、分配角色
(4)权限管理表和关系 (重点)
- 讲师管理模块(条件查询分页列表、添加、修改、删除)
- 课程分类模块
(1)添加课程分类(读取Excel数据添加到数据库——EasyExcel)
(2)课程分类列表(使用树型结构)
-
课程管理模块
(1)课程列表功能
(2)添加课程(填写课程基本信息——添加课程大纲(章节和小节)——课程信息确认——课程发布)(3)添加小节上传课程视频(阿里云OSS)
- 统计分析模块 (生成统计数据、统计数据图表显示echarts)
2.前台系统功能
-
首页数据显示 (幻灯片、热门课程、名师,根据sort/view_count/id排序选择前几位展示)
-
注册功能 (获取手机验证码——阿里云短信)
-
登录功能
(1)普通登录(单点登录SSO:session广播机制、cookie+redis、token)(2)微信扫码登录(OAuth2:特定问题的解决方案(令牌)——开放系统间授权、分布式访问)
-
名师列表功能
-
名师详情功能
-
课程列表功能(条件查询分页列表)
-
课程详情页 (课程信息显示、判断课程是否需要购买)
-
课程视频在线播放 (阿里云视频点播)
-
课程支付功能 (生成课程订单、生成微信支付二维码、微信支付)
3.总结项目技术点
-
前后端分离开发
-
前端:Vue + Element-ui + Node.js + Nuxt + Echarts
-
后端:微服务架构 + SpringBoot + SpringCloud + MyBatisPlus + EasyExcel + SpringSecurity + Redis + Nginx + OAuth2+JWT + HttpClient + Cookie + 微信登录/支付 + 阿里云OSS /视频点播 /短信服务 + Git + Docker+Jenkins
二、项目问题
-
前端问题-路由切换问题
(1)多次路由跳转到同一个vue页面,页面中created方法只会执行一次
(2)解决方案:使用vue监听 -
前端问题-ES6模块化运行问题
(1)Nodejs不能直接运行ES6模块化代码,需要使用Babel把ES6模块化代码转换ES5代码 执行 -
mp生成19位id值
(1)mp生成id值是19位,JavaScript处理数字类型值时候只会处理到16位
(2)js的number类型有个最大值(安全值),即2的53次方。更改ID为String,并更改策略为ID_WORKER_STR -
跨域问题
(1)访问协议,ip地址,端口号,这三个如果有任何一个不一样,产生跨域
(2)跨域解决:在Controller添加注解;通过网关解决 -
413问题
(1)上传视频时候,因为Nginx有上传文件大小限制,如果超过Nginx大小,出现413
(2)413错误:请求体过大
(3)在Nginx配置客户端大小
(4)响应状态码:302(临时重定向)、401(用户凭证不正确)、403 (请求被拒绝)、404(资源未找到)、408(请求超时)、502(网关从上游服务器接收到无效的响应)、511(客户端需要进行身份验证才能获得网络访问权限) -
Maven加载问题
(1)maven加载项目时候,默认不会加载src-java文件夹里面xml类型文件的
(2)解决方案: 直接复制xml文件到target目录;通过配置实现
三、项目描述
1. 总体介绍
- 在线教育商城,分为前台网站系统和后台运营平台,采用B2C模式。
- 使用了微服务架构,前后端分离开发,前端有资源,后端自己做。
2. 项目功能模块 & 主要深入的模块
- 分为前台系统和后台系统,前台系统包括:首页数据显示、课程列表和详情、课程支付、课程视频播放、微信登录 /支付等;
- 后台系统包括:权限管理、课程管理、统计分析、课程分类管理等
- 主要深入的模块为…
3. 项目涉及技术
- 后端主要技术架构是:SpringBoot + SpringCloud + MyBatisPlus + EasyExcel + Nginx
- 前端主要技术架构是:Node.js + Vue.js + element-ui + NUXT + ECharts
- 其它涉及的中间件包括Redis、阿里云OSS和视频点播,业务中使用ECharts做图表展示;使用easyExcel完成分类批量添加;注册分布式单点登录使用了JWT。
- 系统中包含前台会员和后台系统管理员与运营人员,数据库采用后台分库,每个微服务一个独立的数据库,使用了分布式id生成器
- RPC
- 系统架构图