# 稷下书院
**Repository Path**: skyaaa1/jxia
## Basic Information
- **Project Name**: 稷下书院
- **Description**: 基于微服务架构的在线课程平台
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 0
- **Created**: 2025-05-30
- **Last Updated**: 2026-02-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 🏛️ 稷下书院 (JXIA)
## 📋 项目简介
稷下书院是一个基于微服务架构的在线课程平台,旨在为用户提供课程学习、AI辅助学习等功能。该平台采用前后端分离设计,使用Spring Cloud微服务架构。平台主要包含用户服务、课程服务、订单服务、通知服务、AI服务、搜索服务七大核心模块。
### ✨ 主要功能
- 👨🏫 **教师功能**:发布课程、管理课程信息、处理课程图片
- 👨🎓 **学生功能**:课程预约、在线支付、评价反馈
- 🤖 **AI功能**:智能推荐、AI辅助学习
- 📊 **系统功能**:实时通知、数据统计、全生命周期管理
系统支持课程的全生命周期管理,包括课程发布、预约、支付、评价等环节,并且通过异步处理、缓存机制等技术手段,确保了系统的性能和可靠性。
## 🛠️ 技术栈
### 后端技术
| 技术 | 版本 | 说明 |
|------|------|------|
| Spring Boot | 2.3.5 | 应用基础框架 |
| Spring Cloud | Hoxton.SR8 | 微服务框架 |
| Nacos | 2.x | 服务注册与发现 |
| Spring Cloud Gateway | - | API网关 |
| OpenFeign | - | 服务调用 |
| TX-LCN | - | 分布式事务 |
| MySQL | 8.0 | 关系型数据库 |
| MyBatis-Plus | - | ORM框架 |
| Redis | 6.0+ | 缓存服务 |
| RabbitMQ | 3.x | 消息队列 |
| Elasticsearch | 7.x | 搜索引擎 |
| JWT | - | 认证授权 |
### 前端技术
| 技术 | 说明 |
|------|------|
| Vue 3 | 前端框架 |
| Element Plus | UI组件库 |
| Vue Router | 路由管理 |
| Axios | HTTP客户端 |
| Vue CLI | 构建工具 |
| ESLint + Prettier | 代码规范 |
| ECharts | 数据可视化 |
## 🏗️ 系统架构
系统采用微服务架构,主要包含以下模块:
### 🌐 核心服务
- **网关服务 (eds-gateway)**: 负责请求路由、负载均衡、权限验证等
- **服务注册中心 (eds-nacos)**: 基于Nacos的服务注册与发现
- **分布式事务管理 (eds-txManager)**: 基于TX-LCN的分布式事务管理
### 👥 服务群 (eds-frontend-service)
- **用户服务 (eds-frontend-user)**: 用户注册、登录、个人信息管理
- **课程服务 (eds-course)**: 课程管理、课程内容展示
- **订单服务 (eds-frontend-orders)**: 订单处理、支付管理
- **搜索服务 (eds-search)**: 资源搜索功能
- **通知服务 (eds-notification)**: 消息通知
- **AI辅助服务 (eds-ai)**: AI辅助学习功能
### 🔧 公共服务模块 (eds-commons)
- **公共实体类 (eds-commons-pojo)**: 系统通用实体类
- **工具类库 (eds-commons-utils)**: 通用工具类
- **Redis服务 (eds-commons-redis)**: Redis操作封装
- **JWT服务 (eds-commons-jwt)**: JWT认证相关
- **上传服务 (eds-upload)**: 文件上传功能
- **短信服务 (eds-sms)**: 短信发送功能
- **邮件服务 (eds-mail)**: 邮件发送功能
- **支付服务 (eds-pay)**: 支付功能
- **消息队列服务 (eds-rabbitMq)**: RabbitMQ操作封装
- **图片验证服务 (eds-pictureCheck)**: 图片验证码功能
## 🚀 环境要求
- JDK 17
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+
- Nacos 2.x
- RabbitMQ 3.x
- Elasticsearch 7.x
## 📦 安装部署
1. **克隆代码库**
```bash
git clone https://gitee.com/skyaaa1/jxia.git
cd educational-sharing
```
2. **修改env.txt文件为.env,修改env文件里的密钥**
3. **更换Mysql Ip**
4. **更换Redis Ip**
5. **更换Elasticsearch Ip**
6. **更换支付功能的密钥**
```yml
alipay:
appId: ## appId
serverUrl: ## 支付宝网关
privateKey: ## 私钥
publicKey: ## 公钥
```
7. **更换短信密钥**
```yml
private static String ACCESS_KEY_ID = "";// 阿里云访问密钥ID
private static String ACCESS_KEY_SECRET = "";// 阿里云访问密钥
private static String TEMPLATE_CODE = "";// 短信模板CODE
```
8. **更换Oss密钥**
```yml
private static final String ENDPOINT = "";// 阿里云主入口
private static final String BUCKET_NAME = "";// 存储空间
private static final String ACCESS_KEY_ID = "";// 阿里云账号
private static final String ACCESS_KEY_SECRET = "";// 阿里云密码
```
9.**更换AI密钥**
```yml
# AI模型配置
ai:
api:
url: # Deepseek API地址
key: # 你的API密钥
```
10. **服务运行顺序**
```bash
1. eds-nacos
2. eds-gateway
3. eds-txManager
4. eds-pay
5. eds-upload
6. eds-sms
7. eds-pictureCheck
8. eds-frontend-user
9. eds-course
10. eds-frontend-orders
11. eds-ai
12. eds-notification
13. eds-search
```
## 📂 项目结构
```
educational-sharing/
├── eds-gateway/ # 网关服务
├── eds-nacos/ # 服务注册中心
├── eds-txManager/ # 分布式事务管理
├── eds-commons/ # 公共服务模块
│ ├── eds-commons-pojo/ # 公共实体类
│ ├── eds-commons-utils/ # 工具类库
│ ├── eds-commons-redis/ # Redis服务
│ ├── eds-commons-jwt/ # JWT服务
│ ├── eds-upload/ # 上传服务
│ ├── eds-sms/ # 短信服务
│ ├── eds-mail/ # 邮件服务
│ ├── eds-pay/ # 支付服务
│ ├── eds-rabbitMq/ # 消息队列服务
│ └── eds-pictureCheck/ # 图片验证服务
├── eds-frontend-service/ # 前端服务群
│ ├── eds-frontend-user/ # 用户服务
│ ├── eds-course/ # 课程服务
│ ├── eds-frontend-orders/ # 订单服务
│ ├── eds-search/ # 搜索服务
│ ├── eds-notification/ # 通知服务
│ └── eds-ai/ # AI辅助服务
└── eds-backend-service/ # 后端服务群
```
## 💡 系统功能介绍
### 🔐 用户认证功能
用户认证功能支持用户名密码和手机验证码两种登录方式。在安全性方面,采用了图形验证码、Token认证、密码加密等多重保护机制,同时实现了"记住我"功能,方便用户使用。
#### 登录认证
- **功能描述**:支持用户名密码登录和手机验证码登录两种方式。登录时进行图形验证码验证,防止暴力破解。支持"记住我"功能,可选择长期保存登录状态。
- **技术实现**:前端填写相应字段的值传入后端,后端会对填入字段的值进行校验,如果校验成功,则返回一个Token给前端,前端将Token保存在localStorage中。

