5.9 KiB
5.9 KiB
私聊会话模块
模块概述
私聊会话模块负责处理用户之间的一对一聊天功能,包括会话管理、消息发送、消息历史等。
相关文件
MessagesActivity.java- 会话列表界面ConversationActivity.java- 聊天界面ConversationsAdapter.java- 会话列表适配器ConversationMessagesAdapter.java- 消息列表适配器ConversationResponse.java- 会话响应模型PrivateMessageResponse.java- 私聊消息响应模型
接口列表
1. 获取会话列表
接口地址: GET /api/front/conversations
请求参数: 无
返回数据:
{
"code": 200,
"msg": "success",
"data": [
{
"id": "long", // 会话ID
"otherUserId": "integer", // 对方用户ID
"otherUserNickname": "string", // 对方昵称
"otherUserAvatar": "string", // 对方头像URL
"lastMessage": "string", // 最后一条消息内容
"lastMessageTime": "long", // 最后消息时间戳
"unreadCount": "integer", // 未读消息数
"isOnline": "boolean" // 对方是否在线
}
]
}
2. 搜索会话
接口地址: GET /api/front/conversations/search
请求参数:
keyword: string // 搜索关键词(昵称)
返回数据: 同获取会话列表
3. 获取或创建会话
接口地址: POST /api/front/conversations/with/{otherUserId}
路径参数:
otherUserId: integer // 对方用户ID
请求参数: 无
返回数据:
{
"code": 200,
"msg": "success",
"data": {
"conversationId": "long", // 会话ID
"created": "boolean" // 是否新创建
}
}
4. 标记会话已读
接口地址: POST /api/front/conversations/{id}/read
路径参数:
id: long // 会话ID
请求参数: 无
返回数据:
{
"code": 200,
"msg": "success",
"data": true
}
5. 删除会话
接口地址: DELETE /api/front/conversations/{id}
路径参数:
id: long // 会话ID
请求参数: 无
返回数据:
{
"code": 200,
"msg": "删除成功",
"data": true
}
6. 获取会话消息列表
接口地址: GET /api/front/conversations/{id}/messages
路径参数:
id: long // 会话ID
请求参数:
page: integer // 页码,默认1
pageSize: integer // 每页数量,默认20
返回数据:
{
"code": 200,
"msg": "success",
"data": [
{
"id": "long", // 消息ID
"conversationId": "long", // 会话ID
"senderId": "integer", // 发送者ID
"senderNickname": "string",// 发送者昵称
"senderAvatar": "string", // 发送者头像
"content": "string", // 消息内容
"messageType": "string", // 消息类型: text/image/voice
"mediaUrl": "string", // 媒体文件URL(图片/语音)
"duration": "integer", // 语音时长(秒)
"isRead": "boolean", // 是否已读
"createTime": "long" // 发送时间戳
}
]
}
7. 发送私聊消息
接口地址: POST /api/front/conversations/{id}/messages
路径参数:
id: long // 会话ID
请求参数 (SendMessageRequest):
{
"content": "string", // 消息内容
"messageType": "string", // 消息类型: text/image/voice
"mediaUrl": "string", // 媒体文件URL(可选)
"duration": "integer" // 语音时长(可选)
}
返回数据 (PrivateMessageResponse):
{
"code": 200,
"msg": "发送成功",
"data": {
"id": "long", // 消息ID
"conversationId": "long", // 会话ID
"senderId": "integer", // 发送者ID
"senderNickname": "string",// 发送者昵称
"senderAvatar": "string", // 发送者头像
"content": "string", // 消息内容
"messageType": "string", // 消息类型
"mediaUrl": "string", // 媒体文件URL
"duration": "integer", // 语音时长
"isRead": "boolean", // 是否已读
"createTime": "long" // 发送时间戳
}
}
8. 删除消息
接口地址: DELETE /api/front/conversations/messages/{id}
路径参数:
id: long // 消息ID
请求参数: 无
返回数据:
{
"code": 200,
"msg": "删除成功",
"data": true
}
功能说明
会话管理
- 会话列表按最后消息时间倒序排列
- 显示未读消息数量
- 支持搜索会话(按对方昵称)
- 支持删除会话
消息发送
- 支持文本消息
- 支持图片消息(需先上传图片获取URL)
- 支持语音消息(需先上传语音获取URL)
- 消息实时推送(通过WebSocket)
消息状态
- 已读/未读状态
- 消息发送时间
- 消息类型标识
消息类型说明
| 类型 | 值 | 说明 |
|---|---|---|
| 文本消息 | text | 普通文字消息 |
| 图片消息 | image | 图片消息,需要mediaUrl |
| 语音消息 | voice | 语音消息,需要mediaUrl和duration |
使用流程
发送文本消息
- 进入会话界面
- 输入文本内容
- 调用发送消息接口
- 消息通过WebSocket实时推送给对方
发送图片消息
- 选择图片
- 调用文件上传接口获取URL
- 调用发送消息接口,messageType为image,mediaUrl为上传返回的URL
- 消息通过WebSocket实时推送给对方
发送语音消息
- 录制语音
- 调用文件上传接口获取URL
- 调用发送消息接口,messageType为voice,mediaUrl为上传返回的URL,duration为语音时长
- 消息通过WebSocket实时推送给对方
注意事项
- 所有接口都需要登录认证
- 图片和语音消息需要先上传文件获取URL
- 消息列表支持分页加载
- 建议配合WebSocket实现实时消息推送
- 删除会话不会删除消息记录,只是隐藏会话