# 线路概览展示所需字段汇总 - **日期**: 2026-04-16 - **服务**: hl-product-service-v2 - **类型**: 前端适配说明 ## 原型展示 ``` 线 路 概 览 草原环线体验 ← routeName 海拉尔起止·全程约1200公里·日均不超300公里 ← 前端拼接 ``` ## 数据来源 | 展示内容 | 数据来源 | 接口字段 | |---------|---------|---------| | "草原环线体验" | 路线名称 | `routeName` (产品级) | | "海拉尔起止" | 首天集合地 + 末天解散地 | `itinerary[0].gatherPlace.name` + `itinerary[last].dismissalPlace.name` | | "全程约1200公里" | 总里程 | `totalMileage` (产品级) | | "日均不超300公里" | 每日里程最大值 | `max(itinerary[].dailyMileage)` | ### 每日行程展示 ``` DAY 2 海拉尔 → 呼籁营地 → 莫日格勒河 → 额尔古纳 290km · 约3.5小时 ``` | 展示内容 | 数据来源 | 接口字段 | |---------|---------|---------| | 途经路线 | 自动生成 | `itinerary[].routePoints[].name` 用 " → " 连接 | | "290km" | 当日里程 | `itinerary[].dailyMileage` | | "约3.5小时" | 当日驾车时长 | `itinerary[].dailyDuration`(分钟,前端格式化) | | 集合地 | 当日 | `itinerary[].gatherPlace` (JSON: {name,adcode,center,level}) | | 解散地 | 当日 | `itinerary[].dismissalPlace` (JSON: {name,adcode,center,level}) | ### 时长格式化建议 `dailyDuration` 是分钟数,前端格式化示例: - 151分钟 → "约2.5小时" - 276分钟 → "约4.5小时" - 30分钟以下 → "约30分钟" --- ## 行程保障展示 原型中「行程保障」区块(无忧退改、5人专属团队、24小时客服等)的数据来源: | 接口 | 字段 | 说明 | |------|------|------| | `GET /mp/product/{id}` | `guaranteeItems` | 行程保障项数组,自动解析模板 | `guaranteeItems` 结构: ```json [ {"icon": "shield", "title": "无忧退改", "description": "出发前7天无条件全额退款..."}, {"icon": "users", "title": "5人专属服务团队", "description": "定制师、房务管家..."}, {"icon": "clock", "title": "24小时客服响应", "description": "行前、行中、行后..."}, {"icon": "badge", "title": "旅行社责任险100万", "description": "正规旅行社资质..."}, {"icon": "car", "title": "全程纯玩无购物", "description": "无强制消费..."} ] ``` ### 前端操作流程 1. **管理端 Step5 补充信息**:选择行程保障模板(`guaranteeTemplateId`) 2. **小程序端**:从 `guaranteeItems` 直接渲染列表 ### 模板管理 - 菜单:产品管理 → 行程保障 - CRUD接口:`/admin/travel-guarantee-template/**`(详见Knife4j「产品服务-模板管理」分组) ⚠️ 如果 `guaranteeItems` 为null,说明产品还没关联模板,需要在Step5中设置。 ## 注意 - `gatherPlace`/`dismissalPlace` 需要重新保存行程(Step2)才有值 - `dailyMileage`/`dailyDuration` 保存行程时自动计算 - 所有数据在管理端详情和小程序端详情中均返回