父节点
d65c6b1afd
当前提交
8262aa7385
@ -0,0 +1,37 @@
|
||||
# 早鸟优惠文案: 产品详情阶梯 + 订单详情早鸟行体现「适用人群」
|
||||
|
||||
> **服务**: hl-order-service-v2 (8084) / hl-product-service-v2 (8083)
|
||||
> **PR**: #3187
|
||||
> **Issue**: #3182(承接 #3166 早鸟每方案可配适用人群)
|
||||
> **日期**: 2026-05-28
|
||||
> **影响范围**: 小程序「产品详情」早鸟阶梯 + 「订单详情」早鸟折扣行文案
|
||||
> **测试服验证**: 已过(api.test.1814.love:9443)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 关键变化
|
||||
|
||||
早鸟优惠每方案可配「适用人群」(#3166)后,C 端两处文案补上适用人群,避免"每人立减100元"但幼童实际不享受的歧义。沿用既有约定:**后端拼好中文文案,前端直接展示**。
|
||||
|
||||
### 1. 产品详情早鸟阶梯(`MpProductDetailRespVO.earlyBirdLadder` 的每项)新增 2 字段
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| applicableTravelerTypes | `string[]` | 适用人群编码(如 `["ADULT","CHILD","YOUNG_CHILD"]`),后端保证非空(默认成人+儿童+小童,排除幼童)|
|
||||
| applicableTravelerTypesText | `string` | 适用人群中文文案(如 `成人/儿童/小童`),可直接展示 |
|
||||
|
||||
阶梯项现有 `peopleRangeText`("3-5 人")/`discountText`("每人立减 100 元")不变,前端在其旁展示 `applicableTravelerTypesText` 即可。
|
||||
|
||||
### 2. 订单详情早鸟折扣行
|
||||
|
||||
早鸟折扣行 `description`(=`order_discount.discount_name`)在创建订单时拼上适用人群后缀:`早鸟优惠:春季早鸟9折(适用人群:成人/儿童/小童)`。**仅新订单生效,老订单不变。** 同一文案也回显在 `earlyBirdPlanName` 字段(该字段原本就等于 discountName、含"早鸟优惠:"前缀,既有行为)。前端订单详情早鸟行直接展示 description,无需改动。
|
||||
|
||||
---
|
||||
|
||||
## 前端改动建议(mmg)
|
||||
|
||||
1. **产品详情早鸟阶梯**:每个阶梯项展示 `applicableTravelerTypesText`(如在 discountText 旁加"(适用人群:成人/儿童/小童)"或单独标签)。
|
||||
2. **订单详情早鸟行**:description 已自带适用人群后缀,通常无需改;若之前对 discountName 做过裁剪/正则,注意新后缀。
|
||||
|
||||
## 测试服验证(已过)
|
||||
建早鸟方案(适用人群=成人/儿童,挂某产品)→ `GET /mp/product/{id}` 的 `earlyBirdLadder` 返 `applicableTravelerTypesText=成人/儿童`、`discountText=每人立减 50 元`。订单详情后缀由后端创建时落库(单测覆盖,新订单生效)。
|
||||
@ -0,0 +1,51 @@
|
||||
# 首页第二屏主题卡片: 跳转类型新增「产品主题」(linkTargetId=产品线id)
|
||||
|
||||
> **服务**: hl-user-service (8081)
|
||||
> **PR**: #3185
|
||||
> **Issue**: #3181
|
||||
> **日期**: 2026-05-28
|
||||
> **影响范围**: admin「小程序配置 → 首页配置 → 首页第二屏」主题卡片编辑 + 小程序首页第二屏卡片跳转
|
||||
> **测试服验证**: 已过(api.test.1814.love:9443 + 真 admin token)
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 关键变化
|
||||
|
||||
主题卡片「跳转类型」(字典 `theme_card_link_type`)新增一项 **「产品主题」= `PRODUCT_LINE`**。选它时卡片 `linkTargetId` 保存为**产品线 id(lineId,产品线=主题)**,点卡片跳产品线详情。
|
||||
|
||||
字典现有全部取值:
|
||||
|
||||
| dictValue | dictLabel | linkTargetId 含义 |
|
||||
|-----------|-----------|-------------------|
|
||||
| SEASON | 季节之旅 | 无 |
|
||||
| CORE_LIST | 核心产品 | 无 |
|
||||
| MENGMA | 亲子游学 | 无 |
|
||||
| PRODUCT | 指定产品 | 产品 id(需配 linkTargetType=CORE/GROUP)|
|
||||
| **PRODUCT_LINE** | **产品主题** | **产品线 id(lineId)** |
|
||||
|
||||
---
|
||||
|
||||
## 一、admin 端前端改动(mmg)
|
||||
|
||||
1. 主题卡片「跳转类型」下拉新增「产品主题」选项(字典 `theme_card_link_type` 已加 PRODUCT_LINE,前端读字典即有)。
|
||||
2. 选「产品主题」后,弹「产品线选择器」:调 **`GET /admin/product/line/simple-list`**(已存在,返回 `[{lineId, name}]`)填充,用户选产品线后把 `lineId` 写入卡片 `linkTargetId`。
|
||||
3. **不要传 `linkTargetType`**(产品线无 CORE/GROUP 之分,后端会强制置 null);PRODUCT 类型才需 linkTargetType。
|
||||
4. 保存接口不变:`PUT /admin/home-config/brand-story`,卡片体 `{title, subtitle, coverUrl, linkType:"PRODUCT_LINE", linkTargetId:<lineId>}`。
|
||||
5. 校验:linkTargetId 必填且须为存在且 ACTIVE 的产品线,否则后端返错误码 `220810`(目标产品线不存在或已删除)/`220811`(校验失败)。
|
||||
|
||||
## 二、小程序端前端改动(mmg)
|
||||
|
||||
首页第二屏卡片点击跳转:`linkType=PRODUCT_LINE` 时,后端 `linkUrl` 恒为 null,前端按 `linkTargetId`(=lineId)跳**产品线详情页**(同 PRODUCT 类型由前端按 id 自拼路由的现有约定)。
|
||||
|
||||
## 三、接口(无破坏,均已上线)
|
||||
|
||||
| 接口 | 方法 | 路径 | 变化 |
|
||||
|------|------|------|------|
|
||||
| 保存品牌故事 | PUT | `/admin/home-config/brand-story` | 卡片 linkType 接受 PRODUCT_LINE;PRODUCT_LINE 时 linkTargetId=产品线id,linkTargetType 强制 null |
|
||||
| 品牌故事详情 | GET | `/admin/home-config/brand-story` | 卡片回显 linkType/linkTargetId(PRODUCT_LINE 时 linkTargetId=lineId)|
|
||||
| mp 首页第二屏 | GET | `/mp/home-config/screen2` | PRODUCT_LINE 卡片 linkUrl=null,前端按 linkTargetId 拼产品线详情 |
|
||||
| 产品线下拉 | GET | `/admin/product/line/simple-list` | (已存在)admin 选产品线用 |
|
||||
|
||||
## 四、测试服验证(已过)
|
||||
- 字典 `theme_card_link_type` 已含 `PRODUCT_LINE「产品主题」`。
|
||||
- admin 存草稿:linkType=PRODUCT_LINE + 非法产品线 id → `220810` 拒绝(合法 ACTIVE 产品线才通过,linkTargetType 被规范化为 null)。
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户