3.3 KiB
价格日历状态去除「已预留」+ 定制产品详情接口强类型化
日期: 2026-03-19 | 服务: hl-product-service, hl-mp-service
一、变更说明
1. 价格日历状态字典变更
calendar_status 字典删除 RESERVED(已预留)状态,无实际业务场景。
变更前(4个状态):
| dict_value | dict_label |
|---|---|
| AVAILABLE | 可售 |
| SOLD_OUT | 已售罄 |
| CLOSED | 已关闭 |
变更后(3个状态):
| dict_value | dict_label |
|---|---|
| AVAILABLE | 可售 |
| SOLD_OUT | 已售罄 |
| CLOSED | 已关闭 |
前端需处理:价格日历编辑弹窗中「状态」下拉选项去除「已预留」。
2. C端定制产品详情接口强类型化
GET /hl-mp-service/mp/custom/product/{productId} 查询已完成的定制产品详情
变更前:data 字段为 Map<String, Object>(Knife4j 显示 object,无字段结构)
变更后:data 字段为强类型 MpCustomProductDetailVO,与核心产品详情返回相同的完整结构,包含:
- 行程天列表
itineraryDays→ 行程节点nodes→ 资源详情resourceDetail(含cover封面图、images轮播图、address地址等) - 每日酒店
hotels(含coverUrl、房型名称、家庭分配) - 每日用餐
restaurants(含coverUrl、餐次、价格) - 定价配置
pricing(完整定价模式、支付方式等) - 成本项
costItems、自定义费用customFees、物资suppliesList - 人员配置
staffConfigs、家庭分组families - 权益说明
benefitsDescription
前端无需改代码,返回数据结构不变,仅 Knife4j 文档从 object 变为完整字段定义,方便查阅。
3. 修复:resourceDetail 字段始终为 null 的 BUG
影响范围:所有产品类型(核心产品、小蒙马、定制产品)的详情接口
问题:行程节点中的 resourceDetail 字段(包含资源封面图、轮播图、地址、经纬度等)始终返回 null,原因是数据库存储的 resourceType 为小写(scenic、activity、restaurant、service),但代码匹配时使用大写(SCENIC、HOTEL),导致无法匹配到资源 ID。
修复后:resourceDetail 正常返回,包含以下字段:
{
"resourceDetail": {
"resourceId": "资源ID",
"resourceType": "SCENIC/ACTIVITY/HOTEL/RESTAURANT/SERVICE",
"name": "资源名称",
"subtitle": "副标题",
"cover": "封面图URL",
"images": ["轮播图URL列表"],
"address": "地址",
"longitude": "经度",
"latitude": "纬度",
"city": "城市",
"tags": ["标签列表"]
}
}
前端需处理:之前如果因为 resourceDetail 为 null 做了兼容处理(如显示占位图),现在可以直接使用真实数据。
4. 新增:SERVICE(服务项)资源类型支持
批量资源详情查询接口新增对 SERVICE 类型资源的支持。行程中包含服务项(如接机、送机)时,resourceDetail 也会返回完整信息(封面图、地址等)。
影响接口:
GET /mp/custom/product/{productId}— 定制产品详情GET /mp/product/{productId}— 核心产品详情GET /mp/product/group-tour/{productId}— 小蒙马详情