89 行
3.3 KiB
Markdown
89 行
3.3 KiB
Markdown
# 价格日历状态去除「已预留」+ 定制产品详情接口强类型化
|
||
|
||
> 日期: 2026-03-19 | 服务: hl-product-service, hl-mp-service
|
||
|
||
---
|
||
|
||
## 一、变更说明
|
||
|
||
### 1. 价格日历状态字典变更
|
||
|
||
`calendar_status` 字典删除 `RESERVED`(已预留)状态,无实际业务场景。
|
||
|
||
**变更前(4个状态)**:
|
||
| dict_value | dict_label |
|
||
|------------|-----------|
|
||
| AVAILABLE | 可售 |
|
||
| SOLD_OUT | 已售罄 |
|
||
| CLOSED | 已关闭 |
|
||
| ~~RESERVED~~ | ~~已预留~~ |
|
||
|
||
**变更后(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` 正常返回,包含以下字段:
|
||
```json
|
||
{
|
||
"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}` — 小蒙马详情
|