高级搜索系列API使用

前言

该系列接口共分为:

1、获取搜索展示的元数据(注:分为新老两个元数据接口)

2、获取搜索元数据中需要动态加载的选择框内容项

3、获取搜索或滚动结果中对应字段的显示字段描述

5、高级搜索接口

6、开始滚动获取数据

7、滚动获取数据

所有接口请联系客户经理配置权限

该系列接口建议使用POST请求,示例如下

curl -X POST -H "xlbak: 你的AK" -H "Content-Type: application/json" --data '{"req":"组装好的json字符串"}' "https://open.xiaolanben.com/custom/list/listzxgjss"

将接口文档所有的必须参数组装成json,以POST body方式提交请求

详见 OPEN API接入指南

元数据接口

新接口详见 https://open.xiaolanben.com/apidoc/list.html#listgjssysjnew

老接口详见 https://open.xiaolanben.com/apidoc/list.html#listgjssysj

建议新接入使用新接口,在搜索条件上做了一次分组,与老接口在元数据上多了一层subGroups,如下图:

该接口是用于在WEB端展示搜索条件的组装渲染使用,一般条件都不会发生变化,建议缓存1天以上,如下图:

响应体信息结构

{
  "search": {
    "advancedSearchGroupMetadata": "这个字符串是元数据信息结构JSON串,需要反序列化为下面的结构"
  }
}

新元数据信息结构

[
  {
    "groupCode": "gsxx",
    "groupDesc": "工商信息",
    "subGroups": [  //与老的相比,多了这一层
      {
        "groupDesc": "基础信息",   //与老的相比,多了这一层
        "metadataList": [   //与老的相比,多了这一层
          {
            "id": "field1",
            "field": "name",
            "fieldName": "企业名称",
            "renderType": "input",
            "operate": [
              "contain",
              "containNot"
            ],
            "renderData": []
          }
        ]
      },
      {
        "groupDesc": "企业规模",
        "metadataList": [
          {
            "id": "field134",
            "field": "ss_num",
            "fieldName": "参保人数",
            "renderType": "valueRange",
            "unit": "人",
            "renderData": []
          }
        ]
      }
    ]
  }
]

老元数据信息结构

[
  {
    "groupCode": "rm",
    "groupDesc": "热门",
    "searchFieldMetadataList": [
      {
        "id": "field1",
        "field": "name",
        "fieldName": "企业名称",
        "renderType": "input",
        "operate": [
          "contain",
          "containNot"
        ],
        "unit": null,
        "renderData": [],
        "fieldGroup": null,
        "multiCascaderType": null
      },
      {
        "id": "field3",
        "field": "q_tags",
        "fieldName": "经营状态",
        "renderType": "multiSelect",
        "operate": [
          "contain",
          "containNot"
        ],
        "unit": null,
        "renderData": [
          {
            "value": "经营状态_迁出",
            "label": "迁出",
            "selected": null,
            "isCustomRange": null,
            "children": null
          }
        ],
        "fieldGroup": null,
        "multiCascaderType": "zzzs"
      }
    ]
  }
]

信息结构说明

条件分组

groupCode: 分组的代码

groupDesc: 分组的名称

searchFieldMetadataList: 该分组下有的条件字段元数据列表, 需要注意的是,同一个条件字段,可能会在不同的条件组里都存在

条件字段

id: 该条件的标识ID,搜索时不需要回传

field: 条件搜索对应的字段标识,搜索时需要回传

fieldName: 条件字段的名称,搜索时不需要回传

renderType: 页面展示的格式,分为以下几个种

