4.2 KiB
4.2 KiB
站内信消息分类口径修正:订单消息=聊天会话 / 普通消息=系统通知(前端对接)
模块:消息中心 · 站内信(管理后台) 类型:接口语义修正(messageType 派生口径变更)+ 前端 tab 装配说明 关联:工单 #4535 · 后端 PR #4537(已合 dev-v3 + 测试服实测通过) 日期:2026-06-28
一、背景:原分类口径错了
消息中心三个 tab 全部 / 订单消息 / 普通消息 分类全乱。根因:后端拼了两套数据源——收件箱(/admin/message/list,单条消息粒度)+ 会话列表(/admin/message/chat/conversations,会话粒度),且原「订单消息」是按 bizType 派生(挂订单/房务/退款/车务就算订单消息),把「核房记录已更新」这类系统通知也误标成了订单消息。
产品口径(已确认):
- 订单消息 = 实时聊天会话(房务/定制师之间围绕订单的对话)
- 普通消息 = 所有系统通知(核房记录/超时提醒等,挂着订单的也算普通)
- 全部 = 会话 + 通知 按时间合并
二、后端改了什么
1. GET /admin/message/list 的 messageType 语义变更(按 kind 派生)
messageType / messageTypeLabel 返回字段、以及 messageType 入参过滤,全部改为按消息特性 kind 派生(不再看 bizType):
kind |
messageType |
messageTypeLabel |
|---|---|---|
CHAT(实时聊天) |
ORDER |
订单消息 |
NOTIFY(系统通知) |
NORMAL |
普通消息 |
⚠️ 行为变化:核房记录、询单超时等系统通知(
kind=NOTIFY)的messageType由原来的ORDER(订单消息)改为NORMAL(普通消息)。测试服已实测:收件箱里系统通知现在恒返messageType=NORMAL / messageTypeLabel=普通消息。
入参 messageType 过滤同步改为按 kind:
messageType=NORMAL→ 返回所有系统通知(kind=NOTIFY)messageType=ORDER→ 返回聊天消息(kind=CHAT,单条粒度)- 不传 → 系统通知 + 聊天混排(不变)
2. GET /admin/message/chat/conversations 过滤空占位会话
会话列表不再返回「没有任何消息的空占位会话」(如抢单前 pending 会话:对方为空、无最近消息、无时间)。原先列表里那种 HOUSE:xxx、对方=「—」、最近消息=「-」的空白行已消失。测试服实测:会话列表行均带 lastMessageAt 与对方信息。
三、前端三个 tab 怎么接(核心)
三个 tab 用两个端点装配,按性质分类:
| Tab | 数据源 | 粒度 |
|---|---|---|
| 订单消息 | GET /admin/message/chat/conversations(会话列表) |
会话粒度(一个订单/对话一行,团号·对方·最近消息·未读) |
| 普通消息 | GET /admin/message/list?messageType=NORMAL |
消息粒度(系统通知逐条,标题·内容·时间) |
| 全部 | 上面两者按时间合并展示 | 会话行 + 通知行混排,按各自的最近时间(会话用 lastMessageAt、通知用 createTime)倒序 |
要点:
- 订单消息不要再用收件箱(
/admin/message/list)去取——那是单条消息粒度,取不到「会话卡」。用会话列表端点(你们现在订单消息 tab 已经是这个,保持即可)。 - 普通消息改调
/admin/message/list?messageType=NORMAL,即可拿到全部系统通知(含核房记录等,现在都归普通消息)。 - 全部之前只显示了收件箱通知、看不到聊天会话;现在请把「会话列表 + 普通消息」两个结果在前端按时间合并后展示(两种行结构不同,前端按卡片类型分别渲染即可)。
四、端点出参(未变,供参考)
- 会话列表
ChatConversationRespVO:conversationKey / bizModule / bizId / peerName / peerRole / peerRoleLabel / unreadCount / lastMessagePreview / lastMessageAt / pendingReply等(字段不变)。 - 收件箱
AdminMessageRespVO:messageId / categoryCode / title / content / link / bizId / bizType / isRead / createTime / messageType / messageTypeLabel / kind / senderName / conversationKey(字段不变,仅messageType/Label派生口径如上变更)。