From 64c41a1aaeff2940710f7b11012d9e4b4c98c13b Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 12 Jun 2026 12:21:42 +0800 Subject: [PATCH] =?UTF-8?q?changelog(v2):=20=E4=BB=B7=E6=A0=BC=E6=97=A5?= =?UTF-8?q?=E5=8E=86=E8=81=9A=E5=90=88=E6=80=BB=E8=A7=88+=E5=A4=9A?= =?UTF-8?q?=E8=BD=A6=E5=9E=8B=E6=89=B9=E9=87=8F=E8=AE=BE=E4=BB=B7=E5=AF=B9?= =?UTF-8?q?=E9=BD=90=E5=8E=9F=E5=9E=8B=204=E2=86=926=20=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20(PR=20#3727)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...†èšåˆæ€»è§ˆä¸Žå¤šè½¦åž‹æ‰¹é‡è®¾ä»·-新增接å£-管ç†åŽå°.md | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 changelogs-v2/2026-06/12_3727_价格日历èšåˆæ€»è§ˆä¸Žå¤šè½¦åž‹æ‰¹é‡è®¾ä»·-新增接å£-管ç†åŽå°.md diff --git a/changelogs-v2/2026-06/12_3727_价格日历èšåˆæ€»è§ˆä¸Žå¤šè½¦åž‹æ‰¹é‡è®¾ä»·-新增接å£-管ç†åŽå°.md b/changelogs-v2/2026-06/12_3727_价格日历èšåˆæ€»è§ˆä¸Žå¤šè½¦åž‹æ‰¹é‡è®¾ä»·-新增接å£-管ç†åŽå°.md new file mode 100644 index 0000000..d170908 --- /dev/null +++ b/changelogs-v2/2026-06/12_3727_价格日历èšåˆæ€»è§ˆä¸Žå¤šè½¦åž‹æ‰¹é‡è®¾ä»·-新增接å£-管ç†åŽå°.md @@ -0,0 +1,124 @@ +# ã€æ–°å¢žæŽ¥å£Â·ç®¡ç†åŽå°ã€‘价格日历——§9.5 èšåˆæ€»è§ˆ + §9.6 多车型批é‡è®¾ä»·(对é½åŽŸåž‹,4→6 接å£) + +> æœåŠ¡:hl-fleet-service(8087) | 分支:dev-v3 | PR:#3727 | 已部署测试æœå¹¶ 14 项 API 实测通过(2026-06-12) +> 契约出处:FLEET API v1.5.62 §9.5/§9.6(æ–‡æ¡£ç«™å·²åŒæ­¥) | å‰ç«¯è§¦å‘ä½:车管控制å°ã€Œä»·æ ¼æ—¥åŽ†ã€æ•´é¡µ(page_pricing 原型) +> 背景:å‰ç«¯åé¦ˆçŽ°æœ‰ä»·æ ¼æ—¥åŽ†æŽ¥å£æ‹¼ä¸å‡ºåŽŸåž‹é¡µé¢(原型需è¦ä¸€æ¬¡æ‹¿åˆ°å…¨éƒ¨è½¦åž‹Ã—日期价格矩阵+èŠ‚å‡æ—¥+统计,ä¸”æ‰¹é‡æ”¹ä»·æ˜¯å¤šè½¦åž‹å¤šé€‰)——本次补é½,**原有 4 接å£é›¶å˜æ›´**。 + +## âš ï¸ å…³é”®è¯´æ˜Ž + +1. **整页数æ®ä¸€æ¬¡æ‹‰å–**:新增 `GET /admin/fleet/pricing-calendar/overview`,一次返回[大类→车型→区间价格矩阵+统计]+èŠ‚å‡æ—¥åˆ—表+å…¨å±€ä»·æ ¼åŒºé—´ã€‚ã€Œå…¨éƒ¨å¤§ç±»ã€æœˆå¡ç‰‡ã€å•大类月热力ã€å­£åº¦/åŠå¹´è§†å›¾å…¨éƒ¨ç”¨å®ƒ,**ä¸å†éœ€è¦æŒ‰è½¦åž‹é€ä¸ªè°ƒ §9.1**。 +2. **èŠ‚å‡æ—¥æ•°æ®æºæ”¶å£åŽç«¯**:æ ¼å­ä¸Šçš„「å‡ã€æ ‡è®°è¯·æ”¹ç”¨ overview 返回的 `holidays` 数组判断(原型里å‰ç«¯ç¡¬ç¼–ç çš„ HOLIDAYS_2026 删掉),真相æº=åŽç«¯ Nacos é…ç½®,æ¯å¹´ç”±åŽç«¯ç»´æŠ¤ã€å‰ç«¯é›¶æ”¹åŠ¨ã€‚ +3. **`holidays` åªå«è¯·æ±‚åŒºé—´å†…çš„èŠ‚å‡æ—¥**:æ‰¹é‡æ”¹ä»·å¼¹çª—如果选择了超出当å‰å·²åŠ è½½åŒºé—´çš„æ—¥æœŸ(例如页é¢åŠ è½½äº† 1-5 æœˆã€æ‰¹æ”¹ 10 月国庆),è¯·æŒ‰æ‰€é€‰åŒºé—´é‡æ‹‰ä¸€æ¬¡ overview å–èŠ‚å‡æ—¥ã€‚ +4. **月å¡ç‰‡ç»Ÿè®¡å£å¾„**:`stats` 按**请求区间**统计(å‡/低/高)。一次拉多个月时,啿œˆç»Ÿè®¡è¯·å‰ç«¯ä»Ž `prices[]` 按月自èš(原型本æ¥å°±æ˜¯å‰ç«¯ç®—çš„,矩阵数æ®å®Œå¤‡);`yearAvgPrice`(全年å‡)åŽç«¯å·²ç®—好直接用。 +5. **å¤šè½¦åž‹æ‰¹é‡æ”¹ä»·**:新增 `PUT /batch-set`,vehicleModelIds 1-50 个多选,**任一车型 ID ä¸å­˜åœ¨æ•´æ‰¹æ‹’ç»**(600503,消æ¯åˆ—出全部缺失 ID),三模å¼(ABS/DELTA/PERCENT)/仅周末/ä»…èŠ‚å‡æ—¥ç­‰ä¸Žå•车型 §9.2 å®Œå…¨åŒæºã€‚整批一个事务,å¤±è´¥å…¨å›žæ»šæ— åŠæ‰¹ã€‚ +6. 600503 消æ¯å‡çº§ä¸ºã€Œè½¦åž‹åž‹å·ä¸å­˜åœ¨: {ID}ã€(带具体 ID,错误ç ä¸å˜,按 code 判断的å‰ç«¯æ— å½±å“)。 +7. 金é¢å‡ºå‚一律字符串(如 `"999.00"`),雪花 ID 字符串。 + +## 1. §9.5 价格日历èšåˆæ€»è§ˆ + +`GET /admin/fleet/pricing-calendar/overview?startDate=2026-01-01&endDate=2026-05-31` + +| 傿•° | ä½ç½® | 类型 | å¿…å¡« | 说明 | +|---|---|---|---|---| +| startDate | query | string | 是 | 开始日期 yyyy-MM-dd | +| endDate | query | string | 是 | ç»“æŸæ—¥æœŸ,é¡» ≥ startDate 且区间 ≤ 366 天(600501/600502) | + +### å“应示例(测试æœå®žæµ‹è£å‰ª) + +```json +{ + "code": 200, + "message": "æˆåŠŸ", + "data": { + "startDate": "2026-01-01", + "endDate": "2026-05-31", + "globalMinPrice": "950.00", // 区间内全部车型最低日价(色阶图例下界;无任何设价=null) + "globalMaxPrice": "4500.00", // 区间内全部车型最高日价(色阶图例上界) + "holidays": ["2026-01-01", "2026-02-16", "2026-02-17"], // åŒºé—´å†…èŠ‚å‡æ—¥(æ ¼å­ã€Œå‡ã€æ ‡è®°æ•°æ®æº,å‡åº) + "types": [ // 车辆大类(sortOrder å‡åº,仅嫿œ‰åž‹å·çš„大类) + { + "vehicleTypeId": "2057378611889180674", + "typeKey": "suv2", + "typeName": "SUV系列", + "icon": "", + "models": [ + { + "vehicleModelId": "2057378612593823745", + "modelName": "丰田普拉多", + "basePrice": "1000.00", // 车型基准价(å¯ null) + "stats": { + "avgPrice": "1673.00", // 请求区间内已设价日å‡ä»·(HALF_UP 两ä½;无设价=null) + "minPrice": "1500.00", // 区间最低 + "maxPrice": "2250.00", // 区间最高 + "yearAvgPrice": "1293.00" // startDate 所在自然年的全年å‡ä»·(å¡ç‰‡ã€Œå…¨å¹´å‡ã€) + }, + "prices": [ // 区间内已设价日(å‡åº;未设价日ä¸å‡ºçް) + { "date": "2026-01-01", "dayPrice": "2250.00", "status": "AVAILABLE", "remark": "" } + ] + } + ] + } + ] + } +} +``` + +> 无设价的车型也会返回(prices=[]ã€stats 字段全 null),å‰ç«¯å±•示全部车型无需å¦è°ƒè½¦åž‹æ ‘。 + +### curl + +```bash +curl -k "https://web.test.1814.love:9443/admin/fleet/pricing-calendar/overview?startDate=2026-01-01&endDate=2026-05-31" \ + -H "Authorization: Bearer {token}" +``` + +## 2. §9.6 多车型批é‡è®¾ä»· + +`PUT /admin/fleet/pricing-calendar/batch-set` + +### å…¥å‚(body) = §9.2 å•车型全部字段 + vehicleModelIds + +| 字段 | 类型 | å¿…å¡« | 说明 | +|---|---|---|---| +| vehicleModelIds | string[] | 是 | è½¦åž‹åž‹å· ID 列表(1-50 个,雪花字符串);任一ä¸å­˜åœ¨æ•´æ‰¹æ‹’ç» 600503;é‡å¤è‡ªåŠ¨åŽ»é‡;元素ä¸èƒ½ä¸º null | +| startDate / endDate | string | 是 | åŒ Â§9.2(≤366 天) | +| adjustMode | string | å¦ | ABS=固定价 / DELTA=çŽ°ä»·åŠ å‡ / PERCENT=百分比,默认 ABS | +| dayPrice | string | ABS å¿…å¡« | åŒ Â§9.2 | +| adjustValue | string | DELTA/PERCENT å¿…å¡« | åŒ Â§9.2(å¯è´Ÿ;PERCENT 如 10=+10%) | +| status / remark / weekdayOnly / weekendOnly / holidayOnly / selectedWeekdays / excludeDates | — | å¦ | 全部与 §9.2 åŒæº(三筛选互斥返 400) | + +### è¯·æ±‚ç¤ºä¾‹â€”â€”åŽŸåž‹ã€Œæ‰¹é‡æ”¹ä»·ã€å¼¹çª—:选 2 个车型春节区间上浮 15% + +```bash +curl -k -X PUT "https://web.test.1814.love:9443/admin/fleet/pricing-calendar/batch-set" \ + -H "Authorization: Bearer {token}" -H "Content-Type: application/json" \ + -d '{"vehicleModelIds":["2057378612593823745","2064998010110029826"], + "startDate":"2026-02-16","endDate":"2026-02-22", + "adjustMode":"PERCENT","adjustValue":"15","holidayOnly":true}' +``` + +æˆåŠŸ:`{ "code": 200, "message": "æˆåŠŸ" }` + +### é”™è¯¯ç  + +| code | 触å‘场景 | +|---|---| +| 400 | 傿•°æ ¡éªŒ(ID 列表空/>50/å« nullã€ä¸‰ç­›é€‰äº’æ–¥ã€æ¡ä»¶å¿…å¡«ã€ç™½åå•ã€ä¸¤ä½å°æ•°) | +| 600501 / 600502 | æ—¥æœŸé¡ºåº / 区间超 366 天 | +| 600503 | 任一车型ä¸å­˜åœ¨,消æ¯åˆ—出全部缺失 ID,**æ•´æ‰¹ä¸æ‰§è¡Œ** | + +### 防护(å‰ç«¯æ— æ„ŸçŸ¥,连点会收到æç¤º) + +- åŒå‚æ•° 3 秒幂等窗å£(ä¼ å‚顺åº/é‡å¤ ID ä¸å½±å“判é‡)+ 批é‡è¯·æ±‚é—´äº’æ–¥é” +- 整批一个事务:任一失败全部回滚,ä¸ä¼šå‡ºçް"改了一åŠ" + +## 3. 测试æœå®žæµ‹æ•°æ®ç‚¹ + +| æ“作 | 结果 | +|---|---| +| overview 2099-02 区间(å« 2 车型设价) | 200,types æ ‘/stats/globalMin-Max/prices 全正确 | +| overview holidays(é…ç½®èŠ‚å‡æ—¥åŒºé—´) | `["2099-01-15"]` 与 Nacos é…置一致 | +| batch-set 2 车型 ABS 999 | 两车型全部写入,overview ç«‹å³å¯è§ | +| batch-set å«ä¸å­˜åœ¨ ID | 600503 消æ¯å¸¦ç¼ºå¤± ID,整批未执行 | +| 区间 >366 / start>end | 600502 / 600501 | +| 原 §9.1 å•车型月视图 | 回归正常,é›¶å˜æ›´ |