# 中介黑名单管理 API 文档 v2.0 ## 概述 中介黑名单管理模块提供个人和机构两类中介信息的增删改查、类型化模板下载和批量导入导出功能。 **基础路径**: `/ccdi/intermediary` **权限标识前缀**: `ccdi:intermediary` **技术栈**: Spring Boot 3 + MyBatis Plus + MySQL --- ## API 接口列表 ### 1. 查询中介黑名单列表 **接口地址**: `GET /ccdi/intermediary/list` **权限要求**: `ccdi:intermediary:list` **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |------------------|---------|----|--------------------| | name | String | 否 | 姓名/机构名称(模糊查询) | | certificateNo | String | 否 | 证件号/统一社会信用代码(精确查询) | | intermediaryType | String | 否 | 中介类型(1=个人, 2=机构) | | pageNum | Integer | 否 | 页码(默认1) | | pageSize | Integer | 否 | 每页数量(默认10) | **响应示例**: ```json { "code": 200, "msg": "操作成功", "rows": [ { "id": "abc123", "name": "张三", "certificateNo": "110101199001011234", "intermediaryType": "1", "personType": "中介", "company": "XX公司", "dataSource": "MANUAL", "createTime": "2026-02-04 10:00:00", "updateTime": "2026-02-05 14:30:00" } ], "total": 1 } ``` **响应字段说明**: | 字段名 | 类型 | 说明 | |------------------|--------|------------------------------------| | id | String | ID(个人为bizId,实体为socialCreditCode) | | name | String | 姓名/机构名称 | | certificateNo | String | 证件号/统一社会信用代码 | | intermediaryType | String | 中介类型(1=个人, 2=实体) | | personType | String | 人员类型/实体 | | company | String | 公司/机构名称 | | dataSource | String | 数据来源(MANUAL=手动, IMPORT=导入, API=接口) | | createTime | Date | 创建时间 | | updateTime | Date | 修改时间 | --- ### 2. 查询个人中介详情 **接口地址**: `GET /ccdi/intermediary/person/{bizId}` **权限要求**: `ccdi:intermediary:query` **路径参数**: | 参数名 | 类型 | 必填 | 说明 | |-------|--------|----|--------| | bizId | String | 是 | 人员业务ID | **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": { "bizId": "abc123xyz456", "intermediaryType": "1", "name": "张三", "personType": "房产中介", "personSubType": "本人", "gender": "M", "idType": "身份证", "personId": "110101199001011234", "mobile": "13800138000", "wechatNo": "zhangsan_wx", "contactAddress": "北京市朝阳区XX路XX号", "company": "XX房产中介公司", "position": "经纪人", "socialCreditCode": "91110000XXXXXXXXXX", "relatedNumId": "rel123", "relationType": "配偶", "dataSource": "MANUAL", "remark": "测试数据", "createTime": "2026-02-04 10:00:00" } } ``` **响应字段说明**: | 字段名 | 类型 | 说明 | |------------------|--------|--------------------| | bizId | String | 人员业务ID | | intermediaryType | String | 中介类型(固定为"1") | | name | String | 姓名 | | personType | String | 人员类型(房产中介、贷款中介等) | | personSubType | String | 人员子类型(本人、配偶、父亲等) | | gender | String | 性别(M=男, F=女, O=其他) | | idType | String | 证件类型(身份证、护照等) | | personId | String | 证件号码 | | mobile | String | 手机号码 | | wechatNo | String | 微信号 | | contactAddress | String | 联系地址 | | company | String | 所在公司 | | position | String | 职位 | | socialCreditCode | String | 企业统一信用码 | | relatedNumId | String | 关联人员ID | | relationType | String | 关联关系(配偶、父子、母女等) | | dataSource | String | 数据来源 | | remark | String | 备注 | | createTime | Date | 创建时间 | --- ### 3. 查询实体中介详情 **接口地址**: `GET /ccdi/intermediary/entity/{socialCreditCode}` **权限要求**: `ccdi:intermediary:query` **路径参数**: | 参数名 | 类型 | 必填 | 说明 | |------------------|--------|----|----------| | socialCreditCode | String | 是 | 统一社会信用代码 | **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": { "socialCreditCode": "91110000XXXXXXXXXX", "intermediaryType": "2", "enterpriseName": "XX中介公司", "enterpriseType": "有限责任公司", "enterpriseNature": "民企", "industryClass": "房地产", "industryName": "房地产业", "establishDate": "2020-01-01", "registerAddress": "北京市朝阳区XX路XX号", "legalRepresentative": "张三", "legalCertType": "身份证", "legalCertNo": "110101199001011234", "shareholder1": "李四", "shareholder2": "王五", "shareholder3": "赵六", "shareholder4": null, "shareholder5": null, "dataSource": "MANUAL", "remark": "测试数据", "createTime": "2026-02-04 10:00:00" } } ``` **响应字段说明**: | 字段名 | 类型 | 说明 | |---------------------|--------|--------------| | socialCreditCode | String | 统一社会信用代码 | | intermediaryType | String | 中介类型(固定为"2") | | enterpriseName | String | 机构名称 | | enterpriseType | String | 主体类型 | | enterpriseNature | String | 企业性质 | | industryClass | String | 行业分类 | | industryName | String | 所属行业 | | establishDate | Date | 成立日期 | | registerAddress | String | 注册地址 | | legalRepresentative | String | 法定代表人 | | legalCertType | String | 法定代表人证件类型 | | legalCertNo | String | 法定代表人证件号码 | | shareholder1-5 | String | 股东信息 | | dataSource | String | 数据来源 | | remark | String | 备注 | | createTime | Date | 创建时间 | --- ### 4. 新增个人中介 **接口地址**: `POST /ccdi/intermediary/person` **权限要求**: `ccdi:intermediary:add` **请求体**: ```json { "name": "张三", "personType": "房产中介", "personSubType": "本人", "gender": "M", "idType": "身份证", "personId": "110101199001011234", "mobile": "13800138000", "wechatNo": "zhangsan_wx", "contactAddress": "北京市朝阳区XX路XX号", "company": "XX房产中介公司", "position": "经纪人", "socialCreditCode": "91110000XXXXXXXXXX", "relatedNumId": "rel123", "relationType": "配偶", "remark": "测试数据" } ``` **字段说明**: | 字段名 | 类型 | 必填 | 说明 | |------------------|--------|----|--------------------| | name | String | 是 | 姓名(1-100字符) | | personId | String | 是 | 证件号码(不超过50字符) | | personType | String | 否 | 人员类型(枚举值,见下文) | | personSubType | String | 否 | 人员子类型(枚举值,见下文) | | gender | String | 否 | 性别(M=男, F=女, O=其他) | | idType | String | 否 | 证件类型(枚举值,见下文) | | mobile | String | 否 | 手机号码(不超过20字符) | | wechatNo | String | 否 | 微信号(不超过50字符) | | contactAddress | String | 否 | 联系地址(不超过200字符) | | company | String | 否 | 所在公司(不超过200字符) | | position | String | 否 | 职位(不超过100字符) | | socialCreditCode | String | 否 | 企业统一信用码(不超过50字符) | | relatedNumId | String | 否 | 关联人员ID(不超过50字符) | | relationType | String | 否 | 关联关系(枚举值,见下文) | | remark | String | 否 | 备注(不超过500字符) | **响应示例**: ```json { "code": 200, "msg": "操作成功" } ``` --- ### 5. 新增实体中介 **接口地址**: `POST /ccdi/intermediary/entity` **权限要求**: `ccdi:intermediary:add` **请求体**: ```json { "enterpriseName": "XX中介公司", "socialCreditCode": "91110000XXXXXXXXXX", "enterpriseType": "有限责任公司", "enterpriseNature": "民企", "industryClass": "房地产", "industryName": "房地产业", "establishDate": "2020-01-01", "registerAddress": "北京市朝阳区XX路XX号", "legalRepresentative": "张三", "legalCertType": "身份证", "legalCertNo": "110101199001011234", "shareholder1": "李四", "shareholder2": "王五", "shareholder3": "赵六", "shareholder4": null, "shareholder5": null, "remark": "测试数据" } ``` **字段说明**: | 字段名 | 类型 | 必填 | 说明 | |---------------------|--------|----|--------------------| | enterpriseName | String | 是 | 机构名称(1-200字符) | | socialCreditCode | String | 是 | 统一社会信用代码(不超过50字符) | | enterpriseType | String | 否 | 主体类型(枚举值,见下文) | | enterpriseNature | String | 否 | 企业性质(枚举值,见下文) | | industryClass | String | 否 | 行业分类(不超过100字符) | | industryName | String | 否 | 所属行业(不超过100字符) | | establishDate | Date | 否 | 成立日期(yyyy-MM-dd) | | registerAddress | String | 否 | 注册地址(不超过500字符) | | legalRepresentative | String | 否 | 法定代表人(不超过100字符) | | legalCertType | String | 否 | 法定代表人证件类型(枚举值) | | legalCertNo | String | 否 | 法定代表人证件号码(不超过50字符) | | shareholder1-5 | String | 否 | 股东信息(每个不超过100字符) | | remark | String | 否 | 备注(不超过500字符) | **响应示例**: ```json { "code": 200, "msg": "操作成功" } ``` --- ### 6. 修改个人中介 **接口地址**: `PUT /ccdi/intermediary/person` **权限要求**: `ccdi:intermediary:edit` **请求体**: ```json { "bizId": "abc123xyz456", "name": "张三", "personType": "房产中介", "personSubType": "本人", "gender": "M", "idType": "身份证", "personId": "110101199001011234", "mobile": "13800138000", "wechatNo": "zhangsan_wx", "contactAddress": "北京市朝阳区XX路XX号", "company": "XX房产中介公司", "position": "经纪人", "socialCreditCode": "91110000XXXXXXXXXX", "relatedNumId": "rel123", "relationType": "配偶", "remark": "测试数据" } ``` **字段说明**: 与新增接口相同,但 `bizId` 为必填项。 **响应示例**: ```json { "code": 200, "msg": "操作成功" } ``` --- ### 7. 修改实体中介 **接口地址**: `PUT /ccdi/intermediary/entity` **权限要求**: `ccdi:intermediary:edit` **请求体**: ```json { "socialCreditCode": "91110000XXXXXXXXXX", "enterpriseName": "XX中介公司", "enterpriseType": "有限责任公司", "enterpriseNature": "民企", "industryClass": "房地产", "industryName": "房地产业", "establishDate": "2020-01-01", "registerAddress": "北京市朝阳区XX路XX号", "legalRepresentative": "张三", "legalCertType": "身份证", "legalCertNo": "110101199001011234", "shareholder1": "李四", "shareholder2": "王五", "shareholder3": "赵六", "shareholder4": null, "shareholder5": null, "remark": "测试数据" } ``` **字段说明**: 与新增接口相同。 **响应示例**: ```json { "code": 200, "msg": "操作成功" } ``` --- ### 8. 删除中介 **接口地址**: `DELETE /ccdi/intermediary/{ids}` **权限要求**: `ccdi:intermediary:remove` **路径参数**: | 参数名 | 类型 | 必填 | 说明 | |-----|----------|----|------------------------------------| | ids | String[] | 是 | ID数组(个人为bizId,实体为socialCreditCode) | **示例**: `/ccdi/intermediary/abc123,91110000XXXXXXXXXX` **响应示例**: ```json { "code": 200, "msg": "操作成功" } ``` --- ### 9. 校验人员ID唯一性 **接口地址**: `GET /ccdi/intermediary/checkPersonIdUnique` **权限要求**: 无 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |----------|--------|----|----------------| | personId | String | 是 | 证件号码 | | bizId | String | 否 | 排除的人员ID(修改时使用) | **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": true } ``` **响应说明**: `true` 表示唯一,`false` 表示已存在。 --- ### 10. 校验统一社会信用代码唯一性 **接口地址**: `GET /ccdi/intermediary/checkSocialCreditCodeUnique` **权限要求**: 无 **请求参数**: | 参数名 | 类型 | 必填 | 说明 | |------------------|--------|----|--------------| | socialCreditCode | String | 是 | 统一社会信用代码 | | excludeId | String | 否 | 排除的ID(修改时使用) | **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": true } ``` **响应说明**: `true` 表示唯一,`false` 表示已存在。 --- ## 枚举接口 ### 获取人员类型选项 **接口地址**: `GET /ccdi/enum/indivType` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "房产中介", "label": "房产中介" }, { "value": "贷款中介", "label": "贷款中介" }, { "value": "职业背债人", "label": "职业背债人" }, { "value": "担保中介", "label": "担保中介" }, { "value": "评估中介", "label": "评估中介" } ] } ``` --- ### 获取人员子类型选项 **接口地址**: `GET /ccdi/enum/indivSubType` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "本人", "label": "本人" }, { "value": "配偶", "label": "配偶" }, { "value": "父亲", "label": "父亲" }, { "value": "母亲", "label": "母亲" }, { "value": "兄弟", "label": "兄弟" }, { "value": "姐妹", "label": "姐妹" }, { "value": "子女", "label": "子女" } ] } ``` --- ### 获取性别选项 **接口地址**: `GET /ccdi/enum/gender` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "M", "label": "男" }, { "value": "F", "label": "女" }, { "value": "O", "label": "其他" } ] } ``` --- ### 获取证件类型选项 **接口地址**: `GET /ccdi/enum/certType` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "身份证", "label": "身份证" }, { "value": "护照", "label": "护照" }, { "value": "港澳通行证", "label": "港澳通行证" }, { "value": "台湾通行证", "label": "台湾通行证" } ] } ``` --- ### 获取关联关系选项 **接口地址**: `GET /ccdi/enum/relationType` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "配偶", "label": "配偶" }, { "value": "父子", "label": "父子" }, { "value": "母女", "label": "母女" }, { "value": "兄弟", "label": "兄弟" }, { "value": "姐妹", "label": "姐妹" }, { "value": "亲属", "label": "亲属" }, { "value": "朋友", "label": "朋友" }, { "value": "同事", "label": "同事" } ] } ``` --- ### 获取主体类型选项 **接口地址**: `GET /ccdi/enum/corpType` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "有限责任公司", "label": "有限责任公司" }, { "value": "股份有限公司", "label": "股份有限公司" }, { "value": "个体工商户", "label": "个体工商户" }, { "value": "合伙企业", "label": "合伙企业" }, { "value": "个人独资企业", "label": "个人独资企业" } ] } ``` --- ### 获取企业性质选项 **接口地址**: `GET /ccdi/enum/corpNature` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "国企", "label": "国企" }, { "value": "民企", "label": "民企" }, { "value": "外企", "label": "外企" }, { "value": "合资", "label": "合资" } ] } ``` --- ### 获取数据来源选项 **接口地址**: `GET /ccdi/enum/dataSource` **权限要求**: 无 **响应示例**: ```json { "code": 200, "msg": "操作成功", "data": [ { "value": "MANUAL", "label": "手动录入" }, { "value": "SYSTEM", "label": "系统同步" }, { "value": "IMPORT", "label": "批量导入" }, { "value": "API", "label": "接口获取" } ] } ``` --- ## 错误码说明 | HTTP状态码 | 错误码 | 说明 | |---------|-----|----------| | 200 | 200 | 操作成功 | | 401 | 401 | 未授权,请先登录 | | 403 | 403 | 无权限访问 | | 500 | 500 | 服务器内部错误 | ## 业务错误信息 | 错误信息 | 说明 | |----------------|--------------| | 姓名不能为空 | 新增/修改时姓名为空 | | 证件号码不能为空 | 新增时证件号码为空 | | 该证件号已存在 | 新增/导入时证件号重复 | | 该统一社会信用代码已存在 | 新增/导入时信用代码重复 | | 姓名长度不能超过100个字符 | 姓名超长 | | 证件号长度不能超过50个字符 | 证件号超长 | ## 测试账号 - **用户名**: `admin` - **密码**: `admin123` **获取Token**: 调用 `POST /login/test` 接口获取Token,后续请求在 Header 中添加: ``` Authorization: Bearer {token} ``` ## 更新日志 | 版本 | 日期 | 说明 | |-------|------------|---------------------------| | 2.0.0 | 2026-02-05 | 统一字段命名,使用接口枚举,更新文档与实际代码一致 | | 1.3.0 | 2026-01-29 | 新增接口分离:个人/机构专用新增接口 | | 1.2.0 | 2026-01-29 | 修改接口分离:个人/机构专用修改接口 | | 1.1.0 | 2026-01-29 | 添加字典下拉框功能 | | 1.0.0 | 2026-01-29 | 初始版本 | ## 注意事项 1. **中介类型字段**: - 个人中介:`intermediaryType = "1"` - 实体中介:`intermediaryType = "2"` 2. **枚举值使用**: - 所有下拉选项字段应使用枚举接口返回的 `value` 值 - 不要硬编码或使用字典表的 `dictValue` 3. **数据来源字段**: - 手动录入:`MANUAL` - 系统同步:`SYSTEM` - 批量导入:`IMPORT` - 接口获取:`API` 4. **分页排序**: - 列表查询默认按 `updateTime` 降序排列 - 使用 MyBatis Plus 分页插件 5. **ID字段**: - 个人中介使用 `bizId` 作为唯一标识 - 实体中介使用 `socialCreditCode` 作为唯一标识 6. **批量操作**: - 删除接口支持同时删除个人和实体中介 - 根据ID长度自动判断类型(个人ID较长)