类型样式备注组装value值示例
input输入框样式用于文本字段的包含搜索,多个时以英文逗号分割;搜索时上行用户输入文本,包含任意一个则为符合条件“value”:”天下文章,英雄传”
simpleSelect或
dateSelectPicker
单选框样式单选框呈现内容来自renderData字段,label用于显示,value用于回传,以单值方式回传“value”:”是独角兽企业”
multiSelect多选框样式多选框呈现内容来自renderData字段,label用于显示,value用于回传,以数据方式回传“value”:[“员工_10人以下”,”员工_20人以上”]
valueRange值范围格式两个值范围的输入框,上行时转换为{min: 第一个输入框的值, max: 第二个输入框的值}“value”:{min: 3, max: 10}
dateRangePicker日期范围选框呈现日期为从yyyy-MM-dd至yyyy-MM-dd的选择框,上行时转换为{“start”:开始时间戳,”end”:结束时间戳}“value”:{“start”:1667232000000,”end”:1667491200000}
multiCascader多级级联样式如该字段有包含multiCascaderType:
multiCascaderType=areas,则该级联元数据为https://h5.u51.com/web.u51.com/storage/static-configs/areas.json
其它包含multiCascaderType的,则该级联元数据为https://h5.u51.com/web.u51.com/storage/static-configs/{multiCascaderType}.json
需要注意的是areas与其它的级联结构不完全一至
如果该字段没有包含multiCascaderType的,则读取该字段下的renderData呈现
搜索时,以两层数组的方式回传结果
“value”:[[“浙江”,”杭州市”,”西湖区”],[“广东”],[“山东”,”济南市”]]
locationSelect地理位置框在根据baiduAPI,搜索定位中心点,然后选择距离范围,上行时转换为(米与定位点)。“value”:{“distance”: 3000,”name”: “杭州东站”,”location”: {“lat”: 30.297149,”lng”: 120.219396}}
fuzzy输入下拉选择框模式该下拉选项需要根据field值调用接口2,获取动态下拉的内容;
如果觉得开发复杂,也可以用输入框样式代替

operate: 当为输入框样式或多选框样式时,用于显示 『包含任一』或『都不包含

unit: 当是值范围样式时,用于在样式后面呈现单位,如 ____至____元,的【元】

renderData: 显示单选、多选、级联框内的样式,注:级联样式时,如有multiCascaderType,则该字段无效

fieldGroup: 字段条件组,当该字段有值时,同一个组的条件可以作为父条件的附加条件呈现

multiCascaderType: 当页面呈现类型为multiCascader时,如果有该值存在,参考 多级级联样式

组装搜索条件的信息结构

{
  "sortKey": "",
  "ascSort": false,
  "pageIndex": 1,
  "pageSize": 10,
  "query": {
    "logic": "AND",
    "children": [
      {
        "type": "searchRule",
        "searchRule": {
          "field": "q_tags",
          "renderType": "simpleSelect",
          "operate": "",
          "value": "是独角兽企业"
        }
      },
      {
        "type": "searchGroup",
        "searchGroup": {
          "logic": "OR",
          "children": [
            {
              "type": "searchRule",
              "searchRule": {
                "field": "name",
                "renderType": "input",
                "operate": "contain",
                "value": "天下文章,英雄传"
              }
            },
            {
              "type": "searchRule",
              "searchRule": {
                "field": "zhaopin_1y.date_at",
                "renderType": "dateRangePicker",
                "operate": "",
                "fieldGroup": "zhaopin_1y",
                "value": {
                  "start": 1667232000000,
                  "end": 1667491200000
                },
                "additionSearchRules": [
                  {
                    "field": "zhaopin_1y.src",
                    "renderType": "multiSelect",
                    "operate": "contain",
                    "fieldGroup": "zhaopin_1y",
                    "value": [
                      "智联招聘",
                      "前程无忧"
                    ]
                  }
                ]
              }
            },
            {
              "type": "searchRule",
              "searchRule": {
                "field": "esage",
                "renderType": "valueRange",
                "operate": "",
                "fieldGroup": null,
                "value": {
                  "min": 1,
                  "max": 3
                }
              }
            }
          ]
        }
      }
    ]
  }
}

信息结构说明

外层结构

sortKey: 排序的字段,主要参考数据列元数据接口下行的数据; 如果不传,则表示后台使用智能排序

ascSort: 如果为false,则为倒序;如果为true则为升序排序

pageIndex: 页面起始索引号,从1开始

pageSize: 每页返回记录大小,最小1,最大100; 注意:pageIndex*pageSize不得超过1万,否则系统不会有响应

query: 高级搜索条件

高级搜索条件

logic: 当前层多条件之间的逻辑关系,AND是表示多条件满足;OR满足一条即可

children: 当前层的条件数组

高级搜索条件–嵌套分组条件

type: 固定为searchGroup; 表明当前条件是一个分组条件

searchGroup: 搜索条件组,内部为嵌套的一层条件;系统仅支持下一层嵌套

高级搜索条件–规则条件(字段条件)

type: 固定为searchRule;表明是字段规则条件

searchRule: 指定的字段搜索条件

field: 搜索元数据字段中的field值直接回传

renderType: 搜索元数据字段中的renderType的值直接回传

operate: 如果为多选、输入框样式时,必须回传元数据字段中的operate其中的一个值,注意:不能以数组方式回传

