# 协议承保规则接口对接文档 --- ## 一、新增承保规则 **接口路径**:`POST /agreementRules/rulesAdd` ### 请求参数 | 字段名 | 类型 | 必填 | 描述 | |---|---|---|---| | `agreementId` | String | 是 | 协议ID | | `startTime` | String | 否 | 生效开始时间 | | `endTime` | String | 否 | 生效截止时间 | | `rulesAttrList` | Array\ | 是 | 并且规则属性(AND 逻辑,单条规则模式) | | `rulesGroups` | Array\ | 否 | **【新增】** 规则属性分组(批量多条规则模式) | #### 两种模式说明 - **单条规则模式**:使用 `rulesAttrList`,创建一条规则,`parentId` 为空 - **批量规则模式**:使用 `rulesGroups`,一次创建多条规则,共享同一个 `parentId`,按分组顺序生成 `orderNum` - 两种模式互斥,优先使用 `rulesGroups` 批量模式 ### RulesGroupParam 结构 | 字段名 | 类型 | 必填 | 描述 | |---|---|---|---| | `rulesAttrList` | Array\ | 是 | 该组规则属性(AND 逻辑) | ### PtlAgreementUndwrtRulesAttrLink 结构 | 字段 | 类型 | 描述 | |---|---|---| | `attrId` | String | 协议属性ID | | `attrCode` | String | 协议属性编码 | | `min` | String | 左操作数(单选/输入值,数组时逗号分隔) | | `operator` | String | 运算符:1.范围 2.小于 3.小于等于 4.大于 5.大于等于 | | `max` | String | 右操作数(范围值上限) | | `minArray` | String[] | 左操作数数组(用于 checkbox/select/inputTag,非数据库字段) | ### 请求体示例 #### 单条规则模式 ```json { "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "rulesAttrList": [ { "attrCode": "VehicleAge", "min": "0", "max": "5", "operator": "1" }, { "attrCode": "LicenseArea", "min": "BJ,SH", "operator": "1" } ] } ``` #### 批量规则模式 ```json { "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "rulesGroups": [ { "rulesAttrList": [ { "attrCode": "VehicleAge", "min": "0", "max": "5", "operator": "1" } ] }, { "rulesAttrList": [ { "attrCode": "LicenseArea", "min": "BJ,SH", "operator": "1" }, { "attrCode": "Brand", "min": "AUDI,BMW", "operator": "1" } ] } ] } ``` ### 响应 ```json { "code": 200, "msg": "添加承保规则成功" } ``` --- ## 二、修改承保规则 **接口路径**:`POST /agreementRules/rulesEdit` ### 请求参数 | 字段名 | 类型 | 必填 | 描述 | |---|---|---|---| | `id` | String | 是 | 承保规则ID | | `agreementId` | String | 是 | 协议ID | | `startTime` | String | 否 | 生效开始时间 | | `endTime` | String | 否 | 生效截止时间 | | `rulesAttrList` | Array\ | 是 | 并且规则属性(AND 逻辑) | ### 请求体示例 ```json { "id": "987654", "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "rulesAttrList": [ { "attrCode": "VehicleAge", "min": "0", "max": "5", "operator": "1" } ] } ``` > **修改逻辑**:先删除该规则下的所有旧属性关联数据,再重新插入新的规则属性。 ### 响应 ```json { "code": 200, "msg": "修改承保规则成功" } ``` --- ## 三、承保规则列表查询 **接口路径**:`GET /agreementRules/rulesList` ### 请求参数 | 参数 | 类型 | 必填 | 描述 | |---|---|---|---| | `agreementId` | String | 是 | 协议ID | ### 响应字段 | 字段 | 类型 | 描述 | |---|---|---| | `id` | String | 主键 | | `agreementId` | String | 协议ID | | `startTime` | String | 生效开始时间 | | `endTime` | String | 生效截止时间 | | `ruleDescription` | String | 规则描述文字 | | `parentId` | String | **【新增】** 父规则ID(批量模式时共用) | | `orderNum` | Integer | 显示顺序 | | `costsAttrLinks` | Array | 规则属性详情 | | `costVoList` | Array | 关联费用列表 | ### 响应示例 ```json { "code": 200, "data": [ { "id": "987654", "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "ruleDescription": "车龄范围值0到5,", "parentId": "1792000000000000001", "orderNum": 1, "costsAttrLinks": [], "costVoList": [] }, { "id": "987655", "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "ruleDescription": "上牌城市为北京市,上海市,品牌为奥迪,宝马,", "parentId": "1792000000000000001", "orderNum": 2, "costsAttrLinks": [], "costVoList": [] } ] } ``` --- ## 四、获取承保规则详情 **接口路径**:`GET /agreementRules/rulesGet` ### 请求参数 | 参数 | 类型 | 必填 | 描述 | |---|---|---|---| | `ruleId` | String | 是 | 承保规则ID | ### 响应 与列表接口返回结构一致,包含 `parentId` 字段。 --- ## 五、根据父ID查询规则列表【新增】 **接口路径**:`GET /agreementRules/rulesListByParentId` ### 请求参数 | 参数 | 类型 | 必填 | 描述 | |---|---|---|---| | `parentId` | String | 是 | 父规则ID | ### 功能说明 当使用批量规则模式(`rulesGroups`)新增规则时,同批次的所有子规则共享同一个 `parentId`。调用此接口可根据 `parentId` 查询该批次下的所有子规则列表。 ### 响应字段 与 `rulesList` 接口返回结构一致。 ### 响应示例 ```json { "code": 200, "data": [ { "id": "987654", "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "ruleDescription": "车龄范围值0到5,", "parentId": "1792000000000000001", "orderNum": 1, "costsAttrLinks": [], "costVoList": [] }, { "id": "987655", "agreementId": "123456", "startTime": "2026-01-01", "endTime": "2026-12-31", "ruleDescription": "上牌城市为北京市,上海市,", "parentId": "1792000000000000001", "orderNum": 2, "costsAttrLinks": [], "costVoList": [] } ] } ``` --- ## 六、删除承保规则 **接口路径**:`DELETE /agreementRules/rulesDelete` ### 请求参数 | 参数 | 类型 | 必填 | 描述 | |---|---|---|---| | `id` | String | 是 | 承保规则ID | ### 响应 ```json { "code": 200, "data": "删除成功" } ``` --- ## 七、获取承保规则明细 **接口路径**:`GET /agreementRules/getRuleInfo` ### 请求参数 | 参数 | 类型 | 必填 | 描述 | |---|---|---|---| | `ruleId` | String | 是 | 承保规则ID | ### 响应 返回该规则下所有属性关联明细列表。 --- ## 变更总结 | 接口 | 变更点 | 变更内容 | |---|---|---| | `POST /rulesAdd` | 请求参数新增 | `rulesGroups`(批量规则分组),支持一次创建多条规则 | | `POST /rulesAdd` | 逻辑变更 | 批量模式下所有子规则共享同一 `parentId`,按分组顺序生成 `orderNum` | | `GET /rulesList` | 返回值新增 | `parentId`(父规则ID) | | `GET /rulesGet` | 返回值新增 | `parentId`(父规则ID) | | `GET /rulesListByParentId` | **新增接口** | 根据父ID查询子规则列表 | ### 业务逻辑说明 - **单条模式**:使用 `rulesAttrList` 创建一条规则,`parentId` 为 `null` - **批量模式**:使用 `rulesGroups` 一次创建多条规则,系统生成统一 `parentId` 关联同一批次的所有子规则 - 批量模式与单条模式互斥,优先处理 `rulesGroups` - 通过 `rulesListByParentId` 接口可按 `parentId` 查询同批次的所有子规则 - 修改接口仅支持对单条规则进行编辑 ### 数据库变更说明 `ptl_agreement_undwrt_rules` 表需新增字段: ```sql ALTER TABLE ptl_agreement_undwrt_rules ADD COLUMN parent_id VARCHAR(64) DEFAULT NULL COMMENT '父规则ID'; ```