# 二期 v3:订单接口加 flowStep / flowStepTotal / flowDisplayText 步骤条字段 + 修 2 个文案 > **服务**: hl-order-service-v3 > **PR**: #3286 > **Issue**: #3285 > **日期**: 2026-05-30 > **影响**: 🟡 **非破坏性**新增字段 + **文案修订**。前端从前自己拼 `"1/8 · 待补全信息"`,现在后端直接给 `flowStep` / `flowStepTotal` / `flowDisplayText` 三字段,前端拿着就显示。同时修了 2 个枚举 label 文案。 --- ## 总览(前端 mmg 必读) 接续 PR #3284(status label 中文),本期把"订单步骤条"所需数据全部下沉到后端: ```jsonc { "flowStep": 1, // 🆕 当前步序号 0=待支付前, 1-8=进行中, null=终态/未知 "flowStepTotal": 8, // 🆕 总步数固定 8 "flowDisplayText": "待补全信息" // 🆕 中文文案,只中文不带"X/8 · ",前端按需自拼 } ``` 前端从前的 `currentStep / totalSteps + 自己映射中文` 逻辑全部可删,直接用本期 3 字段。 **同时**:修了 2 个 `OrderFlowStatus` 枚举 label 文案(影响 `flowStatusName` 字段返回): | 枚举值 | 旧文案 | 新文案 | |---|---|---| | `AWAITING_HOTEL_SUBMIT` | 待提交房型 | **待提交配房需求** | | `AWAITING_VEHICLE_SUBMIT` | 待提交用车 | **待配车需求** | --- ## 接口清单(3 个响应增字段) ### 1. 订单列表 ``` GET /v3/admin/order ``` **响应** `data.records[].xxx` 在 PR #3284 基础上再加 3 字段: ```jsonc { "orderStatus": "CUSTOMIZING", "orderStatusName": "定制中", "flowStatus": "AWAITING_PROFILE", "flowStatusName": "待补全信息", "flowStep": 1, // 🆕 "flowStepTotal": 8, // 🆕 "flowDisplayText": "待补全信息" // 🆕 } ``` ### 2. 订单详情 ``` GET /v3/admin/order/{id}/detail ``` **响应** `data.main` 同样加 3 字段(位置和列表相同)。 ### 3. 创建订单响应 ``` POST /v3/admin/order ``` **响应** 加 3 字段;创单初态固定: ```jsonc { "flowStep": 0, "flowStepTotal": 8, "flowDisplayText": "待支付" } ``` --- ## 8 步映射表(16 → 8) **优先级**:`orderStatus` 终态 > `flowStatus` 步骤映射 | 触发条件 | `flowStep` | `flowDisplayText` | |---|---|---| | `orderStatus = CANCELLED` | `null` | "已取消" | | `orderStatus = COMPLETED` | `null` | "已完成" | | `flowStatus = AWAITING_PAY` | `0` | "待支付" | | `flowStatus = AWAITING_PROFILE` | `1` | "待补全信息" | | `flowStatus = AWAITING_HOTEL_SUBMIT` | `2` | **"待提交配房需求"** | | `flowStatus = AWAITING_HOTEL_CLAIM` | `2` | "待抢房" | | `flowStatus = HOTEL_IN_PROGRESS` | `2` | "房控处理中" | | `flowStatus = HOTEL_NEED_ADJUST` | `2` | "房控需调整" | | `flowStatus = AWAITING_VEHICLE_SUBMIT` | `3` | **"待配车需求"** | | `flowStatus = VEHICLE_IN_PROGRESS` | `3` | "车控处理中" | | `flowStatus = VEHICLE_NEED_ADJUST` | `3` | "车控需调整" | | `flowStatus = PENDING_CONFIRM` | `4` | "待确认" | | `flowStatus = PENDING_DEPARTURE` | `5` | "待出行" | | `flowStatus = TRAVELLING` | `6` | "出行中" | | `flowStatus = PENDING_REVIEW` | `7` | "待核单" | | `flowStatus = REVIEWING` | `8` | "核单中" | | `flowStatus = SETTLED` | `8` | "已结算" | **说明**: - 配房 4 个并行子态(`AWAITING_HOTEL_SUBMIT` / `_CLAIM` / `HOTEL_IN_PROGRESS` / `_NEED_ADJUST`)都归到 step 2 - 配车 3 个并行子态都归到 step 3 - `REVIEWING` 和 `SETTLED` 都归到 step 8(结算后整体收尾) - `CANCELLED` / `COMPLETED` 是终态,不在 8 步串行里,`flowStep` 返 null - 未知 / 历史脏数据:`flowStep=null`, `flowDisplayText=` 原英文值(fallback 不抛错) --- ## 前端如何用(推荐) ### 推荐方式 1:只显示 `flowDisplayText`(最简单) ```html
{{ order.flowDisplayText }}
``` ### 推荐方式 2:进度条 + 中文(拼分子分母) ```html
{{ order.flowStep }}/{{ order.flowStepTotal }} · {{ order.flowDisplayText }}
{{ order.flowDisplayText }}
``` ### 推荐方式 3:步骤条 UI(按 flowStep 高亮) 如果有 8 段步骤条 UI 组件,按 `flowStep` 高亮当前段: ```jsonc const stepNames = ["待支付", "补全信息", "配房需求", "配车需求", "确认", "出行准备", "出行", "核单"]; // 用 flowStep 高亮 stepNames[flowStep - 1] ``` --- ## 文案变更详情(重点关注) | 字段 | 旧值 | 新值 | |---|---|---| | `flowStatusName`(PR #3284 字段)| "待提交房型" | "待提交配房需求" | | `flowStatusName` | "待提交用车" | "待配车需求" | | `flowDisplayText`(本 PR 字段)| - | 同上 | **前端需要确认的事**: 1. 如果有按 **"待提交房型"** / **"待提交用车"** 老文案做字符串硬比较(如 `if (status === "待提交房型")`),需要改成新文案或改用枚举值比较。 2. 如果只是 **展示**(不做逻辑判断),无需改动——文案直接显示新值即可。 我们后端搜了一遍**未发现**前端这个老文案的硬比较,但前端代码后端看不到,**请前端 mmg 自己 grep 确认**。 --- ## 容错(前端可忽略) - `flowStatus` 是历史脏数据(枚举里没有)→ `flowStep = null`, `flowDisplayText = 原始值` - `orderStatus = null` → `flowStep = null`, `flowDisplayText = "未知"` - 前端按 `flowStep === null` 判断终态/未知,按 `flowDisplayText` 兜底展示,绝不会拿到空字符串。 --- ## 业务边界 - 老字段 `flowStatus` / `flowStatusName` 保留(契约不变) - 仅新增 3 字段 + 修订 2 个枚举 label 文案 - 8 步是**前端展示概念**,后端的 `OrderFlowStatus` 仍是 16 个细状态(DB 落地不变) - 步骤条只是**展示视角**的简化,业务逻辑仍按 16 个 `flowStatus` 跑 --- ## 影响评估 - **后端**:hl-order-service-v3 改了 7 个文件(枚举 + Converter + 3 VO + Service + 测试),无 DB 改动,重启服务后生效。 - **前端**:可选改造——把"1/8"拼接逻辑改用后端 3 字段。改不改都不影响功能(老逻辑还能跑)。 - **mp 端**:本 PR 暂未改 mp(mock service),真业务化时一并补。 --- ## 注意事项 1. **文案修订是契约变更**:如果前端按老文案做字符串硬比较,必须改。展示用的话无影响。 2. **flowStep 可能为 null**:终态(已取消/已完成/历史脏数据)时为 null,前端按 null 处理"不显示分子"或"显示终态文案"。 3. **创单后立即调列表**:会看到 `flowStep=0` + `flowDisplayText="待支付"`,符合"还没开始走流程"语义。 --- ## 关联 - **Issue**: [#3285](https://git.1814.love:8443/wx/HL/issues/3285) - **PR**: [#3286](https://git.1814.love:8443/wx/HL/pulls/3286) - feat(order-v3): 订单接口加 8 步步骤条字段 + 修 2 个文案 - **Commit**: [fd533fdaa](https://git.1814.love:8443/wx/HL/commit/fd533fdaa) - **前置 PR**: [#3284](https://git.1814.love:8443/wx/HL/pulls/3284) - status label 中文(建议一起看)