# wzq-lesson **Repository Path**: liuhaonb/wzq-lesson ## Basic Information - **Project Name**: wzq-lesson - **Description**: Lesson项目 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-10-06 - **Last Updated**: 2024-10-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 父项目-绝对在线课堂 - lesson项目全称 "绝对在线课堂": - lesson项目是仿照网易云课堂,腾讯云课堂等在线课堂项目研发而成的小型视频电商平台项目。 - lesson项目包含数据管理,权限管理,购物车管理,订单管理,在线观看教学视频等基础电商功能。 - lesson项目包括: - 接口文档后台子项目 `lesson-document`:用于对用户后台项目和管理员后台项目进行接口管理。 - 管理员后台子项目 `lesson-admin`:用于对lesson项目进行数据和权限管理。 - 用户后台子项目 `lesson-user-background`:支持注册登录,个人管理,下单购买视频等用户功能业务。 - 用户前台子项目 `lesson-user-foreground`:用户后台对应的前端界面子项目。 - 用户后台弹幕服务项目 `lesson-danmu-server`:提供用户后台项目的弹幕功能。 - 用户后台监控服务项目 `lesson-monitor-server`:提供用户后台项目的监控功能。 - 每个子项目均刻意使用不同的技术栈进行搭建,仅为个人学习,与需求无关,望悉知。 ## 项目环境介绍 > 以下子项目均使用此环境配置进行搭建和开发 - 基础开发环境:`Windows11` + `JDK11.0.16.1` - 基础部署环境:`Vmware16` + `CentOS7` + `Docker1.13` - 集成开发工具:`IntelliJ IDEA 2021.3.3 (Ultimate Edition)` - 项目管理工具:`Maven3.6.0` - 项目协同工具:`Git2.28.0.windows.1 + GitEE` - 数据存储仓库:`MySQL8.0.31` - 数据搜索引擎:`ElasticSearch7.11.2` + `Kibana7.11.2` - 前后端服务器:`Nginx1.23.2` + `Tomcat9.0.70` + `Node16.14.0` - 数据缓存仓库:`Guava19.0` + `Redis7.0.5` - 短信服务平台:容联云短信平台 - 对象存储平台:阿里云OSS对象存储 # 子项目-接口文档后台子系统 - lesson-document子项目是lesson项目的文档说明子项目,相当于lesson项目的说明书: - 参考Swagger页面与功能进行学习和开发。 - 主要用于对lesson项目的控制层接口和代码进行文档描述和说明。 - lesson-document子项目允许游客直接访问: - 游客仅可使用本项目加深对lesson项目的了解,学习lesson项目的使用方式。 - lesson-document子项目允许后台文档操作员用户登录: - 文档操作员登录系统后,可以对本管理员后台项目和用户后台项目的接口进行管理和维护。 ## 项目技术选型 - 使用 `JDBC` 持久层技术进行数据层开发。 - 使用 `Servlet3` 辅助技术进行控制层开发:注解配置方式。 - 使用 `HTML5 ` + `CSS3` + `JavaScript6` 进行前端界面开发。 - 使用 `Junit4.13` 单元测试测试数据层和业务层接口。 - 使用 `RestFul Fast Request` + `HttpClient` 工具测试控制层接口。 ## 项目业务描述 - 用户模块: - 登录:使用文档操作员内置账号进行登录,不允许注册,修改和注销。 - 登出:文档操作员退出登录时,从sessionStorage等状态管理中删除该用户信息。 - 文档模块: - 展示全部文档:内容包括接口描述,参数规则,返回值等数据,对游客开放此权限。 - 管理指定文档:包括添加,删除和修改操作,仅对登录状态的文档操作员开放此权限。 # 子项目-管理员后台子系统 - lesson-admin子项目是lesson项目的管理员后台子项目: - 用于对lesson项目进行后台数据,文件和日志的管理。 - lesson-admin子项目仅允许管理员登录,禁止游客登录: - 管理员登录系统后,可以对用户,视频,订单,日志等后台数据进行添加,删除和修改操作。 ## 项目技术选型 - 使用 `Mybatis3.5.5` 持久层框架进行数据层开发:XML配置方式。 - 使用 `SpringMVC4.3.14` 框架进行控制层开发。 - 使用 `JQuery3.6.0 + Bootstrap3.4.1` 进行响应式前端界面开发。 - 使用 `EasyExcel3.0.5` 进行数据到Excel表格的导出。 - 使用 `CommonsFileupload1.3.3` 进行文件的上传下载。 - 使用 `ApacheEcharts` 进行数据的图形统计。 - 使用 `Junit4.13` + `SpringTest4.3.14` 单元测试测试数据层和业务层接口。 - 使用 `RestFul Fast Request` + `HttpClient` 工具测试控制层接口。 ## 项目业务描述 - 用户模块: - 登录:使用管理员内置账号进行登录,不允许注册,修改和注销。 - 登出:管理员退出登录时,从sessionStorage等状态管理中删除该管理员信息。 - 普通用户管理:对普通用户数据进行添加,删除,修改,文件管理,数据导出和图形统计等操作。 - 文档操作员管理:对文档操作员用户数据进行添加,删除,修改,文件管理,数据导出和图形统计等操作。 - 轮播图模块: - 轮播图管理:对轮播图数据进行添加,删除,修改,文件管理,数据导出等操作。 - 视频模块: - 视频管理:对视频数据进行添加,删除,修改,文件管理,数据导出和图形统计等操作。 - 订单模块: - 订单管理:对订单数据进行添加,删除,修改,文件管理,数据导出和图形统计等操作。 # 子项目-用户后台子系统 - lesson-user-background子项目是lesson项目的普通用户后台子项目: - 基于SpringBoot + MyBatis框架开发,使用前后端分离技术。 - 使用Nginx服务器对本项目进行代理,配置静态资源目录以及配合Redis共享Session会话。 - lesson-user-background子项目支持用户注册,使用账号密码登录,使用手机号和验证码登录: - 对未登录的用户,提供浏览首页轮播图广告,分页搜索视频列表,点击查看视频详情等功能入口。 - 对已登录的用户,提供管理个人信息,添加商品到购物车,管理购物车商品,下单购买商品等功能入口。 - 对已支付的用户,提供查看个人订单,删除个人订单,在线观看视频,实时发送弹幕等功能入口。 ## 项目技术选型 - 持久层相关技术: - `Mybatis3.5.5`:注解配置方式开发和管理数据层。 - `PageHelper5.2.0`:分页工具。 - 业务层相关技术: - `SpringAOP`:对全部业务进行前置参数非空校验 - `Spring5.3.8`:开发和管理业务层。,后置记录日志和返回后数据脱敏等功能。 - `CORS` + `Interceptor`:处理前端的跨域请求。 - `JsonWebToken` + `Interceptor`:处理请求访问权限。 - `@Async`:执行异步任务。 - `@Scheduled`:执行定时任务。 - 控制层相关技术: - `SpringBoot2.4.8`:开发和管理控制层。 - `Jackson2.11.4`:处理JSON数据。 - `@ControllerAdvice`:统一处理全局异常。 - `HibernateValidator6.2.0`:校验请求参数。 - `SpringDoc1.3.1`:作为项目接口文档的生成工具。 - 其他技术: - `Logback1.2.3`:日志框架。 - `Junit4.13` + `SpringBootTest2.4.8`:单元测试业务层接口和数据层接口。 - `RestFul Fast Request` + `HttpClient`:测试控制层接口。 ## 项目业务描述 - 轮播图模块: - 批查轮播图记录:配合Guava进行本地缓存以提升查询效率。 - 用户模块: - 用户信息注册:密码使用MD5加密后入库,账号,密码,电话,姓名和身份证号必填,其余字段皆生成默认值。 - 用户账号登录:使用账号和密码登陆系统成功后,返回用户信息和对应的Token令牌。 - 获取验证码:后台生成随机4位验证码,备份到Redis缓存后返回。 - 用户电话登录:使用电话和验证码登陆系统成功后,返回用户信息和对应的Token令牌。 - 用户账号登出:从sessionStorage和Vuex状态管理中删除该用户信息。 - 用户账号注销:真实删除数据库中的用户个人记录,但配合MySQL触发器进行了数据备份。 - 查询个人信息:手机号码和密码等敏感数据使用AOP返回后通知进行脱敏操作。 - 修改个人信息:允许用户修改个人的昵称,性别,年龄和个人介绍。 - 修改个人头像:从修改个人信息模块中抽离出来的模块,用于重新上传个人头像。 - 修改个人密码:从修改个人信息模块中抽离出来的模块,用于修改密码,修改成功后需要用户重新登录。 - 查询个人积分:从Redis中查询个人积分。 - 视频模块: - 搜索指定视频:从ES中按视频标题分词搜索视频并分页展示。 - 展示视频详情:多表联查指定视频下所有章的信息和每一章中集的信息。 - 购物车模块: - 添加购物车:将指定视频添加到用户的Redis购物车中。 - 查询购物车:从Redis购物车中查看全部视频。 - 删除购物车:从Redis购物车中批量删除选中的视频。 - 清空购物车:从Redis购物车中清除全部的视频。 - 订单模块: - 购买指定视频:通过购物车,购买选中的视频,相同视频不允许重复购买,模拟支付功能。 - 查询个人订单:分页查询个人全部订单。 - 删除个人订单:批量删除个人选中的订单,配合MySQL触发器进行了数据备份。 - 其他模块: - 定时任务:使用Scheduled和自定义Starter组件定时检查违规昵称。 # 子项目-用户前台子系统 - lesson-user-foreground子项目是lesson-user-background子项目的前台界面。 ## 项目技术选型 - 使用 `Vue3.2.37` 框架 + `Vue/Cli5.0.6` 脚手架开发前端界面: - 使用 `Vue-Router4.0.16` 进行Vue组件路由。 - 使用 `Vuex4.0.2` 进行前端数据的状态管理。 - 使用 `SASS1.52.3` 进行CSS预编译代码开发。 - 使用 `ElementPlus2.2.6` 框架辅助开发前端界面。 - 使用 `Axios0.27.2` 向后台进行发送同步/异步请求。 - 使用 `XGPlayer2.31.6` 制作在线视频播放器。 ## 项目业务描述 - 搭建前台页面:匹配后台全部接口完成界面和功能的搭建。 - 在线观看视频:前端配合XGPlayer完成在线观看视频功能。 # 子项目-用户后台弹幕子系统 - lesson-danmu-server子项目是lesson项目的普通用户后台子项目的弹幕服务项目。 ## 项目技术选型 - 使用 `WebSocket` 作为视频弹幕服务项目的核心技术。 ## 项目业务描述 - 发送弹幕功能:配合Websocket完成在线观看视频时发送弹幕功能。 # 子项目-用户后台监控子系统 - lesson-monitor-server子项目是lesson项目的普通用户后台子项目的监控项目。 ## 项目技术选型 - 使用 `SpringBootAdmin` 作为视频监控服务项目的核心技术。