You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.6 KiB
1.6 KiB
站内消息接口
消息撤回
POST /conversations/{conversationId}/messages/{messageId}/recall
当前登录用户从 JWT subject 解析。请求无 body,只有会话成员中的原发送者可在消息创建后两分钟内撤回;截止瞬间仍允许撤回。会话不存在返回 404/8305,跨会话、非成员或非发送者返回 403/2002,窗口结束返回 409/8307,并发状态冲突返回 409/8308。
成功响应为白名单 MessageResponse:
{
"code": 200,
"data": {
"id": 81,
"conversationId": 12,
"senderUserId": 7,
"content": "消息已撤回",
"status": "RECALLED",
"recalledAt": "2026-09-10T10:02:00",
"createdAt": "2026-09-10T10:00:00",
"isRead": false
}
}
撤回会在同一事务中将数据库正文覆盖为固定占位文本 消息已撤回,并将状态从 SENT 更新为 RECALLED。重复请求幂等返回当前撤回结果,不重复写成功审计。原正文不写入审计、异常、缓存、消息队列或历史表。
TALENT_INVITATION 会话继续使用 senderScope=CURRENT_USER 或 OTHER_PARTICIPANT,不返回对方的 senderUserId;DIRECT 会话保留既有 senderUserId 兼容字段。撤回消息仍保留在时间线中,但不计入未读数,也不会因标记已读新增 message_reads。
既有消息接口兼容
原有会话列表、会话详情、发送消息、消息列表和标记已读接口路径不变。消息列表和发送响应增加 status,撤回消息的 content 统一为占位文本,其他既有字段语义保持不变。