基于 Spring Cloud Alibaba 构建的在线教育微服务平台,覆盖课程、学习、考试、交易、支付、搜索与运营管理等核心业务,并提供 AI 课程推荐和管理助手能力。
知学汇是一个面向在线教育场景的 Java 微服务项目。平台围绕“用户选课—购买支付—课程学习—互动答疑—考试测评—数据运营”的业务链路进行拆分,通过 API 网关统一接入,使用 Nacos 完成服务注册与配置管理,并通过 OpenFeign 实现服务间调用。
项目同时包含独立的 ai-agent 服务:根据用户的学习历史、兴趣标签和学习目标生成课程推荐,也可结合平台数据回答管理端问题。目前 AI 对话通过兼容 OpenAI Chat Completions 格式的接口调用千问模型。
- 在线教育平台:课程发布、课程搜索、选课购买、视频学习与学习进度管理。
- 教学互动与测评:问答互动、点赞统计、题库管理与考试测评。
- 平台运营管理:用户、课程、订单、优惠券、消息和运营数据管理。
- 微服务学习与实践:覆盖注册配置中心、网关鉴权、服务调用、消息队列、分布式事务与任务调度等常见技术点。
一句话总结:这是一个覆盖在线教育核心业务链路,并加入 AI 推荐能力的 Spring Cloud 微服务项目。
flowchart TB
Client["Web / Mobile 客户端"] -->|HTTP · JWT| Gateway["tj-gateway<br/>统一入口 · 路由 · 鉴权"]
Gateway --> Auth["tj-auth<br/>认证与 RBAC"]
Gateway --> User["tj-user<br/>用户与学员"]
Gateway --> Course["tj-course<br/>课程与目录"]
Gateway --> Learning["tj-learning<br/>学习记录与互动"]
Gateway --> Exam["tj-exam<br/>题库与考试"]
Gateway --> Trade["tj-trade<br/>订单与优惠券"]
Gateway --> Pay["tj-pay<br/>支付与退款"]
Gateway --> Search["tj-search<br/>课程搜索与推荐"]
Gateway --> Media["tj-media<br/>文件与视频"]
Gateway --> Message["tj-message<br/>站内信与短信"]
Gateway --> Data["tj-data<br/>运营数据与报表"]
Gateway --> AI["ai-agent<br/>课程推荐 · 管理助手"]
Services["业务微服务集群"] --> Nacos["Nacos<br/>注册中心 · 配置中心"]
Services --> MySQL["MySQL<br/>业务数据"]
Services --> Redis["Redis<br/>缓存"]
Services --> MQ["RabbitMQ<br/>异步消息"]
Search --> ES["Elasticsearch<br/>课程检索"]
Media --> ObjectStorage["阿里云 OSS / 腾讯云 COS<br/>对象存储"]
Auth & User & Course & Learning & Exam & Trade & Pay & Search & Media & Message & Data & AI --> Services
flowchart LR
A["用户注册 / 登录"] --> B["浏览与搜索课程"]
B --> C["加入购物车 / 下单"]
C --> D["支付"]
D --> E["课程学习"]
E --> F["进度记录 / 互动问答"]
E --> G["考试测评"]
F --> H["积分与排行榜"]
G --> H
平台按认证、用户、课程、学习、考试、交易、支付、搜索、媒体、消息和数据等业务域拆分服务。公共能力沉淀在 tj-common,服务间接口与 DTO 统一维护在 tj-api,降低跨服务调用的重复开发成本。
- 用户注册登录与 RBAC 权限管理
- 课程分类、目录、发布与上下架管理
- 课程搜索、购买、支付与退款
- 学习计划、学习进度与学习记录
- 互动问答、点赞与积分排行榜
- 题库管理与考试测评
- 消息通知、短信和运营数据统计
ai-agent 根据学习历史、兴趣标签和学习目标构建提示词,调用大模型生成个性化课程建议;管理端可将平台数据与问题一并提交给 AI,生成运营分析结果。
flowchart LR
Profile["学习历史 · 兴趣标签 · 学习目标"] --> Prompt["Prompt 模板"]
Prompt --> LLM["千问 Chat Completions API"]
LLM --> Result["个性化课程推荐"]
Platform["平台数据 · 管理问题"] --> AdminPrompt["管理助手 Prompt"]
AdminPrompt --> LLM
LLM --> AdminResult["运营分析回答"]
相关代码:
AiController.java— AI 服务接口AiServiceImpl.java— 提示词构建与模型调用PromptTemplate.java— 提示词模板UserProfileController.java— 用户画像接口
- 使用 RabbitMQ 处理课程、订单等业务事件,降低服务间耦合。
- 使用 Seata 管理跨服务事务。
- 使用 XXL-Job 执行分布式定时任务。
- 使用 Sentinel 提供流量控制与服务降级能力。
- 使用 Redis、Redisson 支撑缓存及分布式场景。
课程数据写入 Elasticsearch,为课程检索和兴趣推荐提供支持;媒体服务集成阿里云 OSS、腾讯云 COS/VOD;数据服务提供日报、周报及平台指标查询能力。
| 技术 | 版本 | 用途 |
|---|---|---|
| Java | 11 | 开发语言 |
| Spring Boot | 2.7.2 | 微服务基础框架 |
| Spring Cloud | 2021.0.3 | 微服务治理 |
| Spring Cloud Alibaba | 2021.0.1.0 | Nacos、Sentinel 等组件集成 |
| OpenFeign | Spring Cloud 管理 | 服务间 HTTP 调用 |
| MyBatis-Plus | 3.4.3 | ORM 与数据访问 |
| 技术 | 版本 | 用途 |
|---|---|---|
| MySQL | 8.0.23 | 关系型业务数据存储 |
| Redis / Redisson | Redisson 3.13.6 | 缓存与分布式能力 |
| Elasticsearch | 7.12.1 | 课程搜索 |
| RabbitMQ | - | 异步消息与业务解耦 |
| Nacos | - | 服务注册与配置中心 |
| Sentinel | - | 流量控制与熔断降级 |
| Seata | 1.5.1 | 分布式事务 |
| XXL-Job | 2.3.1 | 分布式任务调度 |
| 技术 | 版本 | 用途 |
|---|---|---|
| Maven | 3.6+ | 多模块构建与依赖管理 |
| Knife4j / Swagger | 3.0.3 | API 文档 |
| Hutool | 5.7.17 | Java 工具库 |
| Lombok | 1.18.20 | 简化样板代码 |
| 阿里云 OSS | SDK 3.10.2 | 对象存储 |
| 腾讯云 COS / VOD | SDK 5.6.89 / 2.1.5 | 文件与视频服务 |
| 模块 | 职责 |
|---|---|
tj-gateway |
API 网关、请求路由与统一鉴权 |
tj-auth |
登录认证、JWT、角色与权限管理 |
tj-user |
用户、学员、教师与员工管理 |
tj-course |
课程、分类、目录与课程发布 |
tj-learning |
学习计划、进度、记录、问答与积分 |
tj-exam |
题库与考试业务 |
tj-trade |
购物车、订单、优惠券与退款申请 |
tj-pay |
支付渠道、支付订单与退款 |
tj-search |
Elasticsearch 课程搜索与兴趣推荐 |
tj-media |
文件上传、对象存储与视频服务 |
tj-message |
消息模板、通知任务、站内信与短信 |
tj-data |
平台指标、日报与周报 |
tj-remark |
点赞记录与点赞数同步 |
ai-agent |
AI 课程推荐、管理助手与用户画像 |
tj-api |
Feign Client、公共 DTO 与服务接口 |
tj-common |
通用配置、工具类、异常与基础组件 |
- JDK 11+
- Maven 3.6+
- MySQL 8.0+
- Redis
- Nacos
- RabbitMQ
- Elasticsearch 7.12.1
不同服务依赖的基础设施与第三方服务并不完全相同。启动前请根据目标模块检查其
bootstrap-local.yml或bootstrap-example.yml配置。
git clone https://github.com/EvanYao826/zhixuehui-platform.git
cd zhixuehui-platform项目各服务的配置位于对应模块的 src/main/resources/ 目录。请按实际环境配置:
- Nacos 地址与命名空间
- MySQL 数据源
- Redis、RabbitMQ、Elasticsearch
- OSS / COS / VOD 等第三方服务密钥(仅在使用对应能力时需要)
ai-agent的模型 API Key 与 Base URL(仅在使用 AI 能力时需要)
建议不要将真实密钥提交到仓库。
mvn clean package -DskipTests- 启动 MySQL、Redis、Nacos、RabbitMQ、Elasticsearch 等基础设施。
- 在 Nacos 中准备各服务所需配置。
- 按需启动业务服务。
- 最后启动
tj-gateway,通过网关统一访问服务。
单个模块可通过 Maven 启动,例如:
mvn -pl tj-gateway -am spring-boot:run启动其他服务时,将 tj-gateway 替换为对应模块名即可;包含子模块的服务请指定实际应用模块。
以下内容可按实际参与程度选用,面试时应结合对应代码说明实现细节。
1. 参与在线教育微服务平台设计与开发,基于 Spring Boot、Spring Cloud 与 Spring Cloud Alibaba 按业务域拆分认证、用户、课程、学习、考试、交易、支付、搜索、媒体等服务,通过 Nacos 实现服务注册与配置管理,并使用 OpenFeign 完成服务间调用。
2. 实现课程交易与学习业务闭环,覆盖课程检索、购物车、下单支付、课程学习、进度记录、互动问答和考试测评等流程,并通过 RabbitMQ 对课程及订单事件进行异步解耦。
3. 构建课程搜索与推荐能力,使用 Elasticsearch 维护课程索引并支持课程检索,结合用户兴趣数据提供推荐接口;通过 Redis 缓存热点数据,提升高频查询性能。
4. 开发 AI 课程推荐与管理助手服务,根据学习历史、兴趣标签和学习目标生成提示词并调用大模型,为学生提供课程建议;结合平台数据与管理问题生成运营分析回答。
5. 完善平台通用基础设施,实现 JWT 登录鉴权与 RBAC 权限控制,集成 Seata 分布式事务、XXL-Job 任务调度、Sentinel 流量治理以及 OSS/COS 对象存储能力。
ai-agent的课程推荐与管理助手已实现模型 API 调用;向量相似度搜索接口目前返回占位结果,尚未接入向量数据库。- 报表模块已提供日报、周报接口及缓存逻辑,部分报表数据生成逻辑仍为示例实现。
- 仓库当前为后端多模块工程,不包含 Web 或移动端前端源码。
- 本地运行需要自行准备基础设施、数据库数据和各服务配置。
欢迎通过 Issues 反馈问题或提出建议,也欢迎提交 Pull Request 参与改进。