# 接口变更记录 — 2026-04-13 10:55

> **提交** `17b97d4d` · **作者** wx · **时间** 2026-04-13 10:55:21 +0800
>
> refactor(product-v2): 清理原型中不存在的旧字段

## 📦 其他数据对象变更

> 以下变更未直接关联到本次接口变更，但可能影响现有接口的请求/响应

### hl-product-service-v2

#### ✏️ MpProductDetailRespVO

  - ❌ ~~`creatorAvatarUrl`~~ (`String`) — 创建者头像
  - ❌ ~~`creatorIntro`~~ (`String`) — 创建者简介

#### ✏️ ProductBasicSaveReqVO

  - ❌ ~~`minGroupSize`~~ (`Integer`) — 最低成团人数（0=不限，小蒙马用）
  - ❌ ~~`minAdultPerOrder`~~ (`Integer`) — 每单最少成人数
  - ❌ ~~`maxAdultPerOrder`~~ (`Integer`) — 每单最多成人数
  - ❌ ~~`maxChildPerOrder`~~ (`Integer`) — 每单最多儿童数
  - ❌ ~~`showChatGroup`~~ (`Boolean`) — 展示群聊入口（true=显示加入群聊按钮）
  - ❌ ~~`showTripTime`~~ (`Boolean`) — 展示行程时间（true=行程天显示起止时间）
  - ❌ ~~`showTripDistance`~~ (`Boolean`) — 展示行程距离（true=行程天显示里程数）
  - ❌ ~~`creatorAvatarUrl`~~ (`String`) — 创建者头像URL（产品详情页展示的领队/设计师头像）
  - ❌ ~~`creatorIntro`~~ (`String`) — 创建者简介（≤512字）
  - ❌ ~~`customizerId`~~ (`Long`) — 定制师ID（私人定制产品关联的定制师）
  - ❌ ~~`customerName`~~ (`String`) — 客户姓名（私人定制的客户）
  - ❌ ~~`contactPhone`~~ (`String`) — 联系电话（加密存储）
  - ❌ ~~`departureDate`~~ (`LocalDate`) — 出发日期（私人定制的固定出发日期，格式yyyy-MM-dd）
  - ❌ ~~`mchId`~~ (`String`) — 商户ID（微信支付商户号，多商户时指定）
  - ❌ ~~`safetyItems`~~ (`List<Object>`) — 安全保障项（JSON数组 [{icon,title,description}]）
  - ❌ ~~`photographyItems`~~ (`List<Object>`) — 摄影跟拍项（JSON数组 [{name,description}]）
  - ❌ ~~`diningHighlights`~~ (`List<Object>`) — 餐饮亮点（JSON数组 [{name,description}]）
  - ✏️ `productId`: 说明 "产品ID（不传=创建新产品，传了=更新已有产品）" → "产品ID（不传=创建，传了=更新）"
  - ✏️ `productType`: 说明 "产品类型（创建时必传，更新时忽略。字典product_type: CORE=核心产品, GROUP=小蒙马跟团游, CUSTOM=私人定制）" → "产品类型（创建时必传，更新时忽略。CORE=核心产品, GROUP=小蒙马, CUSTOM=私人定制）"
  - ✏️ `subtitle`: 说明 "副标题（一句话卖点，≤128字）" → "副标题（≤128字）"
  - ✏️ `lineId`: 说明 "产品线ID（从产品线下拉接口获取，私人定制可空）" → "产品线ID（主题ID，CORE/GROUP必传，CUSTOM可空）"
  - ✏️ `tripDays`: 说明 "行程天数（≥1，晚数自动=天数-1）" → "行程天数（≥1）"
  - ✏️ `tripNights`: 说明 "行程晚数（通常=天数-1，不传自动计算）" → "行程晚数（不传自动=天数-1）"
  - ✏️ `tiers`: 说明 "档位列表（JSON数组，如标准/舒适/豪华3档）" → "规格列表（单一档不传或传1个，多档传多个）"
  - ✏️ `seasons`: 说明 "适用季节（字典product_season: spring=春, summer=夏, autumn=秋, winter=冬）" → "适用季节（spring/summer/autumn/winter）"
  - ✏️ `tags`: 说明 "产品标签（字典product_tag，多选）" → "产品标签（亲子/研学/露营/城记/摄影）"
  - ✏️ `infantAgeMax`: 说明 "幼童年龄上限（默认1岁，幼童≤此值免费或特价）" → "幼童年龄上限（默认1岁）"
  - ✏️ `toddlerAgeMax`: 说明 "小童年龄上限（默认3岁，幼童<小童<儿童）" → "小童年龄上限（默认3岁）"
  - ✏️ `childAgeMax`: 说明 "儿童年龄上限（默认12岁，超过按成人算）" → "儿童年龄上限（默认12岁）"
  - ✏️ `isBooking`: 说明 "是否预约产品（true=订金可不填出行人，false=正常下单）" → "是否预约产品（true=订金可不填出行人）"
  - ✏️ `paymentType`: 说明 "支付方式（字典payment_type: FULL=全款支付, DEPOSIT=订金+尾款）" → "支付方式（FULL=全款, DEPOSIT=订金+尾款）"
  - ✏️ `depositRatio`: 说明 "订金比例（%，支付方式=DEPOSIT时使用，与固定额二选一）" → "订金比例%（DEPOSIT时用，与固定额二选一）"
  - ✏️ `depositAmount`: 说明 "订金固定额（元，支付方式=DEPOSIT时使用，与比例二选一）" → "订金固定额（DEPOSIT时用，与比例二选一）"
  - ✏️ `balanceDueDays`: 说明 "尾款支付期限（天，出发前N天需付清尾款）" → "尾款期限（出发前N天付清）"
  - ✏️ `defaultDailyStock`: 说明 "每日库存默认值（NULL=不限量，用于价格日历预填）" → "每日库存默认值（NULL=不限量）"
  - ✏️ `defaultRoomCount`: 说明 "默认房间数（小蒙马跟团游用，每个班期的初始房间数）" → "默认房间数（小蒙马用）"
  - ✏️ `showReview`: 说明 "展示用户评价（true=产品详情页显示评价模块）" → "C端展示评价模块"
  - ✏️ `tierSeq`: 说明 "档位序号（1=标准,2=舒适,3=豪华）" → "规格序号（1开始递增）"
  - ✏️ `tierName`: 说明 "档位名称" → "规格名称"

#### ✏️ ProductDetailRespVO

  - ❌ ~~`creatorAvatarUrl`~~ (`String`) — 创建者头像
  - ❌ ~~`creatorIntro`~~ (`String`) — 创建者简介
  - ❌ ~~`customizerId`~~ (`Long`) — 定制师ID
  - ❌ ~~`customerName`~~ (`String`) — 客户姓名
  - ❌ ~~`departureDate`~~ (`LocalDate`) — 出发日期(定制)
  - ❌ ~~`mchId`~~ (`String`) — 商户ID

<details>
<summary>📁 全部变更文件 (点击展开)</summary>

```
M	hl-product-service-v2/src/main/java/com/hulalv/product/entity/ProductBasicDO.java
M	hl-product-service-v2/src/main/java/com/hulalv/product/service/admin/ProductBasicService.java
M	hl-product-service-v2/src/main/java/com/hulalv/product/vo/admin/ProductBasicSaveReqVO.java
M	hl-product-service-v2/src/main/java/com/hulalv/product/vo/admin/ProductDetailRespVO.java
M	hl-product-service-v2/src/main/java/com/hulalv/product/vo/mp/MpProductDetailRespVO.java
M	hl-product-service-v2/src/main/resources/mapper/ProductMapper.xml
```
</details>