# 在线学习平台 **Repository Path**: dm_team/online-learning-platform ## Basic Information - **Project Name**: 在线学习平台 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-15 - **Last Updated**: 2026-06-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于SpringBoot的智能学习平台系统 ## 环境要求 | 工具 | 版本 | |------|------| | JDK | 1.8+ | | Maven | 3.6+ | | MySQL | 8.0+ | | Node.js | 18+ | | Redis | 可选(不装自动降级为内存缓存) | Maven 会自动下载后端全部依赖,npm 会自动下载前端全部依赖,**无需手动安装**。 ## 数据库初始化 ### 1. 创建数据库 ```sql CREATE DATABASE learning_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ### 2. 导入表结构和数据 ```bash mysql -u root -p learning_platform < init.sql ``` 或在 MySQL 中: ```sql source /你的项目路径/init.sql; ``` ## 快速启动(推荐) ### 0. 安装 Node.js 项目唯一需要手动安装的依赖: ``` https://nodejs.org/ 下载 LTS 版本安装即可 ``` ### 1. 一键启动 项目根目录双击 **`start.bat`**,脚本自动完成: 1. 检测 MySQL 端口(优先 3306,被占用自动切 3307) 2. 检测 Redis(没有则使用内存缓存) 3. 启动后端(自动打开命令行窗口) 4. 启动前端(自动打开浏览器) ### 2. 数据库初始化 如果 MySQL 没有数据,执行: ```bash mysql -u root -p < init.sql ``` ## 手动启动 ### 1. 修改数据库连接 编辑 `backend/src/main/resources/application.yml`,将 `password` 改为你的 MySQL 密码。 > **配套 WebDevToolkit 使用**:工具会自动检测端口冲突,3306 被占用时自动使用 3307。 > 项目已支持通过环境变量 `DB_PORT` 指定端口,无需改配置文件。 ### 2. 启动 Redis(可选) 如果本地安装了 Redis,启动即可。不启动也不影响使用,系统会自动使用内存缓存。 ```bash redis-server ``` ### 3. 启动后端服务 ```bash cd backend mvn spring-boot:run ``` 后端服务将在 `http://localhost:8080` 启动,API 文档可在 `http://localhost:8080/doc.html` 查看。 **缓存说明**:启动时自动检测 Redis 是否可用,可用则使用 Redis 缓存,不可用自动降级为内存缓存。如需强制不使用 Redis,设置环境变量 `APP_CACHE_TYPE=simple`。 ## 前端启动 ```bash cd frontend npm install npm run dev ``` 前端服务将在 `http://localhost:5173` 启动。 ## 默认账号 | 角色 | 用户名 | 密码 | |------|--------|------| | 管理员 | admin | admin123 | | 教师 | teacher | teacher123 | | 学生 | student | student123 | ## 功能模块 | 模块 | 功能 | |------|------| | 用户认证 | 注册、登录、JWT 鉴权、RBAC 角色、启用/禁用(Token 黑名单) | | 课程管理 | 课程 CRUD、章节管理、课程评价、管理员审核 | | 学习资源 | 文件上传(视频/PDF/音频)、学习进度追踪 | | 在线测评 | 题库管理、组卷、限时考试、自动判卷、成绩分析 | | AI 智能 | AI 助教对话(RAG 知识库)、智能出题(DeepSeek) | | 学习推荐 | 个性化课程推荐、学习报告统计 | | 互动交流 | 站内信、消息通知 | | 系统管理 | 系统仪表盘、用户管理、操作日志 | ## 项目结构 ``` ├── init.sql # 数据库初始化脚本(含建表 + 测试数据) ├── README.md ├── backend/ # Spring Boot 后端 │ ├── pom.xml │ ├── uploads/ # 文件上传目录(自动生成) │ └── src/main/java/com/learning/platform/ │ ├── common/ │ │ ├── aspect/ # AOP 日志切面 │ │ ├── cache/ # 缓存查询服务(Redis/内存自动切换) │ │ ├── config/ # MyBatis-Plus/Knife4j/Redis/数据填充 │ │ ├── exception/ # 全局异常处理 │ │ ├── response/ # 统一响应体 │ │ └── utils/ # JWT 工具、Token 黑名单 │ ├── security/ # Spring Security + JWT 过滤器 │ └── modules/ │ ├── user/ # 用户/角色/权限 │ ├── course/ # 课程/章节/评价 │ ├── resource/ # 学习资源/进度 │ ├── exam/ # 题库/试卷/考试 │ ├── learning/ # 推荐/学习报告 │ ├── ai/ # AI 对话/智能出题 │ ├── interaction/ # 消息中心 │ ├── system/ # 仪表盘/日志 │ └── upload/ # 文件上传 │ └── src/main/resources/ │ ├── application.yml # 主配置 │ └── db/migration/ # Flyway 数据库迁移 │ ├── V1__init_schema.sql │ ├── V2__seed_data.sql │ ├── V3__business_tables.sql │ └── V4__resource_content.sql └── frontend/ # Vue 3 + Element Plus ├── package.json ├── vite.config.js └── src/ ├── api/ # Axios 请求封装 ├── router/ # 路由(含权限守卫) ├── stores/ # Pinia 状态管理 ├── layouts/ # 学生/教师/管理员布局 ├── views/ # 页面组件 │ ├── login/ # 登录/注册 │ ├── student/ # 学生端 │ ├── teacher/ # 教师端 │ ├── admin/ # 管理端 │ ├── ai/ # AI 对话 │ └── interaction/ # 消息 └── styles/ # 全局样式 ```