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

站内消息接口

消息撤回

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 统一为占位文本,其他既有字段语义保持不变。