187 lines
5.1 KiB
Markdown
187 lines
5.1 KiB
Markdown
|
|
# 我的课程与学习记录关联 - 问题分析与解决方案
|
||
|
|
|
||
|
|
## 📊 现状分析
|
||
|
|
|
||
|
|
### 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. **扩展性**
|
||
|
|
- 预留课程评价字段
|
||
|
|
- 预留学习证书字段
|
||
|
|
- 支持未来的学习路径功能
|