hl-api-changelog/changelogs/2026-03/2026-03-19_remove_calendar_reserved_status.md
API Changelog Bot 45ea2a0c1b fix: resourceDetail 为 null 的 BUG 修复 + SERVICE 资源类型支持
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-19 15:25:41 +08:00

89 行
3.3 KiB
Markdown

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# 价格日历状态去除「已预留」+ 定制产品详情接口强类型化
> 日期: 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}` — 小蒙马详情