guoyu/log/步骤/第二阶段-代码整合到RuoYi.md

220 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 第二阶段代码整合到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] 学科分类APIsubject.js
- [x] 班级APIclass.js
- [x] 课件APIcourseware.js
- [x] 课程APIcourse.js
- [x] 学习记录APIlearningRecord.js
- [x] 课程分配APIassignment.js
- [x] 学习监控APImonitor.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/`