# UCloudTeach-Monolithic **Repository Path**: h0ss/ucloud-teach-monolithic ## Basic Information - **Project Name**: UCloudTeach-Monolithic - **Description**: 优云教在线教育平台单体架构版本,使用SpringBoot+Mybatis+Redis+Sa-Token搭建,此为第一版完整应用,基本功能都已实现,可用于毕设、练手Demo等。此版架构优点是构建难度较小,缺点是服务边界不明确、维护成本较高。 前端项目地址请关注Readme文件。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 2 - **Created**: 2022-04-16 - **Last Updated**: 2025-05-12 ## Categories & Tags **Categories**: instructional **Tags**: None ## README # UCloudTeach-Monolithic ### 项目介绍 #### 1)项目说明 本项目选题自《2021华为云DevCloud开发者大赛-河南》赛题二,基本需求为在线教育平台应用的开发,后端功能需求如下: 最终项目定名为“优云教在线教育平台”,本仓库为项目的单体架构版本,基本功能都已实现,可用于毕设、练手Demo等。 此版架构优点是构建难度较小,缺点是服务边界不明确、维护成本较高。 #### 2)项目前端 一个完整的项目应用自然不能少了前端页面展示,项目前端页面分为管理端和学生端: ① 管理端使用`Vue3+Ant-Design-Vue`搭建,仓库地址为:[UCloudTeach-Admin](https://gitee.com/h0ss/ucloud-teach-admin); ② 学生端使用`Vue3+Vant3`搭建,仓库地址为:[UCloudTeach-Student](https://gitee.com/h0ss/ucloud-teach-student); #### 3)项目文档 后台接口文档使用 docway 创建,具体可参考:http://xiaoyaoji.cn/project/1sxS6c06Njl/1sxSAL1b4LI ### 基本架构 ### 项目技术点 #### 1)数据存取 ① 项目数据库使用MySQL,集成Mybatis进行数据存取操作,使用代码生成插件进行实体类以及mapper代码的构建; ② 集成pagehelper插件进行分页查询,可有效避免接口全量查询数据造成数据库过压情况; ③ 集成redis做数据的缓存,提升读多写少数据、热点数据的访问效率,同时实现了分布式session; ④ 集成华为云OBS进行图片等文件的存储; *PS: 项目中的redis以及MySQL需要手动配置* #### 2)数据处理与日志收集 ① 使用雪花算法生成分布式自增id,在多机器环境下可以生成唯一有序ID,方便数据库索引构建; ② 集成fastjson实现数据的序列化与反序列化; ③ 集成validation进行数据的后端校验; ④ 集成slf4j进行日志的收集,并且为日志生成唯一的流水号,以方便运维排错; #### 3)权限校验 ① 使用轻量化开源框架sa-token做权限校验,相比于shiro与SpringSecurity集成配置更加方便; ② token信息使用本地64位随机字符串; ③ 基于Redis实现token信息的分布式存储, ④ 利用框架进行角色权限管理,针对不同用户接口进行权限校验; ⑤ 集成短信接口实现短信下发功能,集成腾讯防水墙服务进行滑动验证码的前后端校验【参考官网配置】; #### 4)支付功能 ① 集成支付宝沙箱支付功能实现课程的购买功能,用户提交购买请求后返回支付宝支付页面; ② 通过后端接受支付宝异步通知来获取用户支付状态,支付成功则写入数据表中; *PS: 参考支付宝沙箱环境搭建配置* ### 项目使用 1. 克隆本项目: `git clone https://gitee.com/h0ss/ucloud-teach-monolithic.git` 2. 安装mvn依赖: `mvn clean install` 3. 检查配置文件,完成数据库、Redis等相关信息的配置 4. 运行启动类: `mvn spring-boot:run` ### 项目后续计划 - [ ] **1、重构项目controller和service,根据业务或者根据角色去划分模块** - [ ] **2、项目接口文档进一步完善** - [ ] **3、完成项目详细开发文档**