对接企查查进行工商查询

1. 需求描述:用户在CRM系统当中,能够查询该客户在企查查上的完整数据,并将查询后的结果保存到系统当中。2. 实施企业:旷视科技有限公司3. 实施方案:
  • 创建 自定义APL ,调用天眼查接口查询客户信息。
  • 创建 自定义组件 ,实现前端展示和业务交互。
  • 详情页上配置 UI按钮 ,通过 UI按钮打开自定义组件。
   结果如图所示:
4. 代码示例:4.1 自定义组件代码
源码.zip (15.6 KB, 下载次数: 17)您可以选择将组件放置您需要的且自定义组件所支持的任意位置,本示例以客户下自定义按钮的UIAction为例,配置方式并不唯一。在客户下创建一个名为【校验客户】的自定义按钮:
1、设置按钮类型为UI按钮。 2、基本信息中设置按钮名称为校验客户,API Name设置为button_47u9x__c(此处的button_47u9x__c并非固定值,您可以使用自己的API Name,如若您使用的是自己的API Name,请在自定义函数使用过程中留意API Name是否与您设置的API Name一致)。 3、选择按钮位置为详情页 4、添加用户点击按钮后触发的操作,配置如下:函数名称:Acc_ValidateButtonApi Name:func_0865b__c命名空间:按钮返回值类型:*UIAction绑定对象:客户描述:带出客户校验UI界面 函数名称:Acc_ValidateButton Api Name:func_0865b__c 命名空间:按钮 返回值类型:*UIAction 绑定对象:客户 描述:带出客户校验UI界面 5、自定义函数为:UIAction action = OpenDialogAction.build() { title = "校验客户" width = 800 component { apiName = 'validateAccountTwo__c'//validateAccountTwo__c为您上传的自定义组件的Api Name } } return action
4.2 自定义APL代码1、调用天眼查接口函数请注意,示例中调用天眼查的接口的Authorization为虚拟值,您可以到天眼查申请您需要的接口,使用您自己的Authorization。若果您只想体验也没有关系,我们准备了mock数据,您只需要在上传组件中上传mock版本的vue文件,我们设置了查询参数为纷享销客的数据,且您可以选择第一个数据进行回填,若您选择mock版本,可以忽略此步骤直接跳转到更新客户信息函数继续处理。根据关键字查询列表函数配置
配置自定义函数基本信息,配置如下:函数名称:Acc_TYCQueryApi Name:func_daWet__c命名空间:自定义控制器返回值类型:字典(Map)绑定对象:不绑定对象描述:天眼查列表查询函数 函数名称:Acc_TYCQuery Api Name:func_daWet__c 命名空间:自定义控制器 返回值类型:字典(Map) 绑定对象:不绑定对象 描述:天眼查列表查询函数 自定义函数设置参数 (1)类型:String ,名称:word 设置参数 (1)类型:String ,名称:wordString aname=word as String; String url="[https://open.api.tianyancha.com/services/open/search/2.0?word=](https://open.api.tianyancha.com/services/open/search/2.0?word=)"+aname; def(Boolean Error, HttpResult OutData, String ErrorMessage) = Fx.http.get(url,["Authorization":"1111aaaa-1111-1111-1111-111111111111"],2000,true,2); def rstData=OutData['content'] ; def items=rstData['result']['items'] Map result=["items":items] return result
查询详细信息函数配置
配置自定义函数基本信息,配置如下:函数名称:Acc_TYCDetailApi Name:func_k1ycD__c命名空间:自定义控制器返回值类型:字典(Map)绑定对象:不绑定对象描述:天眼查详情查询函数 函数名称:Acc_TYCDetail Api Name:func_k1ycD__c 命名空间:自定义控制器 返回值类型:字典(Map) 绑定对象:不绑定对象 描述:天眼查详情查询函数 自定义函数设置参数 (1)类型:String ,名称:name (2)类型:String ,名称:id 设置参数 (1)类型:String ,名称:name (2)类型:String ,名称:idString aname=name as String; String tid = id as String; String url="[https://open.api.tianyancha.com/services/open/ic/baseinfoV2/2.0?id="+tid+"&name=](https://open.api.tianyancha.com/services/open/ic/baseinfoV2/2.0?id="+tid+"&name=)"+aname; def(Boolean Error, HttpResult OutData, String ErrorMessage) = Fx.http.get(url,["Authorization":"11111111-1111-1111-1111-111111111111"],2000,true,2); if(OutData) { def rstData=OutData['content'] ; def items=rstData['result'] Map result=["result":items] return result }
2、调用天眼查接口函数函数配置
配置自定义函数基本信息,配置如下:函数名称:updateAccountInfoApi Name:updateAccount__c命名空间:自定义控制器返回值类型:字典(Map)绑定对象:不绑定对象描述:更新客户信息 函数名称:updateAccountInfo Api Name:updateAccount__c 命名空间:自定义控制器 返回值类型:字典(Map) 绑定对象:不绑定对象 描述:更新客户信息 自定义函数设置参数(1)类型:Map ,名称:update_data(2)类型:String ,名称:account_id 设置参数(1)类型:Map ,名称:update_data(2)类型:String ,名称:account_id
请注意,示例中调用天眼查的接口的Authorization为虚拟值,您可以到天眼查申请您需要的接口,使用您自己的Authorization
Map updateData = update_data as Map String CurrentID = account_id String AccountName = updateData["name"] def (Boolean receivableError,QueryResult receivableResult,String receivableErrorMessage) = Fx.object.find("AccountObj",[["name":AccountName]],2,0) if(receivableError) { [log.info](http://log.info)("查询失败,原因:" + receivableErrorMessage) }else { [log.info](http://log.info)('查询成功' + receivableResult) List receivableList = receivableResult.dataList Map receivable = receivableList[0] as Map if(receivableList.size() > 1 || (receivable && receivable['_id'] != CurrentID)) { return ["errorMessage":"已存在重名客户,无法更新。"] }else{ //增加敏感词检查 if(AccountName) { def ret = Fx.proxy.callAPI("dirtywords.megvii", null,["text":AccountName]) [log.info](http://log.info)(ret) if(!ret[0]){ def content = ret[1]['content'] as List [log.info](http://log.info)(content) if( content.size()>0 ) { def keyword = content[0]['keyword'] [log.info](http://log.info)('is dirty word '+keyword) String dirtyword="包含敏感词"+keyword; updateData.remove("name") [log.info](http://log.info)("更新参数"+updateData) def(Boolean error,Map data,String errorMessage) = Fx.object.update("AccountObj",CurrentID,updateData) return ["errorMessage":dirtyword] }else { [log.info](http://log.info)("更新参数"+updateData) def(Boolean error,Map data,String errorMessage) = Fx.object.update("AccountObj",CurrentID,updateData) if(error) { [log.info](http://log.info)("更新失败,原因:" + errorMessage) }else { [log.info](http://log.info)('更新成功' + data) return ["success":true] } } } } } }
2023-03-09
0 0