文件
hl-api-changelog/changelogs-v2/2026-09/27_8408_订单响应补团号-修改接口-管理后台.md
T
Mimingguang 1b159386b4
changelog-filename-gate / validate (push) Failing after 2s
docs(changelog): 4 条接口变更前端判 not_required(8408 PR-2/8430/8423/8455)
前端实证均为纯增/纯取值层变化,消费面早已就位或无 workaround 可撤:
- 8408 PR-2:109 接口纯增 teamNo,无另查团号 workaround,房务团号列已由 e3f8de23 交付
- 8430:看板详情结构不变只变取值,前端已读 requirementIdentities[TRANSFER]
- 8423:605801/605802 走 silentError 透 msg,requestId fingerprint 键控自动换
- 8455:看板详情读侧对齐写侧,前端全直读直显,误报修正后自动正确
2026-09-28 14:35:15 +08:00

248 KiB
原始文件 Blame 文件历史

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base
hl-changelog/v2 8408 订单管理后台响应体补团号字段 admin wx(GIT) 修改接口 deployed verified not_required PR #8439(合并提交 69046568c)与 #8447(合并提交 97b9754f2)已合入 dev-v3,order-v3 已按 97b9754f2 部署测试环境。网关实测:团期户列表 50/50、首页看板 5/5、房务详情 2/2 的 teamNo 与库一致;管理端新建订单后登记首笔线下收款,响应 teamNo 为本次生成的团号,与库一致。其余接口由单测和响应字段门禁 TeamNoResponseFieldGateTest 覆盖,未逐个走网关。 前端实证(mmg 2026-09-28):纯增只读 teamNo,无「按订单ID另查团号」workaround(teamNo 已在退款/财务/车务/房务等直读响应字段),唯一具体消费(房务户级团号列)已由独立件 e3f8de23 交付;前端无需同步,判 not_required。 2026-09-27 dev-v3

订单服务(order-v3): 管理后台响应体批量补团号(teamNo)字段

存放目录:

  • 一期(v2,无 order-v3 标签的工单)→ changelogs/{YYYY-MM}/
  • 二期(v3,order-v3 标签的工单)→ changelogs-v2/{YYYY-MM}/

服务: hl-order-service-v3 (端口 8083) + hl-user-service(仅出口透传,零改动) PR: #8439(字段主体) + #8447(线下收款首笔登记响应取写后团号、空白团号归一为 null) Issue: #8408 日期: 2026-09-27 影响范围: 管理后台(admin) 109 个接口(107 个 order-v3 + 2 个 user-service 工作台出口)的响应体补充只读字段 teamNo(团号)


⚠️ 关键变化 / 一、背景

