配房需求段×候选候选酒店补真实房型 roomTypeId/roomTypeName(itinerary #4351/#4352)+ 诉求标签/整单备注前端回显提醒
这个提交包含在:
父节点
805bd176f9
当前提交
529ea1cbef
@ -0,0 +1,48 @@
|
|||||||
|
# 配房需求「段×候选」候选酒店补真实房型 roomTypeId/roomTypeName(itinerary 接口,已上线测试服·可对接)
|
||||||
|
|
||||||
|
> 变更类型:✅ 修改接口(新增字段,已部署测试服并 API + 前端 UI 双实证,可对接)
|
||||||
|
> 端类型:管理后台(定制师侧·订单详情「行程安排」→「修改需求 / 调整订单」弹窗「酒店安排」)
|
||||||
|
> 日期:2026-06-24 | 工单:#4351 | PR:#4352 | 服务:hl-order-service-v3
|
||||||
|
> 关联:补 #4313(#4204 P2)的遗漏——#4313 只给 itinerary 平铺 `hotels[]`(RequirementHotelVO)加了房型,**遗漏了「段×候选」结构 `segments[].candidates[]`(RequirementCandidateVO)**,而调整弹窗实际用后者回显,故房型仍不回显。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 关键说明
|
||||||
|
- **现象**:调整订单弹窗「酒店安排」每个候选酒店的**房型下拉恒显示「该酒店暂无可选房型」**,提交时已选的真实房型(如「精品标间」「普通标间」)修改时无法回显。
|
||||||
|
- **根因**:itinerary 接口 `RequirementCandidateVO`(段×候选的候选项)缺 `roomTypeId/roomTypeName`,#4313 只补了平铺 `hotels[]`、漏了这里。后端 `order_hotel_requirement.days` JSON 已存房型,纯属 VO + Converter 透传遗漏。
|
||||||
|
- **已修复并实证**:候选项补字段 + Converter 透传,已部署测试服,API + 前端 UI 双实证房型正确回显,纯 additive 向后兼容。
|
||||||
|
|
||||||
|
## 1. 新增字段(itinerary 接口·段×候选的候选维度)
|
||||||
|
`GET /v3/admin/order/{id}/itinerary` → `data.hotelGroup.requirement.days[].segments[].candidates[]`(`RequirementCandidateVO`)各**新增**:
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
|---|---|---|
|
||||||
|
| `roomTypeId` | String(雪花,可空) | 该候选酒店的**真实房型 ID** |
|
||||||
|
| `roomTypeName` | String(可空) | 该候选酒店的**真实房型名称** |
|
||||||
|
|
||||||
|
为 null(旧单 / 无房型候选 / 定制师未录真实房型)时,前端回退展示段级 `roomCategory`(与 #4313 平铺 hotels[] 口径一致)。
|
||||||
|
|
||||||
|
## 2. 真实响应示例(测试服 order 2069593503129636865,本次实测)
|
||||||
|
```json
|
||||||
|
"segments": [{
|
||||||
|
"roomCount": 1, "budget": "320.00", "remark": "测试信仰 要窗户",
|
||||||
|
"candidates": [
|
||||||
|
{"hotelId":"3001000000000000002","hotelName":"海拉尔海棠酒店","roomTypeId":"3002000000000000002","roomTypeName":"精品标间","remark":"测试信仰 要窗户"},
|
||||||
|
{"hotelId":"2023714929877450753","hotelName":"呼伦贝尔香格里拉大酒店","roomTypeId":"2023727403196502017","roomTypeName":"普通标间","remark":"要窗户"}
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
```
|
||||||
|
(未选房型的候选 `roomTypeId/roomTypeName` 为 null / 空串,属正常。)
|
||||||
|
|
||||||
|
## 3. 前端动作
|
||||||
|
- 调整弹窗「酒店安排」候选酒店房型下拉,回显值改从 `segments[].candidates[].roomTypeId/roomTypeName` 取(原先该结构无此字段,致「该酒店暂无可选房型」)。
|
||||||
|
|
||||||
|
## 4. 另需前端处理(同弹窗其余回显缺失·非本次后端范围)
|
||||||
|
排查「修改房需求回显信息不全」时实测发现,同弹窗以下两项后端 itinerary **早已返回**(在 `data.hotelGroup.requirement` 顶层),属**前端未渲染**,后端无需改:
|
||||||
|
|
||||||
|
| 缺失项 | 后端返回路径 | 测试服实测值 | 前端待办 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 特殊诉求标签 | `requirement.specialTags`(String 数组) | `["高楼层","安静楼层","无烟房","景观房","可加床","含双早","含早餐","可拆分双床","相邻房间","远离电梯"]` | 调整弹窗补「特殊诉求标签」回显 + 编辑区 |
|
||||||
|
| 整单备注 | `requirement.remark`(String) | `"客人怕吵"` | 调整弹窗补「整单备注」回显 + 编辑区 |
|
||||||
|
|
||||||
|
⚠️ **数据丢失风险**:当前这两项不回显,定制师在弹窗改房需求并「提交调整」时,若提交 payload 不带这两个字段,可能覆盖丢失已填的诉求标签 + 整单备注,建议优先补回显。
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户