1733 行
54 KiB
Markdown
1733 行
54 KiB
Markdown
---
|
||
schema: "hl-changelog/v2"
|
||
ticket: "8269"
|
||
title: "团期确认后锁定配置:导游 / 摄影 / 物资、订房计划与分房、需求整体确认 / 打回、正式用车需求保存 / 受控重开 / 免车、房务整团抢单的阶段门收紧到确认之前;抢单池 batchStatus 只接受 RESOURCE_PREPARING"
|
||
consumer: "admin"
|
||
author: "jw(GIT)"
|
||
change_type: "修改接口"
|
||
backend_status: "deployed"
|
||
gateway_status: "verified"
|
||
frontend_status: "verified"
|
||
frontend_owner: "mmg"
|
||
frontend_ref: "bb160fa9bc1455a690eea0d75aea4bae9aa5c50e"
|
||
target_release: "v2.1"
|
||
verified_at: "2026-09-24"
|
||
status_note: "六节点定案(SRS §0.27.3 / §0.27.5 #6~#9):团期人工「确认」(进入 MATERIAL_PREPARING,见 #8268)之后四项配置与物资一律不可修改,没有撤销确认。本单把各写口的允许阶段收紧:导游 / 摄影 / 物资由出行前四态(#8231)收回到招募、配置两态,拒绝码仍为 589598,文案改为「团期已确认,配置不可修改」;订房计划新增 / 修改 / 删除 / 按日确认 / 整团确认与分房微调 / 重算只在 RESOURCE_PREPARING 可用(删除另放行已流团),拒绝码 808600 文案补「订房计划仅在配置阶段可改,团期已确认,配置不可修改」;需求整体确认与整团打回、逐单打回两边同步收紧到 RESOURCE_PREPARING(589501);正式用车需求保存收紧到 RESOURCE_PREPARING(589501),受控重开只在 RESOURCE_PREPARING 可用(809111,文案补同一句),免车在 RESOURCE_PREPARING 及出行完毕 / 核单中可用;房务整团抢单池只收 RESOURCE_PREPARING 的团,分页参数 batchStatus 只接受 RESOURCE_PREPARING,其它值 400,整团认领与超管团级接管对确认后的团返 808651。码值、路径、入参出参结构均不变。子订单退单 / 转团 / 加人、满团名额调整、流团不受本单影响。本条取代 23_8231 中「出行前四态可配」的窗口描述。前端需:确认后隐藏或置灰上述写操作入口、按新文案提示、抢单池筛选下拉只保留资源准备中。 前端已交付(bb160fa9):导/摄/物资三写口收回招募/配置两态+配置按钮置灰 tooltip;订房写口仅配置/删除另放行流团(canPlanWrite/canPlanDelete 拆分);需求打回(整团+逐单)置灰阶段门;用车保存/重开仅配置、免车三态;抢单池下拉只留资源准备中;8 spec 新增 22 例全绿。"
|
||
updated_at: "2026-09-24"
|
||
base: "dev-v3"
|
||
---
|
||
|
||
# 团期资源配置: 团期确认后配置锁定,各写口收紧到确认之前(管理后台)
|
||
|
||
> **服务**: hl-order-service-v3(端口 8086/8186)
|
||
> **PR**: #8280
|
||
> **Issue**: #8269
|
||
> **日期**: 2026-09-24
|
||
> **影响范围**: 管理后台团期详情页的配导游 / 配摄影、物资、订房计划与分房、查看需求(整体确认 / 打回)、正式用车需求(保存 / 受控重开 / 免车);房务端整团抢单池
|
||
|
||
---
|
||
|
||
## ⚠️ 关键变化
|
||
|
||
1. **团期「确认」之后,下面所有写口一律拒绝**(没有撤销确认)。确认之前(招募 / 配置)可反复改。
|
||
2. **#8231 刚放开的「出行前四态都能配导摄物资」被收回**:现在只有招募、配置两态能配,`MATERIAL_PREPARING` / `PENDING_DEPARTURE` 也被拒。589598 码值不变,**文案由「出行后不可再配置导游 / 摄影 / 物资」改为「团期已确认,配置不可修改」**,按原文案做过匹配的要改。
|
||
3. **订房计划不再允许返团后按实际入住修正**:改前可写到核单中,现在只剩配置阶段;差异改在核单按成本 / 冲正处理。
|
||
4. **需求打回也收紧了**:改前整团打回除已流团外全程可用、逐单打回不看团期阶段;现在两者都只在配置阶段可用。
|
||
5. **房务抢单池分页参数 `batchStatus` 只接受 `RESOURCE_PREPARING`**,传 `MATERIAL_PREPARING` / `PENDING_DEPARTURE` / `TRAVELLING` 返 400。
|
||
|
||
---
|
||
|
||
## 一、背景
|
||
|
||
| 节点 | 持久态 | 本单后可写 |
|
||
|---|---|---|
|
||
| 招募 | `RECRUITING` | 仅导游 / 摄影 / 物资(提前配) |
|
||
| 配置 | `RESOURCE_PREPARING` | 本条全部写口 |
|
||
| 确认及之后 | `MATERIAL_PREPARING` / `PENDING_DEPARTURE` / `TRAVELLING` / `TRIP_FINISHED` / `REVIEWING` / `SETTLED` | 一律拒绝(免车在出行完毕 / 核单中例外,见接口 21) |
|
||
| 已流团 | `CANCELLED` | 一律拒绝(订房计划删除例外,用于释放库存) |
|
||
|
||
不受本单影响:子订单退单 / 转团 / 加人、满团名额调整、流团、订房计划整团批量释放(仅已流团可用,不变)。
|
||
|
||
---
|
||
|
||
## 二、变更接口清单
|
||
|
||
| # | 接口 | 方法 | 路径 | 变更类型 | 说明 |
|
||
|---|------|------|------|----------|------|
|
||
| 1 | 保存团期人员配置 | PUT | `/v3/admin/group-batch/{productBatchId}/staff` | 阶段门收紧 + 文案 | 四态 → 招募 / 配置;589598 文案改 |
|
||
| 2 | 设置报账人等级 | PUT | `/v3/admin/group-batch/{productBatchId}/staff/{staffId}/reporter-rank` | 阶段门收紧 + 文案 | 同上 |
|
||
| 3 | 新增团期备品行 | POST | `/v3/admin/order/group-batch/{groupBatchId}/supplies` | 阶段门收紧 + 文案 | 同上 |
|
||
| 4 | 调整团期备品数量 | PUT | `/v3/admin/order/group-batch/supplies/{batchSuppliesId}/quantity` | 阶段门收紧 + 文案 | 同上 |
|
||
| 5 | 软删团期备品行 | DELETE | `/v3/admin/order/group-batch/supplies/{batchSuppliesId}` | 阶段门收紧 + 文案 | 同上 |
|
||
| 6 | 整团按日提交订房计划 | POST | `/v3/admin/house/group-batches/{groupBatchId}/room-plans` | 阶段门收紧 + 文案 | 六态 → 仅配置;808600 文案改 |
|
||
| 7 | 修改单条订房计划 | PUT | `/v3/admin/house/group-batches/{groupBatchId}/room-plans/{planId}` | 阶段门收紧 + 文案 | 同上 |
|
||
| 8 | 删除单条订房计划 | DELETE | `/v3/admin/house/group-batches/{groupBatchId}/room-plans/{planId}` | 阶段门收紧 + 文案 | 仅配置 + 已流团 |
|
||
| 9 | 按日确认订房 | POST | `/v3/admin/house/group-batches/{groupBatchId}/room-plans/days/{stayDate}/confirm` | 阶段门收紧 + 文案 | 仅配置 |
|
||
| 10 | 整团确认订房 | POST | `/v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm` | 阶段门收紧 + 文案 | 仅配置 |
|
||
| 11 | 订房确认预检 | GET | `/v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm-check` | 出参取值变化 | `stageAllowed` 仅配置为 true |
|
||
| 12 | 人工微调分房 | POST | `/v3/admin/house/group-batches/{groupBatchId}/allocations` | 阶段门收紧 + 文案 | 仅配置 |
|
||
| 13 | 重算分房 | POST | `/v3/admin/house/group-batches/{groupBatchId}/allocations/rebuild` | 阶段门收紧 + 文案 | 仅配置 |
|
||
| 14 | 整体确认需求缺失预检 | GET | `/v3/admin/order/group-batch/{groupBatchId}/requirement/confirm-check` | 出参取值变化 | `ready` 仅配置可能为 true |
|
||
| 15 | 整体确认需求 | POST | `/v3/admin/order/group-batch/{groupBatchId}/requirement/confirm` | 阶段门收紧 | 四态 → 仅配置(589501) |
|
||
| 16 | 按户打回需求(整团入口) | POST | `/v3/admin/order/group-batch/{groupBatchId}/requirement/reject` | 阶段门收紧 | 除已流团外全程 → 仅配置(589501) |
|
||
| 17 | 团期管理员打回住宿需求(逐单) | POST | `/v3/admin/order/{id}/hotel-requirement/reject` | 新增阶段门 | 仅配置(589501) |
|
||
| 18 | 团期管理员打回用车需求(逐单) | POST | `/v3/admin/order/{id}/vehicle-requirement/reject` | 新增阶段门 | 仅配置(589501) |
|
||
| 19 | 保存团期正式用车需求 | PUT | `/v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement` | 阶段门收紧 | 四态 → 仅配置(589501) |
|
||
| 20 | 受控重开正式用车需求 | POST | `/v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/reopen` | 阶段门收紧 + 文案 | 三态 → 仅配置;809111 文案改 |
|
||
| 21 | 声明整团无需用车 | POST | `/v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/waive` | 阶段门收紧 | 去掉物料准备中 / 待出发 / 出行中 |
|
||
| 22 | 团期抢单池列表 | GET | `/v3/admin/order/grab-pool/group-batches` | 入参取值收窄 + 出参行集合变化 | `batchStatus` 只接受 `RESOURCE_PREPARING`;池内只剩配置阶段的团 |
|
||
| 23 | 整团认领 | POST | `/v3/admin/order/grab-pool/group-batches/{groupBatchId}/claim` | 阶段门收紧 | 确认后的团 808651 |
|
||
| 24 | 团级接管(超管) | POST | `/v3/admin/order/grab-pool/group-batches/{groupBatchId}/takeover` | 阶段门收紧 | 确认后的团 808651 |
|
||
|
||
路径、HTTP 方法、权限码、入参结构、成功响应结构均不变;网关无改动。
|
||
|
||
---
|
||
|
||
## 三、接口详情
|
||
|
||
### 1. 保存团期人员配置 `PUT /v3/admin/group-batch/{productBatchId}/staff`
|
||
|
||
**VO**: `BatchStaffConfigReqVO` → `BatchStaffConfigRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
团期详情页「配导游 / 配摄影」弹窗保存(整期全量覆盖,可按 `scopeRoles` 限定角色范围)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| productBatchId | Path | Long | ✅ | 产品侧排期 ID | 未建团返 589553(不变) |
|
||
| scopeRoles | Body | List<String> | 否 | 元素非空 | 限定覆盖的角色范围(不变) |
|
||
| staffList | Body | List | 否 | null 按空列表 | 传空列表 = 清空覆盖范围内配置(不变) |
|
||
| staffList[].staffId | Body | Long | ✅ | 须命中候选人员 | 不变 |
|
||
| staffList[].staffRole | Body | String | ✅ | 须与人员类型相符 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| productBatchId | Long | 不变 |
|
||
| groupBatchId | Long | 不变 |
|
||
| staffList | List | 保存后的整期最终状态(不变) |
|
||
| affectedOrderCount | Integer | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "staffList": [ { "staffId": 1002, "staffRole": "GUIDE", "sortOrder": 0 } ] }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "成功",
|
||
"data": { "productBatchId": "2097250420299530242", "groupBatchId": "2097250563497385985", "affectedOrderCount": 0, "staffList": [ { "staffId": 1002, "staffRole": "GUIDE" } ] },
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
`staffList` 传空列表即清空,返回 200、`staffList` 为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "staffList": [], "affectedOrderCount": 0 }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589598,
|
||
"message": "团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 允许:`RECRUITING`、`RESOURCE_PREPARING`;其余(含 `MATERIAL_PREPARING`、`PENDING_DEPARTURE`、`CANCELLED`)589598,被拒时零写入。
|
||
- 未建团仍返 589553,与 589598 不可合并。
|
||
|
||
---
|
||
|
||
### 2. 设置报账人等级 `PUT /v3/admin/group-batch/{productBatchId}/staff/{staffId}/reporter-rank`
|
||
|
||
**VO**: `ReporterRank`(枚举入参)→ `Result<Void>`
|
||
|
||
#### 使用场景
|
||
|
||
团期人员名单里标主报账人 / 协助报账人,与保存口同窗口。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| productBatchId | Path | Long | ✅ | - | 不变 |
|
||
| staffId | Path | Long | ✅ | 须命中已配人员 | 不变 |
|
||
| rank | Body | String | ✅ | `PRIMARY` / `ASSIST` / `NONE` | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Void | 成功返回 null |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "rank": "PRIMARY" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": null, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无列表出参,无空数据形态。
|
||
|
||
```json
|
||
{ "code": 200, "data": null, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589598,
|
||
"message": "团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 窗口与保存口完全一致:招募、配置两态。
|
||
- 被拒时零写入。
|
||
|
||
---
|
||
|
||
### 3. 新增团期备品行 `POST /v3/admin/order/group-batch/{groupBatchId}/supplies`
|
||
|
||
**VO**: `AddSuppliesReqVO` → `Result<Long>`
|
||
|
||
#### 使用场景
|
||
|
||
「物资」页签手工录入一行备品。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | 团期主键 | 不变 |
|
||
| suppliesName | Body | String | 否 | 纯手填时必填 | 不变 |
|
||
| suppliesResourceId | Body | Long | 否 | - | 不变 |
|
||
| quantity | Body | Integer | ✅ | ≥ 1 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Long | 新建备品行 ID(不变) |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "suppliesName": "雨衣", "quantity": 1, "sortOrder": 999 }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": "2102611411027066881", "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
写接口,无空数据形态;创单时系统固化产品备品的路径不过本门(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": "2102611411027066881", "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589598,
|
||
"message": "团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 允许:`RECRUITING`、`RESOURCE_PREPARING`;其余 589598,不落库。
|
||
- 确认物资之后、团期确认之前仍可增删改(确认物资不锁物资清单,团期确认才锁)。
|
||
|
||
---
|
||
|
||
### 4. 调整团期备品数量 `PUT /v3/admin/order/group-batch/supplies/{batchSuppliesId}/quantity`
|
||
|
||
**VO**: `AdjustSuppliesQuantityReqVO` → `Result<Void>`
|
||
|
||
#### 使用场景
|
||
|
||
「物资」页签行内改数量。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| batchSuppliesId | Path | Long | ✅ | 须命中活跃备品行 | 不变 |
|
||
| quantity | Body | Integer | ✅ | ≥ 1 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Void | 成功返回 null |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "quantity": 5 }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": null, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无列表出参;备品行已软删返 589521(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": null, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589598,
|
||
"message": "团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 阶段门按备品行所属团期判定,窗口同新增口。
|
||
- 被拒时数量不变。
|
||
|
||
---
|
||
|
||
### 5. 软删团期备品行 `DELETE /v3/admin/order/group-batch/supplies/{batchSuppliesId}`
|
||
|
||
**VO**: `Result<Void>`(无请求体)
|
||
|
||
#### 使用场景
|
||
|
||
「物资」页签删除一行备品。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| batchSuppliesId | Path | Long | ✅ | 须命中活跃备品行 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Void | 成功返回 null |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
DELETE /v3/admin/order/group-batch/supplies/2102611411027066881 HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": null, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
对已软删的行再调返 589521(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": null, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589598,
|
||
"message": "团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 窗口同新增口;被拒时该行不被软删。
|
||
|
||
---
|
||
|
||
### 6. 整团按日提交订房计划 `POST /v3/admin/house/group-batches/{groupBatchId}/room-plans`
|
||
|
||
**VO**: `GroupBatchRoomPlanSaveReqVO` → `List<GroupBatchRoomPlanRespVO>`
|
||
|
||
#### 使用场景
|
||
|
||
房务在团期订房页按日录入订房行(追加式)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | 团期主键 | 不变 |
|
||
| items | Body | List | ✅ | 1~200 行 | 订房行(不变) |
|
||
| items[].stayDate | Body | LocalDate | ✅ | 落在团期区间内 | 不变 |
|
||
| items[].hotelId | Body | Long | ✅ | - | 不变 |
|
||
| items[].roomTypeId | Body | Long | ✅ | - | 不变 |
|
||
| items[].roomCount | Body | Integer | ✅ | ≥ 1 | 不变 |
|
||
|
||
其余行字段(`roomCategory` / `protoPrice` / `settlementPrice` / `settleType` / `deductInventory` / `remark`)不变。
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| [].planId | Long | 计划行 ID(不变) |
|
||
| [].planStatus | String | `PENDING` / `CONFIRMED`(不变) |
|
||
| [].version | Integer | 乐观锁版本(不变) |
|
||
|
||
其余字段不变。
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "items": [ { "stayDate": "2026-10-01", "hotelId": 200001, "roomTypeId": 300001, "roomCount": 3 } ] }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "成功",
|
||
"data": [ { "planId": "2103000000000000001", "stayDate": "2026-10-01", "roomCount": 3, "planStatus": "PENDING", "version": 0 } ],
|
||
"success": true
|
||
}
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
`items` 不能为空(400,不变);成功时返回本次新建的行。
|
||
|
||
```json
|
||
{ "code": 200, "data": [], "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(MATERIAL_PREPARING)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 允许:仅 `RESOURCE_PREPARING`。改前 `RESOURCE_PREPARING` ~ `REVIEWING` 六态可写。
|
||
- 808600 的 `{0}` 是团期当前状态码。
|
||
|
||
---
|
||
|
||
### 7. 修改单条订房计划 `PUT /v3/admin/house/group-batches/{groupBatchId}/room-plans/{planId}`
|
||
|
||
**VO**: `GroupBatchRoomPlanItemReqVO` → `GroupBatchRoomPlanRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
房务修改一条订房行(关键字段变化即删旧建新)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| planId | Path | Long | ✅ | - | 不变 |
|
||
| version | Body | Integer | ✅ | 乐观锁 | 不变 |
|
||
| roomCount | Body | Integer | 否 | ≥ 1 | 不变 |
|
||
| replaceReason | Body | String | 否 | ≤ 256 | 原「核单中团期必填」,本次起核单中已不可改,该约束不再触发 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| planId | Long | 不变 |
|
||
| planStatus | String | 不变 |
|
||
| version | Integer | 不变 |
|
||
| warnings | List<String> | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "version": 0, "roomCount": 4 }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "planId": "2103000000000000001", "roomCount": 4, "planStatus": "PENDING", "version": 1, "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无列表出参;`warnings` 无告警时为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(PENDING_DEPARTURE)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;返团后按实际入住修正计划不再允许,差异走核单成本 / 冲正。
|
||
- 「已发生的间夜冻结」808690 在修改路径上已不可达(出行后阶段门先拦)。
|
||
|
||
---
|
||
|
||
### 8. 删除单条订房计划 `DELETE /v3/admin/house/group-batches/{groupBatchId}/room-plans/{planId}`
|
||
|
||
**VO**: `GroupBatchRoomPlanDeleteReqVO` → `GroupBatchRoomPlanDeleteRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
房务删除一条订房行(软删,归还库存);已流团的团也用它释放库存。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| planId | Path | Long | ✅ | - | 不变 |
|
||
| reason | Body | String | 否 | ≤ 256 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| planId | Long | 不变 |
|
||
| releasedLogId | Long | 不变 |
|
||
| warnings | List<String> | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "reason": "客人退团,该晚不再需要" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "planId": "2103000000000000001", "releasedLogId": null, "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
从未扣过库存的行 `releasedLogId` 为 null(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "releasedLogId": null, "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(MATERIAL_PREPARING)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 允许:`RESOURCE_PREPARING` 与 `CANCELLED`(已流团释放库存,不变);确认后到核单中均被拒。
|
||
|
||
---
|
||
|
||
### 9. 按日确认订房 `POST /v3/admin/house/group-batches/{groupBatchId}/room-plans/days/{stayDate}/confirm`
|
||
|
||
**VO**: `GroupBatchRoomDayConfirmRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
房务逐日确认订房(扣库存、分房、回填配房完成标志)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| stayDate | Path | String | ✅ | `yyyy-MM-dd` | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| confirmedPlanIds | List<Long> | 不变 |
|
||
| skippedPlanIds | List<Long> | 不变 |
|
||
| hotelReady | Boolean | 不变 |
|
||
| warnings | List | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
POST /v3/admin/house/group-batches/2097250563497385985/room-plans/days/2026-10-01/confirm HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "stayDate": "2026-10-01", "confirmedPlanIds": ["2103000000000000001"], "skippedPlanIds": [], "hotelReady": false, "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
该日已全部确认时幂等返回,`confirmedPlanIds` 为空、`skippedPlanIds` 列出已确认行(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "confirmedPlanIds": [], "skippedPlanIds": ["2103000000000000001"] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(MATERIAL_PREPARING)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;与「可写」同一集合,不会出现「能改却确认不了」。
|
||
|
||
---
|
||
|
||
### 10. 整团确认订房 `POST /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm`
|
||
|
||
**VO**: `GroupBatchRoomConfirmAllRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
房务一键整团确认订房(先整团预检,再逐日确认)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| confirmedDates | List<String> | 不变 |
|
||
| skippedDates | List<String> | 不变 |
|
||
| emptyDemand | Boolean | 不变 |
|
||
| hotelReady | Boolean | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
POST /v3/admin/house/group-batches/2097250563497385985/room-plans/confirm HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "confirmedDates": ["2026-10-01", "2026-10-02"], "skippedDates": [], "emptyDemand": false, "hotelReady": true, "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
全团无需订房时直接置配房完成并返回 `emptyDemand=true`(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "confirmedDates": [], "emptyDemand": true, "hotelReady": true }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(MATERIAL_PREPARING)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;阶段门在整团预检第一步,被拒时零写入。
|
||
|
||
---
|
||
|
||
### 11. 订房确认预检 `GET /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm-check`
|
||
|
||
**VO**: `GroupBatchRoomConfirmCheckReqVO` → `GroupBatchRoomConfirmCheckRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
订房页「确认」按钮前的只读预检。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| stayDate | Query | LocalDate | 否 | - | 不传返回全部相关日(不变) |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| stageAllowed | Boolean | **取值改变**:仅 `RESOURCE_PREPARING` 为 true(改前资源准备中 ~ 核单中为 true) |
|
||
| ready | Boolean | 整团是否可确认(含 `stageAllowed`,随之变化) |
|
||
| batchStatus | String | 不变 |
|
||
| days | List | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
GET /v3/admin/house/group-batches/2097250563497385985/room-plans/confirm-check HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
无请求体。
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "batchStatus": "MATERIAL_PREPARING", "stageAllowed": false, "ready": false, "days": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无计划行时 `days` 为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "stageAllowed": true, "ready": false, "days": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589500,
|
||
"message": "团期不存在",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 只读零副作用;确认后打开订房页,`stageAllowed=false` 可直接用来置灰确认按钮。
|
||
|
||
---
|
||
|
||
### 12. 人工微调分房 `POST /v3/admin/house/group-batches/{groupBatchId}/allocations`
|
||
|
||
**VO**: `GroupBatchRoomAllocationSaveReqVO` → `GroupBatchRoomAllocationRebuildRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
房务在分房页手工调整某户落在哪条计划行。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| items | Body | List | 否 | ≤ 500 行;与 `clearPlanIds` 至少一个非空 | 不变 |
|
||
| clearPlanIds | Body | List<Long> | 否 | ≤ 200 条 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| balanced | Boolean | 不变 |
|
||
| hotelReady | Boolean | 不变 |
|
||
| days | List | 不变 |
|
||
| warnings | List | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "items": [], "clearPlanIds": ["2103000000000000001"] }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "force": false, "balanced": true, "hotelReady": true, "days": [], "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
`days` / `warnings` 无内容时为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "days": [], "warnings": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(MATERIAL_PREPARING)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;改前资源准备中 ~ 核单中可用。
|
||
|
||
---
|
||
|
||
### 13. 重算分房 `POST /v3/admin/house/group-batches/{groupBatchId}/allocations/rebuild`
|
||
|
||
**VO**: `GroupBatchRoomAllocationRebuildReqVO` → `GroupBatchRoomAllocationRebuildRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
房务按当前需求基线重算分房。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| force | Body | Boolean | 否 | 默认 false | 不变 |
|
||
| stayDate | Body | LocalDate | 否 | - | 不传 = 全部已确认日(不变) |
|
||
| reason | Body | String | 否 | `force=true` 时必填 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| balanced | Boolean | 不变 |
|
||
| hotelReady | Boolean | 不变 |
|
||
| days / skippedDays | List | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "force": false, "stayDate": "2026-10-01" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "force": false, "balanced": true, "hotelReady": true, "days": [], "skippedDays": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
未确认的日进 `skippedDays`(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "days": [], "skippedDays": [ { "stayDate": "2026-10-02", "reason": "PLAN_NOT_CONFIRMED" } ] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808600,
|
||
"message": "团期当前阶段(MATERIAL_PREPARING)不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`。
|
||
|
||
---
|
||
|
||
### 14. 整体确认需求缺失预检 `GET /v3/admin/order/group-batch/{groupBatchId}/requirement/confirm-check`
|
||
|
||
**VO**: `GroupBatchRequirementCheckRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
「查看需求」页整体确认按钮前的只读预检。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ready | Boolean | **取值改变**:阶段条件由「资源准备中 / 物料准备中 / 待出发 / 出行中」收紧为仅 `RESOURCE_PREPARING` |
|
||
| batchStatus / batchStatusName | String | 不变 |
|
||
| missing / vehicleMissing | List | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
GET /v3/admin/order/group-batch/2097250563497385985/requirement/confirm-check HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
无请求体。
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "batchStatus": "MATERIAL_PREPARING", "batchStatusName": "物料准备中", "ready": false, "missing": [], "vehicleMissing": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无缺失时两个缺失清单为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "ready": true, "missing": [], "vehicleMissing": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589500,
|
||
"message": "团期不存在",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 缺失清单为空但 `ready=false`,说明卡在团期阶段;确认后打开该页恒为 false。
|
||
|
||
---
|
||
|
||
### 15. 整体确认需求 `POST /v3/admin/order/group-batch/{groupBatchId}/requirement/confirm`
|
||
|
||
**VO**: `GroupBatchRequirementConfirmRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
团期管理员整体确认需求、放行房务 / 车务。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| requirementConfirmed | Boolean | 不变 |
|
||
| dispatchedOrderIds / skippedOrderIds | List<Long> | 不变 |
|
||
| groupVehicleRequirementStatus | String | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
POST /v3/admin/order/group-batch/2097250563497385985/requirement/confirm HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "requirementConfirmed": true, "dispatchedOrderIds": ["60123456789001"], "skippedOrderIds": [], "dispatchedCount": 1 }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无可放行户时 `dispatchedOrderIds` 为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "requirementConfirmed": true, "dispatchedOrderIds": [], "dispatchedCount": 0 }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589501,
|
||
"message": "团期状态不允许当前操作",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;改前物料准备中 / 待出发 / 出行中也可重新确认,现在一律 589501。
|
||
- 与打回(接口 16~18)同步收紧,不会出现「能打回却确认不了」。
|
||
|
||
---
|
||
|
||
### 16. 按户打回需求(整团入口) `POST /v3/admin/order/group-batch/{groupBatchId}/requirement/reject`
|
||
|
||
**VO**: `RejectRequirementReqVO` → `GroupBatchRequirementRejectRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
「查看需求」页勾选多户打回给定制师重提。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| orderIds | Body | List<Long> | ✅ | 1~200 户 | 不变 |
|
||
| reason | Body | String | ✅ | ≤ 500 字 | 不变 |
|
||
| resourceType | Body | String | 否 | `HOTEL` / `VEHICLE` / `ALL`,默认 `ALL` | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| requirementConfirmed | Boolean | 成功后恒 false(不变) |
|
||
| rejected[] | List | 每户每资源类型一条(不变) |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "orderIds": ["60123456789001"], "reason": "房型数量与人数不符,请重报", "resourceType": "HOTEL" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "requirementConfirmed": false, "rejected": [ { "orderId": "60123456789001", "resourceType": "HOTEL", "requirementId": "90011223344", "sourceStatus": "PENDING_REVIEW" } ] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
所选户均无可打回的需求时 `rejected` 为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "requirementConfirmed": false, "rejected": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589501,
|
||
"message": "团期状态不允许当前操作",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`。改前除已流团外全程可用(含招募中),**招募中现在也被拒**。
|
||
|
||
---
|
||
|
||
### 17. 团期管理员打回住宿需求(逐单) `POST /v3/admin/order/{id}/hotel-requirement/reject`
|
||
|
||
**VO**: `RejectReqVO` → `Result<Void>`
|
||
|
||
#### 使用场景
|
||
|
||
逐户需求详情里单独打回住宿需求。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| id | Path | Long | ✅ | 子订单 ID | 不变 |
|
||
| returnRemark | Body | String | ✅ | ≤ 500 字 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Void | 成功返回 null |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "returnRemark": "第二晚缺房型,请补充" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": null, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无列表出参。
|
||
|
||
```json
|
||
{ "code": 200, "data": null, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
所属团期不在 `RESOURCE_PREPARING`:
|
||
|
||
```json
|
||
{
|
||
"code": 589501,
|
||
"message": "团期状态不允许当前操作",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- **新增阶段门**:改前逐单打回不看团期阶段;现在仅 `RESOURCE_PREPARING`。
|
||
- 非团期订单仍返 582083(不变)。
|
||
|
||
---
|
||
|
||
### 18. 团期管理员打回用车需求(逐单) `POST /v3/admin/order/{id}/vehicle-requirement/reject`
|
||
|
||
**VO**: `RejectReqVO` → `Result<Void>`
|
||
|
||
#### 使用场景
|
||
|
||
逐户需求详情里单独打回行程用车或接送机需求。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| id | Path | Long | ✅ | 子订单 ID | 不变 |
|
||
| kind | Query | String | 否 | `TRAVEL` / `TRANSFER`,默认 `TRAVEL` | 不变 |
|
||
| returnRemark | Body | String | ✅ | ≤ 500 字 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Void | 成功返回 null |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "returnRemark": "用车人数与报名人数不符" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": null, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无列表出参。
|
||
|
||
```json
|
||
{ "code": 200, "data": null, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589501,
|
||
"message": "团期状态不允许当前操作",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- **新增阶段门**:仅 `RESOURCE_PREPARING`;非团期订单仍返 582083。
|
||
|
||
---
|
||
|
||
### 19. 保存团期正式用车需求 `PUT /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement`
|
||
|
||
**VO**: `GroupVehicleRequirementSaveReqVO` → `GroupVehicleRequirementRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
团期管理员编辑整团乘车分组(全量替换)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| version | Body | Integer | 否 | 首次保存传 null | 不变 |
|
||
| remark | Body | String | 否 | ≤ 500 字 | 不变 |
|
||
| groups | Body | List | ✅ | 不能为 null | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| requirementId | Long | 不变 |
|
||
| status | String | 不变 |
|
||
| version | Integer | 不变 |
|
||
| groups | List | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "version": 3, "groups": [ { "groupCode": "BUS", "vehicleType": "BUS", "serviceStartDate": "2026-10-01", "serviceEndDate": "2026-10-03", "seats": 35, "count": 1, "days": [ { "tripDate": "2026-10-01", "headcount": 30, "memberOrderIds": ["60123456789001"] } ] } ] }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "requirementId": "1867000000101", "groupBatchId": "2097250563497385985", "status": "DRAFT", "version": 4, "groups": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
整团免车请走 `waive`,本接口 `groups` 为 null 返 400(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "status": "DRAFT", "groups": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589501,
|
||
"message": "团期状态不允许当前操作",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;改前资源准备中 / 物料准备中 / 待出发 / 出行中可用。
|
||
|
||
---
|
||
|
||
### 20. 受控重开正式用车需求 `POST /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/reopen`
|
||
|
||
**VO**: `GroupVehicleRequirementReopenReqVO` → `GroupVehicleReopenRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
把已被车务执行的正式用车需求退回可改(带令牌、范围、有效期的窗口)。本次起只在配置阶段可用,是配置阶段内把已完成的用车需求改回的唯一出口。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| reason | Body | String | ✅ | ≤ 200 | 不变 |
|
||
| scopeGroupCodes | Body | List<String> | ✅ | 1~20 个 | 不变 |
|
||
| scopeDates | Body | List<LocalDate> | ✅ | 1~60 天 | 不变 |
|
||
| windowMinutes | Body | Integer | 否 | 10~1440,默认 120 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| requirementId | Long | 不变 |
|
||
| requirementStatus | String | 不变 |
|
||
| windowToken | String | 不变 |
|
||
| expiresAt | LocalDateTime | 不变 |
|
||
| blockedStage | String | 本次起恒为 `RESOURCE_PREPARING` |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "reason": "客户临时增加 2 人,需要加一辆车", "scopeGroupCodes": ["BUS"], "scopeDates": ["2026-10-01"], "windowMinutes": 120 }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "requirementId": "1934567890123456789", "requirementVersion": 3, "requirementStatus": "PENDING_RECONFIRM", "windowToken": "窗口令牌示例", "expiresAt": "2026-09-24 12:00:00", "blockedStage": "RESOURCE_PREPARING", "batchStatus": "RESOURCE_PREPARING" }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
同一操作人重复开窗幂等返回既有令牌(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "requirementStatus": "PENDING_RECONFIRM", "windowToken": "窗口令牌示例" }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 809111,
|
||
"message": "团期当前状态 MATERIAL_PREPARING 不允许编辑、确认或重开正式用车需求:仅配置阶段可改,团期已确认,配置不可修改",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 仅 `RESOURCE_PREPARING`;改前物料准备中 / 待出发也可重开(#7442 窗口),本次起下线。
|
||
- 809101 / 809203 / 809209 等其余拒绝条件不变。
|
||
|
||
---
|
||
|
||
### 21. 声明整团无需用车 `POST /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/waive`
|
||
|
||
**VO**: `GroupVehicleRequirementWaiveReqVO` → `GroupVehicleRequirementRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
纯自驾等整团不用车的团声明免车。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | - | 不变 |
|
||
| reason | Body | String | ✅ | ≤ 200 字 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| status | String | 不变 |
|
||
| groups | List | 免车态为空数组(不变) |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "reason": "纯自驾团,客户自理交通" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "requirementId": "1867000000101", "status": "CONFIRMED", "groups": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
已是免车态时幂等返回(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "status": "CONFIRMED", "groups": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 589501,
|
||
"message": "团期状态不允许当前操作",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 允许:`RESOURCE_PREPARING`、`TRIP_FINISHED`、`REVIEWING`。改前另含 `MATERIAL_PREPARING` / `PENDING_DEPARTURE` / `TRAVELLING`,本次去掉。
|
||
- 出行完毕 / 核单中仍可补点免车(结算闸需要),不属于「确认后改配置」。
|
||
- 809114 等其余拒绝条件不变。
|
||
|
||
---
|
||
|
||
### 22. 团期抢单池列表 `GET /v3/admin/order/grab-pool/group-batches`
|
||
|
||
**VO**: `HouseGroupGrabPoolPageReqVO` → `PageResult<HouseGroupGrabPoolItemRespVO>`
|
||
|
||
#### 使用场景
|
||
|
||
房务端整团抢单池(一团一条)。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| batchStatus | Query | String | 否 | **只接受 `RESOURCE_PREPARING`** | **本次收窄**:改前接受 `RESOURCE_PREPARING` / `MATERIAL_PREPARING` / `PENDING_DEPARTURE` / `TRAVELLING` |
|
||
| keyword | Query | String | 否 | ≤ 32 字 | 不变 |
|
||
| productId | Query | Long | 否 | - | 不变 |
|
||
| departDateFrom / departDateTo | Query | LocalDate | 否 | - | 不变 |
|
||
| page | Query | Integer | 否 | ≥ 1,默认 1 | 不变 |
|
||
| pageSize | Query | Integer | 否 | 1~100,默认 20 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| records[].groupBatchId | Long | 不变 |
|
||
| records[].batchStatus | String | **行集合改变**:本次起恒为 `RESOURCE_PREPARING` |
|
||
| records[].batchStatusLabel | String | 恒为「资源准备中」 |
|
||
| records[].hotelReady | Boolean | 不变 |
|
||
| total | Long | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
GET /v3/admin/order/grab-pool/group-batches?batchStatus=RESOURCE_PREPARING&page=1&pageSize=20 HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
无请求体。
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "total": 1, "records": [ { "groupBatchId": "2097250563497385985", "batchNo": "GB26100101", "batchStatus": "RESOURCE_PREPARING", "batchStatusLabel": "资源准备中", "hotelReady": false, "urgencyLevel": "NORMAL" } ] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无可认领团期时空页(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "total": 0, "records": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{ "code": 400, "message": "batchStatus 只接受 RESOURCE_PREPARING", "success": false, "data": null }
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 入池条件:未被认领 + 需求已整体确认 + 团期在 `RESOURCE_PREPARING`;确认后的团不再出现在池里。
|
||
- 不传 `batchStatus` 即可,前端筛选下拉若保留其它三个值会得到 400。
|
||
|
||
---
|
||
|
||
### 23. 整团认领 `POST /v3/admin/order/grab-pool/group-batches/{groupBatchId}/claim`
|
||
|
||
**VO**: `Result<Void>`(无请求体)
|
||
|
||
#### 使用场景
|
||
|
||
房务在抢单池点「认领」整团。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | 团期主键 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| data | Void | 成功返回 null |
|
||
|
||
#### 请求示例
|
||
|
||
```http
|
||
POST /v3/admin/order/grab-pool/group-batches/2097250563497385985/claim HTTP/1.1
|
||
Host: api.test.1814.love:9443
|
||
Authorization: Bearer <admin token>
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": null, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
无列表出参。
|
||
|
||
```json
|
||
{ "code": 200, "data": null, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808651,
|
||
"message": "该团期当前不可认领(需求未整体确认或团期阶段不允许)",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 团期阶段须为 `RESOURCE_PREPARING`;改前物料准备中 / 待出发 / 出行中也可认领。
|
||
- 已被他人认领 / 自己已认领的码不变。
|
||
|
||
---
|
||
|
||
### 24. 团级接管(超管) `POST /v3/admin/order/grab-pool/group-batches/{groupBatchId}/takeover`
|
||
|
||
**VO**: `HouseGroupTakeoverReqVO` → `HouseGroupTakeoverRespVO`
|
||
|
||
#### 使用场景
|
||
|
||
超管把某团的房务认领人改派给另一位房务(如原认领人离职)。与整团认领共用同一阶段集合。
|
||
|
||
#### 入参
|
||
|
||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||
|------|------|------|------|------|------|
|
||
| groupBatchId | Path | Long | ✅ | 团期主键 | 不变 |
|
||
| toUserId | Body | Long | ✅ | 须为在职房务 | 不变 |
|
||
| reason | Body | String | ✅ | trim 后 10~200 字 | 不变 |
|
||
|
||
#### 出参
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| groupBatchId | Long | 不变 |
|
||
| fromClaimerId / toClaimerId | Long | 不变 |
|
||
| toClaimerName | String | 不变 |
|
||
| clearedOrderIds / legacyFinalizedOrderIds / skippedOrderIds | List<String> | 不变 |
|
||
|
||
#### 请求示例
|
||
|
||
```json
|
||
{ "toUserId": 30002, "reason": "原认领房务离职,指派新房务接管该团" }
|
||
```
|
||
|
||
#### 响应示例
|
||
|
||
```json
|
||
{ "code": 200, "message": "成功", "data": { "groupBatchId": "2097250563497385985", "fromClaimerId": "30001", "toClaimerId": "30002", "toClaimerName": "李四", "clearedOrderIds": [], "legacyFinalizedOrderIds": [], "skippedOrderIds": [] }, "success": true }
|
||
```
|
||
|
||
#### 空数据 / 降级响应
|
||
|
||
没有需要清理的户级归属时三个列表为空数组(不变)。
|
||
|
||
```json
|
||
{ "code": 200, "data": { "clearedOrderIds": [], "legacyFinalizedOrderIds": [], "skippedOrderIds": [] }, "success": true }
|
||
```
|
||
|
||
#### 错误响应
|
||
|
||
```json
|
||
{
|
||
"code": 808651,
|
||
"message": "该团期当前不可认领(需求未整体确认或团期阶段不允许)",
|
||
"success": false,
|
||
"data": null
|
||
}
|
||
```
|
||
|
||
#### 业务边界
|
||
|
||
- 团期阶段须为 `RESOURCE_PREPARING`;改前物料准备中 / 待出发 / 出行中也可接管。确认后的团要换房务负责人,本接口不再可用。
|
||
- 非超管、原因过短等其余拒绝码不变。
|
||
|
||
---
|
||
|
||
## 四、契约约束与正确调用方式
|
||
|
||
### ✅ 正确 / ❌ 错误调用对照
|
||
|
||
| 场景 | 结果 |
|
||
|------|------|
|
||
| ✅ 招募中配导游 / 摄影 / 物资 | 200 |
|
||
| ✅ 配置中改订房、改用车、打回需求、重开用车 | 200 |
|
||
| ❌ 确认后(`MATERIAL_PREPARING`)保存导摄或改物资 | 589598「团期已确认,配置不可修改」 |
|
||
| ❌ 确认后改订房 / 确认订房 / 分房 | 808600 |
|
||
| ❌ 确认后整体确认需求、打回需求、保存用车需求 | 589501 |
|
||
| ❌ 确认后受控重开用车 | 809111 |
|
||
| ❌ 抢单池 `batchStatus=MATERIAL_PREPARING` | 400 |
|
||
|
||
### 文案变化(码值不变)
|
||
|
||
| code | 改前 message | 改后 message |
|
||
|---|---|---|
|
||
| 589598 | 出行后不可再配置导游 / 摄影 / 物资 | 团期已确认,配置不可修改 |
|
||
| 808600 | 团期当前阶段({0})不允许修改订房计划 | 团期当前阶段({0})不允许修改订房计划:订房计划仅在配置阶段可改,团期已确认,配置不可修改 |
|
||
| 809111 | 团期当前状态 {0} 不允许编辑、确认或重开正式用车需求 | 团期当前状态 {0} 不允许编辑、确认或重开正式用车需求:仅配置阶段可改,团期已确认,配置不可修改 |
|
||
|
||
前端按码值分支即可;按原文案做过匹配的需改。
|
||
|
||
---
|
||
|
||
## 五、数据库行为
|
||
|
||
- 所有接口在阶段门被拒时**零写入**:阶段门位于任何写库动作之前。
|
||
- 放行时的写入行为与改前完全一致(本单只改允许的阶段集合与拒绝文案),不新增、不删除任何写入。
|
||
- 抢单池与两个预检接口只读。
|
||
|
||
---
|
||
|
||
## 六、边界行为
|
||
|
||
- 未登录 → 401(网关拦截)。
|
||
- 团期不存在 → 589500 / 各域既有「不存在」码(不变)。
|
||
- 已流团:导摄物资 589598、订房计划只允许删除 / 整团释放、需求与用车一律 589501 / 809111。
|
||
- 子订单退单、转团、加人不受本单影响(只锁团期配置,不锁子订单)。
|
||
- 满团名额调整(招募、配置)、流团(招募 ~ 待出发)窗口不变。
|
||
- 核单中订房修改的 808617、出行中的 808690 两道守卫在修改路径上已不可达。
|
||
|
||
---
|
||
|
||
## 六.6、修改前后对比
|
||
|
||
### 字段级对比
|
||
|
||
| 字段 | 改前 | 改后 |
|
||
|------|------|------|
|
||
| 抢单池入参 `batchStatus` 可选值 | `RESOURCE_PREPARING` / `MATERIAL_PREPARING` / `PENDING_DEPARTURE` / `TRAVELLING` | 仅 `RESOURCE_PREPARING` |
|
||
| 订房预检 `stageAllowed` | 资源准备中 ~ 核单中为 true | 仅资源准备中为 true |
|
||
| 需求预检 `ready` 的阶段条件 | 资源准备中 / 物料准备中 / 待出发 / 出行中 | 仅资源准备中 |
|
||
| 589598 / 808600 / 809111 message | 见「四」改前列 | 见「四」改后列 |
|
||
|
||
### 行为级对比
|
||
|
||
| 写口 | 改前允许 | 改后允许 |
|
||
|------|----------|----------|
|
||
| 导游 / 摄影 / 物资(接口 1~5) | 招募 / 配置 / 物料准备中 / 待出发 | 招募 / 配置 |
|
||
| 订房计划新增 / 修改 / 按日确认 / 整团确认 / 分房微调 / 重算(接口 6、7、9、10、12、13) | 资源准备中 ~ 核单中 | 资源准备中 |
|
||
| 订房计划删除(接口 8) | 资源准备中 ~ 核单中 + 已流团 | 资源准备中 + 已流团 |
|
||
| 需求整体确认(接口 15) | 资源准备中 / 物料准备中 / 待出发 / 出行中 | 资源准备中 |
|
||
| 整团打回(接口 16) | 除已流团外全程 | 资源准备中 |
|
||
| 逐单打回(接口 17、18) | 不看团期阶段 | 资源准备中 |
|
||
| 保存正式用车需求(接口 19) | 资源准备中 / 物料准备中 / 待出发 / 出行中 | 资源准备中 |
|
||
| 受控重开(接口 20) | 资源准备中 / 物料准备中 / 待出发 | 资源准备中 |
|
||
| 免车(接口 21) | 资源准备中 / 物料准备中 / 待出发 / 出行中 / 出行完毕 / 核单中 | 资源准备中 / 出行完毕 / 核单中 |
|
||
| 整团认领 / 团级接管(接口 23、24) | 资源准备中 / 物料准备中 / 待出发 / 出行中 | 资源准备中 |
|
||
|
||
## 六.7、影响评估
|
||
|
||
- **是否破坏向后兼容**: 是。确认后的写操作全部被拒;抢单池 `batchStatus` 旧可选值返 400;589598 文案变化。
|
||
- **前端是否必须同步上线**: 否(后端拒绝即安全),但建议同步:确认后隐藏或置灰上述入口,否则用户点了才看到报错;抢单池筛选下拉若保留旧选项会触发 400。
|
||
- **前端 workaround 清理点**: #8231 交接时物资页签「出行前四态放行」的显隐判据需收回到招募 / 配置两态;按 589598 原文案做匹配的地方改为按码值。
|
||
|
||
---
|
||
|
||
## 七、不影响范围
|
||
|
||
- **仅影响**: 上述 24 个接口的允许阶段与 3 个错误码的文案。
|
||
- **零影响**:
|
||
- 子订单退单 / 转团 / 加人
|
||
- 满团名额调整、流团、取消成团
|
||
- 订房计划整团批量释放(仅已流团,不变)
|
||
- 各接口的路径、权限码、入参结构、成功响应结构
|
||
- 小程序端
|
||
|
||
---
|
||
|
||
## 八、测试环境已验证
|
||
|
||
部署:hl-order-service-v3 = dev-v3 @ d9fdd7fe0 / ade8ac292,经网关 `https://api.test.1814.love` 真实鉴权实测(2026-09-24 09:28–09:58);工单 #8269 已验收关单。
|
||
|
||
| # | 场景 | 结果 |
|
||
|---|---|---|
|
||
| 1 | 招募 / 配置阶段 staff 保存、物资增改删 | 均 200 |
|
||
| 2 | 确认后 staff 修改 / 清空、物资增改删 | 589598「团期已确认,配置不可修改」,数据回读不变;待出发抽查同样拒绝 |
|
||
| 3 | 确认后车务受控重开 / 改正式用车需求 / 免车 | 809111 / 589501 / 589501,需求读回不变 |
|
||
| 4 | 订房计划:配置阶段增改删、整团确认 | 可用;确认后新增 / 修改 / 删除 / 按日确认 / 整团确认 / 微调均 808600;流团后 release-all 过阶段门 |
|
||
| 5 | 需求整体确认 / 批量打回 / 逐单打回 | 配置阶段可用;确认后均 589501 |
|
||
| 6 | 房务抢单池 `batchStatus` | `MATERIAL_PREPARING` → 400;`RESOURCE_PREPARING` → 200 |
|
||
| 7 | 确认后子订单取消、同班期新下子订单 | 均 200,团期状态不变 |
|
||
|
||
---
|
||
|
||
## 九、相关历史 PR
|
||
|
||
| PR | Issue | 说明 | 是否仍有效 |
|
||
|----|-------|------|------------|
|
||
| #8234 / #8237 | #8231 | 导游 / 摄影 / 物资放开到出行前四态 | ❌ 窗口被本单收回到招募 / 配置 |
|
||
| — | #7442 | 车务受控重开(物料准备中 / 待出发窗口) | ❌ 窗口被本单收回到配置 |
|
||
| — | #7210 | 需求整体确认与打回 | ⚠️ 阶段集合被本单收紧 |
|
||
| — | #7324 | 订房计划可写到核单中(返团后修正) | ❌ 本单收回 |
|
||
| **本 PR #8280** | **#8269** | 确认后锁定配置 | ✅ 最新 |
|
||
|
||
---
|
||
|
||
## 十、相关文档
|
||
|
||
- 关联 Issue: [wx/HL#8269](https://git.1814.love/wx/HL/issues/8269)
|
||
- 关联 PR: [wx/HL#8280](https://git.1814.love/wx/HL/pulls/8280)
|
||
- 被本条取代的窗口描述:`changelogs-v2/2026-09/23_8231_配导游配摄影物资放开到出行前四态-修改接口-管理后台.md`
|
||
- 同批六节点条目:团期人工确认(#8268)、六节点展示与看板七桶(#8271)
|
||
|
||
## 关联 / 联系人
|
||
|
||
### 链接
|
||
|
||
- **Issue**: [#8269](https://git.1814.love/wx/HL/issues/8269)
|
||
- **PR**: [#8280](https://git.1814.love/wx/HL/pulls/8280)
|
||
- **Merge commit**: [7111a8cae](https://git.1814.love/wx/HL/commit/7111a8caef4aedda7ec73d4bb94972ae31dbc4b9)
|
||
|
||
### 联系人
|
||
|
||
- **后端负责人**: @jw
|