# lesson **Repository Path**: sunbat520/lesson ## Basic Information - **Project Name**: lesson - **Description**: lesson项目全称 "绝对在线课堂",是仿照网易云课堂,腾讯云课堂等项目研发而成的,是一个支持在线观看教学视频和购买教学视频小型电商平台,包括文档子项目,管理员后台子项目,用户后台子项目和用户前台子项目,采用经典的单体MVC架构,其中用户子项目使用前后台分离方案,所有子项目共用相同的数据库表。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2024-08-09 - **Last Updated**: 2024-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # lesson项目 ## 项目描述 > lesson项目全称 "绝对在线课堂",是仿照网易云课堂,腾讯云课堂等项目研发而成的,是一个支持在线观看教学视频和购买教学视频小型电商平台,包括文档子项目,管理员后台子项目,用户后台子项目和用户前台子项目,采用经典的单体MVC架构,其中用户子项目使用前后台分离方案,所有子项目共用相同的数据库表。 ## 项目环境 > 以下项目均使用此环境配置进行搭建和开发。 - 基础操作系统:win11 + jdk1.8.0_05 - 集成开发工具:idea2021.3(Ultimate Edition) - 项目管理工具:maven3.6.0 - 项目协同工具:git2.28.0.windows.1 + gitee - 数据库服务端:mysql8.0.21 for windows # lesson-document子项目 ## 项目描述 > lesson-document子项目是lesson项目的文档说明子项目,参考Swagger页面与功能进行学习和开发,主要用于对lesson项目的控制层接口和代码进行文档描述和说明,该项目仅允许后台文档操作员用户登录,登录后可以对本子项目内容进行增删改等操作,游客仅可使用本项目加深对lesson项目的了解,学习lesson项目的使用方式,相当于lesson项目的说明书。 ## 技术选型 - 使用jdbc持久层技术进行数据层开发。 - 使用servlet3辅助技术进行控制层开发:注解配置方式。 - 使用html5 + css3 + javascript6进行前端界面开发。 - 使用junit4对全部业务层和数据层接口方法进行单元测试。 ## 业务描述 - 用户模块-用户登录:文档操作员账号是内置账号,不允许注册和修改。 - 用户模块-用户登出:用户退出登录时,从sessionStorage等状态管理中删除该用户信息。 - 文档模块-展示全部文档:内容包括接口描述,参数规则,返回值等数据。 - 文档模块-对指定接口方法进行添加,删除和修改操作:仅系统操作人员角色拥有该权限。 # lesson-admin子项目 ## 项目描述 > lesson-admin子项目是lesson项目的管理员后台子项目,该项目仅允许后台管理员用户登录,登陆后以对用户,视频,订单,日志等数据进行操作和维护,非管理员用户禁止登录和访问。 ## 技术选型 - 使用 `Mybatis:3.5.0` 持久层框架进行数据层开发:XML配置方式。 - 使用 `SpringMVC:4.3.14` 框架进行控制层开发。 - 使用 `JQuery3.6.0 + Bootstrap:3.4.1` 进行响应式前端界面开发。 - 使用 `RestFul Fast Request` 对全部控制层接口方法进行测试。 - 使用 `Junit4.13` + `SpringTest` 对全部业务层和数据层接口方法进行单元测试。 ## 业务描述 - 用户模块-用户登录:管理员账号是内置账号,不允许注册和修改。 - 用户模块-用户登出:管理员退出登录时,从sessionStorage等状态管理中删除该管理员信息。 - 用户模块-用户管理:对普通用户,文档操作员和系统管理人员进行CRUD操作,数据导出和图形统计。 - 轮播图模块-轮播图管理:对轮播图进行CRUD操作,上传下载媒体数据。 - 视频模块-视频管理:对视频进行CRUD操作,数据导出和图形统计。 - 订单模块-订单管理:对订单进行CRUD操作,数据导出和图形统计。 # lesson-user-background子项目 ## 项目描述 > lesson-user-background子项目是lesson项目的普通用户后台子项目,基于springboot + mybatis框架开发,使用前后端分离技术,用户在未登录状态下,提供浏览首页轮播图,广告,查看视频列表,查看视频详情,搜索视频等功能入口,在登录状态下,提供修改个人信息,注销账号,上传头像,购买视频,加入购物车,查询订单以及删除订单等功能入口,在支付成功状态下,提供在线观看视频,实时发送弹幕等功能入口。 ## 技术选型 - 使用 `Mybatis:3.5.0` 持久层框架进行数据层开发:注解配置方式。 - 使用 `SpringBoot:2.4.8` 框架进行业务和控制层开发。 - 使用 `@ControllerAdvice` 对全局异常进行统一处理。 - 使用 `Logback` 作为本项目的日志框架。 - 使用 `SpringBootAdmin` 对本项目进行健康检测和检查。 - 使用 `@Async` + `容联云短信服务` 对下单成功的用户异步发送短信通知。 - 使用 `@Scheduled` + `自定义starter组件` 定时检查违规昵称。 - 使用 `Jackson` 序列化框架进行控制层请求参数接收和响应数据格式化处理。 - 使用 `@Aspect` 对全部业务进行前置校验参数,后置日志记录和返回后数据的脱敏和加密等功能。 - 使用 `CORS` + `拦截器` 处理前端的跨域请求。 - 使用 `HibernateValidator` 对请求参数进行规则校验。 - 使用 `Nginx:1.20.2` 服务器对项目进行负载均衡处理,配置虚拟媒体文件的上传路径以及共享session会话。 - 使用 `PageHelper:5.2.0` 对查询业务进行分页处理(轮播图除外)。 - 使用 `Guava` 作为本地缓存。 - 使用 `Redis` 集群作为缓存中间件:开发购物车业务。 - 使用 `ElasticSearch:7.11.2` 作为搜索引擎:使用 `Kibana:7.11.2` 客户端。 - 使用 `Junit4.13` + `SpringBootTest` 对全部业务层和数据层接口方法进行单元测试。 - 使用 `SpringDoc` 生成项目文档以及对项接口进行常规测试。 ## 业务描述 - 轮播图模块-全查轮播图:配合guava进行本地缓存以提升查询效率。 - 用户模块-用户注册:密码使用MD5加密后入库,账号,密码,电话,姓名和身份证号必填,其余字段皆生成默认值。 - 用户模块-用户登录:配合JWT + 拦截器进行token校验,自封装注解。 - 用户模块-用户登出:退出登录,从sessionStorage和vuex状态管理中删除该用户信息。 - 用户模块-用户注销:真实删除数据库中的用户个人记录,但配合mysql触发器进行了数据备份。 - 用户模块-查询个人信息:手机号码和密码等敏感数据使用AOP返回后通知进行脱敏操作。 - 用户模块-修改个人信息:修改个人信息,Mapper层使用动态标签进行选择性修改。 - 用户模块-修改个人头像:使用Nginx + FileUpload开发上传头像,头像预览,下载头像等功能。 - 用户模块-修改个人密码:修改密码设置为单独模块,修改后退出登录状态,提示重新登录。 - 视频模块-分页查询视频:配合guava进行本地缓存以提升查询效率,使用分级菜单进行展示。 - 视频模块-搜索指定视频:配合ElasticSearch完成视频分词搜索和展示。 - 视频模块-展示视频详情:联查指定视频下所有章的信息和每一章中集的信息。 - 视频模块-在线观看视频:配合XGPlayer完成在线观看视频功能。 - 视频模块-发送弹幕功能:配合Websocket完成在线观看视频时发送弹幕功能(实时推送到其他客户端)。 - 订单模块-购买指定视频:下单业务添加本地事务保护,配合redis完成购物车业务,相同视频不允许重复购买。 - 订单模块-查询个人订单:查询个人全部订单,配合PageHelper进行分页处理。 - 订单模块-删除个人订单:删除个人指定订单,配合mysql触发器进行了数据备份。 # lesson-user-foreground子项目 > lesson-user-foreground子项目是lesson项目的普通用户前台子项目,使用前后端分离技术,使用node16 + vue3 + ElementPlus框架开发完成。 ## 技术选型 - 使用node16作为前端项目服务器。 - 使用vue3.2.37 + vue-router4.0.16 + vue3脚手架开发前端界面。 - 使用element-plus2.2.6框架辅助开发前端界面。 - 使用sass1.52.3进行CSS预编译代码开发。 - 使用axios0.27.2向后台进行发送同步/异步请求。 - 使用vuex4.0.2进行前端数据的状态管理。 - 使用xgplayer2.31.6制作在线视频播放器。 # mall-alibaba项目 ## 项目描述 > mall项目仿照淘宝,京东等电商平台研发而成的,采用spring-cloud-alibaba全家桶进行微服务架构搭建,前后端分离。 ## 技术选型 - 使用mysql8数据库存储数据:使用触发器将所有被删除的数据进行备份。 - 使用mybatis-plus持久层框架的注解配置方式进行数据层开发,包括分页。 - 使用spring-cloud-alibaba技术栈进行全项目开发。 - 使用nacos注册中心代替cloud中的eureka进行服务注册与发现。 - 使用nacosConfig配置中心代替cloud中的config进行配置文件统一管理。 - 使用gataway网关代替cloud中的zuul进行路由,限流和断言配置。 - 使用sleuth + zipkin对整体项目服务的链路进行追踪和分析。 - 使用openFeign代替ribbon进行微服务之间的远程调用。 - 使用sentinel代替hystrix进行服务限流,降级,熔断等处理,以保证服务高可用。 - 使用seata对服务进行分布式事务保护。 - 使用rocketmq生产消费模型对服务进行削峰填谷,在下单后向用户微服务投递消息,发送通知短信/邮件。 - 使用springboot拦截器进行CORS跨域处理。 - 使用jmeter进行后台接口压力测试。