#### 注册认证
- **功能描述**:收集用户基本信息(用户名、手机号、密码等)。通过手机验证码验证用户身份。根据用户角色(学生/教师)收集不同的信息。
- **技术实现**:对密码强度、身份证号等关键信息进行格式验证。注册成功后,用户就可以使用注册的账号进行登录。

### 📚 课程功能
登录成功后跳转至首页,查看热门课程和推荐课程。

#### 添加课程
- **功能描述**:添加课程页面包括课程标题图片,课程标题,课程简介(支持markdown语法),课程内容图片,课程时间等信息。
- **技术实现**:前端提交表单,通过后端接收时开始用户的身份验证,拿到当前登陆用户ID,基于雪花算法生成唯一课程id,封装Course对象写入数据库;上传标题图使用同步的方式调用OSS文件服务,上传完毕后再通过RabbitMQ异步发送消息把这条记录写入数据库中;上传内容图使用CompletableFuture并发上传,所有的核心操作都在LCN分布式事务管理下运行,保证整个流程的一致性。

#### 课程详情
- **功能描述**:用户点击首页的课程组件进入课程详情,该页面展示课程详情信息,老师信息及每日一刻。在此页面用户可以进行课程预约。

#### 课程预约
- **功能描述**:点击课程详情页面的立即预约即可进行课程预约,该页面显示本课程的课程表,点击相应可预约时间即可进入订单页面。
- **技术实现**:后端查询该课程的可用时间,将数据相应给前端,前端进行相应时间的填充。

