3.2 KiB
3.2 KiB
产品详情页自定义区块(GROUP产品专用)
- 日期: 2026-04-15
- 服务: hl-product-service-v2
- PR: #584
- 类型: feat (新功能)
概述
GROUP(小蒙马)产品的小程序详情页支持后台自定义设计,不再使用自动生成的页面。通过独立接口保存/读取一个大JSON,存储页面区块配置。
新增接口
1. 获取详情页区块
GET /admin/product/item/{productId}/detail-blocks
响应示例(未设置时data为null):
{
"code": 200,
"data": [
{
"id": "block_1",
"type": "hero",
"visible": true,
"data": {
"backgroundImage": "",
"brandTitle": "小 蒙 马 · XIAOMENGMA",
"mainTitle": "趁童年尚好\n陪孩子去草原撒个欢",
"subtitle": "呼伦贝尔 · 6天5夜亲子游学",
"videoUrl": "https://xxx.mp4",
"videoDuration": ""
},
"style": {
"height": 440,
"overlayGradient": ["#00000005", "#000000BB"]
}
},
{
"id": "block_2",
"type": "experiences",
"visible": true,
"data": {
"icon": "baby",
"title": "这些事,值得带孩子来一趟",
"subtitle": "听风、画云、策马、寻迹,每一程都是成长",
"items": [
{
"id": "item_1",
"image": "",
"icon": "music",
"title": "听 · 草原专属之声",
"description": "围坐草原,聆听马头琴与长调"
}
]
},
"style": {
"background": "#FFF7ED",
"padding": [32, 20],
"gap": 16
}
}
]
}
2. 保存详情页区块
PUT /admin/product/item/{productId}/detail-blocks
Content-Type: application/json
请求体:
{
"detailBlocks": [
{
"id": "block_xxx",
"type": "hero|experiences|faq|yearReview|leaderIntro|photographer|safety",
"visible": true,
"data": { ... },
"style": { ... }
}
]
}
响应:
{
"code": 200,
"message": "详情页区块保存成功"
}
已有接口变更
管理端产品详情
GET /admin/product/item/{productId}
响应新增字段:
| 字段 | 类型 | 说明 |
|---|---|---|
detailBlocks |
Array/null | 小程序详情页自定义区块JSON,仅GROUP产品使用 |
小程序端产品详情
GET /mp/product/{productId}
响应新增字段:
| 字段 | 类型 | 说明 |
|---|---|---|
detailBlocks |
Array/null | GROUP产品返回自定义区块数组,CORE产品为null |
区块类型说明
| type | 说明 |
|---|---|
hero |
首屏大图/视频区 |
experiences |
体验亮点列表 |
faq |
常见问答 |
yearReview |
年度回顾视频 |
leaderIntro |
领队介绍 |
photographer |
跟拍摄影师介绍 |
safety |
安全保障 |
区块结构由前端页面设计器定义,后端只负责整体存取,不校验内部结构。
注意事项
- 保存接口为整体覆盖,每次传完整的区块数组
visible字段控制区块是否在小程序端展示- 仅GROUP产品使用此功能,CORE/CUSTOM产品该字段为null
- 数据库字段为
MEDIUMTEXT,支持大JSON存储