3.6 KiB
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 |
说明:本次 value 与 label 保持一致,兼容现有已提交的中文标签。
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: []即可。