From f3b433a034f01310e189a8c62b1674ce4ab1cac4 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 8 Jul 2026 18:12:52 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E8=AE=A2=E5=8D=95=E7=94=A8=E8=BD=A6?= =?UTF-8?q?=E5=BA=A7=E4=BD=8D=E6=95=B0=E6=8C=89=E8=BD=A6=E5=9E=8B=E5=9E=8B?= =?UTF-8?q?=E5=8F=B7=E4=B8=8B=E6=8B=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...¢å•è°ƒæ•´ç”¨è½¦åº§ä½æ•°æŒ‰è½¦åž‹åž‹å·ä¸‹æ‹‰-管ç†åŽå°.md | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 changelogs-v2/2026-07/50_4856_订å•è°ƒæ•´ç”¨è½¦åº§ä½æ•°æŒ‰è½¦åž‹åž‹å·ä¸‹æ‹‰-管ç†åŽå°.md diff --git a/changelogs-v2/2026-07/50_4856_订å•è°ƒæ•´ç”¨è½¦åº§ä½æ•°æŒ‰è½¦åž‹åž‹å·ä¸‹æ‹‰-管ç†åŽå°.md b/changelogs-v2/2026-07/50_4856_订å•è°ƒæ•´ç”¨è½¦åº§ä½æ•°æŒ‰è½¦åž‹åž‹å·ä¸‹æ‹‰-管ç†åŽå°.md new file mode 100644 index 0000000..2efd537 --- /dev/null +++ b/changelogs-v2/2026-07/50_4856_订å•è°ƒæ•´ç”¨è½¦åº§ä½æ•°æŒ‰è½¦åž‹åž‹å·ä¸‹æ‹‰-管ç†åŽå°.md @@ -0,0 +1,207 @@ +# ã€å‰ç«¯å¯¹æŽ¥Â·ç®¡ç†åŽå°ã€‘订å•è°ƒæ•´ç”¨è½¦åº§ä½æ•°æŒ‰è½¦åž‹åž‹å·ä¸‹æ‹‰ + +> Issue: [wx/HL#4856](https://git.1814.love:8443/wx/HL/issues/4856) +> PR: [wx/HL#4857](https://git.1814.love:8443/wx/HL/pulls/4857) +> æœåŠ¡: `hl-fleet-service`ã€`hl-order-service-v3` +> 日期: 2026-07-08 +> å½±å“范围: 订å•详情 / 调整订å•弹窗 / 车辆安排 + +## 1. 结论 + +- 订å•调整弹窗的车辆安排ä»åªé€‰æ‹©â€œè½¦åž‹å¤§ç±»â€ï¼Œä¸é€‰æ‹©å…·ä½“车型型å·ã€‚ +- åº§ä½æ•°ä¸æ˜¯è½¦åž‹å¤§ç±»å›ºå®šå€¼ï¼Œè€Œæ˜¯è¯¥å¤§ç±»ä¸‹æ‰€æœ‰çœŸå®žè½¦åž‹åž‹å· `seats` 去é‡åŽçš„下拉选项。 +- å‰ç«¯è°ƒç”¨ `GET /admin/fleet/vehicle-types/list`,用返回的 `seatOptions` æ¸²æŸ“åº§ä½æ•°ä¸‹æ‹‰ã€‚ +- æäº¤æ—¶ `fleet[].vehicleType` 传大类 `typeKey`,`fleet[].seats` 传用户从 `seatOptions` ä¸­é€‰ä¸­çš„åº§ä½æ•°ã€‚ +- åŽç«¯ä¼šæŒ‰çœŸå®žè½¦åž‹åº“校验 `vehicleType + seats` 组åˆï¼›ä¸åœ¨è¯¥å¤§ç±» `seatOptions` å†…ä¼šæ‹’ç»æäº¤ã€‚ + +## 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, + "seatOptions": [5, 7] + }, + { + "id": "2057378611889180675", + "typeKey": "mpv", + "typeName": "商务车", + "icon": "Van", + "sortOrder": 2, + "modelCount": 5, + "inUseCount": 10, + "seatOptions": [7, 9, 19] + } + ] +} +``` + +字段说明: + +| 字段 | 类型 | 说明 | +|------|------|------| +| `typeKey` | string | 车型大类æäº¤å€¼ã€‚历å²å…¼å®¹å€¼å¦‚ `suv2` åŽç«¯ä¼šè§„范化ä¿å­˜ã€‚ | +| `typeName` | string | 车型大类展示å。 | +| `seatOptions` | number[] | 当å‰å¤§ç±»ä¸‹è½¦åž‹åž‹å· `seats` 去é‡å‡åºåŽçš„å¯é€‰åº§ä½æ•°ã€‚ | +| `modelCount` | number | 当å‰å¤§ç±»ä¸‹è½¦åž‹åž‹å·æ•°é‡ã€‚ | +| `inUseCount` | number | 当å‰å¤§ç±»ä¸‹åœ¨ç”¨è½¦è¾†æ•°é‡ã€‚ | + +å‰ç«¯å¤„ç†è§„则: + +- 先选车型大类,å†ä»Žè¯¥å¤§ç±» `seatOptions` æ¸²æŸ“åº§ä½æ•°ä¸‹æ‹‰ã€‚ +- åº§ä½æ•°ä¸å…许手输,ä¸å…è®¸ç”¨æˆ·æ”¹æˆ `seatOptions` 之外的值。 +- 切æ¢è½¦åž‹å¤§ç±»åŽï¼Œå¦‚æžœåŽŸåº§ä½æ•°ä¸åœ¨æ–°å¤§ç±» `seatOptions` ä¸­ï¼Œéœ€è¦æ¸…ç©ºåº§ä½æ•°å¹¶è¦æ±‚釿–°é€‰æ‹©ã€‚ +- `seatOptions` 为空时,该大类ä¸èƒ½æäº¤ï¼Œæç¤ºâ€œè¯¥è½¦åž‹å¤§ç±»æš‚æ— å¯ç”¨åº§ä½æ•°ï¼Œè¯·å…ˆç»´æŠ¤è½¦åž‹åº“â€ã€‚ + +## 3. æäº¤è½¦è¾†éœ€æ±‚ + +```http +PUT /v3/admin/order/2074746808742928386/vehicle-requirement +Authorization: Bearer +Content-Type: application/json +``` + +请求示例: + +```json +{ + "fleet": [ + { + "vehicleType": "suv2", + "seats": 5, + "count": 1 + }, + { + "vehicleType": "mpv", + "seats": 7, + "count": 1 + } + ], + "specialTags": ["儿童安全座椅", "ä¸­æ–‡å¸æœº"], + "remark": "éœ€è¦æŽ¥æœºï¼ŒåŽå¤‡ç®±æ”¾ 2 个 28 寸行æŽç®±" +} +``` + +æˆåŠŸå“应示例: + +```json +{ + "code": 200, + "message": "æˆåŠŸ", + "success": true, + "data": { + "id": "2074759000000000001", + "version": 1, + "isActive": true, + "status": "PENDING", + "submittedAt": "2026-07-08T18:40:00", + "claimerId": null, + "claimerName": null, + "claimedAt": null + } +} +``` + +åŽç«¯ä¿å­˜å£å¾„: + +- `fleet[].vehicleType` ä¿å­˜ä¸ºè§„范化åŽçš„车型大类,例如历å²å€¼ `suv2` 会ä¿å­˜ä¸º `suv`。 +- `fleet[].seats` æ˜¯ç”¨æˆ·é€‰æ‹©çš„åº§ä½æ•°é€‰é¡¹å€¼ï¼Œä¸ä»£è¡¨å…·ä½“è½¦åž‹åž‹å· ID。 +- 一组车型默认覆盖整段行程;ä¸ä¼šå‡ºçްå‰å‡ å¤©å’ŒåŽå‡ å¤©è½¦åž‹å¤§ç±»ä¸åŒçš„需求。 +- 多车需求通过多组 `fleet[]` 或å•组 `count > 1` 表达。 + +## 4. éžæ³•åº§ä½æ•°ç»„åˆ + +如果å‰ç«¯æäº¤äº†ä¸åœ¨è¯¥å¤§ç±» `seatOptions` ä¸­çš„åº§ä½æ•°ï¼š + +```json +{ + "fleet": [ + { + "vehicleType": "suv2", + "seats": 19, + "count": 1 + } + ] +} +``` + +失败å“应示例: + +```json +{ + "code": 582024, + "message": "åº§ä½æ•°ä¸åœ¨è¯¥è½¦åž‹å¤§ç±»å¯é€‰åº§ä½æ•°ä¸­ï¼Œè¯·æ£€æŸ¥è½¦åž‹åº“", + "success": false, + "data": null +} +``` + +å‰ç«¯å¤„ç†ï¼š + +- 直接展示åŽç«¯ `message`。 +- ä¸è¦åœ¨å‰ç«¯è‡ªè¡Œå…œåº•æˆä»»æ„åº§ä½æ•°ã€‚ +- å¦‚æžœçº¿ä¸Šå‡ºçŽ°è¯¥é”™è¯¯ï¼Œå…ˆæ£€æŸ¥é¡µé¢æ˜¯å¦ä½¿ç”¨äº†æœ€æ–° `seatOptions`ï¼Œå†æ£€æŸ¥è½¦åž‹åº“维护数æ®ã€‚ + +## 5. 车务车型库ä¸å¯ç”¨ + +è®¢å•æœåŠ¡æäº¤å‰ä¼šåªè¯»è°ƒç”¨è½¦åŠ¡è½¦åž‹åº“æ ¡éªŒåº§ä½æ•°ã€‚如果车务车型库ä¸å¯ç”¨ï¼š + +```json +{ + "code": 582091, + "message": "车队车型库ä¸å¯ç”¨ï¼Œæ— æ³•æ ¡éªŒåº§ä½æ•°é€‰é¡¹", + "success": false, + "data": null +} +``` + +å‰ç«¯å¤„ç†ï¼š + +- 直接æç¤ºåŽç«¯ `message`。 +- ä¸è¦ç»•过校验继续æäº¤ï¼Œå› ä¸ºå¦åˆ™ä¼šäº§ç”Ÿæ— æ³•æ´¾è½¦æˆ–é”™è¯¯åº§ä½æ•°éœ€æ±‚。 + +## 6. å‰ç«¯å¯¹æŽ¥æ¸…å• + +| 场景 | å¤„ç†æ–¹å¼ | +|------|----------| +| åˆæ¬¡æ‰“开车辆安排 | è°ƒ `GET /admin/fleet/vehicle-types/list`,缓存本次弹窗内的大类和 `seatOptions`。 | +| 选择车型大类 | æ›´æ–°åº§ä½æ•°ä¸‹æ‹‰ä¸ºè¯¥å¤§ç±» `seatOptions`。 | +| é€‰æ‹©åº§ä½æ•° | åªèƒ½ä»Žä¸‹æ‹‰ä¸­é€‰ï¼Œä¸èƒ½æ–‡æœ¬è¾“入。 | +| 切æ¢è½¦åž‹å¤§ç±» | 清空ä¸å…¼å®¹åº§ä½æ•°ï¼Œè¦æ±‚釿–°é€‰æ‹©ã€‚ | +| æäº¤è½¦è¾†éœ€æ±‚ | `vehicleType=typeKey`,`seats=选中的 seatOptions 值`,`count=车辆数é‡`。 | +| `seatOptions=[]` | ç¦æ­¢æäº¤è¯¥å¤§ç±»ï¼Œæç¤ºç»´æŠ¤è½¦åž‹åº“。 | +| é”™è¯¯ç  `582024` | å±•ç¤ºâ€œåº§ä½æ•°ä¸åœ¨è¯¥è½¦åž‹å¤§ç±»å¯é€‰åº§ä½æ•°ä¸­ï¼Œè¯·æ£€æŸ¥è½¦åž‹åº“â€ã€‚ | +| é”™è¯¯ç  `582091` | 展示“车队车型库ä¸å¯ç”¨ï¼Œæ— æ³•æ ¡éªŒåº§ä½æ•°é€‰é¡¹â€ã€‚ | + +## 7. åŽç«¯æœ¬åœ°éªŒè¯ + +```bash +mvn -pl hl-fleet-service -am -Dtest=VehicleTypeServiceTest -DfailIfNoTests=false test +mvn -pl hl-order-service-v3 -am -Dtest=RequirementServiceTest -DfailIfNoTests=false test +``` + +覆盖点: + +- `GET /admin/fleet/vehicle-types/list` 返回 `seatOptions`。 +- `seatOptions` æ¥æºäºŽè½¦åž‹åž‹å· `seats`,去é‡å¹¶å‡åºã€‚ +- 历å²å¤§ç±» key 兼容,例如 `suv2` 坿˜ å°„到 `suv` åº§ä½æ•°é€‰é¡¹ã€‚ +- è®¢å•æäº¤æ—¶åˆæ³• `vehicleType + seats` 通过。 +- è®¢å•æäº¤æ—¶éžæ³• `vehicleType + seats` 返回 `582024`。