98 lines
2.2 KiB
Markdown
98 lines
2.2 KiB
Markdown
# 后端接口 TODO 清单 - 分类管理模块
|
||
|
||
## 1. 获取房间分类列表
|
||
**文件**: `CategoryFilterManager.java`, `MainActivity.java`
|
||
**接口路径**: `GET /api/rooms/categories`
|
||
**请求参数**: 无
|
||
**返回数据**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": [
|
||
{
|
||
"id": "string",
|
||
"name": "string",
|
||
"iconUrl": "string",
|
||
"roomCount": "number",
|
||
"sortOrder": "number"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
**说明**:
|
||
- 用于显示分类标签页
|
||
- 分类数据应从后端获取,而不是硬编码
|
||
- 支持动态添加/删除分类
|
||
|
||
## 2. 按分类获取房间列表
|
||
**文件**: `CategoryFilterManager.java`, `MainActivity.java`
|
||
**接口路径**: `GET /api/rooms?category={categoryId}`
|
||
**请求参数**:
|
||
- category: 分类ID(必填)
|
||
- page (可选): 页码
|
||
- pageSize (可选): 每页数量
|
||
- sortBy (可选): 排序方式(hot/new/viewers)
|
||
**返回数据**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": [
|
||
{
|
||
"id": "string",
|
||
"title": "string",
|
||
"streamerName": "string",
|
||
"streamerId": "string",
|
||
"type": "string",
|
||
"categoryId": "string",
|
||
"categoryName": "string",
|
||
"isLive": "boolean",
|
||
"coverUrl": "string",
|
||
"viewerCount": "number",
|
||
"streamUrls": {
|
||
"flv": "string",
|
||
"hls": "string",
|
||
"rtmp": "string"
|
||
}
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## 3. 获取推荐分类
|
||
**文件**: `MainActivity.java`
|
||
**接口路径**: `GET /api/rooms/categories/recommended`
|
||
**请求参数**:
|
||
- userId (可选): 用户ID(从token中获取,用于个性化推荐)
|
||
**返回数据**:
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"data": [
|
||
{
|
||
"id": "string",
|
||
"name": "string",
|
||
"iconUrl": "string",
|
||
"roomCount": "number"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
**说明**:
|
||
- 根据用户观看历史推荐分类
|
||
- 如果用户未登录,返回热门分类
|
||
|
||
## 分类筛选流程
|
||
|
||
### 前端实现
|
||
1. 页面加载时获取分类列表
|
||
2. 显示分类标签页
|
||
3. 用户点击分类标签
|
||
4. 调用按分类获取房间列表接口
|
||
5. 显示筛选结果
|
||
|
||
### 性能优化
|
||
- 缓存分类列表(本地存储)
|
||
- 异步筛选,避免阻塞UI
|
||
- 使用 RecyclerView 的 DiffUtil 优化列表更新
|
||
- 保存用户最后选中的分类(SharedPreferences)
|