4.2 KiB
4.2 KiB
房务聊天/站内信 4 修复:收件箱去聊天行 + 房务侧 peer 名 + 内部留言留言池 + 未读总数实时 SSE
变更类型:🔧 修复 ×3(纯后端,前端一般无需改)+ ✨ 实时能力 ×1(前端可接 SSE 停轮询) 端类型:管理后台(站内信收件箱 / 房务管家·订单详情·聊天/内部留言 / 顶部未读角标) 日期:2026-06-24 | 工单:#4325 | PR:#4326 | 服务:hl-user-service(双实例 8081/8181 已部署 health UP,A/C/D 测试服实测通过)
一、纯后端修复(前端无需改,知会)
A. 站内信收件箱不再混入聊天消息(修复)
站内信收件箱列表 GET /admin/message/list、分类未读汇总、「全部已读/分类已读」原先漏过滤消息特性 kind,把 kind=CHAT 的 1:1 聊天消息(无标题)也查进了收件箱,显示成「空标题」行。
- 现收件箱口径只含
kind=NOTIFY(系统通知);聊天消息只走聊天 Tab(/admin/message/chat/*),不再污染收件箱列表/分类红点/一键已读。 - 顶部铃铛合并角标
GET /admin/message/unread-count仍为「通知+聊天」合并口径,不变。 - 前端无需改:收件箱列表此后只返真站内信,空标题聊天行自然消失。
B. 房务侧聊天「联系定制师」对方名显示错(修复)
房务首次抢某单后,房务侧聊天/会话列表里「对方(定制师)」的姓名快照被错写成房务自己的名字(如显示成 admin 自己);抢过其它单的房务走另一分支则正常。
- 现首次抢单建房务会话成员行时,对方名正确取订单定制师姓名。
- 前端无需改:
peerName此后返订单真实定制师名。 - 注意:修复前已产生的错误会话行(历史脏数据)不会自动回填,下次该单抢单/转单/释放重绑时自动纠正。
C. 抢单后「内部留言」不再显示已转聊天的消息(修复)
房务详情「内部留言框」(leaveMessages,定制师抢单前发的留言)原先返回会话全部聊天行;抢单后这些留言已转为房务的聊天消息,却仍显示在内部留言框。
- 现内部留言框只显示**仍在留言池(无房务接收)**的留言:抢单后留言转给房务即从框内消失(进聊天),释放回池后重新出现,与留言池语义一致。
- 前端无需改:
leaveMessages此后只含留言池消息。
二、未读总数实时化(前端可接,停轮询)
D. 合并未读总数并入 SSE 长连接(新增实时事件)
原 GET /admin/message/unread-count(通知+聊天合并未读)需前端轮询;现并入 SSE 长连接实时推送。
- SSE 端点不变:
GET /ws/admin-msg/stream(已有长连接)。 - 新增事件:
event: unread-count,data为 JSON,关键字段unreadCount(合并未读总数,等同/admin/message/unread-count的值)、type:"UNREAD"、adminId。 - 推送时机:①建连即推一次初始未读(前端首屏直接拿角标,无需先调 unread-count 接口)②标记已读后实时推更新(角标下降)③新消息到达仍走原
message(通知)/im-chat(聊天)事件,本就携带unreadCount。 - 前端建议:监听 SSE
unread-count事件刷新顶部角标,停止轮询/admin/message/unread-count(接口保留兜底,可在 SSE 断线时回退轮询)。
三、前端待办(站内信「类型」列展示)
站内信列表项后端早已返回消息类型字段,前端未建列展示,建议加「类型」列:
messageTypeLabel(中文,如「订单消息」「普通消息」)/messageType(ORDER/NORMAL);亦可用categoryCode(SYSTEM 等)/bizType(ORDER/HOUSE/REFUND)。- 直接渲染
messageTypeLabel即可,无需新接口。
验证说明(如实)
- ✅ 测试服实测:A 收件箱列表已只返 NOTIFY(聊天行消失);C 已抢单单的
leaveMessages返空;D SSE 建连即收unread-count事件({adminId,unreadCount,type:UNREAD})。 - ✅ 本域单测全绿(chat/notification/sse/adminmessage);B 由单测覆盖(首次抢单对方名取定制师),线上 update 分支本就正确。