智云星课是一个基于Spring Boot和AI技术的智能学习平台系统,提供了丰富的教学管理功能和AI互动特性,为用户打造全方位、智能化的学习体验。项目集成了Dify AI接口,支持AI聊天、课程学习、资料分享、打卡记录、单词记忆、课程表等多种智能学习功能。
- 核心框架: Spring Boot 2.7.2
- ORM框架: MyBatis Plus 3.5.2
- 缓存: Redis
- 数据库: MySQL
- 全文检索: Elasticsearch
- HTTP客户端: OkHttp
- API文档: Knife4j 4.4.0
- 微信集成: WxJava 4.4.0
- 工具库: Hutool、Apache Commons
- 构建工具: Maven
- 容器化: Docker
- 前端仓库: smartclass-frontend - 基于Vue3的移动端应用
- 管理端仓库 smartclass-man-frontend - 基于Ant Design的管理中台
- 微服务版 smartclass-backend-microservice - 基于SpringCloud的微服务架构的后端
- 基于Dify API的智能聊天系统
- 支持流式响应和阻塞式响应
- 聊天历史记录管理
- 会话管理与总结
- 课程分类/章节/小节管理
- 课程资料和学习进度跟踪
- 课程收藏与评价系统
- 学习数据统计分析
- 每日文章推送
- 单词学习与记忆
- 学习内容收藏功能
- 个性化学习推荐
- 用户注册与登录
- 用户等级与成长体系
- 个人信息管理
- 微信公众号集成
- JDK 1.8+
- Maven 3.6+
- MySQL 5.7+
- Redis 5.0+
- 创建MySQL数据库
CREATE DATABASE smart_class DEFAULT CHARACTER SET utf8mb4;- 导入SQL初始化脚本
mysql -u username -p smart_class < sql/create_table.sql- 克隆代码
git clone https://github.com/Ubanillx/smartclass-backend.git
cd smartclass-backend- 修改配置
根据环境配置src/main/resources/application.yml文件
# 数据库配置
spring:
datasource:
url: jdbc:mysql://localhost:3306/smart_class
username: root
password: your_password
# Redis配置
redis:
host: localhost
port: 6379
password: your_redis_password- 启动应用
mvn spring-boot:run使用Docker Compose一键部署(包含MySQL和Redis):
docker-compose up -d访问Knife4J接口文档:http://服务器IP地址:8101/api/doc.html
src/
├── main/
│ ├── java/com/ubanillx/smartclass/
│ │ ├── annotation/ # 自定义注解
│ │ ├── aop/ # 切面逻辑
│ │ ├── common/ # 通用组件
│ │ ├── config/ # 配置类
│ │ ├── constant/ # 常量定义
│ │ ├── controller/ # 控制器
│ │ ├── esdao/ # ES数据访问
│ │ ├── exception/ # 异常处理
│ │ ├── job/ # 定时任务
│ │ ├── manager/ # 业务管理
│ │ ├── mapper/ # MyBatis映射
│ │ ├── model/ # 数据模型
│ │ ├── service/ # 业务服务
│ │ ├── util/ # 工具类
│ │ ├── wxmp/ # 微信公众号
│ │ └── MainApplication.java # 应用入口
│ │
│ └── resources/ # 配置资源
│ ├── application.yml # 应用配置
│ ├── mapper/ # MyBatis XML
│ └── static/ # 静态资源
│
└── test/ # 测试代码
- 用户注册、登录鉴权
- 用户信息管理
- 用户等级和成长体系
- AI分身创建和管理
- 会话创建与历史记录
- 文本和语音交互
- 课程分类和内容管理
- 学习进度跟踪
- 课程评价和收藏
- 每日文章推荐
- 每日单词学习
- 学习内容收藏
项目集成了Dify API用于智能对话功能,详细配置和使用方法请参考DifyAPI.md文档。
首先,在Dify平台创建您的智能体:
- 访问Dify平台:登录到您的Dify工作空间
- 创建新的智能体:选择"对话型应用"模式
- 配置智能体:
- 设置智能体的名称和描述
- 配置系统提示词
- 设置模型参数
- 添加知识库(可选)
配置完成后,需要发布智能体:
- 点击"发布"按钮
- 确认发布设置
- 获取智能体的访问URL
为了在系统中使用智能体,需要创建API密钥:
- 在Dify平台中,进入"API密钥"管理页面
- 点击"创建密钥"
- 设置密钥权限(建议选择"只读"或"读写")
- 复制生成的API密钥,妥善保管
完成上述步骤后,可以在智云星课管理系统中添加智能体:
- 登录管理后台:使用管理员账号登录
- 进入AI管理:导航至"AI虚拟形象管理"页面
- 添加新智能体:
- 填写智能体基本信息(名称、描述、头像等)
- 配置Dify API信息:
- Base URL: 您的Dify API地址(如:
http://10.0.124.181/v1) - API Key: 在第3步中创建的API密钥
- App ID: 智能体的应用ID
- Base URL: 您的Dify API地址(如:
- 设置智能体状态为"启用"
- 保存配置:点击保存按钮完成配置
在添加智能体时,需要配置以下关键参数:
| 参数 | 说明 | 示例 |
|---|---|---|
| 名称 | 智能体显示名称 | 智能学习助手 |
| 描述 | 智能体功能描述 | 专业的学习辅导AI助手 |
| 头像 | 智能体头像图片 | 上传PNG/JPG格式图片 |
| Base URL | Dify API基础地址 | http://10.0.124.181/v1 |
| API Key | Dify API密钥 | Bearer app-xxx... |
| App ID | 智能体应用ID | 从Dify平台获取 |
| 状态 | 智能体启用状态 | 启用/禁用 |
添加完成后,可以通过以下方式测试智能体:
-
前端测试:
- 在移动端应用中找到新添加的智能体
- 发起对话测试基本功能
- 验证流式响应和文件上传功能
-
API测试:
- 使用Postman或其他API工具
- 调用
/chat/message/send接口 - 验证返回结果和会话管理
Q: 智能体无法正常响应? A: 请检查以下项目:
- API密钥是否正确
- Base URL是否可访问
- 智能体是否已发布
- 网络连接是否正常
Q: 如何更新智能体配置? A: 在管理后台找到对应的智能体,点击编辑按钮即可修改配置。
Q: 是否支持多个智能体? A: 是的,系统支持同时配置多个不同的智能体,用户可以在前端选择不同的AI助手进行对话。
// 在DifyServiceImpl中配置流式响应
@Override
public void sendChatMessageStreaming(String userId, String content,
StreamingCallback callback) {
// 配置流式响应参数
DifyChatRequest request = new DifyChatRequest();
request.setResponseMode("streaming");
request.setUser(userId);
request.setQuery(content);
// ...
}系统支持文本、图片等多模态输入:
- 文本对话
- 图片识别与分析
- 文件上传与处理
详细的技术实现请参考 Dify集成技术文档。
启动项目后,访问Knife4j接口文档:
http://localhost:8101/api/doc.html
详细的部署步骤和配置说明请参考doc/deployment.md文档。
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 提交Pull Request
本项目采用AGPL-3.0许可证,仅供个人学习、研究和非商业用途使用。未经授权,不得将本项目用于任何商业目的。
智慧课堂后端现已支持Postman接口文档和WebSocket调试。
- 自动生成Postman Collection:系统可自动生成包含所有API和WebSocket接口的Postman Collection文件
- WebSocket接口调试:支持在Postman中测试WebSocket连接和消息收发
- 简化的身份验证:支持通过URL参数传递token进行WebSocket连接认证
- 标准化的消息格式:规范化WebSocket消息格式,便于调试和开发
- 启动项目后,访问
http://<your-server-ip>:12345/api/doc/postman-collection下载Postman Collection - 导入Collection到Postman中
- 按照指南配置环境变量
- 开始测试API和WebSocket接口
更多详细信息,请参考 Postman调试指南
本系统使用SSE(Server-Sent Events)技术实现了实时消息推送功能,包括以下特性:
- 实时接收新消息
- 实时接收已读状态更新
- 实时接收未读消息数量更新
- 实时用户在线状态通知
/chat/connect: 建立SSE连接,前端使用EventSource订阅此端点/chat/disconnect: 关闭SSE连接/chat/send: 发送实时聊天消息/chat/notify: 发送系统通知(仅管理员可用)/chat/status: 获取聊天状态(未读数量、在线状态等)
chat: 聊天消息事件read_status: 消息已读状态更新事件unread_count: 未读消息数量更新事件user_status: 用户在线状态更新事件system: 系统通知事件