源平台查询适配器:PHP实现数据查询与处理
源平台查询适配器
源平台查询适配器负责与源平台的数据查询接口进行交互,主要包括三个方法:dispatch
、handleResponse
和connect
。
调度方法(dispatch)
调度方法用于初始化查询,生成请求参数,并将请求加入队列。
<?php
namespace Adapter\PlatformName;
use Domain\Datahub\Instance\Adapter\Adapter;
use Adapter\PlatformName\SDK\PlatformNameSDK;
class PlatformNameAdapter extends Adapter {
const DIRECTION = 'source';
public function dispatch() {
$this->setVariable('PAGINATION_START_PAGE', 1);
$request = $this->generateRequestParams();
$jobId = $this->getAsynSourceJobStorage()->insertOne($this->metaData['api'], $request);
$this->asynSourceJob(0, $jobId);
return ['status' => true, 'content' => $jobId];
}
}
处理响应方法(handleResponse)
处理响应方法用于处理源平台返回的数据,包括检查响应状态、解析数据并存储,以及处理分页逻辑。
public function handleResponse(array $response, $jobId = null) {
if ($response['code'] != 200) {
return $this->handleError($response, $jobId);
}
$listKey = !empty($this->metaData['otherResponse']) ?
$this->metaData['otherResponse'][0]['value'] :
'rows';
foreach ($response['data'][$listKey] as $obj) {
$id = $this->getDataKeyValue($obj, $this->metaData['id']);
$number = $this->getDataKeyValue($obj, $this->metaData['number']);
// 插入数据到存储
this.getDataStorage()->insertOne($id, number, obj, metaData[idCheck], jobId);
}
if ($response['data']['page'] * response[data][size] < response[data][total]) {
invokeRequest[page] += 1;
nid = getAsynSourceJobStorage()->insertOne(metaData[api], invokeRequest);
asynSourceJob(5, nid);
}
return true;
}
连接方法(connect)
连接方法用于实例化并连接到SDK,确保与源平台的通信。
public function connect() {
if ($this->SDK != null) return;
connector = ConnectorRepository::findOne(strategy[direction]->connector_id);
$env = 'env_' . connector.env . '_params';
$this.SDK=new PlatformNameSDK(connector->$env, connector.env);
return this.SDK.connection();
}
通过这种方式,代码变得更加清晰、简洁,并且易于理解。同时,确保了所有必要的功能和逻辑都得以保留和执行。