wdt接口优化
原有接口写法
<?phpnamespace app\services\wangdiantong;use app\services\BaseServices;
use think\facade\Env;
use think\facade\Log;class Client extends BaseServices
{protected $client = null;public function __construct(){$sid = Env::get('wdtsdk.SID', '');$appkey = Env::get('wdtsdk.appkey', '');$appsecret = Env::get('wdtsdk.appsecret', '');$service_url = Env::get('wdtsdk.service_url', '');$this->client = new WdtErpClient($service_url, $sid, $appkey, $appsecret);}/*** 应该是获取今年订单* sales.TradeQuery.querySelfOrderWithDetail(订单查询--仅返回自有平台、线下平台订单信息)* @param $srcTid 原始订单号,多个逗号分割,cp400922874531020800,3728585377656741632,cp414335838269709208,3725182429105097728* @param $pager* @return void*/public function querySelfOrderWithDetailBySrcTid($srcTid = [], $pager = 50){$parMap = new \stdClass();$parMap->src_tid = is_array($srcTid) ? implode(',', $srcTid) : $srcTid;try {$pager = new Pager($pager, 0, true);$data = $this->client->pageCall("sales.TradeQuery.querySelfOrderWithDetail", $pager, $parMap); // 分页方法$array = json_decode(json_encode($data), true);return ['code' => 200, 'data' => $array];} catch (\Exception $e) {Log::error('querySelfOrderWithDetailBySrcTid,失败原因:' . $e->getMessage() ." code: ". $e->getCode() . " line: " . $e->getLine());return ['code' => 400, 'msg' => $e->getMessage()];}}/*** 应该是往年订单* sales.TradeQuery.queryHistorySelfOrderWithDetail(历史订单查询--仅返回自有平台、线下平台订单)* @param $srcTid* @param $pager* @return array*/public function queryHistorySelfOrderWithDetail($srcTid = [], $pager = 50){$parMap = new \stdClass();$parMap->src_tid = is_array($srcTid) ? implode(',', $srcTid) : $srcTid;try {$pager = new Pager($pager, 0, true);$data = $this->client->pageCall("sales.TradeQuery.queryHistorySelfOrderWithDetail", $pager, $parMap); // 分页方法$array = json_decode(json_encode($data), true);return ['code' => 200, 'data' => $array];} catch (\Exception $e) {Log::error('queryHistorySelfOrderWithDetail,失败原因:' . $e->getMessage() ." code: ". $e->getCode() . " line: " . $e->getLine());return ['code' => 400, 'msg' => $e->getMessage()];}}/** goods.Goods.queryWithSpec(货品档案查询)* https://open.wangdian.cn/qjb/open/apidoc/doc?path=goods.Goods.queryWithSpec* */public function queryWithSpec($params, $pager = 20){try {$pager = new Pager($pager, 0, true);
// $data = $this->client->pageCall("goods.Goods.queryWithSpec", $pager, $params);$data = $this->client->pageCall("goods.Goods.queryWithSpec", $pager, $params);
// var_dump($data);$array = json_decode(json_encode($data), true);return ['code' => 200, 'data' => $array];} catch (\Exception $e) {Log::error('queryHistorySelfOrderWithDetail,失败原因:' . $e->getMessage() ." code: ". $e->getCode() . " line: " . $e->getLine());return ['code' => 400, 'msg' => $e->getMessage()];}}/** goods.ApiGoods.search(平台货品查询)* */public function queryGoodsSearch($params, $pager = 20){try {$pager = new Pager($pager, 0, true);
// $data = $this->client->pageCall("goods.Goods.queryWithSpec", $pager, $params);$data = $this->client->pageCall("goods.ApiGoods.search", $pager, $params);
// var_dump($data);$array = json_decode(json_encode($data), true);return ['code' => 200, 'data' => $array];} catch (\Exception $e) {Log::error('queryHistorySelfOrderWithDetail,失败原因:' . $e->getMessage() ." code: ". $e->getCode() . " line: " . $e->getLine());return ['code' => 400, 'msg' => $e->getMessage()];}}/** goods.Suite.search(组合装查询)* https://open.wangdian.cn/qjb/open/apidoc/doc?path=goods.Suite.search* */public function queryWithSuite($params, $pager = 5){try {$pager = new Pager($pager, 0, true);$data = $this->client->pageCall("goods.Suite.search", $pager, $params);$array = json_decode(json_encode($data), true);return ['code' => 200, 'data' => $array];} catch (\Exception $e) {Log::error('queryHistorySelfOrderWithDetail,失败原因:' . $e->getMessage() ." code: ". $e->getCode() . " line: " . $e->getLine());return ['code' => 400, 'msg' => $e->getMessage()];}}
}
提取公共请求地址,使用方法名自调用,提取公共请求逻辑,简化每个接口,只需传入不同的参数即可调用,修改和复用效率高,减少代码量
<?phpnamespace app\services\wangdiantong;use app\services\BaseServices;
use think\facade\Env;
use think\facade\Log;class Client extends BaseServices
{protected $client = null;private $apiMap = ['queryWithSpec' => 'goods.Goods.queryWithSpec','queryGoodsSearch' => 'goods.ApiGoods.search','queryWithSuite' => 'goods.Suite.search','queryHistorySelfOrderWithDetail' => 'sales.TradeQuery.queryHistorySelfOrderWithDetail','querySelfOrderWithDetail' => 'sales.TradeQuery.querySelfOrderWithDetail'];public function __construct(){$sid = Env::get('wdtsdk.SID', '');$appkey = Env::get('wdtsdk.appkey', '');$appsecret = Env::get('wdtsdk.appsecret', '');$service_url = Env::get('wdtsdk.service_url', '');$this->client = new WdtErpClient($service_url, $sid, $appkey, $appsecret);}/*** 应该是获取今年订单* sales.TradeQuery.querySelfOrderWithDetail(订单查询--仅返回自有平台、线下平台订单信息)* @param $srcTid 原始订单号,多个逗号分割,cp400922874531020800,3728585377656741632,cp414335838269709208,3725182429105097728* @param $pager* @return void*/public function querySelfOrderWithDetailBySrcTid($srcTid = [], $pager = 50){$parMap = new \stdClass();$parMap->src_tid = is_array($srcTid) ? implode(',', $srcTid) : $srcTid;return $this->callApi(__FUNCTION__, $parMap, $pager);}/*** 应该是往年订单* sales.TradeQuery.queryHistorySelfOrderWithDetail(历史订单查询--仅返回自有平台、线下平台订单)* @param $srcTid* @param $pager* @return array*/public function queryHistorySelfOrderWithDetail($srcTid = [], $pager = 50){$parMap = new \stdClass();$parMap->src_tid = is_array($srcTid) ? implode(',', $srcTid) : $srcTid;return $this->callApi(__FUNCTION__, $parMap, $pager);}/** goods.Goods.queryWithSpec(货品档案查询)* https://open.wangdian.cn/qjb/open/apidoc/doc?path=goods.Goods.queryWithSpec* */public function queryWithSpec($params, $pager = 20){return $this->callApi(__FUNCTION__, $params, $pager);}/** goods.ApiGoods.search(平台货品查询)* */public function queryGoodsSearch($params, $pager = 20){return $this->callApi(__FUNCTION__, $params, $pager);}/** goods.Suite.search(组合装查询)* https://open.wangdian.cn/qjb/open/apidoc/doc?path=goods.Suite.search* */public function queryWithSuite($params, $pager = 5){return $this->callApi(__FUNCTION__, $params, $pager);}private function callApi(string $method,array $params, int $pageSize, int $pageNo = 0): array {if (!isset($this->apiMap[$method])) {$errorMsg = "接口配置不存在";Log::error("{$errorMsg}");return ["code" => 400,"msg" => $errorMsg];}$apiPath = $this->apiMap[$method];try {$pager = new Pager($pageSize, $pageNo, true);$data = $this->client->pageCall($apiPath, $pager, $params);$array = is_object($data) ? json_decode(json_encode($data), true) : (array)$data;return ['code' => 200, 'data' => $array];} catch (\Exception $e) {Log::error('queryHistorySelfOrderWithDetail,失败原因:' . $e->getMessage() ." code: ". $e->getCode() . " line: " . $e->getLine());return ['code' => 400, 'msg' => $e->getMessage()];}}
}
