hl-api-changelog/changelogs-v2/2026-06/40_调整订单酒店候选换房型后预算残留旧房型协议价_前端处理-管理后台.md

2.4 KiB

调整订单·酒店候选:换房型后「预算/晚」残留旧房型协议价(前端处理)

模块:订单 · 调整订单弹窗 · 酒店安排(管理后台) 类型:前端处理说明(后端无改动,行为符合预期) 日期2026-06-28


一、现象

调整订单弹窗 → 酒店安排 → 某晚候选,把房型从 A 换成 BB 没有价格日历),「预算/晚」仍显示 ¥320.00——这 320 是上次选的房型 A 的协议价残留,没随房型切换清掉。

二、根因(后端正确,前端没刷新)

  • 「预算/晚」的值来自 snapshotGET /v3/admin/order/{id}/adjustment/snapshothotelDayDefaults[].segments[].budget,它是上次提交时按协议价持久化的段预算
  • 预算是后端权威后端在提交submit时按 (hotelId, roomCategory, stayDate) Feign 查协议价、对该段候选取最高非空协议价覆盖预算(前端传的预算值不作数),房型无价格日历时该段协议价为 null。提示语「预算按酒店协议价为准、提交后房控据此回配」即此意。
  • 所以预算只在提交时才按当前房型重算。用户在弹窗里把房型 A 换成 B 后、提交前,前端显示的还是 snapshot 里 A 的持久化协议价320,没有随房型变化刷新 → 看起来「B 这个无日历房型却显示了 A 的协议价」。
  • 目前没有「按单个房型实时查协议价」的端点给前端在换房型时即时刷新预算(协议价仅在 submit/snapshot 链路内部经 Feign 查)。

三、前端要做

用户在某候选切换房型时,把该候选的「预算/晚」清空(不要保留旧房型的值):

  • 预算本就是后端权威、提交时按新房型协议价回填,前端展示的是参考值;换房型后旧值已失效,应清空,可显示占位提示如「提交后按协议价回填」。
  • B 这类无价格日历的房型,提交后后端算出的协议价就是 null空预算,与清空一致;有日历的房型,提交后会回填该房型协议价。

四、后端

无改动。预算口径(提交时按协议价权威覆盖、无日历返 null符合设计。 若后续希望换房型时即时展示新房型协议价(而非清空待提交回填),需后端新增一个「按 hotelId+roomCategory+date 查协议价」的轻量只读端点——属增强、非本次必需,可另提需求。