diff --git a/changelogs/2026-03/2026-03-20_contract_scheme.md b/changelogs/2026-03/2026-03-20_contract_scheme.md new file mode 100644 index 0000000..0ec9066 --- /dev/null +++ b/changelogs/2026-03/2026-03-20_contract_scheme.md @@ -0,0 +1,181 @@ +# 合同方案 + 产品合同配置改版 + 支付前出行人校验 + +## 功能说明 + +### 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>` + +### 查询全部合同方案列表(管理页面用) +- **GET** `/admin/contract/scheme/list-all` +- **响应**:`Result>` + +### 获取合同方案详情 +- **GET** `/admin/contract/scheme/{schemeId}` +- **响应**:`Result` + +### 创建合同方案 +- **POST** `/admin/contract/scheme` +- **请求体**:`ContractSchemeRequest` +- **响应**:`Result` + +### 更新合同方案 +- **PUT** `/admin/contract/scheme/{schemeId}` +- **请求体**:`ContractSchemeRequest` +- **响应**:`Result` + +### 切换方案启用/停用状态 +- **PUT** `/admin/contract/scheme/{schemeId}/toggle-status` +- **响应**:`Result` + +### 删除合同方案 +- **DELETE** `/admin/contract/scheme/{schemeId}` +- **响应**:`Result` + +--- + +## 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, + ... +} +```