220 lines
9.4 KiB
Markdown
220 lines
9.4 KiB
Markdown
|
|
# 第二阶段:代码整合到RuoYi框架
|
|||
|
|
|
|||
|
|
## 阶段目标
|
|||
|
|
将在线学习系统的后端代码和前端代码整合到 RuoYi-Vue-redis 框架中
|
|||
|
|
|
|||
|
|
## 开始时间
|
|||
|
|
2025-01-XX
|
|||
|
|
|
|||
|
|
## 整合策略
|
|||
|
|
|
|||
|
|
### 后端整合
|
|||
|
|
- **包结构**:在 `ry-news-system` 模块中创建 `study` 子包
|
|||
|
|
- **实体类**:继承 `BaseEntity`,使用 `Date` 而不是 `LocalDateTime`
|
|||
|
|
- **返回格式**:使用 `AjaxResult` 替代 `Result<T>`
|
|||
|
|
- **Mapper**:使用 MyBatis(不是MyBatis Plus)
|
|||
|
|
- **Service**:遵循 RuoYi 的命名规范(IService接口,ServiceImpl实现)
|
|||
|
|
|
|||
|
|
### 前端整合
|
|||
|
|
- **框架**:Vue 2 + Element UI(不是Vue 3 + Element Plus)
|
|||
|
|
- **目录**:整合到 `ruoyi-ui/src/views/study/` 目录
|
|||
|
|
- **API调用**:使用 RuoYi 的 `request.js` 工具
|
|||
|
|
- **路由**:添加到 RuoYi 的路由配置中
|
|||
|
|
|
|||
|
|
## 任务清单
|
|||
|
|
|
|||
|
|
### 1. 实体类迁移
|
|||
|
|
- [x] StudySubject(学科分类)
|
|||
|
|
- [x] StudyClass(班级)
|
|||
|
|
- [x] StudyCourseware(课件)
|
|||
|
|
- [x] StudyCourse(课程)
|
|||
|
|
- [x] StudyLearningRecord(学习记录)
|
|||
|
|
- [x] StudyStudentClass(学员班级关联)
|
|||
|
|
- [x] StudyLearningDetail(学习详情)
|
|||
|
|
- [x] StudyCourseAssignment(课程分配)
|
|||
|
|
- [x] StudyScreenMonitor(学习监控)
|
|||
|
|
- [x] 用户表处理(决定是扩展SysUser还是创建新表)- **决策:直接使用RuoYi的SysUser表**
|
|||
|
|
|
|||
|
|
### 2. Mapper接口和XML迁移
|
|||
|
|
- [x] StudySubjectMapper接口和XML
|
|||
|
|
- [x] StudyClassMapper接口和XML
|
|||
|
|
- [x] StudyCoursewareMapper接口和XML
|
|||
|
|
- [x] StudyCourseMapper接口和XML
|
|||
|
|
- [x] StudyCourseAssignmentMapper接口和XML
|
|||
|
|
- [x] StudyLearningRecordMapper接口和XML
|
|||
|
|
- [x] StudyLearningDetailMapper接口和XML
|
|||
|
|
- [x] StudyScreenMonitorMapper接口和XML
|
|||
|
|
- [x] StudyStudentClassMapper接口和XML
|
|||
|
|
|
|||
|
|
### 3. Service接口和实现迁移
|
|||
|
|
- [x] IStudySubjectService / StudySubjectServiceImpl
|
|||
|
|
- [x] IStudyClassService / StudyClassServiceImpl
|
|||
|
|
- [x] IStudyCoursewareService / StudyCoursewareServiceImpl
|
|||
|
|
- [x] IStudyCourseService / StudyCourseServiceImpl
|
|||
|
|
- [x] IStudyCourseAssignmentService / StudyCourseAssignmentServiceImpl
|
|||
|
|
- [x] IStudyLearningRecordService / StudyLearningRecordServiceImpl
|
|||
|
|
- [x] IStudyScreenMonitorService / StudyScreenMonitorServiceImpl
|
|||
|
|
- [x] IStudyDataPermissionService / StudyDataPermissionServiceImpl
|
|||
|
|
|
|||
|
|
### 4. Controller迁移
|
|||
|
|
- [x] StudySubjectController
|
|||
|
|
- [x] StudyClassController
|
|||
|
|
- [x] StudyCoursewareController
|
|||
|
|
- [x] StudyCourseController
|
|||
|
|
- [x] StudyLearningRecordController
|
|||
|
|
- [x] StudyScreenMonitorController
|
|||
|
|
- [x] StudyCourseAssignmentController
|
|||
|
|
|
|||
|
|
### 5. 配置和工具类
|
|||
|
|
- [x] 文件上传配置(整合到RuoYi配置)- 已使用RuoYi的FileUploadUtils和CommonController
|
|||
|
|
- [x] WebSocket配置(整合到RuoYi配置)- 已创建WebSocketConfig和MonitorWebSocketHandler
|
|||
|
|
- [x] 数据权限服务(适配RuoYi权限体系)- 已创建ClassDataScope注解和ClassDataScopeAspect切面
|
|||
|
|
|
|||
|
|
### 6. 前端API调用迁移
|
|||
|
|
- [x] 学科分类API(subject.js)
|
|||
|
|
- [x] 班级API(class.js)
|
|||
|
|
- [x] 课件API(courseware.js)
|
|||
|
|
- [x] 课程API(course.js)
|
|||
|
|
- [x] 学习记录API(learningRecord.js)
|
|||
|
|
- [x] 课程分配API(assignment.js)
|
|||
|
|
- [x] 学习监控API(monitor.js)
|
|||
|
|
|
|||
|
|
### 7. 前端页面迁移
|
|||
|
|
- [x] 学科分类管理页面
|
|||
|
|
- [x] 班级管理页面
|
|||
|
|
- [x] 课件管理页面
|
|||
|
|
- [x] 课程管理页面
|
|||
|
|
- [x] 课程分配页面
|
|||
|
|
- [x] 学习进度查看页面
|
|||
|
|
- [x] 学习监控页面
|
|||
|
|
|
|||
|
|
### 8. 路由和菜单配置
|
|||
|
|
- [x] 修改基础SQL脚本数据库名为ry_study
|
|||
|
|
- [x] 创建学习系统菜单SQL脚本
|
|||
|
|
- [x] 执行SQL脚本添加菜单到数据库
|
|||
|
|
- [x] 配置菜单权限(在RuoYi后台为角色分配菜单权限)- 需在后台手动配置
|
|||
|
|
|
|||
|
|
### 9. 用户注册和审核功能
|
|||
|
|
- [x] UniApp端用户注册功能
|
|||
|
|
- [x] 后端注册接口扩展(支持用户类型)
|
|||
|
|
- [x] 用户审核功能(管理员审核新注册用户)
|
|||
|
|
- [x] 用户审核页面(管理后台)
|
|||
|
|
- [x] 自动角色分配功能
|
|||
|
|
|
|||
|
|
### 10. 部署配置
|
|||
|
|
- [x] 后端服务端口配置(8081)
|
|||
|
|
- [x] 管理界面端口配置(20002)
|
|||
|
|
- [x] 用户界面端口配置(20003)
|
|||
|
|
- [x] 数据库连接配置
|
|||
|
|
- [x] Nginx代理配置
|
|||
|
|
|
|||
|
|
## 遇到的问题
|
|||
|
|
|
|||
|
|
详细问题记录请参考:[[第二阶段-问题]]
|
|||
|
|
|
|||
|
|
## 进度记录
|
|||
|
|
- 2025-01-XX:开始整合工作,创建整合计划文档
|
|||
|
|
- 2025-01-XX:创建StudySubject和StudyClass实体类
|
|||
|
|
- 2025-01-XX:创建StudySubjectController示例
|
|||
|
|
- 2025-01-XX:创建所有实体类(StudySubject, StudyClass, StudyCourseware, StudyCourse, StudyLearningRecord, StudyStudentClass)
|
|||
|
|
- 2025-01-XX:创建StudySubjectMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudySubjectService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyClassMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudyClassService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyClassController
|
|||
|
|
- 2025-01-XX:创建StudyCoursewareMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudyCoursewareService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyCoursewareController
|
|||
|
|
- 2025-01-XX:创建StudyCourseMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudyCourseService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyCourseController
|
|||
|
|
- 2025-01-XX:创建StudyLearningDetail实体类
|
|||
|
|
- 2025-01-XX:创建StudyLearningRecordMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建StudyLearningDetailMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudyLearningRecordService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyLearningRecordController
|
|||
|
|
- 2025-01-XX:创建StudyScreenMonitor实体类
|
|||
|
|
- 2025-01-XX:创建StudyScreenMonitorMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudyScreenMonitorService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyScreenMonitorController
|
|||
|
|
- 2025-01-XX:创建StudyCourseAssignment实体类
|
|||
|
|
- 2025-01-XX:创建StudyCourseAssignmentMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建StudyStudentClassMapper接口和XML
|
|||
|
|
- 2025-01-XX:创建IStudyCourseAssignmentService接口和实现
|
|||
|
|
- 2025-01-XX:创建StudyCourseAssignmentController
|
|||
|
|
- 2025-01-XX:创建WebSocketConfig配置类
|
|||
|
|
- 2025-01-XX:创建MonitorWebSocketHandler处理器
|
|||
|
|
- 2025-01-XX:文件上传配置整合完成(使用RuoYi的FileUploadUtils)
|
|||
|
|
- 2025-01-XX:创建前端API调用文件(study目录下的所有API文件)
|
|||
|
|
- 2025-01-XX:创建学科分类管理页面
|
|||
|
|
- 2025-01-XX:创建班级管理页面
|
|||
|
|
- 2025-01-XX:创建课件管理页面
|
|||
|
|
- 2025-01-XX:创建课程管理页面
|
|||
|
|
- 2025-01-XX:创建学习进度查看页面
|
|||
|
|
- 2025-01-XX:创建学习监控页面
|
|||
|
|
- 2025-01-XX:创建课程分配页面
|
|||
|
|
- 2025-01-XX:修改基础SQL脚本数据库名为ry_study
|
|||
|
|
- 2025-01-XX:创建学习系统菜单SQL脚本(ry_study_menu_study_system.sql)
|
|||
|
|
- 2025-11-11:执行SQL脚本,成功创建数据库和菜单数据
|
|||
|
|
- 2025-11-11:创建ClassDataScope注解和ClassDataScopeAspect切面,实现基于班级的数据权限过滤
|
|||
|
|
- 2025-11-11:创建IStudyDataPermissionService接口和StudyDataPermissionServiceImpl实现
|
|||
|
|
- 2025-11-11:在Controller方法上添加@ClassDataScope注解,在Mapper XML中添加数据权限过滤SQL
|
|||
|
|
- 2025-11-11:实现UniApp端用户注册功能
|
|||
|
|
- 2025-11-11:实现用户审核功能(StudyUserAuditController、Service、前端页面)
|
|||
|
|
- 2025-11-11:完成服务器部署配置(端口、数据库、Nginx代理)
|
|||
|
|
|
|||
|
|
## 阶段完成时间
|
|||
|
|
2025-11-11
|
|||
|
|
|
|||
|
|
## 阶段总结
|
|||
|
|
第二阶段(代码整合到RuoYi框架)已基本完成,主要成果:
|
|||
|
|
1. ✅ 所有实体类、Mapper、Service、Controller已成功迁移到RuoYi框架
|
|||
|
|
2. ✅ 前端管理页面已全部迁移并整合到RuoYi UI
|
|||
|
|
3. ✅ 数据权限控制已实现(基于班级的数据过滤)
|
|||
|
|
4. ✅ 用户注册和审核功能已实现
|
|||
|
|
5. ✅ 服务器部署配置已完成(端口、数据库、Nginx)
|
|||
|
|
6. ✅ 基础功能已可正常使用
|
|||
|
|
|
|||
|
|
**待完善功能**(可在后续阶段继续):
|
|||
|
|
- UniApp端课程学习功能(视频播放、学习进度上报)
|
|||
|
|
- UniApp端学习监控功能(截图上传)
|
|||
|
|
- 视频文件处理(FFmpeg转码)
|
|||
|
|
- 学习进度详细跟踪
|
|||
|
|
|
|||
|
|
## 代码转换要点
|
|||
|
|
|
|||
|
|
### Result → AjaxResult
|
|||
|
|
- 原代码:`return Result.success(data);`
|
|||
|
|
- 转换后:`return success(data);`(BaseController提供的方法)
|
|||
|
|
|
|||
|
|
### MyBatis Plus → MyBatis
|
|||
|
|
- 原代码:使用 `Page<User>` 和 `LambdaQueryWrapper`
|
|||
|
|
- 转换后:使用 `startPage()` 和 `TableDataInfo`,使用标准MyBatis XML
|
|||
|
|
|
|||
|
|
### LocalDateTime → Date
|
|||
|
|
- 原代码:`private LocalDateTime createTime;`
|
|||
|
|
- 转换后:`private Date createTime;`(BaseEntity已提供)
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **用户表处理**:✅ **已决定直接使用RuoYi的SysUser表**,无需创建新的StudyUser表。RuoYi的SysUser表已经包含了完整的用户信息、角色权限等,学习系统直接复用即可。
|
|||
|
|
2. **权限体系**:需要适配RuoYi的权限体系,使用RuoYi的权限注解
|
|||
|
|
3. **数据库表**:需要确认表名是否需要加前缀(如study_)
|
|||
|
|
4. **日期格式**:RuoYi使用Date,需要将LocalDateTime转换为Date
|
|||
|
|
5. **分页**:RuoYi使用PageHelper,不是MyBatis Plus的分页
|
|||
|
|
6. **文件上传**:使用RuoYi的文件上传工具类
|
|||
|
|
|
|||
|
|
## 文件位置
|
|||
|
|
|
|||
|
|
### 后端文件位置
|
|||
|
|
- 实体类:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/domain/study/`
|
|||
|
|
- Mapper接口:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/mapper/study/`
|
|||
|
|
- Mapper XML:`RuoYi-Vue-redis/ry-news-system/src/main/resources/mapper/study/`
|
|||
|
|
- Service接口:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/study/`
|
|||
|
|
- Service实现:`RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/impl/study/`
|
|||
|
|
- Controller:`RuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/controller/study/`
|
|||
|
|
|
|||
|
|
### 前端文件位置
|
|||
|
|
- 页面:`RuoYi-Vue-redis/ruoyi-ui/src/views/study/`
|
|||
|
|
- API:`RuoYi-Vue-redis/ruoyi-ui/src/api/study/`
|