fieldGroup: 搜索元数据字段中的fieldGroup的值直接回传

value: 根据字段的renderType不同,组装回传的值;输入框/单选的直接回传具体的值,如果是多选回传的是值数组,…

additionSearchRules: 附加条件组,仅支持上一层存在fieldGroup时,才歌词附加条件,且附加条件组中的字段的fieldGroup必须与上一层相同

— processor 处理value所需要用到的处理器。如果下行的有条件有该值的,则需要同步回传

获取元数据中动态加载的下拉项

接口详见https://open.xiaolanben.com/apidoc/list.html#listEnumList

如【业务标签】该条件时,标签下拉项需要根据输入的条件动态从服务端拉取加载

当用户在输入框输入【经营】时,则需要调用该接口获取下拉的内容项

入参说明

属性描述备注
type动态获取数据的类型,取自字段条件中的field如业务标签:ent_tags
keyword用户输入的字如:经营

响应体信息结构

{
  "search": {
    "advancedSearchEnumList": [
      "每一条记录均是一个选项"
    ]
  }
}

获取搜索或滚动结果中对应字段的显示字段描述

接口详见https://open.xiaolanben.com/apidoc/list.html#listgjsszdms

该接口用于描述搜索或滚动响应的数据列表中的字段的中文描述及是否支持排序等信息,该接口一般条件都不会发生变化,建议缓存1天以上

响应体信息结构

{
  search: {
    advancedSearchColumns: '{"columns":[{"field":"name","fieldName":"企业名称","mandatory":true,"visible":true,"sortable":false,"appSortable":null,"dataType":null,"format":null,"defaultZero":null}]}'
  }
}

在colums中的每条记录,均对应下方的元数据信息结构

信息结构

field:对应搜索响应列表中的字段名

fieldName:文书人字段的中文名

mandatory: 如果为true, 建议显示时固定在表格的右边

visible: 暂无用

sortable: 如果为true,则表示支持以该的field做排序

appSortable: 暂无用

dataType: 数据类型:number:数值 text:文本 date:日期

format: 格式化类型

defaultZero:暂无用

高级搜索接口

接口详见:https://open.xiaolanben.com/apidoc/list.html#listzxgjss

注意:该接口需要使用POST方式请求

该接口是根据接口1中获取的元数据,用户组装生成请求体,获取最终的搜索结果

响应体信息结构

