1.4 KiB
1.4 KiB
/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
响应示例
{
"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"]