From 236f2517bd7abb8fe61741c2db38cf981cc31754 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 8 Jul 2026 17:15:35 +0800 Subject: [PATCH] docs(fleet): add vehicle type readonly contract handoff --- ...¢å•调整用车车型大类åªè¯»æŽ¥å£æƒé™-管ç†åŽå°.md | 175 ++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 changelogs-v2/2026-07/49_4852_订å•调整用车车型大类åªè¯»æŽ¥å£æƒé™-管ç†åŽå°.md diff --git a/changelogs-v2/2026-07/49_4852_订å•调整用车车型大类åªè¯»æŽ¥å£æƒé™-管ç†åŽå°.md b/changelogs-v2/2026-07/49_4852_订å•调整用车车型大类åªè¯»æŽ¥å£æƒé™-管ç†åŽå°.md new file mode 100644 index 0000000..a888e0e --- /dev/null +++ b/changelogs-v2/2026-07/49_4852_订å•调整用车车型大类åªè¯»æŽ¥å£æƒé™-管ç†åŽå°.md @@ -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 +``` + +å“应示例: + +```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 +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。