changelog: f4ff123 - feat: 预订须知模块重构 — 退款政策改产品绑定 + 新增预订条款/温馨提示模板

这个提交包含在:
API Changelog Bot 2026-03-18 18:06:03 +08:00
父节点 7beff1b615
当前提交 8c0c99ecbf

查看文件

@ -0,0 +1,403 @@
# 接口变更记录 — 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>