协议承保规则接口对接文档.md 14 KB

协议承保规则接口对接文档


一、新增承保规则

接口路径POST /agreementRules/rulesAdd

请求参数

字段名 类型 必填 描述
agreementId String 协议ID
startTime String 生效开始时间
endTime String 生效截止时间
rulesAttrList Array<PtlAgreementUndwrtRulesAttrLink> 并且规则属性(AND 逻辑,单条规则模式)
rulesGroups Array<RulesGroupParam> 【新增】 规则属性分组(批量多条规则模式)

两种模式说明

  • 单条规则模式:使用 rulesAttrList,创建一条规则,parentId 为空
  • 批量规则模式:使用 rulesGroups,一次创建多条规则,共享同一个 parentId,按分组顺序生成 orderNum
  • 两种模式互斥,优先使用 rulesGroups 批量模式

RulesGroupParam 结构

字段名 类型 必填 描述
rulesAttrList Array<PtlAgreementUndwrtRulesAttrLink> 该组规则属性(AND 逻辑)

PtlAgreementUndwrtRulesAttrLink 结构

字段 类型 描述
attrId String 协议属性ID
attrCode String 协议属性编码
min String 左操作数(单选/输入值,数组时逗号分隔)
operator String 运算符:1.范围 2.小于 3.小于等于 4.大于 5.大于等于
max String 右操作数(范围值上限)
minArray String[] 左操作数数组(用于 checkbox/select/inputTag,非数据库字段)

请求体示例

单条规则模式

{
    "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"
        }
    ]
}

批量规则模式

{
    "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"
                }
            ]
        }
    ]
}

响应

{
    "code": 200,
    "msg": "添加承保规则成功"
}

二、修改承保规则

接口路径POST /agreementRules/rulesEdit

请求参数

字段名 类型 必填 描述
id String 承保规则ID
agreementId String 协议ID
startTime String 生效开始时间
endTime String 生效截止时间
rulesAttrList Array<PtlAgreementUndwrtRulesAttrLink> 并且规则属性(AND 逻辑)

请求体示例

{
    "id": "987654",
    "agreementId": "123456",
    "startTime": "2026-01-01",
    "endTime": "2026-12-31",
    "rulesAttrList": [
        {
            "attrCode": "VehicleAge",
            "min": "0",
            "max": "5",
            "operator": "1"
        }
    ]
}

修改逻辑:先删除该规则下的所有旧属性关联数据,再重新插入新的规则属性。

响应

{
    "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 关联费用列表

响应示例

{
    "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 接口返回结构一致。

响应示例

{
    "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

响应

{
    "code": 200,
    "data": "删除成功"
}

七、获取承保规则明细

接口路径GET /agreementRules/getRuleInfo

请求参数

参数 类型 必填 描述
ruleId String 承保规则ID

响应

返回该规则下所有属性关联明细列表。


八、批量复制规则因子【新增】

接口路径POST /agreementRules/rulesAttrBatchCopy

功能说明

将源承保规则下的某条或多条规则因子批量复制到某个或多个目标承保协议下:每个目标协议下 新增一条规则承接所选因子,并与该协议下已有规则共享 parentId(前端按组合并成一条展示);目标协议下没有规则时,新增的规则独立展示。

请求参数

字段名 类型 必填 描述
attrIds Array<String> 要复制的规则因子关联记录ID列表(来源于getRuleInfo返回明细的id字段),源规则由所选因子记录所属规则确定
targets Array<CopyTarget> 目标协议规则列表

CopyTarget 结构

字段名 类型 必填 描述
agreementId String 目标承保协议ID
ruleId String 归组锚定规则ID:复制出的新规则与该规则共享 parentId(同组展示);为空时取该协议下第一条规则作为锚定,协议下无规则则新规则独立展示

请求体示例

{
   "attrIds": [
      "1692100000000000001",
      "1692100000000000002"
   ],
   "targets": [
      {
         "agreementId": "123456",
         "ruleId": "987655"
      },
      {
         "agreementId": "123457"
      }
   ]
}

业务逻辑说明

  1. 源规则确定:源规则由 attrIds 所选因子记录所属规则反推;所选因子必须属于同一规则或同一批量规则组,否则返回失败
  2. 因子校验attrIds 中的ID必须全部有效(因子关联记录ID可通过getRuleInfo接口获取),存在无效ID时返回失败
  3. 锚定规则定位(用于确定归组)
    • 指定 ruleId:校验该规则存在且属于对应协议,作为归组锚定
    • 未指定 ruleId:取该协议下第一条规则(orderNum 最小)作为锚定
    • 协议下无规则:无锚定,新增规则独立展示
  4. 新增规则与归组(每个目标协议均新增一条)
    • 每个目标协议下新增一条规则承接所选因子(仅含本次所选 attrIds 因子),基础信息(生效时间、录入描述)沿用源规则, orderNum 取该协议下最大序号 + 1
    • 锚定规则存在时:新规则与锚定规则共享 parentId(前端按组合并展示);锚定规则自身无 parentId 时,生成新组ID并将锚定规则归入该组
    • 锚定规则不存在(协议下无规则)时:新规则 parentId 为空,独立展示
    • 源规则保持不变(不修改源规则的 parentId、不复制源规则本身,因此不会出现"目标下多出源规则")
  5. 因子复制:将所选因子直接插入新规则(新规则为全新记录,不覆盖任何已有因子);同一 attrCode 仅复制一条(批量组内不同子规则存在相同因子时去重)
  6. 复制完成后重新生成新规则的规则描述(ruleDescription

响应

{
   "code": 200,
   "msg": "批量复制规则因子成功"
}

变更总结

接口 变更点 变更内容
POST /rulesAdd 请求参数新增 rulesGroups(批量规则分组),支持一次创建多条规则
POST /rulesAdd 逻辑变更 批量模式下所有子规则共享同一 parentId,按分组顺序生成 orderNum
GET /rulesList 返回值新增 parentId(父规则ID)
GET /rulesGet 返回值新增 parentId(父规则ID)
GET /rulesListByParentId 新增接口 根据父ID查询子规则列表
POST /rulesAttrBatchCopy 新增接口 批量复制规则因子到目标协议:每个目标协议下新增一条规则(仅含所选因子)并与已有规则同组展示,源规则保持不变

业务逻辑说明

  • 单条模式:使用 rulesAttrList 创建一条规则,parentIdnull
  • 批量模式:使用 rulesGroups 一次创建多条规则,系统生成统一 parentId 关联同一批次的所有子规则
  • 批量模式与单条模式互斥,优先处理 rulesGroups
  • 通过 rulesListByParentId 接口可按 parentId 查询同批次的所有子规则
  • 修改接口仅支持对单条规则进行编辑
  • rulesAttrBatchCopy 支持跨协议批量复制规则因子;源规则由所选因子(attrIds )反推,所选因子须属于同一规则或同一规则组;每个目标协议下新增一条规则(仅含所选因子)并与该协议已有规则共享 parentId (同组合并展示),源规则保持不变

数据库变更说明

ptl_agreement_undwrt_rules 表需新增字段:

ALTER TABLE ptl_agreement_undwrt_rules ADD COLUMN parent_id VARCHAR(64) DEFAULT NULL COMMENT '父规则ID';