guoyu/log/步骤/第三阶段-核心功能完善和UniApp开发.md

8.7 KiB
Raw Blame History

第三阶段核心功能完善和UniApp开发

阶段目标

完善核心业务功能完成UniApp端的学习功能开发

开始时间

2025-11-11

阶段说明

本阶段主要完善第二阶段已整合的基础功能并开发UniApp端的核心学习功能。

阶段完成时间

2025-11-11

阶段总结

第三阶段核心功能已基本完成,包括:

  1. UniApp端课程学习功能列表、详情、筛选、进度跟踪
  2. UniApp端学习监控功能定时截图、上传
  3. 学习进度上报优化(断网重连、本地缓存)
  4. 学习记录查看页面(个人统计)
  5. 管理后台统计接口(统计信息、导出功能)

待优化功能(可在后续阶段完善):

  • 管理后台图表展示(前端图表组件待完善)
  • 视频文件处理FFmpeg集成
  • 大文件上传优化

任务清单

1. UniApp端课程学习功能

1.1 课程列表

  • 课程列表页面(显示分配给当前学员的课程)
  • 课程筛选(按学科分类、状态等)
  • 课程详情查看
  • 学习进度显示(进度条、学习时长、学习次数)

1.2 课件查看

  • 图文课件查看PDF、图片、文档
    • PDF在线查看使用web-view
    • 图片查看(支持缩放、预览)
    • 文档查看(文本内容显示)
  • 视频课件播放
    • 视频播放器集成使用uni-app video组件
    • 横屏全屏播放支持
    • 播放进度显示
    • 播放控制(播放/暂停、进度条、音量等)

1.3 学习进度跟踪

  • 视频播放进度实时上报每10秒
    • 上报接口调用
    • 断网重连机制(已实现队列管理和自动重连)
    • 本地缓存机制(已实现本地存储和恢复)
  • 学习记录存储
    • 学习开始时间记录
    • 学习结束时间记录
    • 学习时长累计
    • 学习次数累计
    • 视频播放位置记录
  • 学习详情记录(后端已实现,前端待完善)
    • 每次学习的详细记录
    • 视频播放位置变化记录

1.4 学习记录查看

  • 个人学习记录页面
  • 学习进度统计
  • 学习时长统计
  • 学习次数统计

2. UniApp端学习监控功能

2.1 屏幕截图功能

  • 定时截图功能每30秒或可配置
    • 使用plus APIApp环境
    • H5环境降级方案
    • 截图质量优化(待优化)
    • 截图文件大小控制(待优化)
  • 截图上传接口
    • 上传到服务器
    • 上传失败重试机制最多重试3次
    • 上传进度显示(待优化)
  • 后台运行(基础实现)
    • 定时任务执行
    • App后台运行保持需要原生插件支持
    • 电量优化(待优化)

2.2 监控数据查看

  • 监控记录查看可选如果需要在App端查看

3. 后端功能完善

3.1 学习进度接口完善

  • 学习进度上报接口优化
    • 批量上报支持(前端队列管理器已实现)
    • 数据校验增强(待优化)
    • 异常处理完善(待优化)
  • 学习记录查询接口优化
    • 按时间范围查询(统计接口支持)
    • 按课程查询(统计接口支持)
    • 统计信息查询(已实现统计接口)

3.2 视频文件处理

  • FFmpeg集成
    • FFmpeg工具安装配置
    • 视频转码功能
    • 视频压缩功能
    • 视频格式统一MP4
  • 视频处理服务
    • 视频上传后自动处理
    • 处理进度跟踪
    • 处理结果通知

3.3 文件上传优化

  • 大文件上传支持
    • 分片上传
    • 断点续传
    • 上传进度显示
  • 文件类型限制
  • 文件大小限制配置

4. 管理后台功能完善

4.1 学习进度查看优化

  • 学习进度详情页面优化
    • 统计接口实现(总数、平均进度、按日期统计)
    • 导出功能Excel导出
    • 图表展示(前端待完善)
  • 批量操作功能
    • 批量查看
    • 批量导出

4.2 学习监控功能完善

  • 实时监控页面优化
    • WebSocket实时推送
    • 监控画面刷新
    • 历史记录查看
  • 监控数据统计
    • 监控频率统计
    • 异常情况统计

5. 用户体验优化

