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

9.4 KiB
Raw Blame History

第二阶段代码整合到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调用迁移

  • 学科分类APIsubject.js
  • 班级APIclass.js
  • 课件APIcourseware.js
  • 课程APIcourse.js
  • 学习记录APIlearningRecord.js
  • 课程分配APIassignment.js
  • 学习监控APImonitor.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框架已基本完成主要成果

  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 XMLRuoYi-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/
  • ControllerRuoYi-Vue-redis/ry-news-admin/src/main/java/com/ddnai/web/controller/study/

前端文件位置

  • 页面:RuoYi-Vue-redis/ruoyi-ui/src/views/study/
  • APIRuoYi-Vue-redis/ruoyi-ui/src/api/study/