2.3 KiB
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/list的seatOptions渲染座位数下拉。 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,证明校验发生在订单查找和写库之前。