# 职业技术教育平台 **Repository Path**: ShallowRecall/vetp ## Basic Information - **Project Name**: 职业技术教育平台 - **Description**: 此项目是一个基于微服务架构的生产级在线教育项目,核心用户不是K12群体,而是面向成年人的非学历职业技能培训平台。是一个B2C类型的教育网站,因此分为两个端: - 后台管理端 - 用户端(PC网站) - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2024-07-02 - **Last Updated**: 2025-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vetp 项目 README ## 项目介绍 `vetp` 是一个基于微服务架构的在线教育平台核心系统,涵盖了从课程管理、考试管理、用户权限控制到支付系统等多个模块。该项目使用 Spring Boot 和 Spring Cloud 构建,结合 MyBatis Plus、Feign、Redis、RabbitMQ、XXL-JOB ://gitee.com/ShallowRecall/vetp - **Dockerfile**: 提供容器化部署支持,基于 `openjdk:11.0-jre-buster` 构建。 - **startup.sh**: 包含启动脚本的配置参数,如路径、项目名称、容器名、Java 启动参数、端口、调试端口、镜像名称等。 ## 技术栈 - **Spring Boot / Spring Cloud**: 微服务架构核心框架。 - **MyBatis Plus**: 数据库操作框架。 - **Feign / Gateway**: 服务间通信与 API 网关。 - **Redis / Redisson**: 缓存管理与分布式锁。 - **RabbitMQ**: 异步消息队列处理。 - **XXL-JOB**: 定时任务调度。 - **Swagger / Knife4j**: 接口文档与可视化。 - **JWT / OAuth2**: 用户认证与权限控制。 - **Elasticsearch**: 课程搜索服务。 - **多数据源支持**: 包括 MySQL、MongoDB、Redis、RabbitMQ : 项目结构清晰,模块化设计,便于扩展和维护。 - **微服务架构**: 支持服务注册与发现,具备良好的服务隔离和通信机制。 - **缓存与性能优化**: 使用 Redis 缓存课程分类、角色权限、API 权限等信息,提升系统响应速度。 - **分布式事务**: 使用 Seata 或基于消息队列的最终一致性方案,确保跨服务数据一致性。 - **异步处理**: RabbitMQ 用于异步处理短信发送、订单状态更新、课程上下架等操作。 - **定时任务**: XXL-JOB 用于课程完结、数据统计、缓存刷新等定时任务。 - **权限管理**: 基于角色的菜单权限和 API 权限控制,支持精细化权限配置。 - **支付系统**: 支持多种支付渠道(如微信、支付宝),具备退款、订单查询等功能。 - **搜索服务**: 基于 Elasticsearch 的课程搜索与推荐系统,支持个性化推荐。 - **短信服务**: 支持多平台短信发送(如阿里云、腾讯云),具备异步发送与失败重试机制。 ## 模块说明 ### 核心模块 - **tj-auth**: 用户认证与权限管理模块,包含 JWT、OAuth2、角色权限、菜单权限等。 - **tj-course**: 课程管理模块,支持课程分类、课程创建、目录管理、视频上传、题目管理等。 - **tj-exam**: ://gitee.com/ShallowRecall/vetp - **tj-gateway**: API 网关模块,负责请求路由、权限拦截、请求 ID 传递等。 - **tj-learning**: 学习进度管理模块,记录用户学习状态、课表进度等。 - **tj-media**: 媒资管理模块,支持视频上传、播放签名生成、媒资信息管理等。 - **tj-message**: 短信与通知模块,支持多平台短信发送、系统通知、私信等。 - **tj-pay**: 支付模块,支持微信、支付宝等支付方式,具备退款、订单状态查询等功能。 - **tj-search**: 课程搜索与推荐模块,基于 Elasticsearch 实现课程搜索、个性化推荐等。 - **tj-trade**: 订单与交易模块,支持购物车、下单、支付、退款、订单状态管理等。 ### 公共模块 - **tj-common**: 提供通用工具类、异常处理、参数校验、Redis 工具、线程池、Swagger 集成等。 ## 安装与部署 ### 本地开发环境 1. **JDK 11+**: 确保安装 Java 11 或更高版本。 2. **Maven 3.x**: 用于项目构建与依赖管理。 3. **MySQL 8+**: 数据库支持。 4. **Redis 6+**: 缓存服务。 5. **RabbitMQ 3.8+**: 消息队列服务。 6. **Elasticsearch 7+**: 用于课程搜索。 7. **XXL-JOB**: 定时任务调度平台。 8. **Nacos / Eureka**: 服务注册与发现(根据配置决定)。 ### 构建与运行 1. **克隆项目**: ```bash git clone https://gitee.com/ShallowRecall/vetp.git cd vetp ``` 2. **构建项目**: ```bash mvn clean install ``` 3. **启动模块**: - 启动认证服务: ```bash cd tj-auth/tj-auth-service mvn spring-boot:run ``` - 启动课程服务: ```bash cd tj-course mvn spring-boot:run ``` - 启动支付服务: ```bash cd tj-pay/tj-pay-service mvn spring-boot:run ``` - 启动订单服务: ```bash cd tj-trade mvn spring-boot:run ``` - 启动网关服务: ```bash cd tj-gateway mvn spring-boot:run ``` 4. **访问接口文档**: - 启动后访问 `http://localhost:8080/doc.html` 查看 API 文档(基于 Knife4j)。 ### Docker 部署 1. **构建镜像**: ```bash docker build -t vetp-auth-service -f tj-auth/tj-auth-service/Dockerfile . docker build -t vetp-course-service -f tj-course/Dockerfile . docker build -t vetp-pay-service -f tj-pay/tj-pay-service/Dockerfile . docker build -t vetp-trade-service -f tj-trade/Dockerfile . ``` 2. **启动容器**: ```bash docker run -d -p 8081:8080 --name vetp-auth vetp-auth-service docker run -d -p 8082:8080 --name vetp-course vetp-course-service docker run -d -p 8083:8080 --name vetp-pay vetp-pay-service docker run -d -p 8084:8080 --name vetp-trade vetp-trade-service ``` 3. **访问服务**: - 网关默认端口为 `8080`,可通过网关访问各模块接口。 ## 使用说明 ### 用户认证与权限管理 - **登录接口**: `/accounts/login` 提供用户登录并返回 JWT Token。 - **权限控制**: 通过 `@EnableResourceServer` 和 `@EnableGlobalMethodSecurity` 实现接口级别的权限控制。 - **菜单权限**: 支持基于角色的菜单权限管理,可动态配置菜单与权限关系。 ### 课程管理 - **课程分类**: 支持三级分类管理,可新增、删除、启用、停用分类。 - **课程创建**: 支持课程基本信息、目录结构、视频上传、题目绑定、教师信息等。 - **课程上下架**: 提供课程上架、下架、完结等操作。 - **目录管理**: 支持章节、小节、练习的创建与管理。 - **题目管理**: 支持单选、多选、判断、主观题等题型,可绑定题目与课程章节。 ### 支付与订单 - **支付申请**: 提供 `/pay-orders` 接口用于生成支付订单。 - **支付回调**: 支持微信、支付宝的支付回调处理。 - **退款申请**: 提供 `/refund-orders` 接口用于申请退款。 - **订单状态**: 支持订单状态查询、取消、删除等操作。 ### 搜索与推荐 - **课程搜索**: 提供 `/courses/portal` 接口用于用户端课程搜索。 - **个性化推荐**: ::: 用于用户兴趣管理。 - **热门推荐**: 提供 `/recommend/best`, `/recommend/new`, `/recommend/free` 接口用于推荐精品课、新课、免费课。 ### 短信与通知 - **短信发送**: 提供 `/sms/message` 接口用于发送短信。 - **异步短信**: 使用 RabbitMQ 实现异步短信发送,提升系统响应速度。 - **通知模板**: 支持系统通知、私信、短信模板等。 ## 开发规范 - **代码风格**: 使用 Lombok、Swagger、Validation 等工具提升开发效率。 - **异常处理**: 统一使用 `@RestControllerAdvice` 处理异常,返回统一格式 `R`。 - **日志管理**: 使用 `@Slf4j` 注解记录日志。 - **线程安全**: 使用 `@GlobalTransactional`(Seata)或本地事务管理分布式操作。 - **缓存管理**: 使用 `@Cacheable`、`@CacheEvict` 等注解管理 Redis 缓存。 - **异步处理**: 使用 `@RabbitListener` 处理异步任务,如短信发送、订单状态更新等。 ## 贡献指南 欢迎贡献代码和文档。请遵循以下步骤: 1. Fork 项目。 2. 创建新分支 (`git checkout -b feature/your-feature-name`) 3. 提交代码 (`git commit -am 'Add some feature'`) 4. 推送分支 (`git push origin feature/your-feature-name`) 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。