5.1 KiB
5.1 KiB
我的课程与学习记录关联 - 问题分析与解决方案
📊 现状分析
1. 现有功能
✅ 课程购买功能已实现
ParentAcademyCourseController- 课程列表、详情、购买ParentAcademyPurchase- 购买记录表- 支持课程浏览、购买、支付
✅ 学习记录功能已实现
LearningRecordController- 陪伴员填写的学习记录LearningRecord- 学习记录表- 用于陪伴员记录每日陪伴情况
2. 存在的问题
❌ 两个功能完全独立,没有关联
- 家长购买课程后,无法记录学习进度
- 课程学习完成后,没有生成学习记录
- 学习完成后,没有积分奖励
- 无法查看课程的学习历史
❌ 数据孤岛
parent_academy_purchase表只记录购买信息learning_record表只记录陪伴员的服务记录- 缺少课程学习记录的数据模型
🎯 解决方案
方案概述
创建一个新的数据表 course_learning_record,专门记录家长学院课程的学习情况,并与积分系统关联。
核心设计
1. 数据表设计
CREATE TABLE `course_learning_record` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tenant_id` bigint DEFAULT NULL COMMENT '租户ID',
`user_id` bigint NOT NULL COMMENT '用户ID',
`course_id` bigint NOT NULL COMMENT '课程ID',
`purchase_id` bigint NOT NULL COMMENT '购买记录ID',
`learning_duration` int DEFAULT 0 COMMENT '学习时长(秒)',
`learning_progress` int DEFAULT 0 COMMENT '学习进度(0-100)',
`last_position` int DEFAULT 0 COMMENT '最后学习位置(秒)',
`is_completed` tinyint DEFAULT 0 COMMENT '是否完成(0-未完成,1-已完成)',
`completed_time` datetime DEFAULT NULL COMMENT '完成时间',
`points_awarded` int DEFAULT 0 COMMENT '已奖励积分',
`notes` text COMMENT '学习笔记',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` tinyint DEFAULT 0 COMMENT '逻辑删除(0-未删除,1-已删除)',
PRIMARY KEY (`id`),
KEY `idx_user_id` (`user_id`),
KEY `idx_course_id` (`course_id`),
KEY `idx_purchase_id` (`purchase_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程学习记录表';
2. 功能流程
学习流程:
1. 家长购买课程
↓
2. 开始学习课程
↓
3. 记录学习进度(每30秒自动保存)
↓
4. 学习完成(进度达到90%以上)
↓
5. 自动生成学习记录
↓
6. 奖励积分(首次完成)
积分奖励规则:
- 完成课程: +50积分
- 学习笔记: +10积分
- 连续学习7天: +100积分
- 完成必修课程: +200积分
3. API接口设计
新增接口:
// 1. 开始学习课程
POST /api/parent-academy/start-learning
参数: { courseId, purchaseId }
返回: { learningRecordId, lastPosition }
// 2. 更新学习进度
POST /api/parent-academy/update-progress
参数: { learningRecordId, position, duration }
返回: { success, progress }
// 3. 完成课程学习
POST /api/parent-academy/complete-learning
参数: { learningRecordId, notes }
返回: { success, pointsAwarded }
// 4. 获取学习历史
GET /api/parent-academy/learning-history
参数: { courseId }
返回: { records: [...] }
4. 前端页面改造
我的课程页面增强:
- 显示学习进度条
- 显示最后学习时间
- 显示已获得积分
- 添加"继续学习"按钮
课程学习页面:
- 视频播放器(支持断点续播)
- 学习进度自动保存
- 学习笔记功能
- 完成后积分提示
📋 实施步骤
第一阶段: 数据库准备
- 创建
course_learning_record表 - 创建测试数据
第二阶段: 后端开发
- 创建
CourseLearningRecord实体类 - 创建
CourseLearningRecordMapper - 创建
CourseLearningRecordService - 在
ParentAcademyCourseController中添加学习相关接口 - 集成积分奖励逻辑
第三阶段: 前端开发
- 改造
my-courses.vue页面 - 创建课程学习页面
course-player.vue - 添加学习进度组件
- 添加学习笔记功能
第四阶段: 测试验证
- 单元测试
- 集成测试
- 用户体验测试
🎁 预期效果
用户体验提升
- ✅ 学习进度可视化
- ✅ 断点续播功能
- ✅ 学习激励(积分奖励)
- ✅ 学习历史记录
数据价值
- ✅ 课程完成率统计
- ✅ 用户学习行为分析
- ✅ 课程质量评估依据
- ✅ 个性化推荐基础
商业价值
- ✅ 提高课程完成率
- ✅ 增强用户粘性
- ✅ 促进课程复购
- ✅ 提升用户满意度
⚠️ 注意事项
-
性能优化
- 学习进度更新采用防抖策略(30秒一次)
- 使用Redis缓存学习状态
- 批量更新数据库
-
数据一致性
- 购买记录与学习记录保持同步
- 积分奖励防止重复发放
- 事务处理确保数据完整性
-
用户体验
- 学习进度自动保存,无需手动操作
- 网络异常时本地缓存进度
- 完成课程时给予明确反馈
-
扩展性
- 预留课程评价字段
- 预留学习证书字段
- 支持未来的学习路径功能