{
  search: {
    advancedSearch: '{"pageIndex":1,"pageSize":20,"totalCount":2,"data":[{"esdate":"2012-08-02","view_map.is_patent":"有专利","hlText":null,"eid":"qfef52d62a2c2f1347a52e47a5fc01d97","kp_num":"1人","view_map.round_stage":"IPO","view_map.is_trademark":"有商标信息","contact_way_num":"7个","invest_amount":"15.98亿","areas":"浙江-杭州市-西湖区","view_map.website":"www.51zhangdan.cc","ac_conam":"5.0亿","view_map.reg_cap_cur_name":"人民币","reg_group_mem_num":"77家","esage":"10","risk_num":"36","view_map.is_alter_item":"有变更信息","view_map.industryphy_name":"科学研究和技术服务业","credit_code":"913301065995741739","logo":"https://51nbimg.u51.com/798b7cd8469240d8ab2cfe2aa46ea249.png","ss_num":"8人","brand":"51信用卡","view_map.is_risk":"有风险信息","view_map.is_zuoji":"有固话","frname":"孙海涛","reg_area":"浙江省杭州市西湖区西溪谷商务中心22号楼15层1501室","view_map.is_branch":"无分支机构","view_map.is_douyin":"有抖音号","view_map.relation_contact_cnt":"8个","listing_date_latest":"--","station_num_1m":"--","opscope":"服务:计算机软硬件、网络技术的技术开发、技术服务、成果转让,承接计算机网络工程(涉及资质证凭证经营),资产管理、实业投资、投资管理、投资咨询(以上项目除证劵、期货,未经金融等监管部门批准,不得从事向公众融资存款、融资担保、代客理财等金融服务),第二类增值电信业务中的信息服务业务(不含固定网电话信息服务)[仅限浙江省(互联网信息服务不含新闻、出版、教育、医疗保健、药品和医疗器械、文化、广播电影电视节目、电子公告内容),第二类增值电信业务的信息服务业务(不含固定网电话信息服务和互联网信息服务,仅限全国),经营性互联网文化活动。(依法须经批准的项目,经相关部门批准后方可开展经营活动)","capStrengthStrV2":"104.8亿元","view_map.cap_type_name":"私营企业","view_map.is_nianbao":"有年报信息","station_p_num_1m":"--","view_map.stock_types":"--","reg_group_ss_num":"417人","regcap":"5.0亿","view_map.is_xzxk":"无行政许可","name":"杭州恩牛网络技术有限公司","view_map.stock_status":"未上市","view_map.reg_group_name":"51信用卡","view_map.is_app":"有app","view_map.is_wechat":"有微信公众号","view_map.is_mobile":"有手机号码","view_map.is_email":"有联系邮箱","view_map.entstatus_name":"在营"},{"esdate":"2014-11-26","view_map.is_patent":"无专利","hlText":null,"eid":"qbe081e34ec507fc02a18b7afb678f2d6","kp_num":"--","view_map.round_stage":"其他","view_map.is_trademark":"无商标信息","contact_way_num":"2个","invest_amount":"--","areas":"浙江-杭州市-西湖区","view_map.website":"enniubank.com","ac_conam":"2000万","view_map.reg_cap_cur_name":"人民币","reg_group_mem_num":"77家","esage":"8","risk_num":"9","view_map.is_alter_item":"有变更信息","view_map.industryphy_name":"租赁和商务服务业","credit_code":"913301063218886021","logo":null,"ss_num":"21人","brand":"","view_map.is_risk":"有风险信息","view_map.is_zuoji":"有固话","frname":"孙海涛","reg_area":"杭州市西湖区西溪谷商务中心22号楼14层1404室","view_map.is_branch":"无分支机构","view_map.is_douyin":"无抖音号","view_map.relation_contact_cnt":"4个","listing_date_latest":"--","station_num_1m":"--","opscope":"服务:互联网金融服务(由国家金融监管部门核准的金融业务除外),接受金融机构委托从事金融信息技术外包,金融业务流程外包,金融知识流程外包,实业投资、投资管理、投资咨询(以上项目除证券、期货,未经金融等监管部门批准,不得从事向公众融资存款、融资担保、代客户理财等金融服务),商务信息咨询(除中介),企业管理咨询,网站设计,承接网络工程(涉及资质证的凭证经营),计算机软硬件,信息技术,计算机领域内技术开发、技术咨询、技术服务、成果转让,计算机系统集成。","capStrengthStrV2":"--","view_map.cap_type_name":"私营企业","view_map.is_nianbao":"有年报信息","station_p_num_1m":"--","view_map.stock_types":"--","reg_group_ss_num":"417人","regcap":"2000万","view_map.is_xzxk":"无行政许可","name":"杭州恩牛互联网金融服务有限公司","view_map.stock_status":"未上市","view_map.reg_group_name":"51信用卡","view_map.is_app":"无app","view_map.is_wechat":"无微信公众号","view_map.is_mobile":"无手机号码","view_map.is_email":"无联系邮箱","view_map.entstatus_name":"注销"}],"extData":{"keywords":[],"tookInMillis":13},"searchKey":"1c01fc373d7beef54f05d1d15fc24cdf"}'
  }
}

信息结构

pageIndex: 请求的页码

pageSize: 请求的页面大小

totalCount: 搜索总命中记录数

data: 详细命中的企业信息,当中每条记录的字段均可以使用上方字段描述接口获取

extData: 扩展数据,供参考

searchKey: 搜索的标识,暂无用

开始滚动获取数据

该接口需要单独联系管理员开通

注意:该接口需要使用POST方式请求,每次不同的搜索条件滚动时,先要调用该接口,获取到滚动ID值,然后去调用继续滚动的接口持续获取数据

该接口是根据接口1中获取的元数据,用户组装生成请求体,获取滚动的数据及滚动ID

响应体信息结构

{
  search: {
    beginScrollEnt4G: '{"left":[{"esdate":"2012-08-02","view_map.is_patent":"有专利"}],"right":"滚动ID"}'
  }
}

信息结构

left: 详细命中的企业信息,当中每条记录的字段均可以使用上方字段描述接口获取

right: 每次开始滚动请求生成的唯一ID,如果要继续翻页获取数据,则需要将该值带入下方的【滚动获取数据接口】

滚动获取数据接口

该接口需要单独联系管理员开通

入参说明

scrollId: 滚动ID,从【开始滚动获取数据】接口获取

响应体信息结构

同【开始滚动获取数据】接口响应体一至