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

220 lines
9.4 KiB
Markdown
Raw Normal View History

2025-11-14 17:34:32 +08:00
# 第二阶段代码整合到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/`