hl-api-changelog/changelogs-v2/2026-07/52_4862_订单用车通用特殊诉求字典化-管理后台.md
2026-07-09 10:25:57 +08:00

3.6 KiB

【前端对接·管理后台】订单用车通用特殊诉求改为字典

Issue: wx/HL#4862
服务: hl-user-service / hl-order-service-v3
日期: 2026-07-09
影响范围: 订单详情 / 调整订单弹窗 / 车辆安排

1. 结论

  • 「车辆安排」里的 specialTags 现在必须来自业务字典 vehicle_special_demand
  • 后端新增字典种子,并在提交用车需求、调整订单车辆需求时做强校验。
  • 字段结构不变,仍然是 specialTags: string[]
  • 未列入字典的个性化要求请写入 remark,不要作为 specialTags 提交。

2. 字典

前端从通用字典接口读取:

GET /admin/dict/data/vehicle_special_demand
Authorization: Bearer <admin-token>

或使用全量字典缓存接口中的同名 dictType

当前字典项:

value label
儿童安全座椅 儿童安全座椅
大行李空间 大行李空间
中文司机 中文司机
老司机(5年以上) 老司机(5年以上)
含高速油费 含高速油费
静音车型 静音车型
有 WiFi 有 WiFi

说明:本次 valuelabel 保持一致,兼容现有已提交的中文标签。

3. 首次提交用车需求

PUT /v3/admin/order/2074746808742928386/vehicle-requirement
Authorization: Bearer <admin-token>
Content-Type: application/json

请求示例:

{
  "fleet": [
    {
      "vehicleType": "suv2",
      "seats": 5,
      "count": 1
    }
  ],
  "specialTags": ["儿童安全座椅", "中文司机"],
  "remark": "需要接机,后备箱放 2 个 28 寸行李箱"
}

成功响应示例:

{
  "loginStatus": 200,
  "requestStatus": 200,
  "code": 0,
  "msg": "success",
  "data": {
    "id": "91011223399",
    "orderId": "2074746808742928386",
    "version": 1,
    "status": "PENDING"
  }
}

4. 调整订单提交车辆需求

调整订单的车辆需求也支持并校验 updates.vehicleRequirement.specialTags

POST /v3/admin/order/2074746808742928386/adjustment/submit
Authorization: Bearer <admin-token>
Content-Type: application/json

请求示例:

{
  "updates": {
    "vehicleRequirement": {
      "fleet": [
        {
          "vehicleType": "suv2",
          "seats": 5,
          "count": 1
        }
      ],
      "specialTags": ["儿童安全座椅", "中文司机"],
      "remark": "第 3 天需要儿童安全座椅"
    }
  }
}

成功响应示例:

{
  "loginStatus": 200,
  "requestStatus": 200,
  "code": 0,
  "msg": "success",
  "data": {
    "success": true,
    "changeItems": [
      {
        "type": "VEHICLE_REQ",
        "label": "车辆需求已调整"
      }
    ]
  }
}

5. 错误响应

提交字典外值:

{
  "fleet": [
    {
      "vehicleType": "suv2",
      "seats": 5,
      "count": 1
    }
  ],
  "specialTags": ["随便写一个"],
  "remark": "错误示例"
}

响应示例:

{
  "loginStatus": 200,
  "requestStatus": 200,
  "code": 582025,
  "msg": "用车通用特殊诉求不在字典 vehicle_special_demand 中",
  "data": null
}

字典不可用时:

{
  "loginStatus": 200,
  "requestStatus": 200,
  "code": 582026,
  "msg": "用车通用特殊诉求字典不可用",
  "data": null
}

6. 前端改造点

  • 不要继续在 FunItemAdjustModal.vue 里硬编码 VEHICLE_SPECIAL_OPTIONS
  • vehicle_special_demand 字典渲染多选按钮。
  • 提交 option.value 数组到 specialTags
  • 自定义、不确定、长文本诉求写入 remark
  • 空选择提交 specialTags: [] 即可。