docs: add vehicle special demand dict contract
这个提交包含在:
父节点
aea6b4091d
当前提交
b91e01f563
@ -0,0 +1,179 @@
|
|||||||
|
# 【前端对接·管理后台】订单用车通用特殊诉求改为字典
|
||||||
|
|
||||||
|
> Issue: [wx/HL#4862](https://git.1814.love:8443/wx/HL/issues/4862)
|
||||||
|
> 服务: `hl-user-service` / `hl-order-service-v3`
|
||||||
|
> 日期: 2026-07-09
|
||||||
|
> 影响范围: 订单详情 / 调整订单弹窗 / 车辆安排
|
||||||
|
|
||||||
|
## 1. 结论
|
||||||
|
|
||||||
|
- 「车辆安排」里的 `specialTags` 现在必须来自业务字典 `vehicle_special_demand`。
|
||||||
|
- 后端新增字典种子,并在提交用车需求、调整订单车辆需求时做强校验。
|
||||||
|
- 字段结构不变,仍然是 `specialTags: string[]`。
|
||||||
|
- 未列入字典的个性化要求请写入 `remark`,不要作为 `specialTags` 提交。
|
||||||
|
|
||||||
|
## 2. 字典
|
||||||
|
|
||||||
|
前端从通用字典接口读取:
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /admin/dict/data/vehicle_special_demand
|
||||||
|
Authorization: Bearer <admin-token>
|
||||||
|
```
|
||||||
|
|
||||||
|
或使用全量字典缓存接口中的同名 `dictType`。
|
||||||
|
|
||||||
|
当前字典项:
|
||||||
|
|
||||||
|
| value | label |
|
||||||
|
|------|------|
|
||||||
|
| `儿童安全座椅` | 儿童安全座椅 |
|
||||||
|
| `大行李空间` | 大行李空间 |
|
||||||
|
| `中文司机` | 中文司机 |
|
||||||
|
| `老司机(5年以上)` | 老司机(5年以上) |
|
||||||
|
| `含高速油费` | 含高速油费 |
|
||||||
|
| `静音车型` | 静音车型 |
|
||||||
|
| `有 WiFi` | 有 WiFi |
|
||||||
|
|
||||||
|
说明:本次 `value` 与 `label` 保持一致,兼容现有已提交的中文标签。
|
||||||
|
|
||||||
|
## 3. 首次提交用车需求
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /v3/admin/order/2074746808742928386/vehicle-requirement
|
||||||
|
Authorization: Bearer <admin-token>
|
||||||
|
Content-Type: application/json
|
||||||
|
```
|
||||||
|
|
||||||
|
请求示例:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"fleet": [
|
||||||
|
{
|
||||||
|
"vehicleType": "suv2",
|
||||||
|
"seats": 5,
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"specialTags": ["儿童安全座椅", "中文司机"],
|
||||||
|
"remark": "需要接机,后备箱放 2 个 28 寸行李箱"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
成功响应示例:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"loginStatus": 200,
|
||||||
|
"requestStatus": 200,
|
||||||
|
"code": 0,
|
||||||
|
"msg": "success",
|
||||||
|
"data": {
|
||||||
|
"id": "91011223399",
|
||||||
|
"orderId": "2074746808742928386",
|
||||||
|
"version": 1,
|
||||||
|
"status": "PENDING"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 4. 调整订单提交车辆需求
|
||||||
|
|
||||||
|
调整订单的车辆需求也支持并校验 `updates.vehicleRequirement.specialTags`。
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /v3/admin/order/2074746808742928386/adjustment/submit
|
||||||
|
Authorization: Bearer <admin-token>
|
||||||
|
Content-Type: application/json
|
||||||
|
```
|
||||||
|
|
||||||
|
请求示例:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"updates": {
|
||||||
|
"vehicleRequirement": {
|
||||||
|
"fleet": [
|
||||||
|
{
|
||||||
|
"vehicleType": "suv2",
|
||||||
|
"seats": 5,
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"specialTags": ["儿童安全座椅", "中文司机"],
|
||||||
|
"remark": "第 3 天需要儿童安全座椅"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
成功响应示例:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"loginStatus": 200,
|
||||||
|
"requestStatus": 200,
|
||||||
|
"code": 0,
|
||||||
|
"msg": "success",
|
||||||
|
"data": {
|
||||||
|
"success": true,
|
||||||
|
"changeItems": [
|
||||||
|
{
|
||||||
|
"type": "VEHICLE_REQ",
|
||||||
|
"label": "车辆需求已调整"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. 错误响应
|
||||||
|
|
||||||
|
提交字典外值:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"fleet": [
|
||||||
|
{
|
||||||
|
"vehicleType": "suv2",
|
||||||
|
"seats": 5,
|
||||||
|
"count": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"specialTags": ["随便写一个"],
|
||||||
|
"remark": "错误示例"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
响应示例:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"loginStatus": 200,
|
||||||
|
"requestStatus": 200,
|
||||||
|
"code": 582025,
|
||||||
|
"msg": "用车通用特殊诉求不在字典 vehicle_special_demand 中",
|
||||||
|
"data": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
字典不可用时:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"loginStatus": 200,
|
||||||
|
"requestStatus": 200,
|
||||||
|
"code": 582026,
|
||||||
|
"msg": "用车通用特殊诉求字典不可用",
|
||||||
|
"data": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 6. 前端改造点
|
||||||
|
|
||||||
|
- 不要继续在 `FunItemAdjustModal.vue` 里硬编码 `VEHICLE_SPECIAL_OPTIONS`。
|
||||||
|
- 用 `vehicle_special_demand` 字典渲染多选按钮。
|
||||||
|
- 提交 `option.value` 数组到 `specialTags`。
|
||||||
|
- 自定义、不确定、长文本诉求写入 `remark`。
|
||||||
|
- 空选择提交 `specialTags: []` 即可。
|
||||||
正在加载...
x
在新工单中引用
屏蔽一个用户