# 接口变更记录 — 2026-03-18 18:06

> **提交** `f4ff123` · **作者** wx · **时间** 2026-03-18 18:06:03 +0800
>
> feat: 预订须知模块重构 — 退款政策改产品绑定 + 新增预订条款/温馨提示模板

## 变更总览

- **产品服务**
  - 🆕 AdminBookingTerms (+7 接口)
  - 🆕 AdminWarmTips (+7 接口)
- **订单服务**
  - AdminRefundPolicy (+1)

---

## 产品服务

### 🆕 新增: AdminBookingTerms

> 📖 **接口文档**: [http://192.168.100.236:8085/doc.html](http://192.168.100.236:8085/doc.html) → 标签 **「预订条款管理」**

### 📌 `GET` /admin/product/booking-terms/list — 预订条款列表

> 返回所有预订条款（含禁用），按创建时间倒序

**响应** `Result<List<BookingTermsVO>>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsId` | `Long` | 预订条款ID |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `GET` /admin/product/booking-terms/enabled — 启用的预订条款列表

> 仅返回启用状态的条款，供产品设计时选择

**响应** `Result<List<BookingTermsVO>>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsId` | `Long` | 预订条款ID |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `GET` /admin/product/booking-terms/{termsId} — 预订条款详情

**参数**

  - `{termsId}` (`Long`) — 路径参数：预订条款ID

**响应** `Result<BookingTermsVO>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsId` | `Long` | 预订条款ID |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `POST` /admin/product/booking-terms — 创建预订条款

> 创建后默认启用

**请求体** `BookingTermsRequest`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `remark` | `String` | 备注 |

**响应** `Result<BookingTermsVO>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsId` | `Long` | 预订条款ID |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `PUT` /admin/product/booking-terms/{termsId} — 修改预订条款

**参数**

  - `{termsId}` (`Long`) — 路径参数：预订条款ID

**请求体** `BookingTermsRequest`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `remark` | `String` | 备注 |

**响应** `Result<BookingTermsVO>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `termsId` | `Long` | 预订条款ID |
| `termsName` | `String` | 条款名称 |
| `content` | `String` | 条款内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `DELETE` /admin/product/booking-terms/{termsId} — 删除预订条款

> 软删除，已绑定的产品不受影响（产品详情会显示为空）

**参数**

  - `{termsId}` (`Long`) — 路径参数：预订条款ID

**响应** `Result<Void>`

### 📌 `PUT` /admin/product/booking-terms/{termsId}/toggle — 启用/禁用预订条款

> 禁用后不再出现在产品设计的可选列表中，已绑定的产品不受影响

**参数**

  - `{termsId}` (`Long`) — 路径参数：预订条款ID
  - `enabled` (`boolean`) — 查询参数：是否启用

**响应** `Result<Void>`

### 🆕 新增: AdminWarmTips

> 📖 **接口文档**: [http://192.168.100.236:8085/doc.html](http://192.168.100.236:8085/doc.html) → 标签 **「温馨提示管理」**

### 📌 `GET` /admin/product/warm-tips/list — 温馨提示列表

> 返回所有温馨提示（含禁用），按创建时间倒序

**响应** `Result<List<WarmTipsVO>>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsId` | `Long` | 温馨提示ID |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `GET` /admin/product/warm-tips/enabled — 启用的温馨提示列表

> 仅返回启用状态的提示，供产品设计时选择

**响应** `Result<List<WarmTipsVO>>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsId` | `Long` | 温馨提示ID |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `GET` /admin/product/warm-tips/{tipsId} — 温馨提示详情

**参数**

  - `{tipsId}` (`Long`) — 路径参数：温馨提示ID

**响应** `Result<WarmTipsVO>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsId` | `Long` | 温馨提示ID |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `POST` /admin/product/warm-tips — 创建温馨提示

> 创建后默认启用

**请求体** `WarmTipsRequest`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `remark` | `String` | 备注 |

**响应** `Result<WarmTipsVO>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsId` | `Long` | 温馨提示ID |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `PUT` /admin/product/warm-tips/{tipsId} — 修改温馨提示

**参数**

  - `{tipsId}` (`Long`) — 路径参数：温馨提示ID

**请求体** `WarmTipsRequest`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `remark` | `String` | 备注 |

**响应** `Result<WarmTipsVO>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `tipsId` | `Long` | 温馨提示ID |
| `tipsName` | `String` | 提示名称 |
| `content` | `String` | 提示内容（富文本） |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |

### 📌 `DELETE` /admin/product/warm-tips/{tipsId} — 删除温馨提示

> 软删除，已绑定的产品不受影响（产品详情会显示为空）

**参数**

  - `{tipsId}` (`Long`) — 路径参数：温馨提示ID

**响应** `Result<Void>`

### 📌 `PUT` /admin/product/warm-tips/{tipsId}/toggle — 启用/禁用温馨提示

> 禁用后不再出现在产品设计的可选列表中，已绑定的产品不受影响

**参数**

  - `{tipsId}` (`Long`) — 路径参数：温馨提示ID
  - `enabled` (`boolean`) — 查询参数：是否启用

**响应** `Result<Void>`

---

## 订单服务

### AdminRefundPolicy

> 📖 **接口文档**: [http://192.168.100.236:8084/doc.html](http://192.168.100.236:8084/doc.html) → 分组 **「3.1 订单管理」** → 标签 **「退款政策管理」**

### 🆕 `GET` /admin/order/refund-policy/enabled — 启用的退款政策列表

> 仅返回启用状态的政策，供产品设计时选择绑定

**响应** `Result<List<RefundPolicyVO>>`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `policyId` | `Long` | 政策ID |
| `policyName` | `String` | 政策名称 |
| `isDefault` | `Boolean` | 是否为默认政策 |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |
| `rules` | `List<RuleVO>` | 退款规则列表 |
| `ruleId` | `Long` | 规则ID |
| `minDays` | `Integer` | 距出发最少天数 |
| `refundRatio` | `Integer` | 退款比例（百分比） |

---

## 📦 其他数据对象变更

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

### 产品服务

#### ✏️ ProductCreateRequest

  - 🆕 `bookingTermsId` (`String`) — 预订条款ID（关联预订条款模板）
  - 🆕 `refundPolicyId` (`String`) — 退款政策ID（关联退款政策模板）
  - 🆕 `warmTipsId` (`String`) — 温馨提示ID（关联温馨提示模板）
  - ❌ ~~`bookingNotice`~~ (`String`) — 预定须知
  - ❌ ~~`cancelPolicy`~~ (`String`) — 退改政策
  - ❌ ~~`warmTips`~~ (`String`) — 温馨提示

#### ✏️ ProductSaveRequest

  - 🆕 `bookingTermsId` (`String`) — 预订条款ID（关联预订条款模板）
  - 🆕 `refundPolicyId` (`String`) — 退款政策ID（关联退款政策模板）
  - 🆕 `warmTipsId` (`String`) — 温馨提示ID（关联温馨提示模板）
  - ❌ ~~`bookingNotice`~~ (`String`) — 预定须知
  - ❌ ~~`cancelPolicy`~~ (`String`) — 退改政策
  - ❌ ~~`warmTips`~~ (`String`) — 温馨提示

#### ✏️ ProductUpdateRequest

  - 🆕 `bookingTermsId` (`String`) — 预订条款ID（关联预订条款模板）
  - 🆕 `refundPolicyId` (`String`) — 退款政策ID（关联退款政策模板）
  - 🆕 `warmTipsId` (`String`) — 温馨提示ID（关联温馨提示模板）
  - ❌ ~~`bookingNotice`~~ (`String`) — 预定须知
  - ❌ ~~`cancelPolicy`~~ (`String`) — 退改政策
  - ❌ ~~`warmTips`~~ (`String`) — 温馨提示

#### ✏️ ProductVO

  - 🆕 `bookingTermsId` (`String`) — 预订条款ID
  - 🆕 `bookingTermsName` (`String`) — 预订条款名称
  - 🆕 `bookingTermsContent` (`String`) — 预订条款内容
  - 🆕 `refundPolicyId` (`String`) — 退款政策ID
  - 🆕 `refundPolicyName` (`String`) — 退款政策名称
  - 🆕 `warmTipsId` (`String`) — 温馨提示ID
  - 🆕 `warmTipsName` (`String`) — 温馨提示名称
  - 🆕 `warmTipsContent` (`String`) — 温馨提示内容
  - ❌ ~~`bookingNotice`~~ (`String`) — 预定须知
  - ❌ ~~`cancelPolicy`~~ (`String`) — 退改政策
  - ❌ ~~`warmTips`~~ (`String`) — 温馨提示

### 订单服务

#### ✏️ RefundPolicyRequest

  - ❌ ~~`refundType`~~ (`String`) — 退款类型
  - ❌ ~~`startDate`~~ (`LocalDate`) — 生效开始日期
  - ❌ ~~`endDate`~~ (`LocalDate`) — 生效结束日期
  - ✏️ `isDefault`: 说明 "是否为默认政策" → "是否为默认政策（产品未绑定退款政策时使用默认政策）"

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

```
M	hl-order-service/src/main/java/com/hulalv/order/controller/AdminRefundPolicyController.java
M	hl-order-service/src/main/java/com/hulalv/order/dto/RefundPolicyRequest.java
M	hl-order-service/src/main/java/com/hulalv/order/entity/OrderInfo.java
M	hl-order-service/src/main/java/com/hulalv/order/entity/RefundPolicy.java
M	hl-order-service/src/main/java/com/hulalv/order/service/OrderService.java
M	hl-order-service/src/main/java/com/hulalv/order/service/RefundApplicationService.java
M	hl-order-service/src/main/java/com/hulalv/order/service/RefundPolicyService.java
M	hl-order-service/src/main/java/com/hulalv/order/service/TripService.java
M	hl-order-service/src/main/java/com/hulalv/order/vo/RefundPolicyVO.java
M	hl-order-service/src/test/java/com/hulalv/order/service/RefundApplicationServiceTest.java
M	hl-order-service/src/test/java/com/hulalv/order/service/RefundPolicyServiceTest.java
A	hl-product-service/src/main/java/com/hulalv/product/controller/AdminBookingTermsController.java
A	hl-product-service/src/main/java/com/hulalv/product/controller/AdminWarmTipsController.java
A	hl-product-service/src/main/java/com/hulalv/product/dto/BookingTermsRequest.java
M	hl-product-service/src/main/java/com/hulalv/product/dto/ProductCreateRequest.java
M	hl-product-service/src/main/java/com/hulalv/product/dto/ProductSaveRequest.java
M	hl-product-service/src/main/java/com/hulalv/product/dto/ProductUpdateRequest.java
A	hl-product-service/src/main/java/com/hulalv/product/dto/WarmTipsRequest.java
A	hl-product-service/src/main/java/com/hulalv/product/entity/BookingTerms.java
M	hl-product-service/src/main/java/com/hulalv/product/entity/Product.java
A	hl-product-service/src/main/java/com/hulalv/product/entity/WarmTips.java
A	hl-product-service/src/main/java/com/hulalv/product/mapper/BookingTermsMapper.java
A	hl-product-service/src/main/java/com/hulalv/product/mapper/WarmTipsMapper.java
A	hl-product-service/src/main/java/com/hulalv/product/service/BookingTermsService.java
M	hl-product-service/src/main/java/com/hulalv/product/service/ProductService.java
A	hl-product-service/src/main/java/com/hulalv/product/service/WarmTipsService.java
A	hl-product-service/src/main/java/com/hulalv/product/vo/BookingTermsVO.java
M	hl-product-service/src/main/java/com/hulalv/product/vo/ProductVO.java
A	hl-product-service/src/main/java/com/hulalv/product/vo/WarmTipsVO.java
M	hl-product-service/src/test/java/com/hulalv/product/service/MpProductServiceTest.java
M	hl-product-service/src/test/java/com/hulalv/product/service/ProductServiceTest.java
A	sql/booking_notice_refactor.sql
```
</details>