From d720016808d210cb64f9015178f106390eb6244e Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sat, 20 Jun 2026 09:42:11 +0800 Subject: [PATCH] =?UTF-8?q?changelog(order-v3/early-bird):=20=E6=97=A9?= =?UTF-8?q?=E9=B8=9F=E4=B8=80=E4=BA=A7=E5=93=81=E8=87=B3=E5=A4=9A=E7=94=9F?= =?UTF-8?q?=E6=95=88=E4=B8=80=E4=B8=AA=E6=97=A9=E9=B8=9F-=E9=98=B2?= =?UTF-8?q?=E5=90=8C=E8=AE=A2=E5=8D=95=E5=86=B2=E7=AA=81=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E9=98=B6=E6=A2=AF(PR=20#4097)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ˆä¸€ä¸ªæ—©é¸Ÿ_防åŒè®¢å•冲çªä¿ç•™é˜¶æ¢¯-è¡Œä¸ºå˜æ›´-管ç†åŽå°.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 changelogs-v2/2026-06/20_4097_早鸟一产å“至多生效一个早鸟_防åŒè®¢å•冲çªä¿ç•™é˜¶æ¢¯-è¡Œä¸ºå˜æ›´-管ç†åŽå°.md diff --git a/changelogs-v2/2026-06/20_4097_早鸟一产å“至多生效一个早鸟_防åŒè®¢å•冲çªä¿ç•™é˜¶æ¢¯-è¡Œä¸ºå˜æ›´-管ç†åŽå°.md b/changelogs-v2/2026-06/20_4097_早鸟一产å“至多生效一个早鸟_防åŒè®¢å•冲çªä¿ç•™é˜¶æ¢¯-è¡Œä¸ºå˜æ›´-管ç†åŽå°.md new file mode 100644 index 0000000..5cc22ff --- /dev/null +++ b/changelogs-v2/2026-06/20_4097_早鸟一产å“至多生效一个早鸟_防åŒè®¢å•冲çªä¿ç•™é˜¶æ¢¯-è¡Œä¸ºå˜æ›´-管ç†åŽå°.md @@ -0,0 +1,41 @@ +# ã€è¡Œä¸ºå˜æ›´Â·ç®¡ç†åŽå°ã€‘早鸟优惠——åŒä¸€äº§å“ç¦æ­¢ä¸¤ä¸ª"会对åŒä¸€è®¢å•åŒæ—¶ç”Ÿæ•ˆ"的早鸟计划(人数阶梯ä¿ç•™) + +> æœåŠ¡:hl-order-service-v2(8094) + hl-order-service-v3(8086) | 分支:dev-v3 | PR:#4097 | å·¥å•:#4094 +> 已部署测试æœå¹¶ç»ç½‘å…³ 9443 真 admin token 端到端实测通过(2026-06-20):å†²çª create è¿” 585010;人数ä¸é‡å çš„阶梯档 create 正常 200。 + +## âš ï¸ å…³é”®è¯´æ˜Ž + +1. **早鸟新增"防åŒè®¢å•冲çª"校验**:一个产å“ä»å¯æŒ‚多个早鸟计划当**人数阶梯**(满5å‡100/满10å‡300,䏋啿Œ‰äººæ•°å‘½ä¸­æœ€ä¼˜ä¸€æ¡£,此能力**ä¿ç•™ä¸å˜**)。新增的é™åˆ¶æ˜¯:**ç¦æ­¢åŒä¸€äº§å“出现两个"会对åŒä¸€ç¬”订å•åŒæ—¶ç”Ÿæ•ˆ"的早鸟**——å³ä¸¤ä¸ªè®¡åˆ’都å¯ç”¨ã€ä¸”**生效日期窗é‡å ã€ä¸”人数区间é‡å **æ—¶æ‹’ç»ã€‚ +2. **触å‘å…¥å£**:新建(create)ã€ç¼–辑(update,本计划处å¯ç”¨æ€æ—¶)ã€å¯ç”¨(toggle å¯ç”¨)ä¸‰å¤„ã€‚å‘½ä¸­å†²çªæ—¶**ä¿å­˜/å¯ç”¨å¤±è´¥**,返回业务ç : + - order-v2(线上购买/报价端):**`code=585010`**「产å“(ID=X)已存在生效时间与人数区间é‡å çš„æ—©é¸Ÿè®¡åˆ’(planId=Y),ä¸èƒ½é‡å¤åˆ›å»ºæˆ–å¯ç”¨ã€ + - order-v3:**`code=581610`**(åŒä¹‰æ¶ˆæ¯) +3. **å‰ç«¯éœ€ç•™æ„**:早鸟计划é…置页ä¿å­˜/å¯ç”¨**ä¸å†æ’æˆåŠŸ**,命中冲çªä¼šè¿”上é¢çš„业务ç (HTTP ä» 200,`success=false`)。请按 `success===true` 判定æˆåŠŸ,失败时把åŽç«¯ `message` 直接 toast 出æ¥(消æ¯å·²æ˜¯å¯è¯»ä¸­æ–‡,无需å‰ç«¯æ‹¼æ–‡æ¡ˆ)。 +4. **ä¸ç®—冲çªã€ç…§æ—§æ”¾è¿‡çš„æƒ…况**:â‘  人数区间ä¸é‡å (如满1-4 与 满5-9,这就是阶梯);â‘¡ 生效日期窗ä¸é‡å (ä¸åŒæ¡£æœŸ);â‘¢ 对方计划已ç¦ç”¨;â‘£ 编辑时与自己ä¸ç®—冲çªã€‚ + +## 1. å„场景行为对照 + +| 场景(åŒä¸€äº§å“) | æ—§ | æ–° | +|---|---|---| +| 新建早鸟,产å“已有å¯ç”¨ä¸”日期+人数都é‡å çš„计划 | å…许,è¿è¡Œæ—¶è¢«åŠ¨æŒ‰ priority 选一个(有按错价风险) | **æ‹’ç»**,è¿” 585010/581610 | +| 新建早鸟,人数区间ä¸é‡å (阶梯档) | å…许 | å…许(阶梯能力ä¿ç•™) | +| 新建早鸟,日期窗ä¸é‡å (ä¸åŒæ¡£æœŸ) | å…许 | å…许 | +| 编辑/å¯ç”¨è®¡åˆ’致与他计划"åŒè®¢å•åŒæ—¶ç”Ÿæ•ˆ" | å…许 | **æ‹’ç»** | +| ç¦ç”¨è®¡åˆ’ | å…许 | å…许(䏿 ¡éªŒ,ç¦ç”¨åªä¼šå‡å°‘生效计划) | + +## 2. 端到端实测记录(测试æœ,网关 9443 真 admin token) + +```text +TEST1 冲çª:äº§å“ 2056938821550747650 已有å¯ç”¨è®¡åˆ’(min1+/2026-05-01~06-30) + POST /admin/order/early-bird {minPeople:2,maxPeople:10,startDate:2026-06-01,endDate:2026-06-15,productIds:[...]} + → code=585010 success=false ✅ æŒ‰é¢„æœŸæ‹’ç» +TEST2 阶梯:äº§å“ 2047268852147875842 已有å¯ç”¨è®¡åˆ’(min6+) + POST /admin/order/early-bird {minPeople:1,maxPeople:5,startDate:2026-07-01,endDate:2026-07-31,productIds:[...]} + → code=200 success=true ✅ 人数ä¸é‡å çš„阶梯档照旧放过(实测åŽå·²åˆ é™¤ä¸´æ—¶æ•°æ®) +``` + +## 3. åŽç«¯å†…éƒ¨å˜æ›´(备查) + +1. `EarlyBirdPlanService`(v2/v3)新增 `validateNoActiveConflict`,在 create/update/toggle ä¸‰å…¥å£æŽ¥çº¿ã€‚å†²çªåˆ¤å®š = åŒäº§å“(排除自身)çš„å¦ä¸€å¯ç”¨è®¡åˆ’,日期窗é‡å  且 人数区间é‡å (minPeople 空按 1ã€maxPeople 空按无上é™)。 +2. `EarlyBirdPlanMapper`(v2/v3)新增 `selectEnabledByIds`(LambdaQueryWrapperX)。 +3. 新错误ç :v2 `OrderEarlyBirdErrorCode.PRODUCT_HAS_CONFLICTING_PLAN=585010`ã€v3 `EarlyBirdErrorCode.PRODUCT_HAS_CONFLICTING_PLAN=581610`。 +4. 未动数æ®åº“/匹é…算法(`doFindBestMatch`)/网关路由;纯é…置端 Java 校验。