# 第二阶段:代码整合到RuoYi框架 ## 阶段目标 将在线学习系统的后端代码和前端代码整合到 RuoYi-Vue-redis 框架中 ## 开始时间 2025-01-XX ## 整合策略 ### 后端整合 - **包结构**:在 `ry-news-system` 模块中创建 `study` 子包 - **实体类**:继承 `BaseEntity`,使用 `Date` 而不是 `LocalDateTime` - **返回格式**:使用 `AjaxResult` 替代 `Result` - **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` 和 `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/`