5.1 UniApp端优化

  • 加载动画优化
  • 错误提示优化
  • 网络异常处理
  • 离线缓存机制
  • 横屏适配优化

5.2 管理后台优化

  • 界面交互优化
  • 数据展示优化
  • 操作流程优化

技术要点

1. 视频播放进度跟踪

前端实现:

// 视频播放进度监听
video.onTimeUpdate(() => {
  const currentTime = video.currentTime
  const duration = video.duration
  const progress = (currentTime / duration) * 100
  
  // 每5-10秒上报一次
  if (shouldReport()) {
    reportProgress(courseId, currentTime, duration)
  }
})

后端接口:

  • POST /study/learningRecord/progress - 上报学习进度
  • GET /study/learningRecord/my-records - 获取我的学习记录

2. 屏幕截图实现

UniApp实现

// 使用canvas截图
const ctx = uni.createCanvasContext('canvas')
ctx.draw()
ctx.toTempFilePath({
  success: (res) => {
    uploadScreenshot(res.tempFilePath)
  }
})

后端接口:

  • POST /study/monitor/upload - 上传截图

3. 视频处理

FFmpeg集成

  • 使用Java调用FFmpeg命令
  • 视频转码H.264编码MP4格式
  • 视频压缩:动态码率,平衡清晰度和文件大小

开发优先级

高优先级(必须完成)

  1. UniApp端课程列表
  2. 视频课件播放
  3. 学习进度上报
  4. 学习记录查看

中优先级(重要功能)

  1. 图文课件查看
  2. 屏幕截图功能
  3. 学习进度统计

低优先级(优化功能)

  1. 视频文件处理FFmpeg
  2. 大文件上传优化
  3. 离线缓存机制

遇到的问题

详细问题记录请参考:第三阶段-问题

已解决问题

  1. 学科分类插入错误subject_name 字段没有默认值 - 已通过三层验证机制解决(见第三阶段-问题#问题1

进度记录

  • 2025-11-11开始第三阶段开发创建阶段计划文档
  • 2025-11-11添加学员端获取课程接口 /study/course/my-courses
  • 2025-11-11完善UniApp课程列表页面显示学习进度、学习时长、课程状态等信息
  • 2025-11-11完善课程详情页面实现视频播放、学习进度上报、课件查看功能
  • 2025-11-11创建学习监控工具类monitor.js实现定时截图和上传功能
  • 2025-11-11在课程详情页面集成学习监控功能进入页面启动离开页面停止
  • 2025-11-11创建学习记录查看页面显示学习统计和详细记录
  • 2025-11-11在个人中心添加学习记录入口
  • 2025-11-11实现课程筛选功能按学科分类、状态筛选
  • 2025-11-11添加学科分类App端接口无需权限验证
  • 2025-11-11创建学习进度上报队列管理器progressQueue.js实现断网重连、本地缓存、批量上报
  • 2025-11-11优化学习进度上报机制集成队列管理器
  • 2025-11-11添加学习记录统计接口总数、平均进度、按日期统计
  • 2025-11-11添加学习记录导出功能Excel导出

注意事项

  1. 视频播放兼容性需要测试不同平台的视频播放兼容性iOS、Android、H5
  2. 性能优化:学习进度上报频率要适中,避免频繁请求影响性能
  3. 数据准确性:学习记录的数据要准确,避免重复计算
  4. 用户体验App端操作要流畅避免卡顿
  5. 网络异常处理:需要处理网络断开、请求失败等情况

文件位置

UniApp端文件位置

  • 课程列表:frontend-uniapp/src/pages/course/list.vue
  • 课程详情:frontend-uniapp/src/pages/course/detail.vue
  • 学习记录:frontend-uniapp/src/pages/learning/record.vue
  • 学习监控工具:frontend-uniapp/src/utils/monitor.js
  • 学习进度队列管理器:frontend-uniapp/src/utils/progressQueue.js
  • API调用frontend-uniapp/src/api/study/
    • 学科分类APIfrontend-uniapp/src/api/study/subject.js

后端文件位置

  • 学习进度接口:StudyLearningRecordController
  • 学习监控接口:StudyScreenMonitorController
  • 学科分类接口:StudySubjectController新增App端接口 /study/subject/app/list
  • 视频处理服务:RuoYi-Vue-redis/ry-news-system/src/main/java/com/ddnai/system/service/study/

参考文档