hl-api-changelog/changelogs-v2/2026-07/51_4858_订单用车座位校验事务边界收口-管理后台.md
2026-07-08 21:36:06 +08:00

2.3 KiB

【前端对接·管理后台】订单用车座位校验事务边界收口

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

1. 结论

  • 本次不新增前端字段,不改变请求结构。
  • 前端仍按 #4856 文档处理:先选车型大类,再从 GET /admin/fleet/vehicle-types/listseatOptions 渲染座位数下拉。
  • PUT /v3/admin/order/{id}/vehicle-requirement 提交前,后端会在事务外只读调用车务车型库校验 vehicleType + seats
  • 非法座位数组合继续返回 582024,车务车型库不可用继续返回 582091

2. 提交请求保持不变

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 寸行李箱"
}

字段口径:

字段 类型 说明
fleet[].vehicleType string 车型大类 key。前端可传真实 typeKey,后端保存前归一为 suv/mpv/bus/sedan
fleet[].seats number 从该大类 seatOptions 中选择的座位数。
fleet[].count number 车辆数量,必须大于 0。

3. 非法座位数组合

请求示例:

{
  "fleet": [
    {
      "vehicleType": "suv",
      "seats": 99,
      "count": 1
    }
  ],
  "specialTags": [],
  "remark": "negative-seat-check"
}

响应示例:

{
  "loginStatus": 200,
  "requestStatus": 200,
  "code": 582024,
  "msg": "座位数不在该车型大类可选座位数中,请检查车型库",
  "data": null
}

前端处理:

  • 直接展示后端 msg
  • 不允许把座位数改成手输。
  • 切换车型大类后,如果当前座位数不在新大类 seatOptions 内,需要清空座位数并要求重新选择。

4. 验证结果

  • 测试环境 hl-order-service-v3 已部署成功。
  • 8086/8186 双实例 /actuator/health 返回 200。
  • 管理端 API 负向实测:非法 seats=99 返回 582024,证明校验发生在订单查找和写库之前。