# 我的课程与学习记录关联 - 问题分析与解决方案 ## 📊 现状分析 ### 1. 现有功能 ✅ **课程购买功能已实现** - `ParentAcademyCourseController` - 课程列表、详情、购买 - `ParentAcademyPurchase` - 购买记录表 - 支持课程浏览、购买、支付 ✅ **学习记录功能已实现** - `LearningRecordController` - 陪伴员填写的学习记录 - `LearningRecord` - 学习记录表 - 用于陪伴员记录每日陪伴情况 ### 2. 存在的问题 ❌ **两个功能完全独立,没有关联** - 家长购买课程后,无法记录学习进度 - 课程学习完成后,没有生成学习记录 - 学习完成后,没有积分奖励 - 无法查看课程的学习历史 ❌ **数据孤岛** - `parent_academy_purchase` 表只记录购买信息 - `learning_record` 表只记录陪伴员的服务记录 - 缺少课程学习记录的数据模型 ## 🎯 解决方案 ### 方案概述 创建一个新的数据表 `course_learning_record`,专门记录家长学院课程的学习情况,并与积分系统关联。 ### 核心设计 #### 1. 数据表设计 ```sql 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接口设计 **新增接口:** ```java // 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. 前端页面改造 **我的课程页面增强:** - 显示学习进度条 - 显示最后学习时间 - 显示已获得积分 - 添加"继续学习"按钮 **课程学习页面:** - 视频播放器(支持断点续播) - 学习进度自动保存 - 学习笔记功能 - 完成后积分提示 ## 📋 实施步骤 ### 第一阶段: 数据库准备 1. 创建 `course_learning_record` 表 2. 创建测试数据 ### 第二阶段: 后端开发 1. 创建 `CourseLearningRecord` 实体类 2. 创建 `CourseLearningRecordMapper` 3. 创建 `CourseLearningRecordService` 4. 在 `ParentAcademyCourseController` 中添加学习相关接口 5. 集成积分奖励逻辑 ### 第三阶段: 前端开发 1. 改造 `my-courses.vue` 页面 2. 创建课程学习页面 `course-player.vue` 3. 添加学习进度组件 4. 添加学习笔记功能 ### 第四阶段: 测试验证 1. 单元测试 2. 集成测试 3. 用户体验测试 ## 🎁 预期效果 ### 用户体验提升 - ✅ 学习进度可视化 - ✅ 断点续播功能 - ✅ 学习激励(积分奖励) - ✅ 学习历史记录 ### 数据价值 - ✅ 课程完成率统计 - ✅ 用户学习行为分析 - ✅ 课程质量评估依据 - ✅ 个性化推荐基础 ### 商业价值 - ✅ 提高课程完成率 - ✅ 增强用户粘性 - ✅ 促进课程复购 - ✅ 提升用户满意度 ## ⚠️ 注意事项 1. **性能优化** - 学习进度更新采用防抖策略(30秒一次) - 使用Redis缓存学习状态 - 批量更新数据库 2. **数据一致性** - 购买记录与学习记录保持同步 - 积分奖励防止重复发放 - 事务处理确保数据完整性 3. **用户体验** - 学习进度自动保存,无需手动操作 - 网络异常时本地缓存进度 - 完成课程时给予明确反馈 4. **扩展性** - 预留课程评价字段 - 预留学习证书字段 - 支持未来的学习路径功能