131 行
4.7 KiB
Markdown
131 行
4.7 KiB
Markdown
# 合同方案删除「管辖法院/仲裁委员会/争议解决方式」3 字段
|
|
|
|
> **服务**: hl-order-service-v2 (8094)
|
|
> **PR**: #1929
|
|
> **Issue**: #1928
|
|
> **日期**: 2026-05-09
|
|
> **影响范围**: admin「合同管理 → 合同方案」编辑/新增弹窗
|
|
|
|
---
|
|
|
|
## ⚠️ 关键变化
|
|
|
|
合同方案弹窗删除以下 3 个字段, **前端必须同步删 form item 否则保存接口会 400**:
|
|
- `disputeResolution` 争议解决方式 (1=诉讼 / 2=仲裁)
|
|
- `tribunalName` 仲裁委员会
|
|
- `litigationCourt` 管辖法院
|
|
|
|
travel_agency 表已有 `tribunal_name` `litigation_court` 字段, 合同生成时自动从所选旅行社读取, 用户不再需要在合同方案里重复填。
|
|
|
|
---
|
|
|
|
## 一、背景
|
|
|
|
代码 `ContractCreateService.java:1179` 注释明确写:
|
|
> 业务规则(2026-05-04 用户反馈): 合同方案表单移除"管辖法院"输入(走 agency 自动兜底)
|
|
|
|
历史改动只补了 fallback 逻辑没真删字段, 导致合同方案弹窗仍要求填这些字段, 用户多次反馈。本次彻底清理。
|
|
|
|
---
|
|
|
|
## 二、变更接口清单
|
|
|
|
| # | 接口 | 方法 | 路径 | 变更类型 |
|
|
|---|------|------|------|----------|
|
|
| 1 | 创建合同方案 | POST | `/admin/contract/scheme` | 请求体删 3 字段 |
|
|
| 2 | 更新合同方案 | PUT | `/admin/contract/scheme/{schemeId}` | 请求体删 3 字段 |
|
|
| 3 | 查询启用方案列表 | GET | `/admin/contract/scheme/list` | 响应体删 3 字段 |
|
|
| 4 | 查询单个方案 | GET | `/admin/contract/scheme/{id}` | 响应体删 3 字段 |
|
|
|
|
---
|
|
|
|
## 三、ContractSchemeRequest 入参变化
|
|
|
|
### 删除字段 (必删)
|
|
|
|
```java
|
|
// 删除前
|
|
private Integer disputeResolution; // @Min(1) @Max(2)
|
|
private String tribunalName; // @Size(max=100)
|
|
private String litigationCourt; // @Size(max=100)
|
|
```
|
|
|
|
前端 form 必须删除对应 input/radio。如果前端继续传这 3 个字段, Spring 反序列化会忽略(因为 DTO 上没有), 但建议同步删除 UI 避免误导用户。
|
|
|
|
### 保留字段(关键)
|
|
|
|
| 字段 | 类型 | 必填 | 说明 |
|
|
|------|------|------|------|
|
|
| `schemeName` | String | ✅ | 方案名称 |
|
|
| `contractPlatform` | String | ✅ | 合同平台 (12301 / TENCENT_ESIGN) |
|
|
| `contractTemplateCode` | String | ✅ | 合同模板编码 |
|
|
| `agencyCode` | String | ❌ | 旅行社编码(不填走支付商户号自动匹配) |
|
|
| `transactorName` | String | ❌ | 经办人姓名 |
|
|
| `transactorPhone` | String | ❌ | 经办人电话 |
|
|
| `signatoryMode` | Integer | ❌ | 签署模式 |
|
|
| `contractMode` | String | ❌ | 签约模式 |
|
|
| `supplementaryClause` | String | ❌ | 补充条款 |
|
|
|
|
---
|
|
|
|
## 四、ContractSchemeVO 响应变化
|
|
|
|
响应体删除:
|
|
```json
|
|
// 修复前
|
|
{ "disputeResolution": 2, "tribunalName": "呼伦贝尔仲裁委员会", "litigationCourt": "海拉尔区人民法院", ... }
|
|
|
|
// 修复后
|
|
{ "schemeName": "...", "contractPlatform": "12301", ... } // 3 字段消失
|
|
```
|
|
|
|
如果前端编辑表单的 echo 逻辑里取了这 3 个值, 改成不取(或对不存在字段做容错)。
|
|
|
|
---
|
|
|
|
## 五、合同生成兜底逻辑(后端自动, 前端无感)
|
|
|
|
走 12301 / 腾讯电子签生成合同时, 法律字段从所选 agency 读:
|
|
|
|
| 字段 | 兜底链 |
|
|
|---|---|
|
|
| 仲裁委员会 | `agency.tribunal_name` → 常量「呼伦贝尔仲裁委员会」 |
|
|
| 管辖法院 | `agency.litigation_court` → 常量「海拉尔区人民法院」 |
|
|
| 争议解决方式 | 默认 `2` (仲裁) |
|
|
|
|
travel_agency 表已存 `tribunal_name` `litigation_court`, admin「公司管理」编辑该公司时填写。
|
|
|
|
---
|
|
|
|
## 六、前端 mmg 改造点
|
|
|
|
### 文件: `hl-ui/src/views/contract/scheme/...`(合同方案弹窗)
|
|
|
|
1. **删除 3 个 form item**:
|
|
- "争议解决方式" radio (1=诉讼 / 2=仲裁)
|
|
- "仲裁委员会" input
|
|
- "管辖法院" input
|
|
2. **submit 时不传** `disputeResolution / tribunalName / litigationCourt`
|
|
3. **echo 时不取** 这 3 个字段(响应体没有了, 取了会 undefined)
|
|
4. 弹窗变得更简洁(只剩方案名、合同平台、模板、签约/签署模式、旅行社、补充条款)
|
|
|
|
### 测试服 API 验证 (2026-05-09 21:25)
|
|
|
|
| Case | 实测 |
|
|
|---|---|
|
|
| `GET /admin/contract/scheme/list` | 200, 响应体已无 3 字段 |
|
|
| DB `SHOW COLUMNS FROM contract_scheme` | 3 列已 DROP, V20260510_001 success=1 |
|
|
| 合同生成走 12301 | tribunal/court 走 agency 字段, dispute 默认 2(仲裁), 单测 `disputeResolutionNull_fallbackToArbitration2` 验证通过 |
|
|
|
|
---
|
|
|
|
## 七、不在本 PR 范围
|
|
|
|
- travel_agency 加 `dispute_resolution` 字段(让公司维度可配)留后续工单
|
|
- 历史 contract_scheme 表 3 列值随 DROP COLUMN 丢失(业务上 agency 兜底, 不影响)
|
|
- 已签合同的渲染不受影响(渲染走快照, 此次只改新建合同的字段来源)
|
|
|
|
---
|
|
|
|
**联系人**: wx
|