diff --git a/changelogs/2026-03/2026-03-23_create_by_scheme.md b/changelogs/2026-03/2026-03-23_create_by_scheme.md new file mode 100644 index 0000000..41ad108 --- /dev/null +++ b/changelogs/2026-03/2026-03-23_create_by_scheme.md @@ -0,0 +1,62 @@ +# 合同创建简化接口 + agency 级别凭证 + +## 功能说明 + +### 1. 新增简化合同创建接口(重要) +前端只需传 `orderId` 和 `schemeId`,后端自动从订单获取出行人、日期、联系人、费用等信息,结合合同方案配置完成合同创建。 + +**替代原来的 `/admin/contract/create`**(需要传几十个字段),新接口大幅简化前端工作量。 + +### 2. STANDARD 模式支持旅行社独立凭证 +每家旅行社现在使用自己的 appId/signKey 调用 12301 API,不再共用全局测试凭证。 + +--- + +## 接口定义 + +### 按方案创建合同(简化版) + +- **POST** `/admin/contract/create-by-scheme` +- **请求体**: +```json +{ + "orderId": "2035929978981564417", + "schemeId": "3" +} +``` +- **参数说明**: + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| orderId | String | 是 | 订单ID | +| schemeId | String | 是 | 合同方案ID(从 `GET /admin/contract/scheme/list` 获取) | + +- **响应**:`Result`(与 `/admin/contract/create` 完全一致) + +### 后端自动填充的数据 + +| 数据 | 来源 | +|------|------| +| 出行人列表 | 订单出行人 | +| 出发日期/返回日期 | 订单 | +| 联系人姓名/电话 | 订单 | +| 合同金额 | 订单总价 | +| 线路名称 | 产品名称 | +| 签署人 | 第一个有手机号的出行人 | +| 模板编码/签署模式/旅行社/争议解决/补充条款 | 合同方案 | + +### 使用流程 + +``` +1. GET /admin/contract/scheme/list → 获取可用方案列表(下拉用) +2. 用户选择一个方案 +3. POST /admin/contract/create-by-scheme → { orderId, schemeId } +4. 合同创建完成,返回合同详情 +``` + +### 注意事项 + +- 根据方案的 `contractMode` 自动选择标准签约(STANDARD)或线下报备(SYNC) +- 如果订单已有有效合同,会报错"该订单已有有效电子合同" +- 出行人必须已补全,否则报错 +- `schemeId` 是字符串类型(Long 序列化),El-Select value 要对应字符串