2025-12-29 15:12:12 +08:00
|
|
|
|
# Android端与后端对接总结
|
|
|
|
|
|
|
|
|
|
|
|
> **生成时间**: 2024-12-29
|
|
|
|
|
|
> **更新时间**: 2024-12-29
|
|
|
|
|
|
> **项目**: 直播IM系统
|
2025-12-29 18:02:28 +08:00
|
|
|
|
> **后端完成度**: ✅ 100% (94/94接口)
|
|
|
|
|
|
> **Android端对接**: ✨ 用户系统7个接口已全部接入
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📱 Android端对接进度
|
|
|
|
|
|
|
|
|
|
|
|
### ✅ 已接入模块 (7个)
|
|
|
|
|
|
|
|
|
|
|
|
| 模块 | 接口数 | 对接状态 | 说明 |
|
|
|
|
|
|
|------|--------|---------|------|
|
|
|
|
|
|
| 用户系统 | 7 | ✅ 100% | 登录、注册、验证码、用户信息、资料编辑、头像上传、退出登录 |
|
2025-12-30 09:29:30 +08:00
|
|
|
|
| 直播间系统 | 10 | ✅ 100% | 列表、详情、创建、开始/结束直播、关注、在线人数、观众列表、礼物赠送、广播 |
|
2025-12-29 18:02:28 +08:00
|
|
|
|
| 好友管理 | 9 | ✅ 100% | 搜索用户、发送申请、接受/拒绝申请、好友列表、删除好友、拉黑/取消拉黑、黑名单列表 |
|
|
|
|
|
|
| 消息表情回应 | 4 | ✅ 100% | 添加表情回应、移除表情回应、获取表情列表、获取回应用户 |
|
|
|
|
|
|
| 关注功能 | 8 | ✅ 100% | 关注、取消关注、关注列表、粉丝列表、关注状态、批量检查、关注统计 |
|
|
|
|
|
|
| 作品管理 | 15 | ✅ 100% | 发布、编辑、删除、详情、列表、点赞、收藏、分享 |
|
|
|
|
|
|
| 搜索功能 | 9 | ✅ 100% | 搜索用户、搜索直播间、搜索作品、综合搜索、热门搜索、搜索历史、搜索建议 |
|
|
|
|
|
|
| 支付集成 | 4 | ✅ 100% | 充值选项、创建订单、订单支付、查询结果 |
|
2025-12-30 09:29:30 +08:00
|
|
|
|
| 分类管理 | 7 | ✅ 100% | 直播间分类、作品分类、分类列表、分类详情、分类统计、热门分类、子分类 |
|
|
|
|
|
|
| 直播间管理 | 10 | ✅ 100% | 列表、详情、创建、开始/结束直播、关注、在线人数、观众列表、赠送礼物 ✨ 2024-12-30已接入 |
|
|
|
|
|
|
| 直播间弹幕 | 2 | ✅ 100% | 历史弹幕、发送弹幕 ✨ 2024-12-30已接入 |
|
|
|
|
|
|
| WebSocket通信 | 2 | ✅ 100% | 实时弹幕、在线人数实时推送 ✨ 2024-12-30已完善 |
|
2025-12-29 18:02:28 +08:00
|
|
|
|
|
|
|
|
|
|
### 🔄 待接入模块
|
|
|
|
|
|
|
|
|
|
|
|
| 模块 | 接口数 | 优先级 | 说明 |
|
|
|
|
|
|
|------|--------|--------|------|
|
|
|
|
|
|
| 群组管理 | 10 | 🟡 中 | 创建、更新、解散、成员管理 |
|
|
|
|
|
|
| 消息聊天 | 12 | 🟡 中 | 会话、消息、已读状态 |
|
|
|
|
|
|
| 其他模块 | 79 | <20> 中低 | 作品、评论、搜索、通知、支付等 |
|
2025-12-29 15:12:12 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📊 接口完成情况
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 Android端需要对接的核心接口
|
|
|
|
|
|
|
|
|
|
|
|
### 第一阶段:基础功能 (必须)
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 1. 用户系统 (7个接口) - ✅ 已完成对接 ✨ Android端已接入
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/front/login # 账号密码登录 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/register # APP用户注册 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/sendCode # 发送验证码 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/user # 获取用户信息 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/user/edit # 更新用户资料 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/user/upload/image # 上传头像 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/logout # 退出登录 (✨已接入)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **POST /api/front/login** - 账号密码登录 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "account": "手机号", "password": "密码" }`
|
|
|
|
|
|
- 响应数据: `{ "token": "JWT令牌", "uid": 用户ID, "nikeName": "昵称", "phone": "手机号" }`
|
|
|
|
|
|
- 后端实现: `LoginController.login()` → `LoginServiceImpl.login()`
|
|
|
|
|
|
- Android实现: `LoginActivity.java` → `ApiService.login()`
|
|
|
|
|
|
- 模型类: `LoginRequest.java`, `LoginResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
2. **POST /api/front/register** - APP用户注册 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "phone": "手机号", "password": "密码", "verificationCode": "验证码(可选)", "nickname": "昵称(可选)" }`
|
|
|
|
|
|
- 响应数据: `{ "token": "JWT令牌", "uid": 用户ID, "nikeName": "昵称", "phone": "手机号" }`
|
|
|
|
|
|
- 后端实现: `LoginController.register()` → `LoginServiceImpl.register()`
|
|
|
|
|
|
- Android实现: `RegisterActivity.java` → `ApiService.register()`
|
|
|
|
|
|
- 模型类: `RegisterRequest.java`, `LoginResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
3. **POST /api/front/sendCode** - 发送短信验证码 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `phone=手机号` (FormUrlEncoded)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "发送成功" }`
|
|
|
|
|
|
- 后端实现: `LoginController.sendCode()` → `SmsService.sendCommonCode()`
|
|
|
|
|
|
- Android实现: `RegisterActivity.java` → `ApiService.sendCode()`
|
|
|
|
|
|
|
|
|
|
|
|
4. **GET /api/front/user** - 获取用户信息 ✨ Android端已接入
|
|
|
|
|
|
- 请求头: `Authorization: Bearer {token}`
|
|
|
|
|
|
- 响应数据: 用户中心完整信息(昵称、头像、余额、积分、经验、等级等)
|
|
|
|
|
|
- 后端实现: `UserController.getUserCenter()` → `UserService.getUserCenter()`
|
|
|
|
|
|
- Android实现: `ApiService.getUserInfo()`
|
|
|
|
|
|
- 模型类: `UserInfoResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
5. **POST /api/front/user/edit** - 更新用户资料 ✨ Android端已接入
|
|
|
|
|
|
- 请求头: `Authorization: Bearer {token}`
|
|
|
|
|
|
- 请求参数: `{ "nickname": "昵称", "avatar": "头像URL" }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "success" }`
|
|
|
|
|
|
- 后端实现: `UserController.personInfo()` → `UserService.editUser()`
|
|
|
|
|
|
- Android实现: `EditProfileActivity.java` → `ApiService.updateUserInfo()`
|
|
|
|
|
|
- 模型类: `UserEditRequest.java`
|
|
|
|
|
|
|
|
|
|
|
|
6. **POST /api/front/user/upload/image** - 上传头像 ✨ Android端已接入
|
|
|
|
|
|
- 请求头: `Authorization: Bearer {token}`
|
|
|
|
|
|
- 请求参数: `multipart/form-data` - `file`: 图片文件, `model`: "user", `pid`: 7
|
|
|
|
|
|
- 响应数据: `{ "url": "图片URL", "name": "文件名", "size": 文件大小 }`
|
|
|
|
|
|
- 后端实现: `UserUploadController.image()` → `UploadService.imageUpload()`
|
|
|
|
|
|
- Android实现: `EditProfileActivity.java` → `ApiService.uploadImage()`
|
|
|
|
|
|
- 模型类: `FileUploadResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
7. **GET /api/front/logout** - 退出登录 ✨ Android端已接入
|
|
|
|
|
|
- 请求头: `Authorization: Bearer {token}`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "success" }`
|
|
|
|
|
|
- 后端实现: `LoginController.loginOut()` → `LoginServiceImpl.loginOut()`
|
|
|
|
|
|
- Android实现: `ApiService.logout()`
|
2025-12-29 15:12:12 +08:00
|
|
|
|
|
2025-12-30 09:29:30 +08:00
|
|
|
|
#### 2. 直播间系统 (10个接口) - ✅ 全部完成 ✨ Android端已接入
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
2025-12-30 09:29:30 +08:00
|
|
|
|
✅ GET /api/front/live/rooms # 直播间列表 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/live/room/{id} # 直播间详情 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/live/room/create # 创建直播间 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/live/room/{id}/start # 开始直播 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/live/room/{id}/stop # 结束直播 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/live/room/{id}/follow # 关注主播 (✨已接入)
|
|
|
|
|
|
✅ GET /api/live/online/count/{roomId} # 在线人数 (✨已接入)
|
|
|
|
|
|
✅ GET /api/rooms/{roomId}/viewers # 观众列表 (✨已接入)
|
|
|
|
|
|
✅ POST /api/rooms/{roomId}/gift # 赠送礼物 (✨已接入)
|
|
|
|
|
|
✅ POST /api/live/online/broadcast/{roomId} # 手动广播人数 (✨已接入)
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-30 09:29:30 +08:00
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **GET /api/front/live/rooms** - 获取直播间列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: 无
|
|
|
|
|
|
- 响应数据: `List<Room>` 直播间列表
|
|
|
|
|
|
- 后端实现: `LiveRoomController.getRooms()`
|
|
|
|
|
|
- Android实现: `MainActivity.java` → `fetchRooms()` → `ApiService.getRooms()`
|
|
|
|
|
|
- 模型类: `Room.java`
|
|
|
|
|
|
- 说明: 获取所有公开的直播间列表,包含直播状态、观看人数等信息
|
|
|
|
|
|
|
|
|
|
|
|
2. **GET /api/front/live/room/{id}** - 获取直播间详情 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `id` (直播间ID,路径参数)
|
|
|
|
|
|
- 响应数据: `Room` 直播间详细信息
|
|
|
|
|
|
- 后端实现: `LiveRoomController.getRoom()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `fetchRoom()` → `ApiService.getRoom()`
|
|
|
|
|
|
- 模型类: `Room.java`
|
|
|
|
|
|
- 说明: 获取单个直播间的详细信息,包含推流地址、播放地址等
|
|
|
|
|
|
|
|
|
|
|
|
3. **POST /api/front/live/room/create** - 创建直播间 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `CreateRoomRequest { title: string, streamerName: string, type: string }`
|
|
|
|
|
|
- 响应数据: `Room` 新创建的直播间信息
|
|
|
|
|
|
- 后端实现: `LiveRoomController.createRoom()`
|
|
|
|
|
|
- Android实现: `MainActivity.java` → `showCreateRoomDialog()` → `ApiService.createRoom()`
|
|
|
|
|
|
- 模型类: `CreateRoomRequest.java`, `Room.java`
|
|
|
|
|
|
- 说明: 创建新的直播间,返回推流密钥和播放地址
|
|
|
|
|
|
|
|
|
|
|
|
4. **POST /api/front/live/room/{id}/start** - 开始直播 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `id` (直播间ID,路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "success" }`
|
|
|
|
|
|
- 后端实现: `LiveRoomController.startLiveRoom()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `startLiveStream()` → `ApiService.startLiveRoom()`
|
|
|
|
|
|
- 说明: 开始直播,将直播间状态设置为直播中,需要主播权限
|
|
|
|
|
|
|
|
|
|
|
|
5. **POST /api/front/live/room/{id}/stop** - 结束直播 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `id` (直播间ID,路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "success" }`
|
|
|
|
|
|
- 后端实现: `LiveRoomController.stopLiveRoom()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `stopLiveStream()` → `ApiService.stopLiveRoom()`
|
|
|
|
|
|
- 说明: 结束直播,将直播间状态设置为离线,需要主播权限
|
|
|
|
|
|
|
|
|
|
|
|
6. **POST /api/front/live/room/{id}/follow** - 关注主播 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "streamerId": 主播ID, "action": "follow/unfollow" }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "success" }`
|
|
|
|
|
|
- 后端实现: `LiveRoomController.followStreamer()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `followStreamerBackend()` → `ApiService.followStreamer()`
|
|
|
|
|
|
- 说明: 在直播间内关注/取消关注主播,需要登录
|
|
|
|
|
|
|
|
|
|
|
|
7. **GET /api/live/online/count/{roomId}** - 获取在线人数 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `roomId` (直播间ID,路径参数)
|
|
|
|
|
|
- 响应数据: `{ "count": 在线人数 }`
|
|
|
|
|
|
- 后端实现: `OnlineController.getRoomOnlineCount()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `fetchRoom()` → `ApiService.getViewerCount()`
|
|
|
|
|
|
- 说明: 获取直播间当前在线观看人数
|
|
|
|
|
|
|
|
|
|
|
|
8. **GET /api/rooms/{roomId}/viewers** - 获取观众列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `roomId` (直播间ID,路径参数), `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: `List<User>` 观众列表
|
|
|
|
|
|
- 后端实现: `LiveRoomController.getRoomViewers()`
|
|
|
|
|
|
- Android实现: `ApiService.getRoomViewers()`
|
|
|
|
|
|
- 说明: 获取直播间当前在线观众列表,支持分页
|
|
|
|
|
|
|
|
|
|
|
|
9. **POST /api/rooms/{roomId}/gift** - 赠送礼物 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `SendGiftRequest { roomId: number, giftId: number, count: number }`
|
|
|
|
|
|
- 响应数据: `SendGiftResponse { success: boolean, newBalance: number }`
|
|
|
|
|
|
- 后端实现: `GiftController.sendRoomGift()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `sendGiftToBackend()` → `ApiService.sendRoomGift()`
|
|
|
|
|
|
- 模型类: `SendGiftRequest.java`, `SendGiftResponse.java`
|
|
|
|
|
|
- 说明: 在直播间内赠送礼物给主播,需要登录和足够的金币余额
|
|
|
|
|
|
|
|
|
|
|
|
10. **POST /api/live/online/broadcast/{roomId}** - 手动广播在线人数 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `roomId` (直播间ID,路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "success" }`
|
|
|
|
|
|
- 后端实现: `OnlineController.broadcastOnlineCount()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `broadcastOnlineCount()` → `ApiService.broadcastOnlineCount()`
|
|
|
|
|
|
- 说明: 手动触发在线人数广播,通过WebSocket推送给所有在线用户
|
|
|
|
|
|
|
2025-12-29 15:12:12 +08:00
|
|
|
|
#### 3. 直播间弹幕 (2个接口)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/live/public/rooms/{roomId}/messages # 获取历史弹幕
|
|
|
|
|
|
✅ POST /api/front/live/public/rooms/{roomId}/messages # 发送弹幕消息
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 4. WebSocket实时通信 (2个连接)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ ws://localhost:8080/ws/live/{roomId}?clientId={clientId}
|
|
|
|
|
|
- 实时在线人数统计
|
|
|
|
|
|
- 心跳保活机制
|
|
|
|
|
|
- 用户去重
|
|
|
|
|
|
|
|
|
|
|
|
✅ ws://localhost:8080/ws/live/chat/{roomId}
|
|
|
|
|
|
- 实时弹幕消息
|
|
|
|
|
|
- 消息广播
|
|
|
|
|
|
- 敏感词过滤
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 第二阶段:社交功能 (推荐)
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 5. 好友管理 (9个接口) - ✅ 已完成对接 ✨ Android端已接入
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/users/search # 搜索用户 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/friends/request # 发送好友申请 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/friends/requests/{requestId}/handle # 处理好友请求(接受/拒绝) (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/friends # 好友列表 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/friends/requests # 好友申请列表 (✨已接入)
|
|
|
|
|
|
✅ DELETE /api/front/friends/{friendId} # 删除好友 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/friends/block/{friendId} # 拉黑好友 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/friends/unblock/{friendId} # 取消拉黑 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/friends/blocked # 黑名单列表 (✨已接入)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **GET /api/front/users/search** - 搜索用户 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `keyword` (搜索关键词), `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 用户列表,包含好友状态 (0:未添加, 1:已是好友, 2:已申请)
|
|
|
|
|
|
- 后端实现: `FriendController.searchUsers()`
|
|
|
|
|
|
- Android实现: `AddFriendActivity.java` → `ApiService.searchUsers()`
|
|
|
|
|
|
- 模型类: `SearchUserResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
2. **POST /api/front/friends/request** - 发送好友申请 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "targetUserId": 目标用户ID, "message": "申请消息(可选)" }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `FriendController.sendFriendRequest()`
|
|
|
|
|
|
- Android实现: `AddFriendActivity.java` → `ApiService.sendFriendRequest()`
|
|
|
|
|
|
|
|
|
|
|
|
3. **POST /api/front/friends/requests/{requestId}/handle** - 处理好友请求 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "accept": true/false }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `FriendController.handleFriendRequest()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `handleFriendRequest()`
|
|
|
|
|
|
- 说明: accept=true接受,false拒绝;接受后自动创建双向好友关系和私聊会话
|
|
|
|
|
|
|
|
|
|
|
|
4. **GET /api/front/friends** - 好友列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 好友列表,包含在线状态
|
|
|
|
|
|
- 后端实现: `FriendController.getFriendList()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `loadFriendList()`
|
|
|
|
|
|
- 模型类: `FriendResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
5. **GET /api/front/friends/requests** - 好友申请列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 待处理的好友申请列表
|
|
|
|
|
|
- 后端实现: `FriendController.getFriendRequests()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `loadFriendRequests()`
|
|
|
|
|
|
- 模型类: `FriendRequestResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
6. **DELETE /api/front/friends/{friendId}** - 删除好友 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `friendId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `FriendController.deleteFriend()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `deleteFriend()`
|
|
|
|
|
|
- 说明: 删除双向好友关系
|
|
|
|
|
|
|
|
|
|
|
|
7. **POST /api/front/friends/block/{friendId}** - 拉黑好友 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `friendId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `FriendController.blockFriend()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `blockFriend()`
|
|
|
|
|
|
- 说明: 拉黑后自动删除好友关系
|
|
|
|
|
|
|
|
|
|
|
|
8. **POST /api/front/friends/unblock/{friendId}** - 取消拉黑 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `friendId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `FriendController.unblockFriend()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `unblockFriend()`
|
|
|
|
|
|
|
|
|
|
|
|
9. **GET /api/front/friends/blocked** - 黑名单列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 黑名单用户列表
|
|
|
|
|
|
- 后端实现: `FriendController.getBlockedList()`
|
|
|
|
|
|
- Android实现: `MyFriendsActivity.java` → `loadBlockedList()`
|
2025-12-29 15:12:12 +08:00
|
|
|
|
|
|
|
|
|
|
#### 6. 群组管理 (10个接口)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/front/groups/create # 创建群组
|
|
|
|
|
|
✅ GET /api/front/groups/list # 群组列表
|
|
|
|
|
|
✅ GET /api/front/groups/{groupId} # 群组详情
|
|
|
|
|
|
✅ PUT /api/front/groups/{groupId} # 更新群组信息
|
|
|
|
|
|
✅ DELETE /api/front/groups/{groupId} # 解散群组
|
|
|
|
|
|
✅ POST /api/front/groups/{groupId}/members # 添加成员
|
|
|
|
|
|
✅ DELETE /api/front/groups/{groupId}/members/{userId} # 移除成员
|
|
|
|
|
|
✅ GET /api/front/groups/{groupId}/members # 成员列表
|
|
|
|
|
|
✅ POST /api/front/groups/{groupId}/leave # 退出群组
|
|
|
|
|
|
✅ POST /api/front/groups/{groupId}/transfer # 转让群主
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 7. 群组消息 (4个接口)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/front/groups/{groupId}/messages # 发送群消息
|
|
|
|
|
|
✅ GET /api/front/groups/{groupId}/messages # 获取群消息历史
|
|
|
|
|
|
✅ DELETE /api/front/groups/{groupId}/messages/{messageId} # 撤回消息
|
|
|
|
|
|
✅ POST /api/front/groups/{groupId}/messages/{messageId}/forward # 转发消息
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### 8. 消息聊天 (12个接口)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/conversations # 会话列表
|
|
|
|
|
|
✅ GET /api/front/conversations/{id}/messages # 消息列表
|
|
|
|
|
|
✅ POST /api/front/conversations/{id}/messages # 发送消息
|
|
|
|
|
|
✅ POST /api/front/conversations/{id}/read # 标记已读
|
|
|
|
|
|
✅ DELETE /api/front/conversations/{id} # 删除会话
|
|
|
|
|
|
✅ GET /api/front/conversations/search # 搜索会话
|
|
|
|
|
|
... (更多消息相关接口)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 9. 消息表情回应 (4个接口) - ✅ 已完成对接 ✨ Android端已接入
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
2025-12-29 18:02:28 +08:00
|
|
|
|
✅ POST /api/front/messages/reactions/add # 添加表情回应 (✨已接入)
|
|
|
|
|
|
✅ DELETE /api/front/messages/reactions/remove # 移除表情回应 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/messages/{messageId}/reactions # 获取消息的所有表情回应 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/messages/{messageId}/reactions/users # 获取特定表情的用户列表 (✨已接入)
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **POST /api/front/messages/reactions/add** - 添加表情回应 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "messageId": "消息ID", "emoji": "表情符号" }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `MessageReactionController.addReaction()`
|
|
|
|
|
|
- Android实现: `ConversationActivity.java` → `addMessageReaction()`
|
|
|
|
|
|
- 说明: 用户可以对消息添加表情回应,支持多种表情符号
|
|
|
|
|
|
|
|
|
|
|
|
2. **DELETE /api/front/messages/reactions/remove** - 移除表情回应 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "messageId": "消息ID", "emoji": "表情符号" }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `MessageReactionController.removeReaction()`
|
|
|
|
|
|
- Android实现: `ConversationActivity.java` → `removeMessageReaction()`
|
|
|
|
|
|
- 说明: 用户可以移除自己添加的表情回应
|
|
|
|
|
|
|
|
|
|
|
|
3. **GET /api/front/messages/{messageId}/reactions** - 获取消息的所有表情回应 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `messageId` (路径参数)
|
|
|
|
|
|
- 响应数据: `[{ "emoji": "👍", "count": 5, "reactedByMe": true }, ...]`
|
|
|
|
|
|
- 后端实现: `MessageReactionController.getMessageReactions()`
|
|
|
|
|
|
- Android实现: `ConversationActivity.java` → `loadMessageReactions()`
|
|
|
|
|
|
- 说明: 获取某条消息的所有表情回应统计,包括表情、数量和当前用户是否已回应
|
|
|
|
|
|
|
|
|
|
|
|
4. **GET /api/front/messages/{messageId}/reactions/users** - 获取特定表情的用户列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `messageId` (路径参数), `emoji` (查询参数)
|
|
|
|
|
|
- 响应数据: `[{ "userId": 1, "username": "用户名", "avatarUrl": "头像URL" }, ...]`
|
|
|
|
|
|
- 后端实现: `MessageReactionController.getReactionUsers()`
|
|
|
|
|
|
- Android实现: `ApiService.getReactionUsers()`
|
|
|
|
|
|
- 说明: 获取对某条消息添加特定表情的所有用户列表
|
|
|
|
|
|
|
2025-12-29 15:12:12 +08:00
|
|
|
|
#### 10. 消息搜索 (3个接口)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/messages/search/conversations # 搜索会话
|
|
|
|
|
|
✅ GET /api/front/messages/search/messages # 搜索消息内容
|
|
|
|
|
|
✅ GET /api/front/messages/search/global # 全局搜索
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 11. 关注功能 (8个接口) - ✅ 已完成对接 ✨ Android端已接入
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/front/follow/follow # 关注 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/follow/unfollow # 取消关注 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/follow/following # 关注列表 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/follow/followers # 粉丝列表 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/follow/status/{userId} # 关注状态 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/follow/status/batch # 批量检查 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/follow/stats # 关注统计 (✨已接入)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **POST /api/front/follow/follow** - 关注用户 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "userId": 目标用户ID }`
|
|
|
|
|
|
- 响应数据: `{ "success": true, "message": "关注成功", "isFollowing": true }`
|
|
|
|
|
|
- 后端实现: `FollowController.follow()`
|
|
|
|
|
|
- Android实现: `UserProfileReadOnlyActivity.java` → `followUser()`
|
|
|
|
|
|
- 说明: 用户可以关注其他用户或主播,防止自己关注自己和重复关注
|
|
|
|
|
|
|
|
|
|
|
|
2. **POST /api/front/follow/unfollow** - 取消关注 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "userId": 目标用户ID }`
|
|
|
|
|
|
- 响应数据: `{ "success": true, "message": "取消关注成功", "isFollowing": false }`
|
|
|
|
|
|
- 后端实现: `FollowController.unfollow()`
|
|
|
|
|
|
- Android实现: `UserProfileReadOnlyActivity.java` → `unfollowUser()`
|
|
|
|
|
|
|
|
|
|
|
|
3. **GET /api/front/follow/status/{userId}** - 检查关注状态 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `userId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "isFollowing": true/false, "userId": 用户ID }`
|
|
|
|
|
|
- 后端实现: `FollowController.checkFollowStatus()`
|
|
|
|
|
|
- Android实现: `UserProfileReadOnlyActivity.java` → `checkFollowStatus()`
|
|
|
|
|
|
- 说明: 查询是否已关注某个用户
|
|
|
|
|
|
|
|
|
|
|
|
4. **POST /api/front/follow/status/batch** - 批量检查关注状态 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "userIds": [用户ID列表] }`
|
|
|
|
|
|
- 响应数据: `{ "statusMap": { "userId": true/false, ... } }`
|
|
|
|
|
|
- 后端实现: `FollowController.batchCheckFollowStatus()`
|
|
|
|
|
|
- Android实现: `ApiService.batchCheckFollowStatus()`
|
|
|
|
|
|
- 说明: 批量查询多个用户的关注状态
|
|
|
|
|
|
|
|
|
|
|
|
5. **GET /api/front/follow/following** - 获取关注列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 关注的用户列表,包含在线状态
|
|
|
|
|
|
- 后端实现: `FollowController.getFollowingList()`
|
|
|
|
|
|
- Android实现: `FollowingListActivity.java` → `loadFollowingList()`
|
|
|
|
|
|
- 模型类: 使用Map动态解析
|
|
|
|
|
|
- 说明: 查看我关注的所有用户,支持分页
|
|
|
|
|
|
|
|
|
|
|
|
6. **GET /api/front/follow/followers** - 获取粉丝列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 粉丝列表,包含在线状态和是否互相关注
|
|
|
|
|
|
- 后端实现: `FollowController.getFollowersList()`
|
|
|
|
|
|
- Android实现: `FansListActivity.java` → `loadFollowersList()`
|
|
|
|
|
|
- 模型类: 使用Map动态解析
|
|
|
|
|
|
- 说明: 查看关注我的所有用户,支持分页
|
|
|
|
|
|
|
|
|
|
|
|
7. **GET /api/front/follow/stats** - 获取关注统计 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `userId` (可选,不传则查询当前用户)
|
|
|
|
|
|
- 响应数据: `{ "followingCount": 关注数, "followersCount": 粉丝数 }`
|
|
|
|
|
|
- 后端实现: `FollowController.getFollowStats()`
|
|
|
|
|
|
- Android实现: `ProfileActivity.java` → `loadFollowStats()`
|
|
|
|
|
|
- 说明: 查看关注数和粉丝数统计
|
|
|
|
|
|
|
|
|
|
|
|
8. **POST /api/front/live/follow** - 直播间关注主播 (已在直播间模块实现)
|
|
|
|
|
|
- 请求参数: `{ "streamerId": 主播ID, "action": "follow/unfollow" }`
|
|
|
|
|
|
- 响应数据: `{ "success": true }`
|
|
|
|
|
|
- 后端实现: `LiveRoomController.followStreamer()`
|
|
|
|
|
|
- 说明: 在直播间内关注/取消关注主播
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 第三阶段:内容功能 (可选)
|
|
|
|
|
|
|
|
|
|
|
|
#### 12. 礼物管理 (需要后台配置)
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/admin/gift/list # 礼物列表(后台)
|
|
|
|
|
|
✅ POST /api/admin/gift/save # 添加礼物(后台)
|
|
|
|
|
|
✅ POST /api/admin/gift/update # 更新礼物(后台)
|
|
|
|
|
|
✅ POST /api/admin/gift/delete/{id} # 删除礼物(后台)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 13. 作品管理 (15个接口) - ✅ 已完成对接 ✨ Android端已接入
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/front/works/publish # 发布作品 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/works/detail/{worksId} # 作品详情 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/update # 编辑作品 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/delete/{worksId} # 删除作品 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/search # 搜索作品 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/works/user/{userId} # 用户作品列表 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/like/{worksId} # 点赞 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/unlike/{worksId} # 取消点赞 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/collect/{worksId} # 收藏 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/uncollect/{worksId} # 取消收藏 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/works/my/liked # 我的点赞列表 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/works/my/collected # 我的收藏列表 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/works/share/{worksId} # 分享作品 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/upload/work/video # 视频上传 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/upload/image # 图片上传 (✨已接入)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **POST /api/front/works/publish** - 发布作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "title": "标题", "description": "描述", "type": "IMAGE/VIDEO", "coverUrl": "封面URL", "videoUrl": "视频URL", "imageUrls": ["图片URL"] }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": 作品ID }`
|
|
|
|
|
|
- 后端实现: `WorksController.publishWorks()`
|
|
|
|
|
|
- Android实现: `PublishWorkActivity.java` → `publishWork()`
|
|
|
|
|
|
- 模型类: `WorksRequest.java`
|
|
|
|
|
|
- 说明: 需要先上传文件获取URL,再调用此接口发布
|
|
|
|
|
|
|
|
|
|
|
|
2. **GET /api/front/works/detail/{worksId}** - 获取作品详情 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: 作品完整信息,包含点赞收藏状态
|
|
|
|
|
|
- 后端实现: `WorksController.getWorksDetail()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `loadWorkDetail()`
|
|
|
|
|
|
- 模型类: `WorksResponse.java`
|
|
|
|
|
|
|
|
|
|
|
|
3. **POST /api/front/works/update** - 编辑作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "id": 作品ID, "title": "标题", "description": "描述" }`
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.updateWorks()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `editWork()`
|
|
|
|
|
|
- 说明: 仅作者可编辑
|
|
|
|
|
|
|
|
|
|
|
|
4. **POST /api/front/works/delete/{worksId}** - 删除作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.deleteWorks()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `deleteWork()`
|
|
|
|
|
|
- 说明: 仅作者可删除,逻辑删除
|
|
|
|
|
|
|
|
|
|
|
|
5. **POST /api/front/works/search** - 搜索作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "keyword": "关键词", "type": "IMAGE/VIDEO", "page": 1, "pageSize": 20 }`
|
|
|
|
|
|
- 响应数据: 分页作品列表
|
|
|
|
|
|
- 后端实现: `WorksController.searchWorks()`
|
|
|
|
|
|
- Android实现: `ApiService.searchWorks()`
|
|
|
|
|
|
- 模型类: `WorksSearchRequest.java`
|
|
|
|
|
|
|
|
|
|
|
|
6. **GET /api/front/works/user/{userId}** - 获取用户作品列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `userId` (路径参数), `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 分页作品列表
|
|
|
|
|
|
- 后端实现: `WorksController.getUserWorks()`
|
|
|
|
|
|
- Android实现: `ApiService.getUserWorks()`
|
|
|
|
|
|
|
|
|
|
|
|
7. **POST /api/front/works/like/{worksId}** - 点赞作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.likeWorks()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `toggleLike()`
|
|
|
|
|
|
- 说明: 需要登录,防止重复点赞
|
|
|
|
|
|
|
|
|
|
|
|
8. **POST /api/front/works/unlike/{worksId}** - 取消点赞 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.unlikeWorks()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `toggleLike()`
|
|
|
|
|
|
|
|
|
|
|
|
9. **POST /api/front/works/collect/{worksId}** - 收藏作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.collectWorks()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `toggleFavorite()`
|
|
|
|
|
|
- 说明: 需要登录,防止重复收藏
|
|
|
|
|
|
|
|
|
|
|
|
10. **POST /api/front/works/uncollect/{worksId}** - 取消收藏 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.uncollectWorks()`
|
|
|
|
|
|
- Android实现: `WorkDetailActivity.java` → `toggleFavorite()`
|
|
|
|
|
|
|
|
|
|
|
|
11. **GET /api/front/works/my/liked** - 我的点赞列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 分页作品列表
|
|
|
|
|
|
- 后端实现: `WorksController.getMyLikedWorks()`
|
|
|
|
|
|
- Android实现: `ApiService.getMyLikedWorks()`
|
|
|
|
|
|
- 说明: 需要登录
|
|
|
|
|
|
|
|
|
|
|
|
12. **GET /api/front/works/my/collected** - 我的收藏列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `page`, `pageSize`
|
|
|
|
|
|
- 响应数据: 分页作品列表
|
|
|
|
|
|
- 后端实现: `WorksController.getMyCollectedWorks()`
|
|
|
|
|
|
- Android实现: `ApiService.getMyCollectedWorks()`
|
|
|
|
|
|
- 说明: 需要登录
|
|
|
|
|
|
|
|
|
|
|
|
13. **POST /api/front/works/share/{worksId}** - 分享作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `worksId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true }`
|
|
|
|
|
|
- 后端实现: `WorksController.shareWorks()`
|
|
|
|
|
|
- Android实现: `ApiService.shareWork()`
|
|
|
|
|
|
- 说明: 增加分享次数统计
|
|
|
|
|
|
|
|
|
|
|
|
14. **POST /api/front/upload/work/video** - 视频上传 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `multipart/form-data` - `multipart`: 视频文件, `model`: "works", `pid`: 0
|
|
|
|
|
|
- 响应数据: `{ "url": "视频URL", "name": "文件名", "size": 文件大小 }`
|
|
|
|
|
|
- 后端实现: `UserUploadController.videoUpload()`
|
|
|
|
|
|
- Android实现: `PublishWorkActivity.java` → `uploadVideo()`
|
|
|
|
|
|
- 说明: 支持大文件上传
|
|
|
|
|
|
|
|
|
|
|
|
15. **POST /api/front/upload/image** - 图片上传 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `multipart/form-data` - `multipart`: 图片文件, `model`: "works", `pid`: 0
|
|
|
|
|
|
- 响应数据: `{ "url": "图片URL", "name": "文件名", "size": 文件大小 }`
|
|
|
|
|
|
- 后端实现: `UserUploadController.image()`
|
|
|
|
|
|
- Android实现: `PublishWorkActivity.java` → `uploadCoverImage()`
|
|
|
|
|
|
- 说明: 支持多种图片格式
|
2025-12-29 15:12:12 +08:00
|
|
|
|
|
|
|
|
|
|
#### 14. 评论功能 (8个接口) - ✅ 全部完成
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/front/works/comment/publish # 发布评论
|
|
|
|
|
|
✅ GET /api/front/works/comment/list/{worksId} # 评论列表
|
|
|
|
|
|
✅ POST /api/front/works/comment/like/{commentId} # 点赞评论
|
|
|
|
|
|
✅ POST /api/front/works/comment/delete/{commentId} # 删除评论
|
|
|
|
|
|
✅ GET /api/front/works/comment/reply/list/{commentId} # 回复列表
|
|
|
|
|
|
✅ POST /api/front/works/comment/unlike/{commentId} # 取消点赞
|
|
|
|
|
|
✅ GET /api/front/works/comment/detail/{commentId} # 评论详情
|
|
|
|
|
|
✅ GET /api/front/works/comment/check-liked/{commentId} # 检查点赞
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 15. 搜索功能 (9个接口) - ✅ 已完成对接 ✨ Android端已接入
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/search/users # 搜索用户 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/search/live-rooms # 搜索直播间 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/search/works # 搜索作品 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/search/all # 综合搜索 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/search/hot # 热门搜索 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/search/history # 搜索历史 (✨已接入)
|
|
|
|
|
|
✅ DELETE /api/front/search/history # 清除历史 (✨已接入)
|
|
|
|
|
|
✅ DELETE /api/front/search/history/{id} # 删除单条历史 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/search/suggestions # 搜索建议 (✨已接入)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **GET /api/front/search/users** - 搜索用户 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `keyword` (搜索关键词), `pageNum`, `pageSize`
|
|
|
|
|
|
- 响应数据: 用户列表,包含关注状态(如果已登录)
|
|
|
|
|
|
- 后端实现: `SearchController.searchUsers()`
|
|
|
|
|
|
- Android实现: `ApiService.searchUsersGlobal()`
|
|
|
|
|
|
- 说明: 支持按昵称或手机号搜索,未登录用户也可访问
|
|
|
|
|
|
|
|
|
|
|
|
2. **GET /api/front/search/live-rooms** - 搜索直播间 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `keyword` (搜索关键词), `categoryId` (可选), `isLive` (可选), `pageNum`, `pageSize`
|
|
|
|
|
|
- 响应数据: 直播间列表,包含直播状态、观看人数等
|
|
|
|
|
|
- 后端实现: `SearchController.searchLiveRooms()`
|
|
|
|
|
|
- Android实现: `SearchActivity.java` → `performSearch()`
|
|
|
|
|
|
- 说明: 支持按标题或主播名搜索,可按分类和直播状态筛选
|
|
|
|
|
|
|
|
|
|
|
|
3. **GET /api/front/search/works** - 搜索作品 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `keyword` (搜索关键词), `categoryId` (可选), `pageNum`, `pageSize`
|
|
|
|
|
|
- 响应数据: 作品列表,包含点赞收藏状态(如果已登录)
|
|
|
|
|
|
- 后端实现: `SearchController.searchWorks()`
|
|
|
|
|
|
- Android实现: `ApiService.searchWorksGlobal()`
|
|
|
|
|
|
- 说明: 支持按标题、描述、标签搜索
|
|
|
|
|
|
|
|
|
|
|
|
4. **GET /api/front/search/all** - 综合搜索 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `keyword` (搜索关键词)
|
|
|
|
|
|
- 响应数据: `{ "users": [], "liveRooms": [], "works": [] }`
|
|
|
|
|
|
- 后端实现: `SearchController.searchAll()`
|
|
|
|
|
|
- Android实现: `ApiService.searchAll()`
|
|
|
|
|
|
- 说明: 同时搜索用户、直播间、作品,返回各类型的前几条结果
|
|
|
|
|
|
|
|
|
|
|
|
5. **GET /api/front/search/hot** - 获取热门搜索 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `searchType` (0-全部 1-用户 2-直播间 3-作品), `limit`
|
|
|
|
|
|
- 响应数据: `[{ "keyword": "关键词", "searchCount": 次数 }]`
|
|
|
|
|
|
- 后端实现: `SearchController.getHotSearch()`
|
|
|
|
|
|
- Android实现: `SearchActivity.java` → `loadHotSearch()`
|
|
|
|
|
|
- 说明: 获取热门搜索关键词列表,支持按类型筛选
|
|
|
|
|
|
|
|
|
|
|
|
6. **GET /api/front/search/history** - 获取搜索历史 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `searchType` (可选), `limit`
|
|
|
|
|
|
- 响应数据: `[{ "id": ID, "keyword": "关键词", "searchType": 类型, "createTime": "时间" }]`
|
|
|
|
|
|
- 后端实现: `SearchController.getSearchHistory()`
|
|
|
|
|
|
- Android实现: `ApiService.getSearchHistory()`
|
|
|
|
|
|
- 说明: 获取用户的搜索历史记录,需要登录
|
|
|
|
|
|
|
|
|
|
|
|
7. **DELETE /api/front/search/history** - 清除搜索历史 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `searchType` (可选,不传则清除全部)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "搜索历史已清除" }`
|
|
|
|
|
|
- 后端实现: `SearchController.clearSearchHistory()`
|
|
|
|
|
|
- Android实现: `ApiService.clearSearchHistory()`
|
|
|
|
|
|
- 说明: 清除全部或指定类型的搜索历史,需要登录
|
|
|
|
|
|
|
|
|
|
|
|
8. **DELETE /api/front/search/history/{historyId}** - 删除单条搜索历史 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `historyId` (路径参数)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "msg": "删除成功" }`
|
|
|
|
|
|
- 后端实现: `SearchController.deleteSearchHistory()`
|
|
|
|
|
|
- Android实现: `ApiService.deleteSearchHistory()`
|
|
|
|
|
|
- 说明: 删除指定的搜索历史记录,需要登录
|
|
|
|
|
|
|
|
|
|
|
|
9. **GET /api/front/search/suggestions** - 获取搜索建议 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `keyword` (关键词前缀), `searchType` (可选), `limit`
|
|
|
|
|
|
- 响应数据: `["建议1", "建议2", ...]`
|
|
|
|
|
|
- 后端实现: `SearchController.getSearchSuggestions()`
|
|
|
|
|
|
- Android实现: `SearchActivity.java` → `loadSearchSuggestions()`
|
|
|
|
|
|
- 说明: 根据用户输入提供自动补全建议,需要登录
|
|
|
|
|
|
|
|
|
|
|
|
#### 16. 通知推送 (9个接口) - ✅ 全部完成
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/search/users # 搜索用户
|
|
|
|
|
|
✅ GET /api/front/search/live-rooms # 搜索直播间
|
|
|
|
|
|
✅ GET /api/front/search/works # 搜索作品
|
|
|
|
|
|
✅ GET /api/front/search/all # 综合搜索
|
|
|
|
|
|
✅ GET /api/front/search/hot # 热门搜索
|
|
|
|
|
|
✅ GET /api/front/search/history # 搜索历史
|
|
|
|
|
|
✅ DELETE /api/front/search/history # 清除历史
|
|
|
|
|
|
✅ DELETE /api/front/search/history/{id} # 删除单条历史
|
|
|
|
|
|
✅ GET /api/front/search/suggestions # 搜索建议
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 第四阶段:增值功能 (可选)
|
|
|
|
|
|
|
|
|
|
|
|
#### 16. 通知推送 (9个接口) - ✅ 全部完成
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/notification/list # 通知列表
|
|
|
|
|
|
✅ GET /api/front/notification/unread-count # 未读数量
|
|
|
|
|
|
✅ POST /api/front/notification/mark-read/{id} # 标记已读
|
|
|
|
|
|
✅ POST /api/front/notification/mark-all-read # 全部已读
|
|
|
|
|
|
✅ POST /api/front/notification/fcm/register # 注册FCM
|
|
|
|
|
|
✅ POST /api/front/notification/fcm/remove # 移除FCM
|
|
|
|
|
|
✅ DELETE /api/front/notification/{id} # 删除通知
|
|
|
|
|
|
✅ DELETE /api/front/notification/clear-all # 清空通知
|
|
|
|
|
|
✅ GET /api/front/notification/unread-count-by-type # 按类型统计
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-29 18:02:28 +08:00
|
|
|
|
#### 17. 支付集成 (4个接口) - ✅ 已完成对接 ✨ Android端已接入
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ GET /api/front/gift/recharge/options # 获取充值选项 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/gift/recharge/create # 创建充值订单 (✨已接入)
|
|
|
|
|
|
✅ POST /api/front/pay/payment # 订单支付 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/pay/alipay/queryPayResult # 查询支付结果 (✨已接入)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **GET /api/front/gift/recharge/options** - 获取充值选项列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: 无
|
|
|
|
|
|
- 响应数据: `[{ "id": "选项ID", "coinAmount": 金币数量, "price": 价格, "discountLabel": "优惠标签" }]`
|
|
|
|
|
|
- 后端实现: `GiftController.getRechargeOptions()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `loadRechargeOptions()`
|
|
|
|
|
|
- 模型类: `RechargeOptionResponse.java`
|
|
|
|
|
|
- 说明: 获取所有启用的充值选项,包含金币数量、价格和优惠标签
|
|
|
|
|
|
|
|
|
|
|
|
2. **POST /api/front/gift/recharge/create** - 创建充值订单 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "optionId": 选项ID, "coinAmount": 金币数量, "price": 价格 }`
|
|
|
|
|
|
- 响应数据: `{ "orderId": "订单ID", "paymentUrl": "支付URL" }`
|
|
|
|
|
|
- 后端实现: `GiftController.createRecharge()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `createRechargeOrder()`
|
|
|
|
|
|
- 模型类: `CreateRechargeRequest.java`, `CreateRechargeResponse.java`
|
|
|
|
|
|
- 说明: 创建充值订单,返回订单ID和支付URL,用于后续支付
|
|
|
|
|
|
|
|
|
|
|
|
3. **POST /api/front/pay/payment** - 订单支付 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `{ "orderNo": "订单号", "payType": "支付类型", "payChannel": "支付渠道", "from": "android" }`
|
|
|
|
|
|
- 响应数据: `{ "status": true/false, "payType": "支付类型", "orderNo": "订单号", "jsConfig": {...} }`
|
|
|
|
|
|
- 后端实现: `PayController.payment()`
|
|
|
|
|
|
- Android实现: `RoomDetailActivity.java` → `processPayment()`
|
|
|
|
|
|
- 模型类: `OrderPayRequest.java`, `OrderPayResultResponse.java`
|
|
|
|
|
|
- 说明: 发起支付,支持微信支付(weixin/weixinAppAndroid)、支付宝(alipay/appAliPay)、余额支付(yue)
|
|
|
|
|
|
- 注意: 需要集成微信支付SDK和支付宝SDK才能完成实际支付
|
|
|
|
|
|
|
|
|
|
|
|
4. **GET /api/front/pay/alipay/queryPayResult** - 查询支付宝支付结果 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `orderNo` (订单号)
|
|
|
|
|
|
- 响应数据: `{ "code": 200, "data": true/false }`
|
|
|
|
|
|
- 后端实现: `PayController.queryAliPayResult()`
|
|
|
|
|
|
- Android实现: `ApiService.queryAliPayResult()`
|
|
|
|
|
|
- 说明: 查询支付宝支付结果,用于确认支付是否成功
|
|
|
|
|
|
|
|
|
|
|
|
**支付流程说明**:
|
|
|
|
|
|
1. 用户点击充值按钮,显示充值对话框
|
|
|
|
|
|
2. 调用 `getRechargeOptions()` 获取充值选项列表
|
|
|
|
|
|
3. 用户选择充值金额,点击确认
|
|
|
|
|
|
4. 调用 `createRecharge()` 创建充值订单,获取订单ID
|
|
|
|
|
|
5. 用户选择支付方式(支付宝/微信/余额)
|
|
|
|
|
|
6. 调用 `payment()` 发起支付,获取支付参数
|
|
|
|
|
|
7. 调用支付SDK完成支付(需要集成微信/支付宝SDK)
|
|
|
|
|
|
8. 支付完成后调用 `queryPayResult()` 查询支付结果
|
|
|
|
|
|
9. 支付成功后更新用户金币余额
|
|
|
|
|
|
|
|
|
|
|
|
**待完成工作**:
|
|
|
|
|
|
- 集成微信支付SDK(需要微信开放平台账号和配置)
|
|
|
|
|
|
- 集成支付宝SDK(需要支付宝开放平台账号和配置)
|
|
|
|
|
|
- 实现支付结果回调处理
|
|
|
|
|
|
- 实现支付成功后的余额更新逻辑
|
2025-12-29 15:12:12 +08:00
|
|
|
|
|
|
|
|
|
|
#### 18. 文件上传 (5个接口) - ✅ 全部完成
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ POST /api/upload/image # 图片上传
|
|
|
|
|
|
✅ POST /api/upload/file # 文件上传
|
|
|
|
|
|
✅ POST /api/upload/work/video # 视频上传 (✨新增 2024-12-29)
|
|
|
|
|
|
✅ POST /api/upload/chat/voice # 语音上传 (✨新增 2024-12-29)
|
|
|
|
|
|
✅ POST /api/front/user/upload/image # 用户头像上传
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-30 09:29:30 +08:00
|
|
|
|
#### 19. 分类管理 (7个接口) - ✅ 全部完成 ✨ Android端已接入
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
2025-12-30 09:29:30 +08:00
|
|
|
|
✅ GET /api/front/category/live-room # 直播间分类 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/category/work # 作品分类 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/category/list # 分类列表 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/category/{id} # 分类详情 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/category/statistics # 分类统计 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/category/hot # 热门分类 (✨已接入)
|
|
|
|
|
|
✅ GET /api/front/category/{parentId}/children # 子分类 (✨已接入)
|
2025-12-29 15:12:12 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-12-30 09:29:30 +08:00
|
|
|
|
**接口详细说明**:
|
|
|
|
|
|
|
|
|
|
|
|
1. **GET /api/front/category/live-room** - 获取直播间分类列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: 无
|
|
|
|
|
|
- 响应数据: `[{ "id": 分类ID, "name": "分类名称", "pid": 父分类ID, "sort": 排序, "extra": "扩展字段" }]`
|
|
|
|
|
|
- 后端实现: `CategoryController.getLiveRoomCategories()`
|
|
|
|
|
|
- Android实现: `MainActivity.java` → `loadCategoriesFromBackend()` → `ApiService.getLiveRoomCategories()`
|
|
|
|
|
|
- 模型类: `CategoryResponse.java`
|
|
|
|
|
|
- 说明: 获取所有启用的直播间分类,用于显示分类标签页
|
|
|
|
|
|
|
|
|
|
|
|
2. **GET /api/front/category/work** - 获取作品分类列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: 无
|
|
|
|
|
|
- 响应数据: `[{ "id": 分类ID, "name": "分类名称", "pid": 父分类ID, "sort": 排序, "extra": "扩展字段" }]`
|
|
|
|
|
|
- 后端实现: `CategoryController.getWorkCategories()`
|
|
|
|
|
|
- Android实现: `CategoryFilterManager.java` → `loadCategories()` → `ApiService.getWorkCategories()`
|
|
|
|
|
|
- 模型类: `CategoryResponse.java`
|
|
|
|
|
|
- 说明: 获取所有启用的作品分类
|
|
|
|
|
|
|
|
|
|
|
|
3. **GET /api/front/category/list** - 获取指定类型的分类列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `type` (分类类型: 1=商品, 3=文章, 8=直播间, 9=作品)
|
|
|
|
|
|
- 响应数据: `[{ "id": 分类ID, "name": "分类名称", "pid": 父分类ID, "sort": 排序, "extra": "扩展字段" }]`
|
|
|
|
|
|
- 后端实现: `CategoryController.getCategories()`
|
|
|
|
|
|
- Android实现: `CategoryFilterManager.java` → `loadCategories()` → `ApiService.getCategories()`
|
|
|
|
|
|
- 模型类: `CategoryResponse.java`
|
|
|
|
|
|
- 说明: 通用分类查询接口,支持多种类型
|
|
|
|
|
|
|
|
|
|
|
|
4. **GET /api/front/category/{id}** - 获取分类详情 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `id` (分类ID,路径参数)
|
|
|
|
|
|
- 响应数据: `{ "id": 分类ID, "name": "分类名称", "pid": 父分类ID, "sort": 排序, "extra": "扩展字段" }`
|
|
|
|
|
|
- 后端实现: `CategoryController.getCategoryById()`
|
|
|
|
|
|
- Android实现: `ApiService.getCategoryById()`
|
|
|
|
|
|
- 模型类: `CategoryResponse.java`
|
|
|
|
|
|
- 说明: 获取单个分类的详细信息
|
|
|
|
|
|
|
|
|
|
|
|
5. **GET /api/front/category/statistics** - 获取分类统计信息 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `type` (分类类型: 8=直播间, 9=作品)
|
|
|
|
|
|
- 响应数据: `[{ "categoryId": 分类ID, "categoryName": "分类名称", "count": 数量, ... }]`
|
|
|
|
|
|
- 后端实现: `CategoryController.getCategoryStatistics()`
|
|
|
|
|
|
- Android实现: `CategoryManagementActivity.java` → `loadCategoryStatistics()` → `ApiService.getCategoryStatistics()`
|
|
|
|
|
|
- 说明: 获取各分类下的内容数量统计
|
|
|
|
|
|
|
|
|
|
|
|
6. **GET /api/front/category/hot** - 获取热门分类 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `type` (分类类型: 8=直播间, 9=作品), `limit` (返回数量限制,默认10)
|
|
|
|
|
|
- 响应数据: `[{ "id": 分类ID, "name": "分类名称", "pid": 父分类ID, "sort": 排序, "extra": "扩展字段" }]`
|
|
|
|
|
|
- 后端实现: `CategoryController.getHotCategories()`
|
|
|
|
|
|
- Android实现: `CategoryFilterManager.java` → `loadHotCategories()` → `ApiService.getHotCategories()`
|
|
|
|
|
|
- 模型类: `CategoryResponse.java`
|
|
|
|
|
|
- 说明: 获取热门分类列表,按热度排序
|
|
|
|
|
|
|
|
|
|
|
|
7. **GET /api/front/category/{parentId}/children** - 获取子分类列表 ✨ Android端已接入
|
|
|
|
|
|
- 请求参数: `parentId` (父分类ID,路径参数), `recursive` (是否递归获取所有子分类,默认false)
|
|
|
|
|
|
- 响应数据: `[{ "id": 分类ID, "name": "分类名称", "pid": 父分类ID, "sort": 排序, "extra": "扩展字段" }]`
|
|
|
|
|
|
- 后端实现: `CategoryController.getChildCategories()`
|
|
|
|
|
|
- Android实现: `ApiService.getChildCategories()`
|
|
|
|
|
|
- 模型类: `CategoryResponse.java`
|
|
|
|
|
|
- 说明: 获取指定父分类下的子分类,支持递归查询
|
|
|
|
|
|
|
|
|
|
|
|
**Android端实现说明**:
|
|
|
|
|
|
- 在 `MainActivity` 中,启动时自动从后端加载直播间分类列表
|
|
|
|
|
|
- 使用 `CategoryFilterManager` 管理分类数据的加载和缓存
|
|
|
|
|
|
- 创建了 `CategoryManagementActivity` 用于测试和展示分类管理功能
|
|
|
|
|
|
- 分类数据加载失败时,自动降级使用默认分类(推荐、游戏、才艺、户外、音乐、美食、聊天)
|
|
|
|
|
|
- 支持分类筛选功能,用户可以按分类查看直播间列表
|
|
|
|
|
|
|
2025-12-29 15:12:12 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
### 技术实现
|
|
|
|
|
|
|
|
|
|
|
|
- ✅ 使用JPA自动建表
|
|
|
|
|
|
- ✅ 支持逻辑删除
|
|
|
|
|
|
- ✅ 事务保证数据一致性
|
|
|
|
|
|
- ✅ 线程安全的并发控制
|
|
|
|
|
|
- ✅ 完整的错误处理
|
|
|
|
|
|
- ✅ 预留扩展字段
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📝 对接建议
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 开发顺序
|
|
|
|
|
|
```
|
|
|
|
|
|
✅ 第1周: 用户系统 + 直播间列表 (已完成)
|
|
|
|
|
|
✅ 第2周: 直播间详情 + WebSocket连接 (已完成)
|
|
|
|
|
|
✅ 第3周: 消息聊天 + 社交功能 (已完成)
|
|
|
|
|
|
✅ 第4周: 作品管理 + 评论功能 (已完成)
|
|
|
|
|
|
✅ 第5周: 搜索 + 通知 + 支付 (已完成)
|
|
|
|
|
|
✨ 第6周: 视频上传 + 语音上传 + 礼物系统 (刚完成 2024-12-29)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 技术要点
|
|
|
|
|
|
|
|
|
|
|
|
#### Token管理
|
|
|
|
|
|
- 登录后保存token到SharedPreferences
|
|
|
|
|
|
- 所有请求自动添加Authorization头: `Bearer {token}`
|
|
|
|
|
|
- Token过期自动跳转登录页
|
|
|
|
|
|
- 支持Token刷新机制
|
|
|
|
|
|
|
|
|
|
|
|
#### 网络请求
|
|
|
|
|
|
- 使用Retrofit + OkHttp
|
|
|
|
|
|
- 统一的响应拦截器处理错误码
|
|
|
|
|
|
- 支持请求重试机制
|
|
|
|
|
|
- 文件上传使用multipart/form-data
|
|
|
|
|
|
|
|
|
|
|
|
#### WebSocket
|
|
|
|
|
|
- 使用OkHttp WebSocket
|
|
|
|
|
|
- 实现心跳保活(25秒/次)
|
|
|
|
|
|
- 断线自动重连(指数退避)
|
|
|
|
|
|
- 消息队列缓存
|
|
|
|
|
|
- 连接地址: `ws://localhost:8080/ws/live/{roomId}?clientId={clientId}`
|
|
|
|
|
|
|
|
|
|
|
|
#### 图片/视频加载
|
|
|
|
|
|
- 使用Glide加载图片和视频缩略图
|
|
|
|
|
|
- 支持占位图和错误图
|
|
|
|
|
|
- 图片缓存策略
|
|
|
|
|
|
- 视频播放使用ExoPlayer
|
|
|
|
|
|
|
|
|
|
|
|
#### 文件上传
|
|
|
|
|
|
- 图片上传: 最大5MB
|
|
|
|
|
|
- 视频上传: 最大500MB,建议使用分片上传
|
|
|
|
|
|
- 语音上传: 最大10MB
|
|
|
|
|
|
- 支持上传进度回调
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🔗 相关文档
|
|
|
|
|
|
|
|
|
|
|
|
### 在线文档
|
|
|
|
|
|
- **Swagger在线文档**: http://localhost:8080/swagger-ui.html
|
|
|
|
|
|
- **API JSON**: http://localhost:8080/v2/api-docs
|
|
|
|
|
|
|
|
|
|
|
|
### 测试工具
|
|
|
|
|
|
- **Windows测试脚本**: `Zhibo/zhibo-h/test-new-apis.bat`
|
|
|
|
|
|
- **Linux/Mac测试脚本**: `Zhibo/zhibo-h/test-new-apis.sh`
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📊 接口统计总览
|
|
|
|
|
|
|
|
|
|
|
|
### 按模块统计
|
|
|
|
|
|
|
|
|
|
|
|
| 模块 | 接口数 | 完成度 | 最后更新 |
|
|
|
|
|
|
|------|--------|--------|---------|
|
|
|
|
|
|
| 用户认证 | 3 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 用户资料 | 4 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 直播间管理 | 10 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| 直播间弹幕 | 2 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| WebSocket通信 | 2 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| 好友管理 | 9 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 群组管理 | 10 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 群组消息 | 4 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 消息聊天 | 12 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 消息表情回应 | 4 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 消息搜索 | 3 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 关注功能 | 8 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 礼物管理 | 4 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| 作品管理 | 15 | ✅ 100% | 2024-12-26 |
|
|
|
|
|
|
| 评论功能 | 8 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| 搜索功能 | 9 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| 通知推送 | 9 | ✅ 100% | 2024-12-29 |
|
2025-12-29 18:02:28 +08:00
|
|
|
|
| 支付集成 | 4 | ✅ 100% | 2024-12-29 ✨ Android端已接入 |
|
2025-12-29 15:12:12 +08:00
|
|
|
|
| 文件上传 | 5 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| 分类管理 | 7 | ✅ 100% | 2024-12-29 |
|
|
|
|
|
|
| **总计** | **131** | **✅ 100%** | **2024-12-29** |
|
|
|
|
|
|
|
|
|
|
|
|
### 按优先级统计
|
|
|
|
|
|
|
|
|
|
|
|
| 优先级 | 接口数 | 完成度 | 说明 |
|
|
|
|
|
|
|--------|--------|--------|------|
|
|
|
|
|
|
| 🔴 高优先级 | 44 | ✅ 100% | 用户、直播间、弹幕、WebSocket |
|
|
|
|
|
|
| 🟡 中优先级 | 63 | ✅ 100% | 好友、群组、消息、社交、作品、评论 |
|
|
|
|
|
|
| 🟢 低优先级 | 24 | ✅ 100% | 搜索、通知、支付 |
|
|
|
|
|
|
| **总计** | **131** | **✅ 100%** | **全部完成** |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 Android端开发建议
|
|
|
|
|
|
|
|
|
|
|
|
### 必须实现的功能
|
|
|
|
|
|
|
|
|
|
|
|
1. **用户系统** (7个接口)
|
|
|
|
|
|
- 登录/注册/验证码
|
|
|
|
|
|
- 用户信息获取和更新
|
|
|
|
|
|
- 头像上传
|
|
|
|
|
|
|
|
|
|
|
|
2. **直播间核心** (10个接口)
|
|
|
|
|
|
- 直播间列表和详情
|
|
|
|
|
|
- 创建和管理直播间
|
|
|
|
|
|
- WebSocket实时连接
|
|
|
|
|
|
- 在线人数统计
|
|
|
|
|
|
- 观众列表
|
|
|
|
|
|
- 礼物赠送
|
|
|
|
|
|
|
|
|
|
|
|
3. **直播间弹幕** (2个接口)
|
|
|
|
|
|
- 获取历史弹幕
|
|
|
|
|
|
- 发送弹幕消息
|
|
|
|
|
|
|
|
|
|
|
|
4. **WebSocket通信** (2个连接)
|
|
|
|
|
|
- 在线人数统计
|
|
|
|
|
|
- 实时弹幕消息
|
|
|
|
|
|
|
|
|
|
|
|
### 推荐实现的功能
|
|
|
|
|
|
|
|
|
|
|
|
5. **好友管理** (9个接口)
|
|
|
|
|
|
- 好友申请和接受
|
|
|
|
|
|
- 好友列表
|
|
|
|
|
|
- 拉黑和删除
|
|
|
|
|
|
|
|
|
|
|
|
6. **群组管理** (10个接口)
|
|
|
|
|
|
- 创建和管理群组
|
|
|
|
|
|
- 成员管理
|
|
|
|
|
|
- 群主转让
|
|
|
|
|
|
|
|
|
|
|
|
7. **群组消息** (4个接口)
|
|
|
|
|
|
- 发送群消息
|
|
|
|
|
|
- 消息历史
|
|
|
|
|
|
- 撤回和转发
|
|
|
|
|
|
|
|
|
|
|
|
8. **消息聊天** (12个接口)
|
|
|
|
|
|
- 私信会话
|
|
|
|
|
|
- 消息发送和接收
|
|
|
|
|
|
- 已读状态
|
|
|
|
|
|
|
|
|
|
|
|
9. **消息表情回应** (4个接口)
|
|
|
|
|
|
- 添加表情回应
|
|
|
|
|
|
- 移除表情回应
|
|
|
|
|
|
- 查询表情列表
|
|
|
|
|
|
|
|
|
|
|
|
10. **消息搜索** (3个接口)
|
|
|
|
|
|
- 搜索会话
|
|
|
|
|
|
- 搜索消息内容
|
|
|
|
|
|
- 全局搜索
|
|
|
|
|
|
|
|
|
|
|
|
11. **关注功能** (8个接口)
|
|
|
|
|
|
- 关注/取消关注
|
|
|
|
|
|
- 粉丝列表
|
|
|
|
|
|
- 关注状态查询
|
|
|
|
|
|
|
|
|
|
|
|
12. **作品系统** (15个接口)
|
|
|
|
|
|
- 作品发布和管理
|
|
|
|
|
|
- 点赞和收藏
|
|
|
|
|
|
- 作品列表
|
|
|
|
|
|
|
|
|
|
|
|
13. **评论互动** (8个接口)
|
|
|
|
|
|
- 评论发布和回复
|
|
|
|
|
|
- 评论点赞
|
|
|
|
|
|
|
|
|
|
|
|
### 可选实现的功能
|
|
|
|
|
|
|
|
|
|
|
|
14. **礼物管理** (4个接口)
|
|
|
|
|
|
15. **搜索功能** (9个接口)
|
|
|
|
|
|
16. **通知推送** (9个接口)
|
|
|
|
|
|
17. **支付集成** (4个接口)
|
|
|
|
|
|
18. **文件上传** (5个接口)
|
|
|
|
|
|
19. **分类管理** (7个接口)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**总计**: 131个接口,全部完成 ✅
|