父节点
720c1cce5f
当前提交
655e6b05a1
@ -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 跨服务统计生效。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户