From 655e6b05a1039124aeecd8e22df55de5d9796a0d Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Thu, 28 May 2026 11:11:56 +0800 Subject: [PATCH] =?UTF-8?q?docs(v3):=20=E6=96=B0=E5=BB=BA=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E9=80=89=E4=B8=BB=E9=A2=98=E6=8E=A5=E5=8F=A3=E6=8E=A5?= =?UTF-8?q?=E9=80=9A(PR=20#3155=20/=20#3142)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...®¢å•选主题接å£-下å•é€‰å“æŽ¥é€šçœŸå®žæŽ¥å£_PR3155.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 changelogs-v2/2026-05/28_3142_新建订å•选主题接å£-下å•é€‰å“æŽ¥é€šçœŸå®žæŽ¥å£_PR3155.md diff --git a/changelogs-v2/2026-05/28_3142_新建订å•选主题接å£-下å•é€‰å“æŽ¥é€šçœŸå®žæŽ¥å£_PR3155.md b/changelogs-v2/2026-05/28_3142_新建订å•选主题接å£-下å•é€‰å“æŽ¥é€šçœŸå®žæŽ¥å£_PR3155.md new file mode 100644 index 0000000..406661d --- /dev/null +++ b/changelogs-v2/2026-05/28_3142_新建订å•选主题接å£-下å•é€‰å“æŽ¥é€šçœŸå®žæŽ¥å£_PR3155.md @@ -0,0 +1,70 @@ +# 二期 v3:新建订å•å‘导「选主题/选产å“ã€æŽ¥é€šçœŸå®žæŽ¥å£ï¼ˆæ›¿æ¢ mockProducts.js) + +> **æœåŠ¡**: hl-product-service-v2(+ hl-order-service-v3 内部统计) +> **PR**: #3155 +> **Issue**: #3142 +> **日期**: 2026-05-28 +> **å½±å“**: 🟡 新建订å•页 `order-v2/new` 第 1 步「选主题ã€å¯æ”¹ç”¨çœŸæŽ¥å£ï¼›ç¬¬ 2 步「选产å“ã€ç”¨å·²æœ‰æŽ¥å£ï¼›åœ°åŒºç­›é€‰åˆ é™¤ + +--- + +## âš ï¸ å…³é”®å˜åŒ–(å‰ç«¯ mmg 必读) + +`order-v2/new` 第 1ã€2 步当å‰ç”¨ `src/views/order-v2/new/_shared/mockProducts.js` å†™æ­»å‡æ•°æ®ã€‚çŽ°å¯æ›¿æ¢ä¸ºçœŸå®žæŽ¥å£ã€‚ + +### 1. 第 1 步「选主题ã€â€” æ–°å¢žæŽ¥å£ + +``` +GET /admin/product/line/order-picker +``` +- æ—  query 傿•°ï¼Œ**ä¸åˆ†é¡µ**,按排åºå·å‡åºè¿”回 +- 仅返回「**å¯ç”¨(ACTIVE) + 在售(该产å“线下挂≥1个已上架产å“)**ã€çš„主题 +- **æ•°æ®æƒé™**:和产å“管ç†ä¸€è‡´â€”â€”è¶…ç®¡çœ‹å…¨éƒ¨ã€æ ¸å¿ƒ(CORE)/å°è’™é©¬(GROUP)主题全员å¯è§ã€ç§äººå®šåˆ¶(CUSTOM)仅创建人本人å¯è§ã€‚**地区(region)筛选ä¸éœ€è¦,产å“线无此字段,请删掉那排 chips。** + +返回结构: +```jsonc +{ + "code": 200, + "data": [ + { + "lineId": 2056937785918369794, // 主题ID(雪花,å‰ç«¯æŒ‰å­—符串é€ä¼ ) + "name": "测试核心产å“", // 主题å + "description": "...", // æè¿°(原 mock çš„ desc/tagline 都用它) + "coverImageUrl": "https://...", // 真实å°é¢å›¾(替代 mock çš„ emoji cover + coverColor) + "productType": "CORE", // CORE=核心 / GROUP=å°è’™é©¬ + "skuCount": 6, // 该主题下已上架产å“çš„æ¡£ä½æ€»æ•°(原 mock çš„ skuCount) + "fromPrice": 3105.00, // èµ·ä»·/人(å·²ä¸Šæž¶äº§å“æœ€ä½Žæˆäººèµ·ä»·;未设价为 null,请显示 Â¥-- 或ç°) + "hot": true // 热门标识 = 该主题近90天下å•é‡è¾ƒå¤š(å‰30%且>0) + } + ] +} +``` + +字段映射建议(mock → 真接å£ï¼‰ï¼š +- `id` → `lineId`(字符串é€ä¼ ï¼Œå‹¿ Number()) +- `cover`/`coverColor`(emoji 装饰)→ 改用 `coverImageUrl` 真实图;如ä»è¦è‰²å—å¯å‰ç«¯æŒ‰ lineId å–色 +- `region`/`regionKey` → **删除**(无åŽç«¯å­—段,地区 chips 去掉) +- `tagline` → å¹¶å…¥ `description` 或çœç•¥ +- `skuCount` / `fromPrice` / `hot` → åŒåç›´å– +- 顶部统计「在售主题数ã€= 列表长度;「SKU总数ã€= Σ`skuCount`;「最低人å‡ã€= min(`fromPrice`) + +### 2. 第 2 步「选产å“ã€â€” 用已有接å£ï¼ˆæ— æ–°å¢žï¼‰ + +``` +GET /admin/product/item/list?lineId={lineId}&status=PUBLISHED +``` +- 选定主题åŽä¼ å…¶ `lineId`,åªå–已上架产å“;返回 `ProductListRespVO` 分页 +- å·²å«é€‰å“所需全部字段:`productId` / `name` / `subtitle` / `tripDays` / `tripNights` / `tags` / `coverImageUrl` / `startPrice` / `tierPrices[]` +- `tierPrices[]` æ¯é¡¹å« `tierSeq` / `tierName` / `tierDescription` / `startPrice` —— ä¸‹å•æäº¤éœ€è¦çš„ `tierSeq` ä»Žè¿™é‡Œå– +- æ•°æ®æƒé™åŒä¸Šï¼ˆå¸¦ @DataScope) + +mock 里æ¯å¼ ã€ŒSKU å¡ã€= 一个产å“的一个档ä½ï¼›çœŸå®žæ˜¯ä¸€ä¸ªäº§å“(`productId`)å«å¤šä¸ªæ¡£ä½(`tierPrices`)。å‰ç«¯å¯æŒ‰äº§å“å¡ + æ¡£ä½é€‰æ‹©ï¼Œæˆ–按产å“×档ä½å¹³é“ºï¼Œæäº¤æ—¶å¸¦ `productId + tierSeq`。 +(mock çš„ `depDates` å‘团日期文案无å•一对应字段,å¯çœç•¥æˆ–åŽç»­èµ°ç­æœŸæŽ¥å£ã€‚) + +### 3. æäº¤ï¼ˆä¸å˜ï¼‰ +`POST /v3/admin/order`ï¼Œå…¥å‚ `productId` + `tierSeq` 等,已就绪。 + +--- + +## éªŒè¯ +æµ‹è¯•æœ `web.test.1814.love:9443` 真 admin token 实测:order-picker è¿” 9 个在售主题(库内 ACTIVE 29 → 在售 9 精确å»åˆ),字段é½å…¨ï¼Œhot è·¨æœåŠ¡ç»Ÿè®¡ç”Ÿæ•ˆã€‚