9.4 KiB
9.4 KiB
第二阶段:代码整合到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. 实体类迁移
- StudySubject(学科分类)
- StudyClass(班级)
- StudyCourseware(课件)
- StudyCourse(课程)
- StudyLearningRecord(学习记录)
- StudyStudentClass(学员班级关联)
- StudyLearningDetail(学习详情)
- StudyCourseAssignment(课程分配)
- StudyScreenMonitor(学习监控)
- 用户表处理(决定是扩展SysUser还是创建新表)- 决策:直接使用RuoYi的SysUser表
2. Mapper接口和XML迁移
- StudySubjectMapper接口和XML
- StudyClassMapper接口和XML
- StudyCoursewareMapper接口和XML
- StudyCourseMapper接口和XML
- StudyCourseAssignmentMapper接口和XML
- StudyLearningRecordMapper接口和XML
- StudyLearningDetailMapper接口和XML
- StudyScreenMonitorMapper接口和XML
- StudyStudentClassMapper接口和XML
3. Service接口和实现迁移
- IStudySubjectService / StudySubjectServiceImpl
- IStudyClassService / StudyClassServiceImpl
- IStudyCoursewareService / StudyCoursewareServiceImpl
- IStudyCourseService / StudyCourseServiceImpl
- IStudyCourseAssignmentService / StudyCourseAssignmentServiceImpl
- IStudyLearningRecordService / StudyLearningRecordServiceImpl
- IStudyScreenMonitorService / StudyScreenMonitorServiceImpl
- IStudyDataPermissionService / StudyDataPermissionServiceImpl
4. Controller迁移
- StudySubjectController
- StudyClassController
- StudyCoursewareController
- StudyCourseController
- StudyLearningRecordController
- StudyScreenMonitorController
- StudyCourseAssignmentController
5. 配置和工具类
- 文件上传配置(整合到RuoYi配置)- 已使用RuoYi的FileUploadUtils和CommonController
- WebSocket配置(整合到RuoYi配置)- 已创建WebSocketConfig和MonitorWebSocketHandler
- 数据权限服务(适配RuoYi权限体系)- 已创建ClassDataScope注解和ClassDataScopeAspect切面
6. 前端API调用迁移
- 学科分类API(subject.js)
- 班级API(class.js)
- 课件API(courseware.js)
- 课程API(course.js)
- 学习记录API(learningRecord.js)
- 课程分配API(assignment.js)
- 学习监控API(monitor.js)
7. 前端页面迁移
- 学科分类管理页面
- 班级管理页面
- 课件管理页面
- 课程管理页面
- 课程分配页面
- 学习进度查看页面
- 学习监控页面
8. 路由和菜单配置
- 修改基础SQL脚本数据库名为ry_study
- 创建学习系统菜单SQL脚本
- 执行SQL脚本添加菜单到数据库
- 配置菜单权限(在RuoYi后台为角色分配菜单权限)- 需在后台手动配置
9. 用户注册和审核功能
- UniApp端用户注册功能
- 后端注册接口扩展(支持用户类型)
- 用户审核功能(管理员审核新注册用户)
- 用户审核页面(管理后台)
- 自动角色分配功能
10. 部署配置
- 后端服务端口配置(8081)
- 管理界面端口配置(20002)
- 用户界面端口配置(20003)
- 数据库连接配置
- 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框架)已基本完成,主要成果:
- ✅ 所有实体类、Mapper、Service、Controller已成功迁移到RuoYi框架
- ✅ 前端管理页面已全部迁移并整合到RuoYi UI
- ✅ 数据权限控制已实现(基于班级的数据过滤)
- ✅ 用户注册和审核功能已实现
- ✅ 服务器部署配置已完成(端口、数据库、Nginx)
- ✅ 基础功能已可正常使用
待完善功能(可在后续阶段继续):
- 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已提供)
注意事项
- 用户表处理:✅ 已决定直接使用RuoYi的SysUser表,无需创建新的StudyUser表。RuoYi的SysUser表已经包含了完整的用户信息、角色权限等,学习系统直接复用即可。
- 权限体系:需要适配RuoYi的权限体系,使用RuoYi的权限注解
- 数据库表:需要确认表名是否需要加前缀(如study_)
- 日期格式:RuoYi使用Date,需要将LocalDateTime转换为Date
- 分页:RuoYi使用PageHelper,不是MyBatis Plus的分页
- 文件上传:使用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/