111 行
3.6 KiB
Markdown
111 行
3.6 KiB
Markdown
# 小程序首页第二屏 - 主题卡片去掉"链接类型"字段
|
||
|
||
- **日期**: 2026-04-18
|
||
- **PR**: [#829](https://git.1814.love:8443/wx/HL/pulls/829) (Closes #828)
|
||
- **类型**: 契约变更(减字段)
|
||
- **状态**: 已合并到 dev + 测试环境部署中
|
||
|
||
> 本次改动紧随同日的 [#823 首页第二屏 v2](./2026-04-18_home-screen2-v2.md)。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)
|
||
|
||
```json
|
||
{
|
||
"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)
|
||
|
||
```json
|
||
{
|
||
"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
|
||
|
||
### 管理端(必改)
|
||
1. 移除卡片编辑区底部"链接类型 *"下拉框组件
|
||
2. 移除卡片编辑区"链接目标"相关组件(如产品选择器 / URL 输入框 / 小程序页面选择)
|
||
3. 请求体中 `cards[i]` 不再传 `linkType` / `linkTarget`
|
||
|
||
### 小程序端(必改)
|
||
1. 主题卡片点击事件去除(卡片不再支持跳转)
|
||
2. 如果之前读了 `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 即可。
|