# /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"] ```