82 lines
2.0 KiB
Markdown
82 lines
2.0 KiB
Markdown
|
|
# 后端接口 TODO 清单 - 用户头像加载模块
|
|||
|
|
|
|||
|
|
## 1. 获取用户头像
|
|||
|
|
**文件**: `ConversationMessagesAdapter.java`, `ConversationsAdapter.java`, `FriendsAdapter.java`
|
|||
|
|
**接口路径**: `GET /api/users/{userId}/avatar`
|
|||
|
|
**请求参数**: userId (路径参数)
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"avatarUrl": "string"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明**:
|
|||
|
|
- 如果消息对象(ChatMessage/ConversationItem/FriendItem)已包含 avatarUrl 字段,直接使用该URL加载头像
|
|||
|
|
- 如果 avatarUrl 为空,则根据 userId 调用此接口获取头像URL
|
|||
|
|
- 建议在后端返回消息时直接包含 avatarUrl,减少额外请求
|
|||
|
|
|
|||
|
|
## 2. 获取用户在线状态
|
|||
|
|
**文件**: `FriendsAdapter.java`
|
|||
|
|
**接口路径**: `GET /api/users/{userId}/status`
|
|||
|
|
**请求参数**: userId (路径参数)
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"isOnline": "boolean",
|
|||
|
|
"lastActiveTime": "number"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明**:
|
|||
|
|
- 用于显示好友列表中的在线状态
|
|||
|
|
- 建议使用 WebSocket 实时推送在线状态变化
|
|||
|
|
- 备选方案:轮询获取(每30秒一次)
|
|||
|
|
|
|||
|
|
## 3. 批量获取用户头像
|
|||
|
|
**文件**: 多个适配器文件
|
|||
|
|
**接口路径**: `POST /api/users/avatars/batch`
|
|||
|
|
**请求参数**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"userIds": ["string"]
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**返回数据**:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 200,
|
|||
|
|
"data": {
|
|||
|
|
"userId1": "avatarUrl1",
|
|||
|
|
"userId2": "avatarUrl2"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明**:
|
|||
|
|
- 用于批量获取多个用户的头像URL
|
|||
|
|
- 减少网络请求次数,提升性能
|
|||
|
|
- 适用于列表页面(消息列表、好友列表等)
|
|||
|
|
|
|||
|
|
## 头像加载优化建议
|
|||
|
|
|
|||
|
|
### 1. 缓存策略
|
|||
|
|
- 使用 Glide 的磁盘缓存和内存缓存
|
|||
|
|
- 设置合理的缓存过期时间(如7天)
|
|||
|
|
|
|||
|
|
### 2. 占位图
|
|||
|
|
- 加载中显示默认头像
|
|||
|
|
- 加载失败显示默认头像
|
|||
|
|
- 根据用户名生成不同颜色的默认头像
|
|||
|
|
|
|||
|
|
### 3. 图片压缩
|
|||
|
|
- 后端返回不同尺寸的头像URL(缩略图、原图)
|
|||
|
|
- 列表页面使用缩略图,详情页面使用原图
|
|||
|
|
|
|||
|
|
### 4. 预加载
|
|||
|
|
- 在列表滚动时预加载即将显示的头像
|
|||
|
|
- 使用 Glide 的 preload 功能
|