docs(fleet): add vehicle type readonly contract handoff
这个提交包含在:
父节点
03d3a05116
当前提交
236f2517bd
@ -0,0 +1,175 @@
|
||||
# 【前端对接·管理后台】订单调整用车车型大类只读接口权限
|
||||
|
||||
> Issue: [wx/HL#4852](https://git.1814.love:8443/wx/HL/issues/4852)
|
||||
> PR: [wx/HL#4855](https://git.1814.love:8443/wx/HL/pulls/4855)
|
||||
> 服务: `hl-fleet-service`
|
||||
> 日期: 2026-07-08
|
||||
> 影响范围: 订单详情调整订单弹窗、车辆安排、联系车务前置校验
|
||||
|
||||
## 1. 结论
|
||||
|
||||
- 订单调整弹窗的车辆安排只允许选择“车型大类”,不要选择具体车型型号。
|
||||
- 前端应调用 `GET /admin/fleet/vehicle-types/list` 渲染大类下拉,定制师等已登录后台角色可只读访问。
|
||||
- `GET /admin/fleet/vehicle-types` 仍是车务管理树接口,返回 `models[]`,非车务角色访问仍会 403。
|
||||
- 提交用车需求仍只传 `fleet[].vehicleType = typeKey`,不传 `modelId/modelName`。
|
||||
- 没有有效用车需求时,联系车务应展示后端 `281013` 提示,不要把车型接口 403 文案误展示成车务会话问题。
|
||||
|
||||
## 2. 车型大类下拉
|
||||
|
||||
```http
|
||||
GET /admin/fleet/vehicle-types/list
|
||||
Authorization: Bearer <admin-token>
|
||||
```
|
||||
|
||||
响应示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"success": true,
|
||||
"data": [
|
||||
{
|
||||
"id": "2057378611889180674",
|
||||
"typeKey": "suv2",
|
||||
"typeName": "SUV系列",
|
||||
"icon": "Car",
|
||||
"description": null,
|
||||
"sortOrder": 1,
|
||||
"modelCount": 5,
|
||||
"inUseCount": 4
|
||||
},
|
||||
{
|
||||
"id": "2057378611889180675",
|
||||
"typeKey": "mpv",
|
||||
"typeName": "商务车",
|
||||
"icon": "Van",
|
||||
"sortOrder": 2,
|
||||
"modelCount": 5,
|
||||
"inUseCount": 10
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
前端取值:
|
||||
|
||||
| 用途 | 字段 |
|
||||
|------|------|
|
||||
| 下拉展示 | `typeName` |
|
||||
| 下拉 value / 提交值 | `typeKey` |
|
||||
| 辅助展示 | `modelCount`、`inUseCount` |
|
||||
| 不要用于订单车辆需求 | `id`、具体车型 `modelId/modelName` |
|
||||
|
||||
## 3. 不要使用的接口
|
||||
|
||||
订单调整弹窗不要调用:
|
||||
|
||||
```http
|
||||
GET /admin/fleet/vehicle-types
|
||||
```
|
||||
|
||||
该接口是车务管理页的车型树,非车务角色仍会返回:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 403,
|
||||
"message": "无权限访问车务管理,请切换到车务角色",
|
||||
"success": false,
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
车务角色下该接口会带 `models[]`,但 `models[]` 是车型管理/车辆档案/价格日历使用的具体型号,不适合订单用车需求。
|
||||
|
||||
## 4. 提交车辆需求
|
||||
|
||||
```http
|
||||
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 寸行李箱"
|
||||
}
|
||||
```
|
||||
|
||||
响应示例:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"message": "成功",
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": "2074749999999990001",
|
||||
"version": 1,
|
||||
"isActive": true,
|
||||
"status": "PENDING",
|
||||
"submittedAt": "2026-07-08T18:30:00",
|
||||
"claimerId": null,
|
||||
"claimerName": null,
|
||||
"claimedAt": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
说明:
|
||||
|
||||
- `vehicleType` 允许传当前大类真实 `typeKey`,后端会做规范化保存。
|
||||
- 一组车型默认覆盖整段行程;不要增加“前几天/后几天车型不同”的 UI。
|
||||
- 多车需求用多组或 `count > 1` 表达。
|
||||
|
||||
## 5. 联系车务兜底
|
||||
|
||||
没有有效用车需求时:
|
||||
|
||||
```http
|
||||
POST /admin/message/chat/open-fleet
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"orderId": "2074746808742928386",
|
||||
"peerAdminId": null
|
||||
}
|
||||
```
|
||||
|
||||
失败响应:
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 281013,
|
||||
"message": "请先提交有效用车需求后再联系车务",
|
||||
"success": false,
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
前端处理:
|
||||
|
||||
- 订单调整车辆安排页先提交有效用车需求,再允许联系车务。
|
||||
- `281013` 直接提示后端 `message`。
|
||||
- 不要因为车型树接口 403 而提示“切换车务角色”;订单调整页不应该调用车型树接口。
|
||||
|
||||
## 6. 后端验证
|
||||
|
||||
本地已验证:
|
||||
|
||||
```bash
|
||||
mvn -pl hl-fleet-service -am "-Dtest=FleetAdminRoleGuardInterceptorTest,VehicleTypeControllerTest" -DfailIfNoTests=false test
|
||||
mvn -pl hl-fleet-service spotless:check
|
||||
```
|
||||
|
||||
覆盖点:
|
||||
|
||||
- `CUSTOMIZER` 可访问 `GET /admin/fleet/vehicle-types/list`。
|
||||
- `CUSTOMIZER` 访问 `GET /admin/fleet/vehicle-types` 仍返回 403。
|
||||
- 缺少 `X-Admin-Role` 时访问大类列表仍返回 401。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户