changelog: 9b7b524 - fix: 订单全流程测试修复(12项)

这个提交包含在:
API Changelog Bot 2026-03-23 16:07:31 +08:00
父节点 19601ea0df
当前提交 870b92ff85
共有 2 个文件被更改,包括 440 次插入27 次删除

查看文件

@ -822,6 +822,12 @@
"sort": 2, "sort": 2,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{
"value": "PENDING_SIGN",
"label": "\u5f85\u7b7e\u7f72",
"sort": 3,
"status": "ACTIVE"
},
{ {
"value": "SIGNING", "value": "SIGNING",
"label": "\u7b7e\u7f72\u4e2d", "label": "\u7b7e\u7f72\u4e2d",
@ -4171,6 +4177,18 @@
"category": "BUSINESS", "category": "BUSINESS",
"remark": "Room-level facilities", "remark": "Room-level facilities",
"items": [ "items": [
{
"value": "baby_bed",
"label": "\u5a74\u513f\u5e8a",
"sort": 1,
"status": "ACTIVE"
},
{
"value": "wifi",
"label": "WiFi",
"sort": 1,
"status": "ACTIVE"
},
{ {
"value": "wired_net", "value": "wired_net",
"label": "\u6709\u7ebf\u5bbd\u5e26", "label": "\u6709\u7ebf\u5bbd\u5e26",
@ -4196,15 +4214,9 @@
"status": "ACTIVE" "status": "ACTIVE"
}, },
{ {
"value": "baby_bed", "value": "mosquito_net",
"label": "\u5a74\u513f\u5e8a", "label": "\u7eb1\u7a97/\u868a\u5e10",
"sort": 1, "sort": 2,
"status": "ACTIVE"
},
{
"value": "wifi",
"label": "WiFi",
"sort": 1,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{ {
@ -4238,9 +4250,9 @@
"status": "ACTIVE" "status": "ACTIVE"
}, },
{ {
"value": "mosquito_net", "value": "heating",
"label": "\u7eb1\u7a97/\u868a\u5e10", "label": "\u6696\u6c14",
"sort": 2, "sort": 3,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{ {
@ -4274,9 +4286,9 @@
"status": "ACTIVE" "status": "ACTIVE"
}, },
{ {
"value": "heating", "value": "charger",
"label": "\u6696\u6c14", "label": "\u624b\u673a\u5145\u7535\u5668",
"sort": 3, "sort": 4,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{ {
@ -4309,12 +4321,6 @@
"sort": 4, "sort": 4,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{
"value": "charger",
"label": "\u624b\u673a\u5145\u7535\u5668",
"sort": 4,
"status": "ACTIVE"
},
{ {
"value": "coffee", "value": "coffee",
"label": "\u5496\u5561\u673a", "label": "\u5496\u5561\u673a",
@ -4345,6 +4351,12 @@
"sort": 5, "sort": 5,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{
"value": "smart_toilet",
"label": "\u667a\u80fd\u9a6c\u6876",
"sort": 6,
"status": "ACTIVE"
},
{ {
"value": "bathtub", "value": "bathtub",
"label": "\u6d74\u7f38", "label": "\u6d74\u7f38",
@ -4369,12 +4381,6 @@
"sort": 6, "sort": 6,
"status": "ACTIVE" "status": "ACTIVE"
}, },
{
"value": "smart_toilet",
"label": "\u667a\u80fd\u9a6c\u6876",
"sort": 6,
"status": "ACTIVE"
},
{ {
"value": "balcony", "value": "balcony",
"label": "\u9633\u53f0", "label": "\u9633\u53f0",

查看文件

@ -0,0 +1,407 @@
# 接口变更记录 — 2026-03-23 16:07
> **提交** `9b7b524` · **作者** wx · **时间** 2026-03-23 16:07:31 +0800
>
> fix: 订单全流程测试修复12项
## 变更总览
- **合同服务**
- AdminContract (+1)
- 🆕 AdminContractScheme (+7 接口)
- **小程序聚合服务**
- MpOrder (+1)
- **订单服务**
- InternalMpOrder (+1)
---
## 合同服务
### AdminContract
> 📖 **接口文档**: [http://192.168.100.236:8095/doc.html](http://192.168.100.236:8095/doc.html) → 标签 **「合同管理」**
### 🆕 `POST` /admin/contract/create-by-scheme — 按方案创建合同(简化)
> 只需传orderId和schemeId,后端自动从订单获取出行人、日期、联系人等数据,结合合同方案配置创建合同。
**响应** `Result<ContractDetailVO>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `supplementaryClause` | `String` | 补充约定内容 |
| `travelers` | `List<TravelerVO>` | 出行人列表 |
| `statusLogs` | `List<StatusLogVO>` | 状态变更日志 |
| `travelerId` | `Long` | 出行人ID |
| `name` | `String` | 姓名 |
| `idCardType` | `String` | 证件类型 |
| `idCardNo` | `String` | 证件号码 |
| `phone` | `String` | 手机号 |
| `isSigner` | `Boolean` | 是否签署人 |
| `logId` | `Long` | 日志ID |
| `oldStatus` | `String` | 旧状态 |
| `newStatus` | `String` | 新状态 |
| `source` | `String` | 变更来源 |
| `createTime` | `LocalDateTime` | 创建时间 |
### 🆕 新增: AdminContractScheme
> 📖 **接口文档**: [http://192.168.100.236:8095/doc.html](http://192.168.100.236:8095/doc.html) → 标签 **「合同方案管理」**
### 📌 `GET` /admin/contract/scheme/list — 查询启用的合同方案列表
> 供产品配置时下拉选择使用,只返回启用状态的方案
**响应** `Result<List<ContractSchemeVO>>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `String` | 方案ID |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码与模板列表的templateCode一致 |
| `templateCode` | `String` | 合同模板编码别名,与contractTemplateCode相同值,方便前端统一使用templateCode |
| `contractTemplateName` | `String` | 合同模板名称(回显用) |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码 |
| `agencyName` | `String` | 旅行社名称(回显用) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款 |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序 |
| `status` | `String` | 状态: ACTIVE/INACTIVE |
| `createTime` | `LocalDateTime` | 创建时间 |
### 📌 `GET` /admin/contract/scheme/list-all — 查询全部合同方案列表
> 管理页面使用,包含停用的方案
**响应** `Result<List<ContractSchemeVO>>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `String` | 方案ID |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码与模板列表的templateCode一致 |
| `templateCode` | `String` | 合同模板编码别名,与contractTemplateCode相同值,方便前端统一使用templateCode |
| `contractTemplateName` | `String` | 合同模板名称(回显用) |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码 |
| `agencyName` | `String` | 旅行社名称(回显用) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款 |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序 |
| `status` | `String` | 状态: ACTIVE/INACTIVE |
| `createTime` | `LocalDateTime` | 创建时间 |
### 📌 `GET` /admin/contract/scheme/{schemeId} — 获取合同方案详情
**参数**
- `{schemeId}` (`Long`) — 路径参数
**响应** `Result<ContractSchemeVO>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `String` | 方案ID |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码与模板列表的templateCode一致 |
| `templateCode` | `String` | 合同模板编码别名,与contractTemplateCode相同值,方便前端统一使用templateCode |
| `contractTemplateName` | `String` | 合同模板名称(回显用) |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码 |
| `agencyName` | `String` | 旅行社名称(回显用) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款 |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序 |
| `status` | `String` | 状态: ACTIVE/INACTIVE |
| `createTime` | `LocalDateTime` | 创建时间 |
### 📌 `POST` /admin/contract/scheme — 创建合同方案
**请求体** `ContractSchemeRequest`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码 |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码(可选,不填则根据订单支付商户号自动匹配旅行社) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款(可选) |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序(越小越靠前) |
**响应** `Result<ContractSchemeVO>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `String` | 方案ID |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码与模板列表的templateCode一致 |
| `templateCode` | `String` | 合同模板编码别名,与contractTemplateCode相同值,方便前端统一使用templateCode |
| `contractTemplateName` | `String` | 合同模板名称(回显用) |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码 |
| `agencyName` | `String` | 旅行社名称(回显用) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款 |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序 |
| `status` | `String` | 状态: ACTIVE/INACTIVE |
| `createTime` | `LocalDateTime` | 创建时间 |
### 📌 `PUT` /admin/contract/scheme/{schemeId} — 更新合同方案
**参数**
- `{schemeId}` (`Long`) — 路径参数
**请求体** `ContractSchemeRequest`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码 |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码(可选,不填则根据订单支付商户号自动匹配旅行社) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款(可选) |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序(越小越靠前) |
**响应** `Result<ContractSchemeVO>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `String` | 方案ID |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码与模板列表的templateCode一致 |
| `templateCode` | `String` | 合同模板编码别名,与contractTemplateCode相同值,方便前端统一使用templateCode |
| `contractTemplateName` | `String` | 合同模板名称(回显用) |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码 |
| `agencyName` | `String` | 旅行社名称(回显用) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款 |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序 |
| `status` | `String` | 状态: ACTIVE/INACTIVE |
| `createTime` | `LocalDateTime` | 创建时间 |
### 📌 `PUT` /admin/contract/scheme/{schemeId}/toggle-status — 切换方案启用/停用状态
**参数**
- `{schemeId}` (`Long`) — 路径参数
**响应** `Result<ContractSchemeVO>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `schemeId` | `String` | 方案ID |
| `name` | `String` | 方案名称 |
| `description` | `String` | 方案描述 |
| `contractPlatform` | `String` | 合同平台: 12301/FADADA |
| `contractTemplateCode` | `String` | 合同模板编码与模板列表的templateCode一致 |
| `templateCode` | `String` | 合同模板编码别名,与contractTemplateCode相同值,方便前端统一使用templateCode |
| `contractTemplateName` | `String` | 合同模板名称(回显用) |
| `contractMode` | `String` | 签约模式: STANDARD(电子签约)/SYNC(线下报备) |
| `signatoryMode` | `Integer` | 签署模式: 1=短信签署 2=现场签署 3=线下签署 |
| `agencyCode` | `String` | 旅行社编码 |
| `agencyName` | `String` | 旅行社名称(回显用) |
| `disputeResolution` | `Integer` | 争议解决方式: 1=仲裁 2=诉讼 |
| `supplementaryClause` | `String` | 补充条款 |
| `transactorName` | `String` | 经办人姓名 |
| `transactorPhone` | `String` | 经办人电话 |
| `sortOrder` | `Integer` | 排序 |
| `status` | `String` | 状态: ACTIVE/INACTIVE |
| `createTime` | `LocalDateTime` | 创建时间 |
### 📌 `DELETE` /admin/contract/scheme/{schemeId} — 删除合同方案
**参数**
- `{schemeId}` (`Long`) — 路径参数
**响应** `Result<Void>`
---
## 小程序聚合服务
### MpOrder
> 📖 **接口文档**: [http://192.168.100.236:8086/doc.html](http://192.168.100.236:8086/doc.html) → 标签 **「C端 - 订单接口」**
### 🆕 `PUT` /mp/order/{orderId}/remark — 添加/修改订单备注
> 用户在订单详情页添加或修改备注。备注对管理端可见。
请求体:{"remark": "备注内容"}
**参数**
- `{orderId}` (`Long`) — 路径参数
**响应** `Result<Void>`
---
## 订单服务
### InternalMpOrder
> 📖 **接口文档**: [http://192.168.100.236:8084/doc.html](http://192.168.100.236:8084/doc.html) → 标签 **「【内部接口】小程序订单Feign调用」**
### 🆕 `PUT` /internal/mp/order/{orderId}/remark — 添加/修改订单备注
> 用户在订单详情页添加或修改备注内容
**参数**
- `{orderId}` (`Long`) — 路径参数
- `userId` (`Long`) — 查询参数
**响应** `Result<Void>`
---
## 📦 其他数据对象变更
> 以下变更未直接关联到本次接口变更,但可能影响现有接口的请求/响应
### 小程序聚合服务
#### ✏️ MpOrderDetailVO
- 🆕 `hotelAssignmentDetails` (`List<Map<String, Object>>`) — 酒店分配详情(按家庭分组,含封面图)
- ✏️ `hotelAssignments`: 说明 "酒店分配信息JSON" → "酒店分配信息JSON原始数据"
### 订单服务
#### ✏️ AdminUpdateOrderRequest
- 🆕 `customizerId` (`Long`) — 定制师ID切换定制师
#### 🆕 HotelAssignmentVO
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `familyIndex` | `Integer` | 家庭序号从1开始 |
| `familyLabel` | `String` | 家庭标签家庭1、家庭2 |
| `days` | `List<DayAssignment>` | 每天的住宿分配列表 |
| `date` | `String` | 日期yyyy-MM-dd |
| `hotelId` | `Long` | 酒店ID |
| `hotelName` | `String` | 酒店名称 |
| `hotelCoverUrl` | `String` | 酒店封面图URL从产品快照提取,可能为空 |
| `roomTypeId` | `Long` | 房型ID |
| `roomType` | `String` | 房型名称 |
| `roomTypeCoverUrl` | `String` | 房型封面图URL从产品快照提取,可能为空 |
| `roomCount` | `Integer` | 房间数量 |
| `remark` | `String` | 备注 |
#### ✏️ OrderDetailVO
- 🆕 `productTypeLabel` (`String`) — 产品类型中文标签CORE=核心产品, CUSTOM=私人定制, GROUP=小蒙马, ROUTE=路书产品)
- 🆕 `pendingUpgradeAmount` (`BigDecimal`) — 待确认差价总额(配房/配车升级未确认的差价)
- 🆕 `paymentModeLabel` (`String`) — 支付模式中文标签DEPOSIT=定金+尾款, FULL=全款)
- 🆕 `hotelAssignmentDetails` (`List<HotelAssignmentVO>`) — 酒店分配详情(按家庭分组,含封面图)
- ✏️ `hotelAssignments`: 说明 "酒店分配信息JSON" → "酒店分配信息JSON原始数据"
#### 🆕 SurchargeRequest
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `surchargeName` | `String` | 费用增加项名称 |
| `surchargeAmount` | `BigDecimal` | 费用增加金额 |
#### ✏️ VehicleAssignmentRequest
- ✏️ `vehicleBrand`: 说明 "品牌" → "品牌(选填,不传则从车型名称中提取)"
<details>
<summary>📁 全部变更文件 (点击展开)</summary>
```
M hl-contract-service/src/main/java/com/hulalv/contract/config/ContractPlatformProperties.java
M hl-contract-service/src/main/java/com/hulalv/contract/constant/ContractConstants.java
M hl-contract-service/src/main/java/com/hulalv/contract/controller/AdminContractController.java
A hl-contract-service/src/main/java/com/hulalv/contract/controller/AdminContractSchemeController.java
A hl-contract-service/src/main/java/com/hulalv/contract/dto/ContractSchemeRequest.java
A hl-contract-service/src/main/java/com/hulalv/contract/entity/ContractScheme.java
M hl-contract-service/src/main/java/com/hulalv/contract/feign/OrderContractFeignClient.java
A hl-contract-service/src/main/java/com/hulalv/contract/job/ContractStatusRefreshJob.java
A hl-contract-service/src/main/java/com/hulalv/contract/mapper/ContractSchemeMapper.java
M hl-contract-service/src/main/java/com/hulalv/contract/platform/ContractApplyParam.java
M hl-contract-service/src/main/java/com/hulalv/contract/platform/ContractPlatform.java
M hl-contract-service/src/main/java/com/hulalv/contract/platform/fadada/FadadaContractPlatform.java
M hl-contract-service/src/main/java/com/hulalv/contract/platform/tourage/TourageApiClient.java
M hl-contract-service/src/main/java/com/hulalv/contract/platform/tourage/TourageContractPlatform.java
A hl-contract-service/src/main/java/com/hulalv/contract/service/ContractSchemeService.java
M hl-contract-service/src/main/java/com/hulalv/contract/service/ContractService.java
A hl-contract-service/src/main/java/com/hulalv/contract/vo/ContractSchemeVO.java
M hl-contract-service/src/test/java/com/hulalv/contract/platform/ContractPlatformFactoryTest.java
M hl-contract-service/src/test/java/com/hulalv/contract/platform/fadada/FadadaContractPlatformTest.java
M hl-contract-service/src/test/java/com/hulalv/contract/platform/tourage/TourageContractPlatformTest.java
M hl-contract-service/src/test/java/com/hulalv/contract/service/ContractServiceTest.java
M hl-insurance-service/src/main/java/com/hulalv/insurance/service/InsuranceOrderService.java
M hl-mp-service/src/main/java/com/hulalv/mp/controller/MpOrderController.java
M hl-mp-service/src/main/java/com/hulalv/mp/feign/MpOrderFeignClient.java
M hl-mp-service/src/main/java/com/hulalv/mp/feign/MpOrderFeignFallbackFactory.java
M hl-mp-service/src/main/java/com/hulalv/mp/vo/MpOrderDetailVO.java
M hl-order-service/src/main/java/com/hulalv/order/constant/OrderConstants.java
M hl-order-service/src/main/java/com/hulalv/order/controller/AdminOrderController.java
M hl-order-service/src/main/java/com/hulalv/order/controller/InternalMpOrderController.java
M hl-order-service/src/main/java/com/hulalv/order/controller/InternalPaymentOrderController.java
M hl-order-service/src/main/java/com/hulalv/order/dto/AdminUpdateOrderRequest.java
A hl-order-service/src/main/java/com/hulalv/order/dto/SurchargeRequest.java
M hl-order-service/src/main/java/com/hulalv/order/dto/VehicleAssignmentRequest.java
A hl-order-service/src/main/java/com/hulalv/order/entity/OrderSurcharge.java
M hl-order-service/src/main/java/com/hulalv/order/entity/OrderTimeline.java
M hl-order-service/src/main/java/com/hulalv/order/entity/OrderTodo.java
M hl-order-service/src/main/java/com/hulalv/order/entity/OrderTraveler.java
M hl-order-service/src/main/java/com/hulalv/order/job/DepartureReminderJob.java
A hl-order-service/src/main/java/com/hulalv/order/mapper/OrderSurchargeMapper.java
M hl-order-service/src/main/java/com/hulalv/order/service/OrderCascadeService.java
M hl-order-service/src/main/java/com/hulalv/order/service/OrderItineraryEditService.java
M hl-order-service/src/main/java/com/hulalv/order/service/OrderPriceDiffService.java
M hl-order-service/src/main/java/com/hulalv/order/service/OrderService.java
A hl-order-service/src/main/java/com/hulalv/order/service/OrderSurchargeService.java
M hl-order-service/src/main/java/com/hulalv/order/service/OrderTodoService.java
A hl-order-service/src/main/java/com/hulalv/order/vo/HotelAssignmentVO.java
M hl-order-service/src/main/java/com/hulalv/order/vo/OrderDetailVO.java
A hl-product-service/src/main/java/com/hulalv/product/feign/InsuranceSchemeFallbackFactory.java
A hl-product-service/src/main/java/com/hulalv/product/feign/InsuranceSchemeFeignClient.java
```
</details>