zhibo/观看历史功能-快速指南.md

178 lines
5.3 KiB
Markdown
Raw Normal View History

# 观看历史功能 - 快速指南
## 🎯 功能说明
用户在观看直播时,系统会自动记录观看历史,并可以在"我的记录"页面查看历史记录。
## ✅ 已实现的功能
### 后台功能
- ✅ 自动记录用户观看直播间的历史
- ✅ 支持分页查询观看历史
- ✅ 支持按类型过滤(直播间/作品/用户主页)
- ✅ 自动去重(同一用户观看同一内容会更新记录)
- ✅ 记录观看次数和最后观看时间
- ✅ 数据持久化存储
### Android端功能
- ✅ 进入直播间自动记录观看历史
- ✅ 在"我的记录"页面显示观看历史
- ✅ 点击历史记录可跳转到对应直播间
- ✅ 显示直播间封面、标题、主播名称等信息
- ✅ 显示直播状态(直播中/已结束)
## 📁 新增/修改的文件
### 后台文件
```
live-streaming/
├── server/
│ ├── store/
│ │ └── viewHistoryStore.js [新增] 观看历史数据存储
│ ├── routes/
│ │ └── viewHistory.js [新增] 观看历史API路由
│ └── index.js [修改] 添加路由
├── data/
│ └── viewHistory.json [自动生成] 数据存储文件
└── test-api.bat [新增] API测试脚本
```
### Android端文件
```
android-app/app/src/main/java/com/example/livestreaming/
└── RoomDetailActivity.java [修改] 添加观看历史记录功能
```
## 🚀 快速测试
### 1. 启动后台服务
```bash
cd live-streaming
npm install
npm start
```
### 2. 测试APIWindows
```bash
cd live-streaming
test-api.bat
```
### 3. Android端测试
1. 启动Android应用
2. 登录账号
3. 进入任意直播间
4. 返回首页 -> "我的" -> "我的记录"
5. 查看"观看历史"标签页
## 📊 API接口
### 记录观看历史
```
POST /api/front/activity/record-view
Headers: Authorization: {userId}
Body: {
"targetType": "room",
"targetId": "room-id",
"targetTitle": "直播间标题",
"coverImage": "封面URL",
"streamerName": "主播名称",
"viewDuration": 120
}
```
### 获取观看历史
```
GET /api/front/activity/view-history?page=1&pageSize=20&type=room
Headers: Authorization: {userId}
```
### 清除观看历史
```
DELETE /api/front/activity/view-history?type=room
Headers: Authorization: {userId}
```
## 💡 使用场景
1. **用户观看直播**
- 用户进入直播间 → 自动记录观看历史
- 用户再次进入同一直播间 → 更新观看时间和次数
2. **查看历史记录**
- 用户打开"我的记录" → 查看"观看历史"标签
- 显示最近观看的直播间列表
- 点击可快速进入直播间
3. **数据统计**
- 记录用户观看次数
- 记录最后观看时间
- 支持按时间排序
## 🔧 技术细节
### 数据存储格式
```json
{
"id": 1704441600000,
"userId": 1,
"targetType": "room",
"targetId": "room-123",
"targetTitle": "精彩直播间",
"coverImage": "https://example.com/cover.jpg",
"streamerName": "主播名称",
"viewDuration": 120,
"createTime": "2024-01-05T10:00:00.000Z",
"updateTime": "2024-01-05T10:02:00.000Z",
"viewCount": 3
}
```
### 认证方式
- 使用 `Authorization` 请求头传递用户ID
- 格式:`Authorization: {userId}` 或 `Authorization: Bearer {userId}`
- 未登录用户不记录观看历史
## 📝 注意事项
1. ⚠️ 用户必须登录才能记录观看历史
2. ⚠️ 数据目前存储在JSON文件中生产环境建议使用数据库
3. ⚠️ 观看历史仅用户本人可见
4. ⚠️ 同一用户观看同一内容会更新记录而不是创建新记录
## 🎨 界面展示
### 我的记录页面
```
┌─────────────────────────────────┐
│ ← 我的记录 │
├─────────────────────────────────┤
│ 观看历史 | 点赞记录 | 收藏记录 | 关注记录 │
├─────────────────────────────────┤
│ ┌─────────────────────────────┐ │
│ │ [封面图] 精彩直播间 [直播中] │ │
│ │ 主播:测试主播 │ │
│ │ 2024-01-05 10:00 │ │
│ └─────────────────────────────┘ │
│ ┌─────────────────────────────┐ │
│ │ [封面图] 游戏直播间 │ │
│ │ 主播:游戏主播 │ │
│ │ 2024-01-04 20:30 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────┘
```
## 🔮 后续优化建议
1. 添加观看时长的实时更新
2. 支持用户手动删除单条历史
3. 添加时间筛选功能(今天/本周/本月)
4. 支持导出观看历史
5. 添加隐私设置开关
6. 迁移到数据库存储
## 📚 相关文档
- 详细实现说明:`观看历史功能实现说明.md`
- API测试指南`live-streaming/test-view-history.md`