C:/Program Files/Git/mp/banner/active 顶层新增 seasons 字段(PR #1003)

这个提交包含在:
API Changelog Bot 2026-04-20 17:31:35 +08:00
父节点 ddd7a53dbb
当前提交 72b51663f4

查看文件

@ -0,0 +1,43 @@
# /mp/banner/active 响应顶层新增 seasons 字段
**日期**: 2026-04-20
**PR**: #1003
**服务**: hl-user-service
## 改动
`BannerVO` 顶层新增 `seasons: List<String>`
- 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"]
```