From 72b51663f42d34d0601629de10edc26d33b389b0 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 20 Apr 2026 17:31:35 +0800 Subject: [PATCH] =?UTF-8?q?C:/Program=20Files/Git/mp/banner/active=20?= =?UTF-8?q?=E9=A1=B6=E5=B1=82=E6=96=B0=E5=A2=9E=20seasons=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=88PR=20#1003=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4-20_mp-banner-active-top-level-seasons.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 changelogs/2026-04/2026-04-20_mp-banner-active-top-level-seasons.md diff --git a/changelogs/2026-04/2026-04-20_mp-banner-active-top-level-seasons.md b/changelogs/2026-04/2026-04-20_mp-banner-active-top-level-seasons.md new file mode 100644 index 0000000..439f09b --- /dev/null +++ b/changelogs/2026-04/2026-04-20_mp-banner-active-top-level-seasons.md @@ -0,0 +1,43 @@ +# /mp/banner/active 响应顶层新增 seasons 字段 + +**日期**: 2026-04-20 +**PR**: #1003 +**服务**: hl-user-service + +## 改动 +`BannerVO` 顶层新增 `seasons: List`: +- banner 绑定产品(linkType=PRODUCT)→ 继承 `product.seasons` +- banner 绑定产品线(linkType=PRODUCT_LINE)→ 继承 `product_line.seasons` +- 其他绑定类型(URL/PAGE/NONE/...)或目标被删 → `seasons=null` + +## 响应示例 +```json +{ + "id": "...", + "title": "2026 草原夏令营", + "linkType": "PRODUCT", + "linkId": "2044306857534636034", + "seasons": ["summer", "winter"], // 新增:顶层 + "linkTarget": { + "type": "PRODUCT", + "name": "...", + "seasons": ["summer", "winter"] // 原已存在:嵌套 + } +} +``` + +## 前端建议 +- **推荐**:直接读 `banner.seasons`(顶层),便于按季节筛选 +- 如需更多目标信息(name/coverImageUrl)继续从 `banner.linkTarget` 取 + +## 存量数据 +**纯运行时继承**,不存 DB。banner 表无 seasons 列。每次请求根据 linkType/linkId 即时从产品/产品线 seasons 回填。 + +## 缓存 +Redis `banner:active:list:v3`(TTL 5 分钟)。之前版本 `v2` 被 bump 抛弃,确保旧 VO 结构不回吐。管理端新增/修改/删除 banner 时异步清缓存。 + +## 验证(测试环境) +``` +banner 1: linkType=PRODUCT seasons=["summer","winter"] +banner 2: linkType=PRODUCT_LINE seasons=["summer"] +```