#### 课程编辑功能
- **功能描述**:只有老师创建的课程自己才可以进行编辑,包括课程修改和删除(逻辑删除)。
- **技术实现**:不同于添加课程是内容图片都是异步上传的,而这里采用了指定内容图片的修改,因为这种做法减少了每次集合上传图片带来的资源消耗。

#### 个人课程表功能
- **功能描述**:用户在购买课程成功后不仅会在我参加的课程中显示课程还会在课程表处生成自己的课程表,以便于查看和安排。

### 💰 订单功能
#### 订单支付
- **功能描述**:用户进入课程后点击支付按钮,进入该支付页面时,先检测用户是否登录及订单信息是否正确。如果订单金额为0(即免费课程)则跳转到订单详情页,如果订单金额大于0,则调用创建订单接口生成支付宝支付二维码并弹出支付窗口,同时倒计时3分钟。
- **技术实现**:每次用户进行扫码支付时,调用支付状态查询接口,每3s查一次状态,一旦查到支付成功,就关闭二维码弹窗,清除本地订单数据,自动跳转到订单详情页,若支付失败或者超时就弹出相应提示并自动取消订单。


#### 取消订单
- **功能描述**:支付成功后,在我的课程页面进入订单详情退款。退款申请提交后,管理员进行审核。审核通过后,退款到账。
- **技术实现**:前端发送请求,后端通过传入的token获取当前用户的ID,确保操作的合法性。接着,根据scheduleId查询对应的订单信息,对于已支付的订单,调用支付宝退款接口进行退款,之后将订单状态更新为"已取消"。


### 🤖 AI功能
#### 智能对话
- **功能描述**:用户可在对话页面创建、删除、查看历史会话,及和智能体进行AI对话。
- **技术实现**:当用户从前端发送消息后,后端接到请求,系统根据conversationId判断是否为新会话。若为新会话,则自动创建并生成默认标题。消息内容持久化存储至数据库,区分用户(user)和AI(assistant)角色。将发送的消息调用第三方AI模型(DeepSeek)生成回复,并将回复内容保存至数据库。

#### 课程推荐
- **功能描述**:学生在个人中心填写相应的学习风格偏好后,AI模型就会根据所有的课程和学生选择的风格进行推荐,并将数据缓存,登录时直接调用。
- **技术实现**:在服务启动时,就会执行相应的接口来实现热门课程推荐和用户课程推荐。通过获取用户信息,课程信息,用这些信息构建AI请求,调用AI接口发送请求,将响应的数据解析,缓存在Redis中,等到登录时直接从Redis中获取。

### 📄 许可证
本项目使用 MIT License 许可证
### 📞 联系方式
#### • 项目维护者:*DuskSmile*
#### • 邮箱:*911585956@qq.com*
#### • 项目地址:https://gitee.com/skyaaa1/jxia.git
---
欢迎Star和Fork本项目,如有问题请提Issue!