From b9f588737e124b2d93f2e74e612c37cce3f51874 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 26 Jun 2026 09:51:07 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog-v2):=20=E9=85=8D=E6=88=BF?= =?UTF-8?q?=E6=94=B9=E6=88=BF=E4=BA=A4=E4=BA=92=20=E2=80=94=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E8=B5=B0=C2=A72.4=20DELETE=E3=80=81=E6=9B=B4=E6=8D=A2?= =?UTF-8?q?=E8=B5=B0=E9=85=8D=E6=88=BF=E4=BF=9D=E5=AD=98(=E6=8E=A5=20#4407?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...交互-移除走DELETE-更换走配房保存-管理后台.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 changelogs-v2/2026-06/26_配房改房交互-移除走DELETE-更换走配房保存-管理后台.md diff --git a/changelogs-v2/2026-06/26_配房改房交互-移除走DELETE-更换走配房保存-管理后台.md b/changelogs-v2/2026-06/26_配房改房交互-移除走DELETE-更换走配房保存-管理后台.md new file mode 100644 index 0000000..16992be --- /dev/null +++ b/changelogs-v2/2026-06/26_配房改房交互-移除走DELETE-更换走配房保存-管理后台.md @@ -0,0 +1,37 @@ +# 配房「更换 / 移除」酒店的接口接线说明(接 #4407 换酒店并入配房) + +> 变更类型:📌 接口接线说明(无后端代码改动,**前端房务管家需按此接线「移除」**) +> 端类型:管理后台(房务管家·配房弹窗「选择酒店」) +> 日期:2026-06-26 | 关联:#4407(换酒店并入配房唯一写口)| 服务:hl-order-service-v3(端点均已在测试服实测) + +--- + +## 背景 +#4407 后「换酒店」并入「配房」:点某天「配房」→「选择酒店」弹窗 →「已选配房」回显当前已配酒店(`isCurrentlyAssigned`)。本说明明确弹窗里**「更换」和「移除」分别该调哪个后端接口**——后端能力齐全,关键是前端「移除」要接对端点。 + +--- + +## 1. 更换酒店 ✅ 走「确认配房」(§2.2 submit) +- 在「已选配房」把当前酒店改成另一家(移除当前项 + 加入新酒店)→「确认配房」。 +- 调 `POST /v3/admin/order/hotel-requirements/{requirementId}/assignments`,body `items` = **该天最终想要的配房集合**。 +- 后端按 (hotelId, roomTypeId) **整天对账**:同酒店同房型同间数=不动;换成另一家=自动「释放旧店库存 + 扣新店 + 替换那行」。前端无需关心换/没换,把最终状态提交即可。 + +## 2. 移除某天已配酒店 ⚠️ 必须走 §2.4 DELETE,**不能靠空提交** +- **关键**:`POST …/assignments` 的 `items` 是 `@NotEmpty`,**空数组会被后端拒**(返 `items 不能为空`,测试服实测)。所以「已选配房」移除到 0 条再点「确认配房(0条)」**删不掉**(界面没了、刷新又回来)。 +- 真正移除某天已保存的配房,调 **`DELETE /v3/admin/order/assignments/{id}`**(`{id}` = 该天配房行 assignmentId)。后端:软删该行 + 级联删房间分配 + **释放库存**(测试服实测:删后该天 0 active 行、扣减 log `rollback_status=DONE` 库存已退)。 +- **前端「移除」链接的正确接线**: + - 移除的是**已保存的配房行**(有 assignmentId,即回显出来的当前已配)→ 调 `DELETE /v3/admin/order/assignments/{id}`。 + - 移除的是**本次新加、尚未保存的项**(还没 assignmentId)→ 纯前端本地删即可,不调接口。 + +## 3. 业务提醒 +- 纯移除(该天清空、不换新酒店)会让该天无住宿 → **「最终确认」的「全晚配齐」校验过不了**。常规操作是「移除旧 + 加入新 = 更换」;纯移除仅用于「这天本不该配酒店」的纠错。 + +--- + +## 接口速查 +| 操作 | 接口 | +|------|------| +| 配房 / 更换酒店 / 加多房型 | `POST /v3/admin/order/hotel-requirements/{requirementId}/assignments`(items=该天最终集合,非空) | +| 改协议价/结算价/备注(不换酒店) | `PUT /v3/admin/order/assignments/{id}` | +| **移除某天已配酒店** | **`DELETE /v3/admin/order/assignments/{id}`** | +| 回显当前已配 | 候选 `GET /v3/admin/hotel-candidates` 的 `isCurrentlyAssigned`/`assignedRoomTypeId`;详情 `currentAssignment.roomTypeId` |