hl-api-changelog/changelogs/2026-03/2026-03-20_contract_scheme.md
API Changelog Bot 4880e0ce42 feat: 合同方案管理 + 产品合同配置改版 + 支付前出行人校验
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 17:48:10 +08:00

182 行
5.8 KiB
Markdown

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

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

# 合同方案 + 产品合同配置改版 + 支付前出行人校验
## 功能说明
### 1. 合同方案管理(新增)
合同配置改为"合同方案"模式与保险方案一致,产品只需选择一个合同方案ID。
### 2. 产品合同配置改版(破坏性变更)
产品上原来的 9 个合同字段contractPlatform, contractTemplateCode, contractMode, signatoryMode, agencyCode, disputeResolution, supplementaryClause, transactorName, transactorPhone已全部删除,替换为单个 `contractSchemeId` 字段。
### 3. 支付前出行人校验规则变更
- **预约产品**isBooking=true定金支付不要求出行人,全款/尾款要求出行人齐全
- **非预约产品**isBooking=false所有支付类型都要求出行人齐全
### 4. HTTP 200 统一化
所有接口只要请求能到达服务器,HTTP状态码一律返回200,业务错误在响应体Result中返回。
---
## 合同方案接口清单
### 查询启用的合同方案列表(下拉选择用)
- **GET** `/admin/contract/scheme/list`
- **响应**`Result<List<ContractSchemeVO>>`
### 查询全部合同方案列表(管理页面用)
- **GET** `/admin/contract/scheme/list-all`
- **响应**`Result<List<ContractSchemeVO>>`
### 获取合同方案详情
- **GET** `/admin/contract/scheme/{schemeId}`
- **响应**`Result<ContractSchemeVO>`
### 创建合同方案
- **POST** `/admin/contract/scheme`
- **请求体**`ContractSchemeRequest`
- **响应**`Result<ContractSchemeVO>`
### 更新合同方案
- **PUT** `/admin/contract/scheme/{schemeId}`
- **请求体**`ContractSchemeRequest`
- **响应**`Result<ContractSchemeVO>`
### 切换方案启用/停用状态
- **PUT** `/admin/contract/scheme/{schemeId}/toggle-status`
- **响应**`Result<ContractSchemeVO>`
### 删除合同方案
- **DELETE** `/admin/contract/scheme/{schemeId}`
- **响应**`Result<Void>`
---
## ContractSchemeRequest 参数
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| name | String | 是 | 方案名称,如"标准国内电子签约方案" |
| description | String | 否 | 方案描述 |
| contractPlatform | String | 是 | 合同平台:`12301`(全国旅游监管平台)/ `FADADA`(法大大) |
| contractTemplateCode | String | 是 | 合同模板编码,如 `TOURAGE_STANDARD` |
| contractMode | String | 是 | 签约模式:`STANDARD`(电子签约)/ `SYNC`(线下报备) |
| signatoryMode | Integer | 是 | 签署模式:`1`=短信签署 `2`=现场签署 `3`=线下签署 |
| agencyCode | String | 是 | 旅行社编码 |
| disputeResolution | Integer | 是 | 争议解决方式:`1`=仲裁 `2`=诉讼 |
| supplementaryClause | String | 否 | 补充条款 |
| transactorName | String | 是 | 经办人姓名 |
| transactorPhone | String | 是 | 经办人电话 |
| sortOrder | Integer | 否 | 排序(越小越靠前) |
## ContractSchemeVO 响应
| 字段 | 类型 | 说明 |
|------|------|------|
| schemeId | String | 方案ID |
| 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 | 排序 |
| status | String | 状态ACTIVE/INACTIVE |
| createTime | DateTime | 创建时间 |
---
## 产品接口变更(破坏性变更)
### 产品创建/更新/保存接口
**删除的字段**(以下字段不再使用):
- ~~contractPlatform~~
- ~~contractTemplateCode~~
- ~~contractMode~~
- ~~signatoryMode~~
- ~~agencyCode~~
- ~~disputeResolution~~
- ~~supplementaryClause~~
- ~~transactorName~~
- ~~transactorPhone~~
**新增的字段**
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| contractSchemeId | Long | 是(创建时) | 合同方案ID,从 `/admin/contract/scheme/list` 获取 |
### 产品详情接口
**响应变更**
- 删除 9 个合同字段
- 新增 `contractSchemeId`String类型
---
## 页面布局建议
### 合同方案管理页面
路径建议:系统管理 → 合同方案管理(类似保险方案管理)
- 列表页:方案名称、合同平台、签约模式、旅行社、状态、操作(编辑/启停/删除)
- 新建/编辑弹窗ContractSchemeRequest 的所有字段
### 产品编辑页面 — 合同配置区域改版
**原来**9个表单项
```
合同平台 * [12301] [法大大]
合同模板 * [下拉选择]
签约模式 * [电子签约] [线下报备]
签署模式 * [短信签署] [现场签署] [线下签署]
旅行社 * [下拉选择]
争议解决方式 * [仲裁] [诉讼]
补充条款 [文本框]
经办人姓名 * [文本框]
经办人电话 * [文本框]
```
**现在**1个下拉选择
```
合同方案 * [请选择合同方案 ▼]
```
下拉数据来源:`GET /admin/contract/scheme/list`(返回启用的方案列表)
---
## 调用示例
### 创建合同方案
```json
POST /admin/contract/scheme
{
"name": "标准国内电子签约方案",
"contractPlatform": "12301",
"contractTemplateCode": "TOURAGE_STANDARD",
"contractMode": "STANDARD",
"signatoryMode": 1,
"agencyCode": "L-NMG-100001",
"disputeResolution": 1,
"transactorName": "张三",
"transactorPhone": "13800138000",
"sortOrder": 0
}
```
### 产品创建使用合同方案ID
```json
POST /admin/product
{
"name": "冰雪3.0南线",
"productType": "CORE",
"insuranceSchemeId": 123456789,
"contractSchemeId": 987654321,
...
}
```