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

180 行
3.6 KiB
Markdown

# 【前端对接·管理后台】订单用车通用特殊诉求改为字典
> 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: []` 即可。