# 合同方案 + 产品合同配置改版 + 支付前出行人校验 ## 功能说明 ### 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, ... } ```