3.6 KiB
3.6 KiB
小程序首页第二屏 - 主题卡片去掉"链接类型"字段
- 日期: 2026-04-18
- PR: #829 (Closes #828)
- 类型: 契约变更(减字段)
- 状态: 已合并到 dev + 测试环境部署中
本次改动紧随同日的 #823 首页第二屏 v2。v2 设计的"卡片链接跳转"能力产品决定取消,卡片回归纯展示。
受影响接口
管理端
PUT /admin/home-config/brand-story(保存品牌故事)GET /admin/home-config/brand-story(查询品牌故事)
小程序端
GET /mp/home-config/screen2(首页第二屏聚合)
删除字段(每张卡片 cards[i])
| 字段 | 类型 | 原含义 |
|---|---|---|
linkType |
String | 链接类型(NONE/PRODUCT/PRODUCT_LINE/ARTICLE/URL/MINI_PAGE) |
linkTarget |
String | 链接目标(产品/产品线 ID / URL / 小程序页面路径) |
linkTargetType |
String | 响应回填的产品类型(CORE/GROUP) |
保留字段(每张卡片 cards[i])
| 字段 | 类型 | 说明 |
|---|---|---|
title |
String | 卡片标题(必填,≤100 字符) |
subtitle |
String | 卡片副标题(可选,≤200 字符) |
coverUrl |
String | 封面图 URL(必填,https CDN 直链,≤500 字符) |
请求示例(PUT /admin/home-config/brand-story)
{
"title": "每一条线路,我们都亲自走过。",
"subtitle": null,
"description": "整个呼伦贝尔...",
"coverUrl": "https://cdn.hulalv.com/home/brand.jpg",
"cards": [
{
"title": "季节之旅",
"subtitle": "夏·秋·冬三季体验",
"coverUrl": "https://cdn.hulalv.com/cards/1.jpg"
},
{
"title": "亲子研学",
"subtitle": "边玩边学·深度体验",
"coverUrl": "https://cdn.hulalv.com/cards/2.jpg"
}
],
"publish": true
}
响应示例(GET /mp/home-config/screen2)
{
"code": 200,
"data": {
"brandStory": {
"title": "每一条线路,我们都亲自走过。",
"description": "...",
"coverUrl": "https://cdn.hulalv.com/home/brand.jpg"
},
"cards": [
{
"title": "季节之旅",
"subtitle": "夏·秋·冬三季体验",
"coverUrl": "https://cdn.hulalv.com/cards/1.jpg"
}
]
}
}
前端 Action
管理端(必改)
- 移除卡片编辑区底部"链接类型 *"下拉框组件
- 移除卡片编辑区"链接目标"相关组件(如产品选择器 / URL 输入框 / 小程序页面选择)
- 请求体中
cards[i]不再传linkType/linkTarget
小程序端(必改)
- 主题卡片点击事件去除(卡片不再支持跳转)
- 如果之前读了
cards[i].linkType/.linkTarget/.linkTargetType的逻辑,一并删除
向后兼容说明
- DB 存量数据中的 JSON 字段
linkType/linkTarget/linkTargetType不删,反序列化时被后端@JsonIgnoreProperties(ignoreUnknown=true)安全忽略 - 前端如果旧请求仍传了这三个字段,后端也会被
@JsonIgnoreProperties(ignoreUnknown=true)忽略(不会 400) - 但不推荐继续传,清理前端代码更彻底
校验规则变化
| 字段 | 变化 |
|---|---|
cards[i].linkType |
原 @NotBlank + @Pattern(NONE/PRODUCT/PRODUCT_LINE/ARTICLE/URL/MINI_PAGE) → 字段删除 |
cards[i].linkTarget |
原 @Length(max=500) → 字段删除 |
cards 数组 |
保留 @Size(max=2) |
回归验证
部署后调 GET /mp/home-config/screen2,确认 data.cards[i] 只包含 title / subtitle / coverUrl 即可。