本工单(#8408)的字段侧按端拆开交付:车务(fleet)侧由 PR #8419 交付(见 27_8408_车务响应补团号-修改接口-管理后台.md);小程序(mp)端接口不在本文范围;本文(PR #8439 + #8447)覆盖 order-v3 管理后台侧 107 个接口 + user-service 工作台的 2 个出口(仪表盘「即将出行」列表,字段透传自 order-v3,user-service 本身零改动)。

本次是纯新增字段的向后兼容改动:上述 109 个接口的响应体新增只读字段 teamNo(团号),不删除、不重命名、不改变类型任何既有字段,不新增任何入参、不改变任何现有校验/错误码/鉴权规则。前端不改代码也不会报错——新增消费该字段是可选的。

teamNo 语义:

  • 格式固定为 yy-NNNN(如 26-0480),来源于订单主表 team_no 列。
  • 订单首次付款入账时生成:线上支付成功、管理端登记首笔线下收款、订单状态干预推进到已付款,三条路径口径相同。已有团号的订单再次付款(如补尾款)时原样保留,不换号。
  • 未付款的订单没有团号,teamNo 为 null。团号为空白时同样返回 null:不返回空串,也不用订单号顶替。
  • 登记首笔线下收款(POST /v3/admin/order/{orderId}/payment/manual-receipt)的响应里,teamNo 就是本次登记生成的团号,与之后查询订单拿到的一致(#8447)。
  • 另有 3 处接口原本就返回 teamNo,本次只改了一点:空白团号统一返回 null,字段和类型都不变(#8447)。这 3 处不在下方接口清单内:
    • 评价列表 GET /v3/admin/review/list
    • 评价详情 GET /v3/admin/review/{reviewId}
    • 退款申请分页 GET /v3/admin/refund/application/page
    • 另外,退款申请详情里 orderInfo.teamNo 也按同一口径处理。
  • 保险详情有两个入口:GET .../insurance/orders/{id}(纯读)走严格查询,团号查失败会直接报错,不返回 null;sync-status/cancel 等写后出口走降级查询,查失败时 teamNo 为 null,不影响其余字段。

二、变更接口清单

# 接口 方法 路径 变更类型 说明
1 §2.7 查询最终确认回执列表 GET /admin/house/assignments/requirements/{requirementId}/receipts 新增字段 teamNo
2 §2.7 上传最终确认回执(multipart, 可选凭证) POST /admin/house/assignments/requirements/{requirementId}/receipts 新增字段 teamNo
3 §2.6 日历某天下钻明细(date + scope=mine/all + status 多选, 按团折叠) GET /admin/house/calendar/day 新增字段 teamNo
4 §2.0b 需求历史完整列表(N 版独立数据 + diff + 退回信息) GET /admin/house/orders/{orderId}/requirement-history 新增字段 teamNo
5 投诉分页列表(只读) GET /v3/admin/complaint/page 新增字段 teamNo
6 投诉详情(只读) GET /v3/admin/complaint/{id} 新增字段 teamNo
7 团期配房详情 GET /v3/admin/house/group-batches/{groupBatchId} 新增字段 teamNo
8 团期分房总览(只读) GET /v3/admin/house/group-batches/{groupBatchId}/allocations 新增字段 teamNo
9 人工微调分房 POST /v3/admin/house/group-batches/{groupBatchId}/allocations 新增字段 teamNo
10 重算分房 POST /v3/admin/house/group-batches/{groupBatchId}/allocations/rebuild 新增字段 teamNo
11 整团确认订房 POST /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm 新增字段 teamNo
12 订房确认预检(只读) GET /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm-check 新增字段 teamNo
13 按日确认订房 POST /v3/admin/house/group-batches/{groupBatchId}/room-plans/days/{stayDate}/confirm 新增字段 teamNo
14 团期逐日用房需求明细 GET /v3/admin/house/group-batches/{groupBatchId}/room-requirements 新增字段 teamNo
15 §6.5 酒店维度操作日志(P2 候用, 接口设计完整保留) GET /v3/admin/house/hotels/{hotelId}/operation-log 新增字段 teamNo
16 退保 POST /v3/admin/insurance/cancel/{id} 新增字段 teamNo
17 订单保障状态 GET /v3/admin/insurance/coverage/{orderId} 新增字段 teamNo
18 保险订单列表 GET /v3/admin/insurance/list 新增字段 teamNo
19 添加出行人保险备注 POST /v3/admin/insurance/order/{orderId}/traveler-note 新增字段 teamNo
20 保险订单列表 GET /v3/admin/insurance/orders 新增字段 teamNo
21 按订单查保险列表 GET /v3/admin/insurance/orders/by-order/{orderId} 新增字段 teamNo
22 保险订单列表 GET /v3/admin/insurance/orders/{id} 新增字段 teamNo
23 刷新/同步保险订单出单状态 POST /v3/admin/insurance/orders/{id}/sync-status 新增字段 teamNo
24 手动投保 POST /v3/admin/insurance/purchase 新增字段 teamNo
25 创建订单 POST /v3/admin/order 新增字段 teamNo
26 财务审批通过(SUBMITTED→APPROVED) PUT /v3/admin/order/advance/{advanceId}/approve 新增字段 teamNo
27 财务审批驳回(SUBMITTED→REJECTED) PUT /v3/admin/order/advance/{advanceId}/reject 新增字段 teamNo
28 GB-ADM-061 团期审批中心列表(流团 + 退单户) GET /v3/admin/order/group-batch/approvals/page 新增字段 teamNo
29 GB-ADM-072 退单审批分页列表(管理员) GET /v3/admin/order/group-batch/withdraw/page 新增字段 teamNo
30 A2 团期详情 GET /v3/admin/order/group-batch/{groupBatchId} 新增字段 teamNo
31 GB-ADM-042 发起团期预支(创建即待审批) POST /v3/admin/order/group-batch/{groupBatchId}/advance 新增字段 teamNo
32 核单面板(GB-ADM-050) GET /v3/admin/order/group-batch/{groupBatchId}/audit 新增字段 teamNo
33 保存核单录入(GB-ADM-051) PUT /v3/admin/order/group-batch/{groupBatchId}/audit 新增字段 teamNo
34 提交核算(GB-ADM-052) POST /v3/admin/order/group-batch/{groupBatchId}/audit/allocate 新增字段 teamNo
35 团期确认预检(只读,配置 → 确认) GET /v3/admin/order/group-batch/{groupBatchId}/confirm-check 新增字段 teamNo
36 GB-ADM-031 手动开合同/保险 POST /v3/admin/order/group-batch/{groupBatchId}/contracts/issue 新增字段 teamNo
37 GB-ADM-031 作废重开合同/保险 POST /v3/admin/order/group-batch/{groupBatchId}/contracts/reissue 新增字段 teamNo
38 批量催签合同 POST /v3/admin/order/group-batch/{groupBatchId}/contracts/remind-sign 新增字段 teamNo
39 A5 团期行程逐日汇总(GB-ADM-018) GET /v3/admin/order/group-batch/{groupBatchId}/itinerary 新增字段 teamNo
40 A6 团期行程某项逐户下钻(GB-ADM-019) GET /v3/admin/order/group-batch/{groupBatchId}/itinerary/nodes/{nodeKey} 新增字段 teamNo
41 出具团级行程单(只排版全团一致项,差异项标「按户另见」) GET /v3/admin/order/group-batch/{groupBatchId}/print-itinerary 新增字段 teamNo
42 手工复判进入待出发硬门(物资准备中 → 待出发) POST /v3/admin/order/group-batch/{groupBatchId}/recheck-departure-gate 新增字段 teamNo
43 全团需求汇总 GET /v3/admin/order/group-batch/{groupBatchId}/requirement-summary 新增字段 teamNo
44 整体确认需求缺失预检(只读) GET /v3/admin/order/group-batch/{groupBatchId}/requirement/confirm-check 新增字段 teamNo
45 按户打回需求(退回定制师重提) POST /v3/admin/order/group-batch/{groupBatchId}/requirement/reject 新增字段 teamNo
46 批量确认接送机需求(允许部分成功) POST /v3/admin/order/group-batch/{groupBatchId}/requirement/transfer/batch-confirm 新增字段 teamNo
47 团期配房明细(只读) GET /v3/admin/order/group-batch/{groupBatchId}/room-plans 新增字段 teamNo
48 核单按行程节点逐户下钻(GB-ADM-056) POST /v3/admin/order/group-batch/{groupBatchId}/settlement/node-lines 新增字段 teamNo
49 转订单(子订单跨期转入) POST /v3/admin/order/group-batch/{groupBatchId}/sub-order/{orderId}/transfer-in 新增字段 teamNo
50 转订单候选子订单列表 GET /v3/admin/order/group-batch/{groupBatchId}/transfer-candidates 新增字段 teamNo
51 读团期正式用车需求(未形成时返回 null;带配车刷新状态只读投影) GET /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement 新增字段 teamNo
52 保存团期正式用车需求(全量替换) PUT /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement 新增字段 teamNo
53 自动汇总正式用车需求草稿(只读;草稿可原样 PUT) GET /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/aggregate-draft 新增字段 teamNo
54 声明整团无需用车(零分组已确认,撤销走 withdraw) POST /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/waive 新增字段 teamNo
55 整份撤回正式用车需求(退回草稿,已配车辆不动) POST /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/withdraw 新增字段 teamNo
56 发票详情(完整申请明细,供上传弹窗/详情页) GET /v3/admin/order/invoice/{id} 新增字段 teamNo
57 生成用餐信息(按订单产品快照生成空行,已有行不重复生成) POST /v3/admin/order/meal-info/generate 新增字段 teamNo
58 查询用餐信息列表(按订单 / 团期 / 未挂归属) GET /v3/admin/order/meal-info/list 新增字段 teamNo
59 重置用餐信息(删掉全部行后按快照重新生成空行) POST /v3/admin/order/meal-info/reset 新增字段 teamNo
60 保存用餐信息(整单一次保存:带行ID覆盖、不带新增、没传上来的软删) POST /v3/admin/order/meal-info/save 新增字段 teamNo
61 套用用餐模版(返回订单现有行 + 模版套出来的行,模版行接在后面,不改库) POST /v3/admin/order/meal-template/apply 新增字段 teamNo
62 §2.5 房间分配查询(按家庭分组) GET /v3/admin/order/orders/{orderId}/rooms 新增字段 teamNo
63 受控推进单个订单状态(走状态机+写日志+联动房车日期,幂等) POST /v3/admin/order/{id}/advance-state 新增字段 teamNo
64 订单详情 - 发票 Tab GET /v3/admin/order/{id}/invoices 新增字段 teamNo
65 查询 staff 配置列表 GET /v3/admin/order/{id}/staff 新增字段 teamNo
66 新增 staff 配置 POST /v3/admin/order/{id}/staff 新增字段 teamNo
67 编辑 staff 配置 PUT /v3/admin/order/{id}/staff/{staffAssignmentId} 新增字段 teamNo
68 设置 staff 报账人等级(核心订单) PUT /v3/admin/order/{id}/staff/{staffAssignmentId}/reporter-rank 新增字段 teamNo
69 终止行程·退款预览(出行中) POST /v3/admin/order/{id}/terminate/refund-preview 新增字段 teamNo
70 大交通批次新增 POST /v3/admin/order/{id}/transport-plan/add 新增字段 teamNo
71 大交通批次批量替换 POST /v3/admin/order/{id}/transport-plan/batch 新增字段 teamNo
72 大交通批次列表 GET /v3/admin/order/{id}/transport-plan/list 新增字段 teamNo
73 大交通批次编辑 POST /v3/admin/order/{id}/transport-plan/{planId}/edit 新增字段 teamNo
74 单个出行人新增 POST /v3/admin/order/{id}/traveler/add 新增字段 teamNo
75 出行人列表 GET /v3/admin/order/{id}/traveler/list 新增字段 teamNo
76 订单增减项(统一端点,按 direction 分流) POST /v3/admin/order/{orderId}/adjustment 新增字段 teamNo
77 创建预支(创建即待审批) POST /v3/admin/order/{orderId}/advance 新增字段 teamNo
78 分页查询本单预支列表 GET /v3/admin/order/{orderId}/advances 新增字段 teamNo
79 查询订单优惠+附加费清单 GET /v3/admin/order/{orderId}/discount-surcharge/list 新增字段 teamNo
80 新增订单优惠(已废弃,改调 /adjustment) POST /v3/admin/order/{orderId}/discounts 新增字段 teamNo
81 定制师代客申请发票(须订单已完成) POST /v3/admin/order/{orderId}/invoice/apply 新增字段 teamNo
82 生成电子行程单数据(对客) GET /v3/admin/order/{orderId}/itinerary-document 新增字段 teamNo
83 查询订单完整行程(含全部实配嵌套,已真实化 Issue #2471) GET /v3/admin/order/{orderId}/itinerary/full 新增字段 teamNo
84 查询订单线下收款列表(含已撤销行,审计溯源用) GET /v3/admin/order/{orderId}/payment/manual-receipt 新增字段 teamNo
85 登记线下收款(报账人收款/对公转账/定制师代收),同事务推进 paid_amount POST /v3/admin/order/{orderId}/payment/manual-receipt 新增字段 teamNo
86 撤销线下收款(同事务回退 paid_amount,行保留可追溯) DELETE /v3/admin/order/{orderId}/payment/manual-receipt/{receiptId} 新增字段 teamNo
87 财务复核确认结算 POST /v3/admin/order/{orderId}/settlement/confirm 新增字段 teamNo
88 管理员反确认核单终态快照 POST /v3/admin/order/{orderId}/settlement/final-snapshots/reopen 新增字段 teamNo
89 完成核单 POST /v3/admin/order/{orderId}/settlement/finalize 新增字段 teamNo
90 查询核单操作日志 GET /v3/admin/order/{orderId}/settlement/logs 新增字段 teamNo
91 查询车辆核单草稿 GET /v3/admin/order/{orderId}/settlement/step3/vehicles 新增字段 teamNo
92 全量保存车辆核单草稿 PUT /v3/admin/order/{orderId}/settlement/step3/vehicles 新增字段 teamNo
93 查核单汇总快照 GET /v3/admin/order/{orderId}/settlement/summary 新增字段 teamNo
94 新增订单附加费(已废弃,改调 /adjustment) POST /v3/admin/order/{orderId}/surcharges 新增字段 teamNo
95 增订单标签 POST /v3/admin/order/{orderId}/tag 新增字段 teamNo
96 分页查询退款申诉 GET /v3/admin/refund/appeal/page 新增字段 teamNo
97 查询申诉详情(管理端) GET /v3/admin/refund/appeal/{id} 新增字段 teamNo
98 客服代下退款申请 POST /v3/admin/refund/application 新增字段 teamNo
99 手动完成退款 PUT /v3/admin/refund/application/{applicationId}/complete 新增字段 teamNo
100 退款申请详情 GET /v3/admin/refund/application/{id} 新增字段 teamNo
101 触发实退 POST /v3/admin/refund/execute/{appId} 新增字段 teamNo
102 提交审核 POST /v3/admin/refund/review 新增字段 teamNo
103 取消团队 POST /v3/admin/team-report/cancel 新增字段 teamNo
104 暂存表单 POST /v3/admin/team-report/save 新增字段 teamNo
105 查询审核状态 GET /v3/admin/team-report/status/{orderId} 新增字段 teamNo
106 提交到12301平台 POST /v3/admin/team-report/submit 新增字段 teamNo
107 获取上报记录 GET /v3/admin/team-report/{orderId} 新增字段 teamNo
108 工作台仪表盘(角色分发,支持时间范围) GET /admin/profile/dashboard 新增字段 data.upcomingTrips[].teamNo
109 工作台概览(已废弃) GET /admin/designer/dashboard 新增字段 data.upcomingTrips[].teamNo

三、接口详情

1. §2.7 查询最终确认回执列表 GET /admin/house/assignments/requirements/{requirementId}/receipts

VO: HouseFinalizeReceiptRespVO

使用场景

§2.7 查询最终确认回执列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
requirementId Path Long ✅ 正整数 需求主键 requirement_id

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /admin/house/assignments/requirements/1934567890123456701/receipts

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

2. §2.7 上传最终确认回执(multipart, 可选凭证) POST /admin/house/assignments/requirements/{requirementId}/receipts

VO: HouseFinalizeReceiptRespVO

使用场景

§2.7 上传最终确认回执(multipart, 可选凭证)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
requirementId Path Long ✅ 正整数 需求主键 requirement_id
file Body(multipart) File ✅ — 上传文件

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

POST /admin/house/assignments/requirements/{requirementId}/receipts
Content-Type: multipart/form-data; boundary=...

(file 字段为二进制流,略)

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

3. §2.6 日历某天下钻明细(date + scope=mine/all + status 多选, 按团折叠) GET /admin/house/calendar/day

VO: DayTourItemVO

使用场景

§2.6 日历某天下钻明细(date + scope=mine/all + status 多选, 按团折叠)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
date Query LocalDate — — date
scope Query String — — scope
status Query String — — 状态点筛选:inProgress/inquiry/pending/exception,支持多选逗号分隔;不填 = 全部

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long orderId(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /admin/house/calendar/day?date=2026-09-27&scope=scope&status=inProgress

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

4. §2.0b 需求历史完整列表(N 版独立数据 + diff + 退回信息) GET /admin/house/orders/{orderId}/requirement-history

VO: RequirementHistoryRespVO

使用场景

§2.0b 需求历史完整列表(N 版独立数据 + diff + 退回信息)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
includeDiff Query Boolean — — includeDiff
onlyReturned Query Boolean — — onlyReturned

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long orderId(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /admin/house/orders/{orderId}/requirement-history?includeDiff=True&onlyReturned=True

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

5. 投诉分页列表(只读) GET /v3/admin/complaint/page

VO: ComplaintRespVO

使用场景

投诉分页列表(只读)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
page Query Integer — — 页码
pageSize Query Integer — — 每页条数
keyword Query String — — keyword
orderNo Query String — — 订单号精确匹配
groupCode Query String — — 团号精确匹配
customizerNickname Query String — — 定制师昵称模糊
types Query List — — types
isResolved Query Boolean — — isResolved
dateFrom Query LocalDate — — dateFrom
dateTo Query LocalDate — — dateTo
dayScope Query String — — dayScope

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/complaint/page?page=1&pageSize=20&keyword=keyword&orderNo=HL202604220001&groupCode=A001&customizerNickname=张

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

6. 投诉详情(只读) GET /v3/admin/complaint/{id}

VO: ComplaintRespVO

使用场景

投诉详情(只读)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 id

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/complaint/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

7. 团期配房详情 GET /v3/admin/house/group-batches/{groupBatchId}

VO: HouseGroupBatchBoardRespVO

使用场景

团期配房详情。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID

出参

字段 类型 说明
data.outOfRangeHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.outOfRangeHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行
data.specialTags[].teamNo String 新增:团号(为 null 见「降级响应」)
data.specialTags List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/house/group-batches/1934567890123456701

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "outOfRangeHouseholds": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

8. 团期分房总览(只读) GET /v3/admin/house/group-batches/{groupBatchId}/allocations

VO: GroupBatchRoomAllocationOverviewRespVO

使用场景

团期分房总览(只读)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID
stayDate Query LocalDate — — 只看某一入住日;不传 = 全部有计划行或有需求的日

出参

字段 类型 说明
data.days[].plans[].allocations[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 分给哪一户(同层级对照)
data.days[].plans[].allocations List 容器字段,结构不变,新增元素见上方 teamNo 行
data.days[].households[].teamNo String 新增:团号(为 null 见「降级响应」)
data.days[].households List 容器字段,结构不变,新增元素见上方 teamNo 行
data.blockedHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
data.blockedHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/house/group-batches/{groupBatchId}/allocations?stayDate=2026-06-12

响应示例

共 3 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "days": [
   {
    "plans": [
     {
      "allocations": [
       {
        "orderId": "1934567890123456701",
        "teamNo": "26-0480"
       }
      ]
     }
    ]
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

9. 人工微调分房 POST /v3/admin/house/group-batches/{groupBatchId}/allocations

VO: GroupBatchRoomAllocationRebuildRespVO

使用场景

人工微调分房。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID
items Body List — — 人工分房行,与 clearPlanIds 至少一个非空;最多 500 行
clearPlanIds Body List — — 这些计划行下的人工分房全部软删(回到纯自动分房),最多 200 条

出参

字段 类型 说明
data.days[].shortage[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.days[].shortage List 容器字段,结构不变,新增元素见上方 teamNo 行
data.days[].manualConflicts[].teamNo String 新增:团号(为 null 见「降级响应」)
data.days[].manualConflicts List 容器字段,结构不变,新增元素见上方 teamNo 行
data.days[].outOfRange[].teamNo String 新增:团号(为 null 见「降级响应」)
data.days[].outOfRange List 容器字段,结构不变,新增元素见上方 teamNo 行
data.warnings[].teamNo String 新增:团号(为 null 见「降级响应」)
data.warnings List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "items": [
  {
   "planId": "1934567890123456701",
   "orderId": "1934567890123456701",
   "roomCount": 1,
   "roomGroupNo": "F1",
   "travelerCount": 2,
   "bedType": "twin",
   "remark": "备注,≤256 字"
  }
 ],
 "clearPlanIds": []
}

响应示例

共 4 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "days": [
   {
    "shortage": [
     {
      "orderId": "1934567890123456701",
      "teamNo": "26-0480"
     }
    ]
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

10. 重算分房 POST /v3/admin/house/group-batches/{groupBatchId}/allocations/rebuild

VO: GroupBatchRoomAllocationRebuildRespVO

使用场景

重算分房。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID
force Body Boolean — — 是否先重置全部人工分房;默认 false
stayDate Body LocalDate — — 只重算某一入住日;不传 = 整团全部已确认日
reason Body String — — 重置原因,force=true 时必填(≤256 字),写进团级时间线

出参

字段 类型 说明
data.days[].shortage[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.days[].shortage List 容器字段,结构不变,新增元素见上方 teamNo 行
data.days[].manualConflicts[].teamNo String 新增:团号(为 null 见「降级响应」)
data.days[].manualConflicts List 容器字段,结构不变,新增元素见上方 teamNo 行
data.days[].outOfRange[].teamNo String 新增:团号(为 null 见「降级响应」)
data.days[].outOfRange List 容器字段,结构不变,新增元素见上方 teamNo 行
data.warnings[].teamNo String 新增:团号(为 null 见「降级响应」)
data.warnings List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "force": "false",
 "stayDate": "2026-06-12",
 "reason": "重置原因,force=true 时必填"
}

响应示例

共 4 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "days": [
   {
    "shortage": [
     {
      "orderId": "1934567890123456701",
      "teamNo": "26-0480"
     }
    ]
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

11. 整团确认订房 POST /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm

VO: GroupBatchRoomConfirmAllRespVO

使用场景

整团确认订房。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID

出参

字段 类型 说明
data.warnings[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 相关子订单 ID,无具体户时为空(同层级对照)
data.warnings List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/house/group-batches/1934567890123456701/room-plans/confirm

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "warnings": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "warnings": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

12. 订房确认预检(只读) GET /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm-check

VO: GroupBatchRoomConfirmCheckRespVO

使用场景

订房确认预检(只读)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID
stayDate Query LocalDate — — 入住日,不传则返回全部相关日

出参

字段 类型 说明
data.noBaselineOrders[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.noBaselineOrders List 容器字段,结构不变,新增元素见上方 teamNo 行
data.outOfRangeOrders[].teamNo String 新增:团号(为 null 见「降级响应」)
data.outOfRangeOrders List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/house/group-batches/{groupBatchId}/room-plans/confirm-check?stayDate=2026-06-12

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "noBaselineOrders": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

13. 按日确认订房 POST /v3/admin/house/group-batches/{groupBatchId}/room-plans/days/{stayDate}/confirm

VO: GroupBatchRoomDayConfirmRespVO

使用场景

按日确认订房。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID
stayDate Path LocalDate ✅ — 入住日 yyyy-MM-dd

出参

字段 类型 说明
data.warnings[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 相关子订单 ID,无具体户时为空(同层级对照)
data.warnings List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/house/group-batches/1934567890123456701/room-plans/days/2026-09-27/confirm

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "warnings": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "warnings": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

14. 团期逐日用房需求明细 GET /v3/admin/house/group-batches/{groupBatchId}/room-requirements

VO: HouseGroupBatchRoomRequirementRespVO

使用场景

团期逐日用房需求明细。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID

出参

字段 类型 说明
data.days[].households[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.days[].households List 容器字段,结构不变,新增元素见上方 teamNo 行
data.householdsWithoutBasis[].teamNo String 新增:团号(为 null 见「降级响应」)
data.householdsWithoutBasis List 容器字段,结构不变,新增元素见上方 teamNo 行
data.outOfRangeHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
data.outOfRangeHouseholds List<HouseGroupBatchBoardRespVO.OutOfRangeHousehold> 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/house/group-batches/1934567890123456701/room-requirements

响应示例

共 3 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "days": [
   {
    "households": [
     {
      "orderId": "1934567890123456701",
      "teamNo": "26-0480"
     }
    ]
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

15. §6.5 酒店维度操作日志(P2 候用, 接口设计完整保留) GET /v3/admin/house/hotels/{hotelId}/operation-log

VO: HouseOperationLogItemVO

使用场景

§6.5 酒店维度操作日志(P2 候用, 接口设计完整保留)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
hotelId Path Long ✅ 正整数 hotelId
opType Query String — — opType
source Query String — — source
operatorId Query Long — — 操作人房务 ID
keyword Query String — — keyword
startDate Query LocalDateTime — — startDate
endDate Query LocalDateTime — — 结束时间
sortBy Query String — — sortBy
page Query Long — — 页码
pageSize Query Long — — pageSize

出参

字段 类型 说明
data.records[].detail.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)
data.records[].detail OperationDetailVO 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/house/hotels/{hotelId}/operation-log?opType=opType&source=source&operatorId=1001&keyword=keyword&startDate=2026-09-27T10:00:00&endDate=2026-05-31T23:59:59

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "detail": {
     "orderId": "1934567890123456701",
     "teamNo": "26-0480"
    }
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

16. 退保 POST /v3/admin/insurance/cancel/{id}

VO: InsuranceOrderDetailVO

使用场景

退保。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
insuranceOrderId Path Long ✅ 正整数 insuranceOrderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/insurance/cancel/{id}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

17. 订单保障状态 GET /v3/admin/insurance/coverage/{orderId}

VO: OrderInsuranceCoverageVO

使用场景

订单保障状态。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 旅行订单ID(同层级对照)
data.insuranceOrders[].teamNo String 新增:团号(为 null 见「降级响应」)
data.insuranceOrders List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/insurance/coverage/1934567890123456701

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

18. 保险订单列表 GET /v3/admin/insurance/list

VO: InsuranceOrderVO

使用场景

保险订单列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
page Query Integer — — 页码
pageSize Query Integer — — 每页条数
orderId Query Long — — 关联订单ID
policyNo Query String — — 保单号
status Query String — — status
insuredName Query String — — 被保人姓名
insuranceProductId Query Long — — 保险产品ID

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/insurance/list?page=1&pageSize=20&orderId=1234567890&policyNo=POL202605010001&status=status&insuredName=张三

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

19. 添加出行人保险备注 POST /v3/admin/insurance/order/{orderId}/traveler-note

VO: InsuranceTravelerNoteVO

使用场景

添加出行人保险备注。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId
travelerId Body Long — — 出行人ID
travelerName Body String — — 出行人姓名
noteType Body String — — noteType
remark Body String — — 备注说明

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "travelerId": "1001",
 "travelerName": "张三",
 "noteType": "noteType",
 "remark": "已通过线下渠道购买保险"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

20. 保险订单列表 GET /v3/admin/insurance/orders

VO: InsuranceOrderVO

使用场景

保险订单列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
page Query Integer — — 页码
pageSize Query Integer — — 每页条数
orderId Query Long — — 关联订单ID
policyNo Query String — — 保单号
status Query String — — status
insuredName Query String — — 被保人姓名
insuranceProductId Query Long — — 保险产品ID

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/insurance/orders?page=1&pageSize=20&orderId=1234567890&policyNo=POL202605010001&status=status&insuredName=张三

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

21. 按订单查保险列表 GET /v3/admin/insurance/orders/by-order/{orderId}

VO: InsuranceOrderVO

使用场景

按订单查保险列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/insurance/orders/by-order/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

22. 保险订单列表 GET /v3/admin/insurance/orders/{id}

VO: InsuranceOrderDetailVO

使用场景

保险订单列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
insuranceOrderId Path Long ✅ 正整数 insuranceOrderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/insurance/orders/{id}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

23. 刷新/同步保险订单出单状态 POST /v3/admin/insurance/orders/{id}/sync-status

VO: InsuranceOrderDetailVO

使用场景

刷新/同步保险订单出单状态。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
insuranceOrderId Path Long ✅ 正整数 insuranceOrderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/insurance/orders/{id}/sync-status

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

24. 手动投保 POST /v3/admin/insurance/purchase

VO: InsuranceOrderDetailVO

使用场景

手动投保。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID
schemeId Body Long — — schemeId
insuranceProductId Body Long — — insuranceProductId
planId Body Long — — planId
coverageStartDate Body LocalDate — — 保障开始日期(为空时后端按订单 startDate 自动填充)
coverageEndDate Body LocalDate — — 保障结束日期(为空时后端按订单 endDate 自动填充)
insuredPersons Body List — — 被保人列表(为空时后端按订单出行人自动填充;传了则以传入为准)
remark Body String — — 备注

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联业务订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1234567890",
 "schemeId": "1934567890123456701",
 "insuranceProductId": "1934567890123456701",
 "planId": "1934567890123456701",
 "coverageStartDate": "2026-05-01",
 "coverageEndDate": "2026-05-07",
 "insuredPersons": [
  {
   "name": "张三",
   "idCardType": "idCardType",
   "idCardNo": "110101199001011234",
   "birthday": "1990-01-01",
   "phone": "13800138000"
  }
 ],
 "remark": "备注"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": null
  }
 ]
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

25. 创建订单 POST /v3/admin/order

VO: OrderCreateRespVO

使用场景

创建订单。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
productId Body Long — — 产品 ID
tierSeq Body Integer — — 档位序号
departureDate Body LocalDate — — 出发日期(v4.9 改必填)
adultCount Body Integer — — 成人数(≥1)
childCount Body Integer — — 儿童数(6-12岁;默认 0)
youngChildCount Body Integer — — 幼童数(2-5岁,占座不占床;默认 0)
babyCount Body Integer — — 婴儿数(0-1岁,不占座不占床;默认 0)
customerName Body String — — 客户姓名
customerPhone Body String — — 客户手机(明文传,DB 层 AES)
customerRemark Body String — — 客户备注(≤500)
createSource Body String — — 创建来源(v5.17,非必填,不传默认 CONSULTANT)。
productBatchId Body Long — — 团期 ID(product 侧班期 batchId,v5.17,非必填;GROUP 产品必传,自由出团为空)
roomCount Body Integer — — 房间数(v5.17,非必填,写入 order_main.room_count)
tags Body List — — 订单标签名列表(v5.17,非必填,写入 order_tag)
sharerOpenid Body String — — 分享人 openid(C 端裂变追踪/佣金归属,非必填)
customizerId Body Long — — 分享归因 customizerId(C 端从分享链接带,非必填)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
id Long 订单主键(同层级对照)

其余字段不变,见原接口文档。

请求示例

此处仅示例前 10 个字段,完整字段见入参表。

{
 "productId": "30001234567",
 "tierSeq": 1,
 "departureDate": "2026-06-01",
 "adultCount": 2,
 "childCount": 1,
 "youngChildCount": 0,
 "babyCount": 0,
 "customerName": "张三",
 "customerPhone": "13800002046",
 "customerRemark": "希望住朝阳房"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "id": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

26. 财务审批通过(SUBMITTED→APPROVED) PUT /v3/admin/order/advance/{advanceId}/approve

VO: OrderAdvanceRespVO

使用场景

财务审批通过(SUBMITTED→APPROVED)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
advanceId Path Long ✅ 正整数 预支ID

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

PUT /v3/admin/order/advance/1934567890123456701/approve

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

27. 财务审批驳回(SUBMITTED→REJECTED) PUT /v3/admin/order/advance/{advanceId}/reject

VO: OrderAdvanceRespVO

使用场景

财务审批驳回(SUBMITTED→REJECTED)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
advanceId Path Long ✅ 正整数 预支ID
reason Body String — — 驳回原因(必填)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "reason": "驳回原因"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

28. GB-ADM-061 团期审批中心列表(流团 + 退单户) GET /v3/admin/order/group-batch/approvals/page

VO: GroupBatchApprovalItemRespVO

使用场景

GB-ADM-061 团期审批中心列表(流团 + 退单户)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
bizType Query String — — 业务类型筛选:DISBAND 流团 / WITHDRAW 退单户;不传 = 两类都要
approvalStatus Query String — — 审批状态筛选:PENDING / APPROVED / REJECTED;不传 = 全部
groupBatchId Query Long — — 团期 ID 筛选;不传 = 全部
batchName Query String — — 团期名称模糊搜索(#8253):包含匹配 batchName;输入「第N期」/「N」时另按期号精确匹配
pageNum Query Integer — — 页码,从 1 开始
pageSize Query Integer — — 每页条数,1-100

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 被退子订单 ID(WITHDRAW 有值,DISBAND 为 null)(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/approvals/page?bizType=DISBAND&approvalStatus=PENDING&groupBatchId=90211&batchName=jw测试&pageNum=1&pageSize=20

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

29. GB-ADM-072 退单审批分页列表(管理员) GET /v3/admin/order/group-batch/withdraw/page

VO: WithdrawApprovalItemRespVO

使用场景

GB-ADM-072 退单审批分页列表(管理员)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
approvalStatus Query String — — 审批状态(PENDING/APPROVED/REJECTED;缺省 PENDING,传 ALL 查全部)
groupBatchId Query Long — — 按团期筛选(可选)
keyword Query String — — 客户姓名 / 订单号模糊关键词(可选)
createdFrom Query String — — 提交时间起(yyyy-MM-dd,可选)
createdTo Query String — — 提交时间止(yyyy-MM-dd,含当日,可选)
pageNo Query Integer — — 页码,从 1 开始
pageSize Query Integer — — 每页条数,默认 20,最大 100

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/withdraw/page?approvalStatus=PENDING&groupBatchId=800001&keyword=林婉清&createdFrom=2026-09-01&createdTo=2026-09-30&pageNo=1

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

30. A2 团期详情 GET /v3/admin/order/group-batch/{groupBatchId}

VO: GroupBatchDetailRespVO

使用场景

A2 团期详情。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.departureGates[].teamNo String 新增:团号(为 null 见「降级响应」)
blockedOrderId Long 卡在哪一户(仅出行人证件 / 合同保险两门可能有值,其余为 null);(同层级对照)
data.departureGates List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "departureGates": [
   {
    "blockedOrderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

31. GB-ADM-042 发起团期预支(创建即待审批) POST /v3/admin/order/group-batch/{groupBatchId}/advance

VO: OrderAdvanceRespVO

使用场景

GB-ADM-042 发起团期预支(创建即待审批)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
payeeStaffId Body Long — — 借款对象(资源域 staff.staff_id,取自本团领款人候选下拉项的 id)
advanceType Body String — — 借款类型(数据字典 advance_type 的 dictValue)
amount Body BigDecimal — — 预支金额,> 0 且不超过可支取余额(团期统一池)
purpose Body String — — 用途说明(选填)
voucherUrl Body String — — 凭证文件 URL(选填,前端上传后回传)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "payeeStaffId": "88102",
 "advanceType": "住宿押金",
 "amount": "3000.00",
 "purpose": "沿途住宿押金",
 "voucherUrl": "凭证文件 URL"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

32. 核单面板(GB-ADM-050) GET /v3/admin/order/group-batch/{groupBatchId}/audit

VO: GroupBatchAuditRespVO

使用场景

核单面板(GB-ADM-050)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.details[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.details List 容器字段,结构不变,新增元素见上方 teamNo 行
data.allocs[].teamNo String 新增:团号(为 null 见「降级响应」)
data.allocs List 容器字段,结构不变,新增元素见上方 teamNo 行
data.warnings[].teamNo String 新增:团号(为 null 见「降级响应」)
data.warnings List 容器字段,结构不变,新增元素见上方 teamNo 行
data.staffSettlements[].teamNo String 新增:团号(为 null 见「降级响应」)
data.staffSettlements List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/audit

响应示例

共 4 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "details": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

33. 保存核单录入(GB-ADM-051) PUT /v3/admin/order/group-batch/{groupBatchId}/audit

VO: GroupBatchAuditWriteRespVO

使用场景

保存核单录入(GB-ADM-051)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
items Body List — — 科目行全集(与 details 同事务对账保存,未提交的既有行软删)
details Body List — — 逐户用量全集(按 itemId + orderId 对账)
expectedVersion Body Integer — — 乐观锁版本,取自 GB-ADM-050 返回的 version

出参

字段 类型 说明
data.warnings[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联子订单 ID(同层级对照)
data.warnings List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "items": [
  {
   "itemId": "1934567890123456790",
   "category": "科目",
   "itemName": "D2 图嘎营地蒙古包",
   "dayNo": 2,
   "unitPrice": "380.00",
   "totalAmount": "4800.00",
   "changeReason": "司机加班费已与车队确认",
   "allocRule": "分摊口径",
   "allocGroup": "BUS",
   "seq": 1
  }
 ],
 "details": [
  {
   "itemId": "1934567890123456790",
   "orderId": "1934567890123450001",
   "quantity": "2",
   "participated": "true",
   "allocGroup": "BUS",
   "note": "D3 提前离团"
  }
 ],
 "expectedVersion": 3
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "warnings": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "warnings": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

34. 提交核算(GB-ADM-052) POST /v3/admin/order/group-batch/{groupBatchId}/audit/allocate

VO: GroupBatchAuditAllocateRespVO

使用场景

提交核算(GB-ADM-052)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
expectedVersion Body Integer — — 乐观锁版本,取自 GB-ADM-050 / 上一次写接口返回的 version

出参

字段 类型 说明
data.allocs[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.allocs List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "expectedVersion": 3
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "allocs": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "allocs": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

35. 团期确认预检(只读,配置 → 确认) GET /v3/admin/order/group-batch/{groupBatchId}/confirm-check

VO: GroupBatchConfirmCheckRespVO

使用场景

团期确认预检(只读,配置 → 确认)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.unmetHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.unmetHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/confirm-check

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "unmetHouseholds": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

36. GB-ADM-031 手动开合同/保险 POST /v3/admin/order/group-batch/{groupBatchId}/contracts/issue

VO: GroupBatchIssueResultVO

使用场景

GB-ADM-031 手动开合同/保险。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
orderIds Body List — — 要出具的子订单 ID 列表;为空表示本期全部尚未出具的户。
target Body String — — 出具目标:CONTRACT 只开合同 / INSURANCE 只开保险 / BOTH 两者都开。
reason Body String — — 作废重开时的作废原因(仅 reissue 端点使用,可空)

出参

字段 类型 说明
data.results[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.results List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderIds": [],
 "target": "CONTRACT",
 "reason": "方案选错"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "results": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

37. GB-ADM-031 作废重开合同/保险 POST /v3/admin/order/group-batch/{groupBatchId}/contracts/reissue

VO: GroupBatchIssueResultVO

使用场景

GB-ADM-031 作废重开合同/保险。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
orderIds Body List — — 要出具的子订单 ID 列表;为空表示本期全部尚未出具的户。
target Body String — — 出具目标:CONTRACT 只开合同 / INSURANCE 只开保险 / BOTH 两者都开。
reason Body String — — 作废重开时的作废原因(仅 reissue 端点使用,可空)

出参

字段 类型 说明
data.results[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.results List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderIds": [],
 "target": "CONTRACT",
 "reason": "方案选错"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "results": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

38. 批量催签合同 POST /v3/admin/order/group-batch/{groupBatchId}/contracts/remind-sign

VO: GroupBatchIssueResultVO

使用场景

批量催签合同。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
orderIds Body List — — 要催签的子订单 ID 列表;为空表示本期全部「合同已出但未签」的户。

出参

字段 类型 说明
data.results[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.results List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderIds": []
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "results": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

39. A5 团期行程逐日汇总(GB-ADM-018) GET /v3/admin/order/group-batch/{groupBatchId}/itinerary

VO: GroupBatchItineraryRespVO

使用场景

A5 团期行程逐日汇总(GB-ADM-018)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.dayCountOutliers[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.dayCountOutliers List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/itinerary

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "dayCountOutliers": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

40. A6 团期行程某项逐户下钻(GB-ADM-019) GET /v3/admin/order/group-batch/{groupBatchId}/itinerary/nodes/{nodeKey}

VO: GroupBatchItineraryNodeDetailVO

使用场景

A6 团期行程某项逐户下钻(GB-ADM-019)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
nodeKey Path String ✅ — 归组键,取自 A5 响应
dayNumber Query Integer — — 只看第几天,取自 A5 该卡片所在天;不传=跨天全看

出参

字段 类型 说明
data.items[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.items List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/itinerary/nodes/归组键,取自 A5 响应?dayNumber=1

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "items": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

41. 出具团级行程单(只排版全团一致项,差异项标「按户另见」) GET /v3/admin/order/group-batch/{groupBatchId}/print-itinerary

VO: GroupPrintItineraryRespVO

使用场景

出具团级行程单(只排版全团一致项,差异项标「按户另见」)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期 ID

出参

字段 类型 说明
data.dayCountOutliers[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.dayCountOutliers List 容器字段,结构不变,新增元素见上方 teamNo 行
data.roster[].teamNo String 新增:团号(为 null 见「降级响应」)
data.roster List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/print-itinerary

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "dayCountOutliers": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

42. 手工复判进入待出发硬门(物资准备中 → 待出发) POST /v3/admin/order/group-batch/{groupBatchId}/recheck-departure-gate

VO: GroupBatchDepartureGateRecheckRespVO

使用场景

手工复判进入待出发硬门(物资准备中 → 待出发)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.gates[].teamNo String 新增:团号(为 null 见「降级响应」)
blockedOrderId Long 卡在哪一户(仅出行人证件 / 合同保险两门可能有值,其余为 null);(同层级对照)
data.gates List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/order/group-batch/1934567890123456701/recheck-departure-gate

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "gates": [
   {
    "blockedOrderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "gates": [
   {
    "blockedOrderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

43. 全团需求汇总 GET /v3/admin/order/group-batch/{groupBatchId}/requirement-summary

VO: GroupRequirementSummaryRespVO

使用场景

全团需求汇总。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.orderSpecialTags[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.orderSpecialTags List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/requirement-summary

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderSpecialTags": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

44. 整体确认需求缺失预检(只读) GET /v3/admin/order/group-batch/{groupBatchId}/requirement/confirm-check

VO: GroupBatchRequirementCheckRespVO

使用场景

整体确认需求缺失预检(只读)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.missing[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.missing List 容器字段,结构不变,新增元素见上方 teamNo 行
data.vehicleMissing[].teamNo String 新增:团号(为 null 见「降级响应」)
data.vehicleMissing List 容器字段,结构不变,新增元素见上方 teamNo 行
data.vehicleExemptHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
data.vehicleExemptHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行
data.transferDeclaredWithoutRequirement[].teamNo String 新增:团号(为 null 见「降级响应」)
data.transferDeclaredWithoutRequirement List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/requirement/confirm-check

响应示例

共 4 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "missing": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

45. 按户打回需求(退回定制师重提) POST /v3/admin/order/group-batch/{groupBatchId}/requirement/reject

VO: GroupBatchRequirementRejectRespVO

使用场景

按户打回需求(退回定制师重提)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
orderIds Body List — — 被打回的子订单 ID 列表(必填,1~200 户,服务端去重)
reason Body String — — 打回原因(必填,≤500 字)
resourceType Body String — — 资源类型:HOTEL / VEHICLE / ALL(默认 ALL)。

出参

字段 类型 说明
data.rejected[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.rejected List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderIds": [],
 "reason": "房间需求与套餐不匹配,请重新填写",
 "resourceType": "ALL"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "rejected": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

46. 批量确认接送机需求(允许部分成功) POST /v3/admin/order/group-batch/{groupBatchId}/requirement/transfer/batch-confirm

VO: TransferBatchConfirmRespVO

使用场景

批量确认接送机需求(允许部分成功)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
orderIds Body List — — 待确认的子订单 ID 列表(必填,1~200 户,服务端去重)
dispatchRemark Body String — — 确认备注(选填,≤500 字;整批共用,提供给车队)

出参

字段 类型 说明
data.failed[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.failed List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderIds": [],
 "dispatchRemark": "航班信息已核对,请安排接送"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "failed": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

47. 团期配房明细(只读) GET /v3/admin/order/group-batch/{groupBatchId}/room-plans

VO: GroupBatchRoomPlanDetailRespVO

使用场景

团期配房明细(只读)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期主订单 ID

出参

字段 类型 说明
data.days[].plans[].allocations[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 分给哪一户(同层级对照)
data.days[].plans[].allocations List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/room-plans

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "days": [
   {
    "plans": [
     {
      "allocations": [
       {
        "orderId": "1934567890123456701",
        "teamNo": "26-0480"
       }
      ]
     }
    ]
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

48. 核单按行程节点逐户下钻(GB-ADM-056) POST /v3/admin/order/group-batch/{groupBatchId}/settlement/node-lines

VO: GroupBatchSettlementNodeLinesVO

使用场景

核单按行程节点逐户下钻(GB-ADM-056)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
nodeIds Body List — — 行程节点 ID 列表,原样取自团期行程汇总 days[].nodes[].nodeIds(雪花,传 String);

出参

字段 类型 说明
data.rows[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)
data.rows List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "nodeIds": []
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "rows": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

49. 转订单(子订单跨期转入) POST /v3/admin/order/group-batch/{groupBatchId}/sub-order/{orderId}/transfer-in

VO: TransferSubOrderRespVO

使用场景

转订单(子订单跨期转入)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 转入期(本期)团期ID
orderId Path Long ✅ 正整数 待转入的子订单ID
fromGroupBatchId Body Long — — 源期团期主订单 ID(该子订单当前所在期)
reason Body String — — 转期原因(选填,≤512 字)
notify Body Boolean — — 转入后是否通知客户(默认 true)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 被转子订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "fromGroupBatchId": "1932847562341",
 "reason": "客户改期,转到第 7 期",
 "notify": "true"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

50. 转订单候选子订单列表 GET /v3/admin/order/group-batch/{groupBatchId}/transfer-candidates

VO: TransferCandidateVO

使用场景

转订单候选子订单列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 转入期(本期)团期ID
keyword Query String — — 订单号 / 客户名 / 期号 / 手机号(手机号须整串)

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/transfer-candidates?keyword=订单号 / 客户名 / 期号 / 手机号

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

51. 读团期正式用车需求(未形成时返回 null;带配车刷新状态只读投影) GET /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement

VO: GroupVehicleRequirementRespVO

使用场景

读团期正式用车需求(未形成时返回 null;带配车刷新状态只读投影)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.exemptHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单ID(同层级对照)
data.exemptHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/vehicle-requirement

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "exemptHouseholds": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

52. 保存团期正式用车需求(全量替换) PUT /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement

VO: GroupVehicleRequirementRespVO

使用场景

保存团期正式用车需求(全量替换)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
version Body Integer — — 乐观锁版本号,首次保存传 null
remark Body String — — 整份需求备注
groups Body List — — 全部乘车分组(全量替换,未出现在本次提交里的分组会被移出当前版本)

出参

字段 类型 说明
data.exemptHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单ID(同层级对照)
data.exemptHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "version": 3,
 "remark": "9/13 起换大巴",
 "groups": [
  {
   "groupId": "1867000000009",
   "groupCode": "BUS",
   "vehicleType": "bus",
   "serviceStartDate": "2026-09-12",
   "serviceEndDate": "2026-09-16",
   "seats": 19,
   "count": 2,
   "specialTags": [],
   "remark": "含高速费",
   "days": [
    {
     "dayId": "1934567890123456701",
     "dayNumber": 1,
     "dayTitle": "天标题",
     "description": "天描述/简介",
     "nodes": [],
     "hotels": [],
     "coverUrl": "当日封面图URL, 来自 product",
     "gatherPlace": null,
     "dismissalPlace": null,
     "routePoints": [],
     "dailyMileage": "1000.00",
     "serviceTips": []
    }
   ]
  }
 ]
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "exemptHouseholds": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

53. 自动汇总正式用车需求草稿(只读;草稿可原样 PUT) GET /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/aggregate-draft

VO: GroupVehicleAggregateDraftRespVO

使用场景

自动汇总正式用车需求草稿(只读;草稿可原样 PUT)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID

出参

字段 类型 说明
data.droppedFleetItems[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单ID(同层级对照)
data.droppedFleetItems List 容器字段,结构不变,新增元素见上方 teamNo 行
data.staleHeadcountOrders[].teamNo String 新增:团号(为 null 见「降级响应」)
data.staleHeadcountOrders List 容器字段,结构不变,新增元素见上方 teamNo 行
data.paddedOrderDays[].teamNo String 新增:团号(为 null 见「降级响应」)
data.paddedOrderDays List 容器字段,结构不变,新增元素见上方 teamNo 行
data.seatOptionAdjusted[].teamNo String 新增:团号(为 null 见「降级响应」)
data.seatOptionAdjusted List 容器字段,结构不变,新增元素见上方 teamNo 行
data.violations[].teamNo String 新增:团号(为 null 见「降级响应」)
data.violations List 容器字段,结构不变,新增元素见上方 teamNo 行
data.exemptHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
data.exemptHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/group-batch/1934567890123456701/vehicle-requirement/aggregate-draft

响应示例

共 6 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "droppedFleetItems": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

54. 声明整团无需用车(零分组已确认,撤销走 withdraw) POST /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/waive

VO: GroupVehicleRequirementRespVO

使用场景

声明整团无需用车(零分组已确认,撤销走 withdraw)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
reason Body String — — 免车原因(追加进整份备注留痕)

出参

字段 类型 说明
data.exemptHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单ID(同层级对照)
data.exemptHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "reason": "纯自驾团,客户自理交通"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "exemptHouseholds": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

55. 整份撤回正式用车需求(退回草稿,已配车辆不动) POST /v3/admin/order/group-batch/{groupBatchId}/vehicle-requirement/withdraw

VO: GroupVehicleRequirementRespVO

使用场景

整份撤回正式用车需求(退回草稿,已配车辆不动)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
groupBatchId Path Long ✅ 正整数 团期ID
reason Body String — — 撤回原因(写入整份备注留痕)

出参

字段 类型 说明
data.exemptHouseholds[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 子订单ID(同层级对照)
data.exemptHouseholds List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "reason": "人数有变,重新汇总"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "exemptHouseholds": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

56. 发票详情(完整申请明细,供上传弹窗/详情页) GET /v3/admin/order/invoice/{id}

VO: AdminInvoiceDetailRespVO

使用场景

发票详情(完整申请明细,供上传弹窗/详情页)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 发票 ID

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/invoice/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

57. 生成用餐信息(按订单产品快照生成空行,已有行不重复生成) POST /v3/admin/order/meal-info/generate

VO: OrderMealInfoListRespVO

使用场景

生成用餐信息(按订单产品快照生成空行,已有行不重复生成)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID;正数;与 groupBatchId 必须且只能传一个
groupBatchId Body Long — — 团期ID;正数;与 orderId 必须且只能传一个

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 入参订单ID,没传为 null(同层级对照)
data.items[].teamNo String 新增:团号(为 null 见「降级响应」)
data.items List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1934567890123456701",
 "groupBatchId": "1934567890123456701"
}

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

58. 查询用餐信息列表(按订单 / 团期 / 未挂归属) GET /v3/admin/order/meal-info/list

VO: OrderMealInfoListRespVO

使用场景

查询用餐信息列表(按订单 / 团期 / 未挂归属)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Query Long — — 订单ID;正数;与 groupBatchId 必须且只能传一个
groupBatchId Query Long — — 团期ID;正数;与 orderId 必须且只能传一个
batchNo Query String — — 团期编号精确匹配;最多 64 字符
mealType Query String — — 类别
mealDateStart Query LocalDate — — 用餐日期起(含),yyyy-MM-dd
mealDateEnd Query LocalDate — — 用餐日期止(含),yyyy-MM-dd;同时传时须 ≥ mealDateStart
dayNumber Query Integer — — 第几天;≥ 1
settleType Query String — — 付款方式
keyword Query String — — 关键字,最多 64 字符;模糊匹配餐厅名称、餐食名称
limit Query Integer — — 最大返回条数,默认 200;1–500

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 入参订单ID,没传为 null(同层级对照)
data.items[].teamNo String 新增:团号(为 null 见「降级响应」)
data.items List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/meal-info/list?orderId=1934567890123456701&groupBatchId=1934567890123456701&batchNo=团期编号精确匹配;最多 64 字符&mealType=类别&mealDateStart=2026-07-05&mealDateEnd=2026-07-07

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

59. 重置用餐信息(删掉全部行后按快照重新生成空行) POST /v3/admin/order/meal-info/reset

VO: OrderMealInfoListRespVO

使用场景

重置用餐信息(删掉全部行后按快照重新生成空行)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID;正数;与 groupBatchId 必须且只能传一个
groupBatchId Body Long — — 团期ID;正数;与 orderId 必须且只能传一个

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 入参订单ID,没传为 null(同层级对照)
data.items[].teamNo String 新增:团号(为 null 见「降级响应」)
data.items List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1934567890123456701",
 "groupBatchId": "1934567890123456701"
}

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

60. 保存用餐信息(整单一次保存:带行ID覆盖、不带新增、没传上来的软删) POST /v3/admin/order/meal-info/save

VO: OrderMealInfoListRespVO

使用场景

保存用餐信息(整单一次保存:带行ID覆盖、不带新增、没传上来的软删)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID;正数;与 groupBatchId 必须且只能传一个
groupBatchId Body Long — — 团期ID;正数;与 orderId 必须且只能传一个

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 入参订单ID,没传为 null(同层级对照)
data.items[].teamNo String 新增:团号(为 null 见「降级响应」)
data.items List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1934567890123456701",
 "groupBatchId": "1934567890123456701"
}

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

61. 套用用餐模版(返回订单现有行 + 模版套出来的行,模版行接在后面,不改库) POST /v3/admin/order/meal-template/apply

VO: OrderMealInfoListRespVO

使用场景

套用用餐模版(返回订单现有行 + 模版套出来的行,模版行接在后面,不改库)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID;正数;与 groupBatchId 必须且只能传一个
groupBatchId Body Long — — 团期ID;正数;与 orderId 必须且只能传一个
templateId Body Long — — 要套用的模版ID

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 入参订单ID,没传为 null(同层级对照)
data.items[].teamNo String 新增:团号(为 null 见「降级响应」)
data.items List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1934567890123456701",
 "groupBatchId": "1934567890123456701",
 "templateId": "1934567890123456701"
}

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

62. §2.5 房间分配查询(按家庭分组) GET /v3/admin/order/orders/{orderId}/rooms

VO: OrderRoomsRespVO

使用场景

§2.5 房间分配查询(按家庭分组)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
dayNumber Query Integer — — dayNumber

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/orders/1934567890123456701/rooms?dayNumber=1

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

63. 受控推进单个订单状态(走状态机+写日志+联动房车日期,幂等) POST /v3/admin/order/{id}/advance-state

VO: OrderAdvanceStateRespVO

使用场景

受控推进单个订单状态(走状态机+写日志+联动房车日期,幂等)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 id
targetStatus Body String — — 目标粗状态(TRAVELLING / COMPLETED)
departDate Body LocalDate — — 新出发日(与 returnDate 必须成对提供;不传则沿用订单现有日期做联动)
returnDate Body LocalDate — — 新返程日(与 departDate 必须成对提供;tripDays 由两端日期派生)
normalizeAssignmentDates Body Boolean — — 是否联动归一房/车派行日期到订单窗口(默认 true;false 时仅车侧做窗口校验、出窗直接报错,房侧完全跳过不动)
reason Body String — — 操作原因(写入状态日志)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "targetStatus": "TRAVELLING",
 "departDate": "2026-08-18",
 "returnDate": "2026-08-20",
 "normalizeAssignmentDates": "true",
 "reason": "行程中终止测试前推进订单到出行中"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

64. 订单详情 - 发票 Tab GET /v3/admin/order/{id}/invoices

VO: InvoiceVO

使用场景

订单详情 - 发票 Tab。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/invoices

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

65. 查询 staff 配置列表 GET /v3/admin/order/{id}/staff

VO: StaffAssignmentVO

使用场景

查询 staff 配置列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/staff

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

66. 新增 staff 配置 POST /v3/admin/order/{id}/staff

VO: StaffAssignmentVO

使用场景

新增 staff 配置。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
staffId Body Long — — 用户域员工 ID
staffRole Body String — — 员工角色(LEADER / DRIVER / PHOTOGRAPHER / OTHER)
sortOrder Body Integer — — 展示排序(默认 0)
remark Body String — — 备注(≤500)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "staffId": "40001",
 "staffRole": "LEADER",
 "sortOrder": 0,
 "remark": "首席领队,10 年经验"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

67. 编辑 staff 配置 PUT /v3/admin/order/{id}/staff/{staffAssignmentId}

VO: StaffAssignmentVO

使用场景

编辑 staff 配置。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
staffAssignmentId Path Long ✅ 正整数 staff_assignment ID
staffId Body Long — — 用户域员工 ID
staffRole Body String — — 员工角色(LEADER / DRIVER / PHOTOGRAPHER / OTHER)
sortOrder Body Integer — — 展示排序(默认 0)
remark Body String — — 备注(≤500)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "staffId": "40001",
 "staffRole": "LEADER",
 "sortOrder": 0,
 "remark": "首席领队,10 年经验"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

68. 设置 staff 报账人等级(核心订单) PUT /v3/admin/order/{id}/staff/{staffAssignmentId}/reporter-rank

VO: StaffAssignmentVO

使用场景

设置 staff 报账人等级(核心订单)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
staffAssignmentId Path Long ✅ 正整数 staff_assignment ID
reporterRank Body ReporterRank — — 报账人等级(PRIMARY=主报账人 / SECONDARY=次报账人 / NONE=非报账人)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "reporterRank": null
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

69. 终止行程·退款预览(出行中) POST /v3/admin/order/{id}/terminate/refund-preview

VO: OrderTerminateRefundPreviewRespVO

使用场景

终止行程·退款预览(出行中)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderNo String 订单号(同层级对照)

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/order/1934567890123456701/terminate/refund-preview

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderNo": "订单号",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

70. 大交通批次新增 POST /v3/admin/order/{id}/transport-plan/add

VO: TransportPlanVO

使用场景

大交通批次新增。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
direction Body String — — 方向:ARRIVAL / DEPARTURE
transportType Body String — — 交通类型:FLIGHT / TRAIN / SELF_DRIVE
transportNo Body String — — 航班号 / 车次号;SELF_DRIVE 时为空
carrier Body String — — 航司 / 铁路公司
departStation Body String — — 出发站
arriveStation Body String — — 到达站
departTime Body LocalDateTime — — 出发时间(FLIGHT/TRAIN 必填)
arriveTime Body LocalDateTime — — 到达时间(FLIGHT/TRAIN 必填)
selfDrivePeriod Body String — — 自驾时段(仅 SELF_DRIVE):MORNING / AFTERNOON / EVENING
selfDriveEta Body LocalDateTime — — 自驾预计到达时间(仅 SELF_DRIVE 可选)
travelerIds Body List — — 关联出行人 ID(至少 1 个)
pickupRequired Body Boolean — — 是否需要接送;新增缺省为 true,编辑缺省保留原值
pickupRemark Body String — — 接送备注
remark Body String — — 备注(≤500)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

此处仅示例前 10 个字段,完整字段见入参表。

{
 "direction": "ARRIVAL",
 "transportType": "FLIGHT",
 "transportNo": "CA1234",
 "carrier": "中国国际航空",
 "departStation": "北京首都T3",
 "arriveStation": "长春龙嘉",
 "departTime": "2026-06-01T08:30:00",
 "arriveTime": "2026-06-01T10:15:00",
 "selfDrivePeriod": "AFTERNOON",
 "selfDriveEta": "2026-06-05T15:00:00"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

71. 大交通批次批量替换 POST /v3/admin/order/{id}/transport-plan/batch

VO: TransportPlanBatchRespVO

使用场景

大交通批次批量替换。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
plans Body List — — 交通批次列表(全量覆盖订单已有批次)

出参

字段 类型 说明
data.plans[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)
data.plans List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "plans": [
  {
   "direction": "ARRIVAL",
   "transportType": "FLIGHT",
   "transportNo": "CA1234",
   "carrier": "中国国际航空",
   "departStation": "北京首都T3",
   "arriveStation": "长春龙嘉",
   "departTime": "2026-06-01T08:30:00",
   "arriveTime": "2026-06-01T10:15:00",
   "selfDrivePeriod": "AFTERNOON",
   "selfDriveEta": "2026-06-05T15:00:00",
   "travelerIds": [],
   "pickupRequired": "true",
   "pickupRemark": "需在 T3 出口举牌接机",
   "remark": "需要接机举牌"
  }
 ]
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "plans": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "plans": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

72. 大交通批次列表 GET /v3/admin/order/{id}/transport-plan/list

VO: TransportPlanListRespVO

使用场景

大交通批次列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)
data.arrivals[].teamNo String 新增:团号(为 null 见「降级响应」)
data.arrivals List 容器字段,结构不变,新增元素见上方 teamNo 行
data.departures[].teamNo String 新增:团号(为 null 见「降级响应」)
data.departures List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/transport-plan/list

响应示例

共 3 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

73. 大交通批次编辑 POST /v3/admin/order/{id}/transport-plan/{planId}/edit

VO: TransportPlanVO

使用场景

大交通批次编辑。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
planId Path Long ✅ 正整数 批次 ID
direction Body String — — 方向:ARRIVAL / DEPARTURE
transportType Body String — — 交通类型:FLIGHT / TRAIN / SELF_DRIVE
transportNo Body String — — 航班号 / 车次号;SELF_DRIVE 时为空
carrier Body String — — 航司 / 铁路公司
departStation Body String — — 出发站
arriveStation Body String — — 到达站
departTime Body LocalDateTime — — 出发时间(FLIGHT/TRAIN 必填)
arriveTime Body LocalDateTime — — 到达时间(FLIGHT/TRAIN 必填)
selfDrivePeriod Body String — — 自驾时段(仅 SELF_DRIVE):MORNING / AFTERNOON / EVENING
selfDriveEta Body LocalDateTime — — 自驾预计到达时间(仅 SELF_DRIVE 可选)
travelerIds Body List — — 关联出行人 ID(至少 1 个)
pickupRequired Body Boolean — — 是否需要接送;新增缺省为 true,编辑缺省保留原值
pickupRemark Body String — — 接送备注
remark Body String — — 备注(≤500)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

此处仅示例前 10 个字段,完整字段见入参表。

{
 "direction": "ARRIVAL",
 "transportType": "FLIGHT",
 "transportNo": "CA1234",
 "carrier": "中国国际航空",
 "departStation": "北京首都T3",
 "arriveStation": "长春龙嘉",
 "departTime": "2026-06-01T08:30:00",
 "arriveTime": "2026-06-01T10:15:00",
 "selfDrivePeriod": "AFTERNOON",
 "selfDriveEta": "2026-06-05T15:00:00"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

74. 单个出行人新增 POST /v3/admin/order/{id}/traveler/add

VO: TravelerVO

使用场景

单个出行人新增。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID
name Body String — — 姓名(可后填)
gender Body String — — 性别:1=男 / 2=女 / 0=未知
birthday Body LocalDate — — 出生日期(必填,后端按年龄分段自动派生出行人类型)
idType Body String — — 证件类型(取值见数据字典 id_card_type)
idNo Body String — — 证件号(明文传,DB 加密)
nationality Body String — — 国籍(默认中国)
race Body String — — 民族(默认汉族)
phone Body String — — 出行人手机(明文传,DB 加密)
emergencyContact Body String — — 紧急联系人姓名
emergencyPhone Body String — — 紧急联系人电话(明文传)
roomGroupNo Body Integer — — 同住分组号

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

此处仅示例前 10 个字段,完整字段见入参表。

{
 "name": "王小明",
 "gender": "1",
 "birthday": "2018-06-20",
 "idType": "ID_CARD",
 "idNo": "220103201806201234",
 "nationality": "中国",
 "race": "汉族",
 "phone": "13812342046",
 "emergencyContact": "王大明",
 "emergencyPhone": "13988888888"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

75. 出行人列表 GET /v3/admin/order/{id}/traveler/list

VO: TravelerVO

使用场景

出行人列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 订单 ID

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/traveler/list

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

76. 订单增减项(统一端点,按 direction 分流) POST /v3/admin/order/{orderId}/adjustment

VO: OrderAdjustmentRespVO

使用场景

订单增减项(统一端点,按 direction 分流)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
direction Body AdjustmentDirection — — 增减方向:REDUCE=减项/优惠,ADD=增项/附加费
itemCode Body String — — 项目 itemCode:REDUCE 时取 order_discount_item 字典 value,ADD 时取 order_surcharge_item 字典 value
amount Body BigDecimal — — 金额(元),必须 > 0
remark Body String — — 备注(≤500 字)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "direction": null,
 "itemCode": "OLD_CUSTOMER",
 "amount": "200.00",
 "remark": "春节活动老客户优惠"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

77. 创建预支(创建即待审批) POST /v3/admin/order/{orderId}/advance

VO: OrderAdvanceRespVO

使用场景

创建预支(创建即待审批)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单ID
payeeStaffId Body Long — — 借款对象(必填,取候选下拉的 id=assignmentId)
advanceType Body String — — 预支借款类型(必填,取字典 advance_type 的 dictValue)
amount Body BigDecimal — — 预支金额(必填,必须大于0)
purpose Body String — — 用途说明(可选)
voucherUrl Body String — — 凭证文件URL(可选)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "payeeStaffId": "1934567890123456701",
 "advanceType": "预支借款类型",
 "amount": "1000.00",
 "purpose": "用途说明",
 "voucherUrl": "凭证文件URL"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

78. 分页查询本单预支列表 GET /v3/admin/order/{orderId}/advances

VO: OrderAdvanceRespVO

使用场景

分页查询本单预支列表。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单ID
page Query Integer — 默认 1 页码
pageSize Query Integer — 默认 20 每页条数

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/advances?page=1&pageSize=1

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

79. 查询订单优惠+附加费清单 GET /v3/admin/order/{orderId}/discount-surcharge/list

VO: OrderDiscountSurchargeListRespVO

使用场景

查询订单优惠+附加费清单。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
includeReversed Query Boolean — — includeReversed
category Query String — — category

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/discount-surcharge/list?includeReversed=True&category=category

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

80. 新增订单优惠(已废弃,改调 /adjustment) POST /v3/admin/order/{orderId}/discounts

VO: OrderDiscountRespVO

使用场景

新增订单优惠(已废弃,改调 /adjustment)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
discountType Body String — — 优惠类型(EARLY_BIRD/VIP/MANUAL/ROOM_DOWNGRADE/VEHICLE_DOWNGRADE/OTHER,REVERSAL 禁手填)
discountName Body String — — 优惠描述(前端展示用,≤128 字)
discountAmount Body BigDecimal — — 优惠金额,单位元,必须 > 0
sourceType Body String — — 来源类型(MANUAL/ROOM_ASSIGN/VEHICLE_ASSIGN/ITINERARY_EDIT/EARLY_BIRD_PLAN,默认 MANUAL)
sourceRefId Body Long — — 来源关联 ID(MANUAL 时为 null,其他类型必填)
remark Body String — — 备注(≤500 字)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "discountType": "MANUAL",
 "discountName": "老客户回馈减免 200",
 "discountAmount": "200.00",
 "sourceType": "MANUAL",
 "sourceRefId": "null",
 "remark": "备注"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

81. 定制师代客申请发票(须订单已完成) POST /v3/admin/order/{orderId}/invoice/apply

VO: AdminInvoiceApplyRespVO

使用场景

定制师代客申请发票(须订单已完成)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
invoiceType Body String — — 发票类型:VAT_NORMAL(增值税普通发票)/ VAT_SPECIAL(增值税专用发票)。增值税专用发票只能开给单位(COMPANY)
titleType Body String — — 抬头类型:COMPANY / PERSONAL。增值税专用发票只能开给单位(COMPANY)
titleName Body String — — 抬头名称(公司全称或个人姓名)
taxNo Body String — — 税号(titleType=COMPANY 必填;invoiceType=VAT_SPECIAL 必填)
bankName Body String — — 开户行(invoiceType=VAT_SPECIAL 必填)
bankAccount Body String — — 开户账号(invoiceType=VAT_SPECIAL 必填)
registAddress Body String — — 注册地址(invoiceType=VAT_SPECIAL 必填)
registPhone Body String — — 注册电话(invoiceType=VAT_SPECIAL 必填)
email Body String — — 收件邮箱(必填)
remark Body String — — 备注 / 货物或应税劳务名称(可选)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "invoiceType": "COMPANY",
 "titleType": "COMPANY",
 "titleName": "抬头名称",
 "taxNo": "税号",
 "bankName": "开户行",
 "bankAccount": "开户账号",
 "registAddress": "注册地址",
 "registPhone": "注册电话",
 "email": "收件邮箱",
 "remark": "备注 / 货物或应税劳务名称"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

82. 生成电子行程单数据(对客) GET /v3/admin/order/{orderId}/itinerary-document

VO: OrderItineraryDocumentVO

使用场景

生成电子行程单数据(对客)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
documentType Query String ✅ — 文档类型(对客视角):CUSTOMER / CUSTOMER_PRINT / CUSTOMER_QUOTE
includeResourceDetail Query Boolean — — includeResourceDetail

出参

字段 类型 说明
data.header.teamNo String 新增:团号(为 null 见「降级响应」)
orderNo String 订单号(同层级对照)
data.header HeaderVO 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/itinerary-document?documentType=文档类型&includeResourceDetail=True

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "header": {
   "orderNo": "订单号",
   "teamNo": "26-0480"
  }
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

83. 查询订单完整行程(含全部实配嵌套,已真实化 Issue #2471) GET /v3/admin/order/{orderId}/itinerary/full

VO: OrderItineraryRespVO

使用场景

查询订单完整行程(含全部实配嵌套,已真实化 Issue #2471)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
dayNumber Query Integer — — 仅返回指定某天(不传=全返)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/itinerary/full?dayNumber=1

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

84. 查询订单线下收款列表(含已撤销行,审计溯源用) GET /v3/admin/order/{orderId}/payment/manual-receipt

VO: ManualReceiptVO

使用场景

查询订单线下收款列表(含已撤销行,审计溯源用)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/payment/manual-receipt

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": [
  {
   "orderId": "1934567890123456701",
   "teamNo": "26-0480"
  }
 ]
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": []
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

85. 登记线下收款(报账人收款/对公转账/定制师代收),同事务推进 paid_amount POST /v3/admin/order/{orderId}/payment/manual-receipt

VO: ManualReceiptVO

使用场景

登记线下收款(报账人收款/对公转账/定制师代收),同事务推进 paid_amount。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId
channel Body String — — 收款渠道 DRIVER_CASH/BANK_TRANSFER/CONSULTANT_COLLECTION
payType Body String — — 款项类型 DEPOSIT/BALANCE/FULL
amount Body BigDecimal — — 收款金额(> 0)
receivedAt Body LocalDateTime — — 收款时间(可为过去时间,不传默认当前时间)
transferRef Body String — — 对公转账流水号(BANK_TRANSFER 渠道必填)
receiptMethod Body String — — 收款方式(可选,字典 manual_receipt_method,当前暂不校验)
collectorStaffId Body Long — — 代收人 assignmentId(DRIVER_CASH 必填,属本单报账人)
collectorType Body String — — 实际代收人类型 ORDER_STAFF/CONSULTANT/COMPANY_ACCOUNT;不传时按 channel 兼容推导
voucherUrls Body List — — 凭证图片 URL 列表
remark Body String — — 备注(最长 500 字)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "channel": "DRIVER_CASH",
 "payType": "BALANCE",
 "amount": "5000.00",
 "receivedAt": "2026-07-05T14:30:00",
 "transferRef": "GZL20260705001",
 "receiptMethod": "WECHAT_TRANSFER",
 "collectorStaffId": "123456789",
 "collectorType": "ORDER_STAFF",
 "voucherUrls": [],
 "remark": "客户现场支付尾款"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

86. 撤销线下收款(同事务回退 paid_amount,行保留可追溯) DELETE /v3/admin/order/{orderId}/payment/manual-receipt/{receiptId}

VO: ManualReceiptVO

使用场景

撤销线下收款(同事务回退 paid_amount,行保留可追溯)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId
receiptId Path Long ✅ 正整数 receiptId
voidReason Body String — — 撤销原因(建议填写)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "voidReason": "客户实际未支付,误录"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

87. 财务复核确认结算 POST /v3/admin/order/{orderId}/settlement/confirm

VO: ConfirmSettlementRespVO

使用场景

财务复核确认结算。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
confirmRemark Body String — — 复核备注(可选)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "confirmRemark": "核对无误,确认结算"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

88. 管理员反确认核单终态快照 POST /v3/admin/order/{orderId}/settlement/final-snapshots/reopen

VO: SettlementReopenRespVO

使用场景

管理员反确认核单终态快照。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId
expectedSnapshotId Body Long — — 前端当前看到的终态快照 ID
expectedVersionNo Body Integer — — 前端当前看到的终态快照版本号
reason Body String — — 反确认原因

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "expectedSnapshotId": "9600000000001",
 "expectedVersionNo": 1,
 "reason": "补录车辆费用凭证"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

89. 完成核单 POST /v3/admin/order/{orderId}/settlement/finalize

VO: SettlementSubmitRespVO

使用场景

完成核单。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/order/1934567890123456701/settlement/finalize

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

90. 查询核单操作日志 GET /v3/admin/order/{orderId}/settlement/logs

VO: RecordVO

使用场景

查询核单操作日志。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
page Query Integer — — 页码
pageSize Query Integer — — 每页条数

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/{orderId}/settlement/logs?page=1&pageSize=20

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

91. 查询车辆核单草稿 GET /v3/admin/order/{orderId}/settlement/step3/vehicles

VO: SettlementVehicleFeesRespVO

使用场景

查询车辆核单草稿。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID;JSON按字符串序列化,避免JavaScript精度丢失(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/settlement/step3/vehicles

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

92. 全量保存车辆核单草稿 PUT /v3/admin/order/{orderId}/settlement/step3/vehicles

VO: SettlementVehicleFeesRespVO

使用场景

全量保存车辆核单草稿。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId
items Body List — — 全量明细

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID;JSON按字符串序列化,避免JavaScript精度丢失(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "items": [
  {
   "id": "1934567890123456701",
   "sourceType": "sourceType",
   "requirementKind": "需求归属类别",
   "serviceDate": "2026-09-27",
   "vehicleId": "1934567890123456701",
   "vehiclePlate": "vehiclePlate",
   "vehicleModelId": "1934567890123456701",
   "vehicleModelName": "vehicleModelName",
   "driverId": "1934567890123456701",
   "driverName": "driverName",
   "amount": "1000.00",
   "paymentMethod": "paymentMethod",
   "settlementConfirmStatus": "settlementConfirmStatus",
   "remark": "remark"
  }
 ]
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

93. 查核单汇总快照 GET /v3/admin/order/{orderId}/settlement/summary

VO: SettlementSummaryRespVO

使用场景

查核单汇总快照。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)
data.advanceSummary.records[].teamNo String 新增:团号(为 null 见「降级响应」)
data.advanceSummary.records List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/order/1934567890123456701/settlement/summary

响应示例

共 2 处新增 teamNo(路径见出参表),此处仅展示其一,其余同构。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

94. 新增订单附加费(已废弃,改调 /adjustment) POST /v3/admin/order/{orderId}/surcharges

VO: OrderSurchargeRespVO

使用场景

新增订单附加费(已废弃,改调 /adjustment)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
surchargeName Body String — — 附加费描述(≤128 字)
surchargeAmount Body BigDecimal — — 附加费金额,单位元,必须 > 0
sourceType Body String — — 来源类型(MANUAL/ROOM_ASSIGN/VEHICLE_ASSIGN/ITINERARY_EDIT/SCENIC_ASSIGNMENT/ACTIVITY_ASSIGNMENT,REVERSAL 禁手填)
sourceRefId Body Long — — 来源关联 ID(MANUAL 时为 null,其他类型必填)
remark Body String — — 备注(≤500 字)

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "surchargeName": "加项景点:羊卓雍措一日游",
 "surchargeAmount": "240.00",
 "sourceType": "ITINERARY_EDIT",
 "sourceRefId": "6601234567905",
 "remark": "备注"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

95. 增订单标签 POST /v3/admin/order/{orderId}/tag

VO: OrderTagVO

使用场景

增订单标签。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 订单 ID
tagName Body String — — 标签名(≤50 字,禁前后空格/禁特殊符号)
tagColor Body String — — 前端展示色值,如 #FF6B6B;不传走系统默认色 #5B8FF9

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联订单 ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "tagName": "标签名",
 "tagColor": "前端展示色值,如 #FF6B6B;不传走"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

96. 分页查询退款申诉 GET /v3/admin/refund/appeal/page

VO: AppealAdminRespVO

使用场景

分页查询退款申诉。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
page Query Integer — — 页码(从1开始)
pageSize Query Integer — — 每页条数
orderId Query Long — — 订单ID精确匹配
appealType Query String — — 申诉类型(REFUND_REJECTED/REFUND_AMOUNT_DISPUTE)
appealStatus Query String — — 申诉状态(PENDING/REJECTED/REFUNDED/WITHDRAWN)
applicantName Query String — — 申请人姓名(模糊匹配)
createTimeStart Query LocalDateTime — — 创建时间起
createTimeEnd Query LocalDateTime — — 创建时间止

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/refund/appeal/page?page=1&pageSize=1&orderId=1934567890123456701&appealType=REFUND_REJECTED&appealStatus=PENDING&applicantName=申请人姓名

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": []
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

97. 查询申诉详情(管理端) GET /v3/admin/refund/appeal/{id}

VO: AppealAdminRespVO

使用场景

查询申诉详情(管理端)。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 id

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/refund/appeal/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

98. 客服代下退款申请 POST /v3/admin/refund/application

VO: RefundApplicationDetailRespVO

使用场景

客服代下退款申请。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID
refundType Body String — — 退款类型:FULL/PARTIAL(默认 FULL)
reasonId Body Long — — 退款原因ID
reasonText Body String — — 退款原因文本(当选择了原因ID时自动填充)
reasonDetail Body String — — 退款原因详情/备注
policyId Body Long — — 退款政策ID(NULL=不按政策)
departureDate Body LocalDate — — 出发日期(按政策计算时必填)
paidAmount Body BigDecimal — — 已付金额(快照)
requestedAmount Body BigDecimal — — 申请退款金额(PARTIAL 必填)
mediaTraceIds Body java.util.List — — 媒体 traceIds(wx 内容安全机审用)

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
refundId Long 退款记录ID(同层级对照)
data.records List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1234567890123456789",
 "refundType": "FULL",
 "reasonId": "1934567890123456701",
 "reasonText": "退款原因文本",
 "reasonDetail": "退款原因详情/备注",
 "policyId": "1934567890123456701",
 "departureDate": "2026-07-01",
 "paidAmount": "1000.00",
 "requestedAmount": "500.00",
 "mediaTraceIds": null
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "refundId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

99. 手动完成退款 PUT /v3/admin/refund/application/{applicationId}/complete

VO: RefundApplicationDetailRespVO

使用场景

手动完成退款。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
applicationId Path Long ✅ 正整数 applicationId

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
refundId Long 退款记录ID(同层级对照)
data.records List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

PUT /v3/admin/refund/application/1934567890123456701/complete

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "refundId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

100. 退款申请详情 GET /v3/admin/refund/application/{id}

VO: RefundApplicationDetailRespVO

使用场景

退款申请详情。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
id Path Long ✅ 正整数 id

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
refundId Long 退款记录ID(同层级对照)
data.records List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/refund/application/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "refundId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

101. 触发实退 POST /v3/admin/refund/execute/{appId}

VO: RefundApplicationDetailRespVO

使用场景

触发实退。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
appId Path Long ✅ 正整数 appId

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
refundId Long 退款记录ID(同层级对照)
data.records List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

POST /v3/admin/refund/execute/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "refundId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

102. 提交审核 POST /v3/admin/refund/review

VO: RefundApplicationDetailRespVO

使用场景

提交审核。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
applicationId Body Long — — 退款申请ID
decision Body String — — 决议:APPROVED/REJECTED/PARTIAL
approvedAmount Body BigDecimal — — 同意退款金额(PARTIAL 决议时必填,APPROVED 时选填)
remark Body String — — 审核备注/驳回原因(REJECTED 时必填)

出参

字段 类型 说明
data.records[].teamNo String 新增:团号(为 null 见「降级响应」)
refundId Long 退款记录ID(同层级对照)
data.records List 容器字段,结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

{
 "applicationId": "1234567890123456789",
 "decision": "APPROVED",
 "approvedAmount": "800.00",
 "remark": "审核备注/驳回原因"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "records": [
   {
    "refundId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

103. 取消团队 POST /v3/admin/team-report/cancel

VO: TeamReportRespVO

使用场景

取消团队。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID
cancelType Body Integer — — 取消类别 0=游客个人原因 1=旅行社原因 2=不可抗因素 3=其他
cancelDesc Body String — — 取消原因说明

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

{
 "orderId": "1934567890123456701",
 "cancelType": 1,
 "cancelDesc": "取消原因说明"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

104. 暂存表单 POST /v3/admin/team-report/save

VO: TeamReportRespVO

使用场景

暂存表单。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID
agencyCode Body String — — 旅行社编码 hulai/qianshou/hulai-wenlu
businessType Body Integer — — 业务类型 2=国内游组团 6=入境接待 7=国内接待
agencyName Body String — — 旅行社名称
agencyLicense Body String — — 经营许可证号
itineraryName Body String — — 线路名称
teamId Body String — — 团号
dateGo Body String — — 出发日期 yyyy-MM-dd
timeGoHour Body String — — 出发时间 HH
timeGoMinute Body String — — 出发时间 mm
dateBack Body String — — 返回日期 yyyy-MM-dd
timeBackHour Body String — — 返回时间 HH
timeBackMinute Body String — — 返回时间 mm
sourceCity Body String — — 出发城市
sourceProvince Body String — — 出发省份
destinationCity Body String — — 前往城市
destinationProvince Body String — — 前往省份
itineraryDay Body Integer — — 天数
vehicle Body Integer — — 出发交通 1=飞机 2=火车 3=轮船 4=汽车 5=其它
vehicleIn Body Integer — — 返回交通 1=飞机 2=火车 3=轮船 4=汽车 5=其它
vehicleOutNums Body String — — 出发班次/车次
vehicleInNums Body String — — 返回班次/车次
nativeTravelAgency Body String — — 地接社名称
teamType Body Integer — — 团队类型 1=自组自接 2=包机 3=专列 4=其他
peopleNums Body Integer — — 团队人数
childNums Body Integer — — 儿童人数
journeyDesc Body String — — 行程总描述
applicantName Body String — — 申请人姓名
applicantPhone Body String — — 申请人电话
guides Body List — — 导游列表
busInfo Body List — — 车队列表
itineraryList Body List — — 行程列表(按天按站点)
touristList Body List — — 游客列表
agencyOptions Body List — — agencyOptions
businessTypeOptions Body List — — businessTypeOptions

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

此处仅示例前 10 个字段,完整字段见入参表。

{
 "orderId": "1934567890123456701",
 "agencyCode": "旅行社编码 hulai/qianshou",
 "businessType": 1,
 "agencyName": "旅行社名称",
 "agencyLicense": "经营许可证号",
 "itineraryName": "线路名称",
 "teamId": "团号",
 "dateGo": "出发日期 yyyy-MM-dd",
 "timeGoHour": "出发时间 HH",
 "timeGoMinute": "出发时间 mm"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

105. 查询审核状态 GET /v3/admin/team-report/status/{orderId}

VO: TeamReportRespVO

使用场景

查询审核状态。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/team-report/status/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

106. 提交到12301平台 POST /v3/admin/team-report/submit

VO: TeamReportRespVO

使用场景

提交到12301平台。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Body Long — — 订单ID
agencyCode Body String — — 旅行社编码 hulai/qianshou/hulai-wenlu
businessType Body Integer — — 业务类型 2=国内游组团 6=入境接待 7=国内接待
agencyName Body String — — 旅行社名称
agencyLicense Body String — — 经营许可证号
itineraryName Body String — — 线路名称
teamId Body String — — 团号
dateGo Body String — — 出发日期 yyyy-MM-dd
timeGoHour Body String — — 出发时间 HH
timeGoMinute Body String — — 出发时间 mm
dateBack Body String — — 返回日期 yyyy-MM-dd
timeBackHour Body String — — 返回时间 HH
timeBackMinute Body String — — 返回时间 mm
sourceCity Body String — — 出发城市
sourceProvince Body String — — 出发省份
destinationCity Body String — — 前往城市
destinationProvince Body String — — 前往省份
itineraryDay Body Integer — — 天数
vehicle Body Integer — — 出发交通 1=飞机 2=火车 3=轮船 4=汽车 5=其它
vehicleIn Body Integer — — 返回交通 1=飞机 2=火车 3=轮船 4=汽车 5=其它
vehicleOutNums Body String — — 出发班次/车次
vehicleInNums Body String — — 返回班次/车次
nativeTravelAgency Body String — — 地接社名称
teamType Body Integer — — 团队类型 1=自组自接 2=包机 3=专列 4=其他
peopleNums Body Integer — — 团队人数
childNums Body Integer — — 儿童人数
journeyDesc Body String — — 行程总描述
applicantName Body String — — 申请人姓名
applicantPhone Body String — — 申请人电话
guides Body List — — 导游列表
busInfo Body List — — 车队列表
itineraryList Body List — — 行程列表(按天按站点)
touristList Body List — — 游客列表
agencyOptions Body List — — agencyOptions
businessTypeOptions Body List — — businessTypeOptions

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

此处仅示例前 10 个字段,完整字段见入参表。

{
 "orderId": "1934567890123456701",
 "agencyCode": "旅行社编码 hulai/qianshou",
 "businessType": 1,
 "agencyName": "旅行社名称",
 "agencyLicense": "经营许可证号",
 "itineraryName": "线路名称",
 "teamId": "团号",
 "dateGo": "出发日期 yyyy-MM-dd",
 "timeGoHour": "出发时间 HH",
 "timeGoMinute": "出发时间 mm"
}

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

查询失败静默降为 null,不影响其余字段、不回滚已提交的写操作;未付款/未生成团号同样为 null。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": null
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。
  • 本端点团号查询走静默降级:查失败不影响其余字段返回、不回滚已提交的写操作。

107. 获取上报记录 GET /v3/admin/team-report/{orderId}

VO: TeamReportRespVO

使用场景

获取上报记录。响应新增只读字段 teamNo(团号),前端可直接展示,无需再查。

入参

字段 位置 类型 必填 约束 说明
orderId Path Long ✅ 正整数 orderId

出参

字段 类型 说明
data.teamNo String 新增:团号(为 null 见「降级响应」)
orderId Long 关联订单ID(同层级对照)

其余字段不变,见原接口文档。

请求示例

GET /v3/admin/team-report/1934567890123456701

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "orderId": "1934567890123456701",
  "teamNo": "26-0480"
 }
}

空数据 / 降级响应

未付款/未生成团号时为 null;严格查询,失败直接报错(不吞掉),不影响其余字段返回。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": null
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • teamNo 格式 yy-NNNN(如 26-0480),订单确认生成团号后写入一次,之后不再变更。
  • teamNo 为只读字段,本次改动不新增入参、不改变校验/错误码/鉴权规则。

108. 工作台仪表盘(角色分发,支持时间范围) GET /admin/profile/dashboard

VO: DashboardRoleRespVO

使用场景

根据当前管理员角色返回不同的仪表盘数据(SUPER_ADMIN/ADMIN/未知角色走全局概览,CUSTOMIZER 走定制师工作台)。本次改动:仪表盘中的「即将出行」列表新增 teamNo(团号)只读字段,来源于 order-v3。

入参

字段 位置 类型 必填 约束 说明
period Query String — 默认 today 时间范围:today/week/month

出参

字段 类型 说明
data.upcomingTrips[].teamNo String 新增:团号(格式 yy-NNNN,未生成团号时为 null)
data.upcomingTrips[].orderId Long 订单 ID(对照,供前端按同层级关联 teamNo 与订单)
data.upcomingTrips List<DashboardUpcomingTripVO> teamNo 所在的容器字段,内部结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /admin/profile/dashboard?period=today

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "upcomingTrips": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

订单未付款、尚未生成团号时 teamNo 为 null;user-service 本次零改动,该字段透传自 order-v3 内部接口 GET /internal/order/dashboard/upcoming-trips,其降级语义见该接口所在的 changelog。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "upcomingTrips": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • 只有 SUPER_ADMIN、ADMIN、default 分支(走 AdminDashboardService)以及 CUSTOMIZER(走 DesignerDashboardService)的响应会带 upcomingTrips;ROOM_MANAGER、VEHICLE_MANAGER、FINANCE、MATERIAL_ADMIN 走的是其他数据源,响应体中不含该字段。
  • data.upcomingTrips[].teamNo 字段早已存在于契约中,本次只是开始有值(改前恒为 null)。
  • user-service 本身零改动,该值随 order-v3 单独滚动部署即生效。

109. 工作台概览(已废弃,请使用 /admin/profile/dashboard) GET /admin/designer/dashboard

VO: DesignerDashboardVO

使用场景

已废弃接口,行为固定按 CUSTOMIZER 角色、period=today 返回。本次改动:仪表盘中的「即将出行」列表新增 teamNo(团号)只读字段,来源于 order-v3。

入参

字段 位置 类型 必填 约束 说明
(无) — — — — 本接口无入参,角色/时间范围固定

出参

字段 类型 说明
data.upcomingTrips[].teamNo String 新增:团号(格式 yy-NNNN,未生成团号时为 null)
data.upcomingTrips[].orderId Long 订单 ID(对照,供前端按同层级关联 teamNo 与订单)
data.upcomingTrips List<DashboardUpcomingTripVO> teamNo 所在的容器字段,内部结构不变,新增元素见上方 teamNo 行

其余字段不变,见原接口文档。

请求示例

GET /admin/designer/dashboard

响应示例

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "upcomingTrips": [
   {
    "orderId": "1934567890123456701",
    "teamNo": "26-0480"
   }
  ]
 }
}

空数据 / 降级响应

订单未付款、尚未生成团号时 teamNo 为 null;user-service 本身零改动,该字段透传自 order-v3。

{
 "code": 200,
 "message": "成功",
 "success": true,
 "data": {
  "upcomingTrips": [
   {
    "orderId": "1934567890123456701",
    "teamNo": null
   }
  ]
 }
}

错误响应

{
 "code": 500,
 "message": "系统繁忙,请稍后重试或联系客服",
 "success": false,
 "data": null
}

业务边界

  • 本端点已废弃(@Deprecated),建议统一改用 GET /admin/profile/dashboard;两者行为一致,本字段无差异。
  • data.upcomingTrips[].teamNo 字段早已存在于契约中,本次只是开始有值(改前恒为 null)。

四、契约约束与正确调用方式

本节只写后端接受/拒绝 payload 的规则,不写 UI 渲染建议。

  • 本次改动不引入任何新的入参字段,所有请求体/路径/查询参数与改动前完全一致;调用方无需修改任何现有请求代码即可获得新字段。
  • teamNo 是只读字段,后端忽略请求体中任何同名字段(本次也未在任何请求 VO 上新增该字段,前端传了也不会被读取)。
  • teamNo 不参与任何现有排序/过滤逻辑;本次改动的 109 个接口没有新增按团号筛选的能力。

✅ 正确 / ❌ 错误 payload 对照

场景 payload
✅ 请求体/参数保持改动前原样 与改动前完全一致
❌ 假设可通过请求体传入/覆盖 teamNo 后端不读取,该字段始终由后端按订单团号计算得出

切换状态时的必要动作

无需任何前端联动动作;teamNo 是纯展示字段,不驱动任何状态切换逻辑。


五、数据库行为

本次改动不新增、不修改任何数据库表结构,team_no 列本身已存在于订单主表。109 个接口中的写操作(新增/驳回/确认/审核/结算等)本次改动只在响应体组装阶段取团号:手里已有订单的直接读,否则按订单 ID 批量查一次。不改变原有写入 SQL、不改变事务边界、不改变任何已有列的写入值。user-service 的 2 个出口零改动,字段随 order-v3 一起滚动即生效。


六、边界行为

  • 未登录 → 401(网关拦截),与改动前一致。
  • 资源不存在 → 与改动前相同的业务错误码。
  • 订单未付款、尚未生成团号 → teamNo 为 null,不 500、不阻断页面渲染。
  • 团号为空白 → teamNo 为 null,不返回空串,也不用订单号顶替。
  • 老数据兼容:历史订单没有团号 → teamNo 为 null,不异常。
  • 20 个写后出口(见各自「空数据 / 降级响应」标注)团号查询失败静默降级为 null,不回滚已提交的写操作;其余需要单独查团号的接口走严格查询,查询本身失败会如实报错,不会静默返回 null。

六.6、修改前后对比

字段级对比

字段 改前 改后
teamNo 不存在(user-service 2 个出口除外——那里字段早已声明,此前 order-v3 未填值) 新增/开始有值,String,团号(格式 yy-NNNN),订单未生成团号时为 null

行为级对比

行为 改前 改后
管理后台查看订单/房务/保险/团期相关详情或列表、工作台「即将出行」 无法直接拿到团号(或字段恒为 null) 响应体直接携带有效 teamNo,无需额外查询

六.7、影响评估

  • 是否破坏向后兼容: 否——纯新增/纯赋值字段,不删除/不重命名/不改变既有字段类型。
  • 前端是否必须同步上线: 否——teamNo 是可选消费字段,不消费不影响现有页面功能;如需在页面展示团号才需要前端改动。
  • 前端 workaround 清理点: 若有页面此前按订单 ID 另查团号,可改为直接读响应里的 teamNo。

七、不影响范围

  • 仅影响: 管理后台(admin)上述 109 个接口的响应体,新增/补值只读字段 teamNo。
  • 零影响:
    • 所有接口的入参、校验规则、错误码、鉴权规则
    • C 端(mp)、内部(internal)接口(不在本文范围)
    • 数据库表结构、既有列的写入逻辑
    • 历史数据(存量订单无团号时字段为 null,不触发迁移/补数)
    • user-service 自身代码(2 个出口零改动,字段透传自 order-v3)

八、测试环境已验证

  • 部署:order-v3 以合并提交 97b9754f2 部署测试环境。
  • 网关实测(2026-09-27),以下读数均与数据库 order_main.team_no 逐条比对:
    • 团期户列表:50/50 一致。
    • 首页看板:5/5 一致。
    • 房务详情:2/2 一致。
    • 管理端新建订单时 team_no 为 NULL;登记首笔线下收款后,响应 teamNo 为本次生成的团号,与库一致;收款列表中同一行也一致。
  • 覆盖边界:其余接口由单测和响应字段门禁 TeamNoResponseFieldGateTest 覆盖,未逐个走网关。

十、相关文档

  • 关联 Issue: wx/HL#8408
  • 关联 PR: wx/HL#8439、wx/HL#8447
  • 关联 changelog(PR #8419,fleet 侧同工单): changelogs-v2/2026-09/27_8408_车务响应补团号-修改接口-管理后台.md

关联 / 联系人

链接

联系人

  • 后端负责人: @wx