Commit 54f5d43f authored by 赵鹏's avatar 赵鹏

Merge remote-tracking branch 'origin/develop' into pull_fulfillmentOrders

parents b7d052df dd86c54d
...@@ -23,24 +23,37 @@ class ExceptionLogProducer extends ProducerMessage ...@@ -23,24 +23,37 @@ class ExceptionLogProducer extends ProducerMessage
} catch (HttpResponseException $e) { } catch (HttpResponseException $e) {
put_log('获取操作人失败; ' . $e->getMessage(), 'ExceptionLogProducer.log'); put_log('获取操作人失败; ' . $e->getMessage(), 'ExceptionLogProducer.log');
} }
// 排除依赖包文件和运行缓存文件 // 获取trace中真实文件和行数
put_log("file: {$data['file']}", 'ExceptionLogProducerEcho.log'); if (!empty($data['trace'])) {
if (strpos($data['file'], '/vendor/') === false && strpos($data['file'], '/runtime/') === false) { preg_match('/(\/var\/www\/html\/.+?\/app\/.+?\.php)(?=\()/', $data['trace'], $matchFiles);
if (!empty($matchFiles[0])) {
$data['file'] = $matchFiles[0];
$file = str_replace('/', '\/', $matchFiles[0]);
$file = str_replace('.', '\.', $file);
$pattern = '/(?<=' . $file . '\()[0-9]+(?=\))/';
preg_match($pattern, $data['trace'], $matchLines);
if (!empty($matchLines[0])) {
$data['line'] = $matchLines[0];
}
}
}
if (!empty($data['file'])) {
// 只对项目app文件夹下的错误获取编码人
preg_match('/(\/var\/www\/html\/.+?\/app\/)/', $data['file'], $matchPaths);
if (!empty($matchPaths[0])) {
try { try {
put_log("git: git blame -L {$data['line']},{$data['line']} {$data['file']}", 'ExceptionLogProducerEcho.log'); exec("cd {$matchPaths[0]} && git blame -L {$data['line']},{$data['line']} {$data['file']}", $output);
exec("git blame -L {$data['line']},{$data['line']} {$data['file']}", $output);
put_log("output: $output", 'ExceptionLogProducerEcho.log');
if (!empty($output[0]) && is_string($output[0])) { if (!empty($output[0]) && is_string($output[0])) {
preg_match('/(?<=\()[^ ]+/', $output[0], $matches); preg_match('/(?<=\()[^ ]+/', $output[0], $matchCoders);
put_log("matches: $matches", 'ExceptionLogProducerEcho.log'); if (!empty($matchCoders[0])) {
if (!empty($matches[0])) { $data['coder'] = $matchCoders[0];
$data['coder'] = $matches[0];
} }
} }
} catch (Exception $e) { } catch (Exception $e) {
put_log('获取编码人失败; ' . $e->getMessage(), 'ExceptionLogProducer.log'); put_log('获取编码人失败; ' . $e->getMessage(), 'ExceptionLogProducer.log');
} }
} }
}
$this->payload = $data; $this->payload = $data;
} }
......
<?php
namespace Meibuyu\Micro\Service\Interfaces\File;
interface FileServiceInterface
{
/**
* @param string $type 类型编码 0001
* @param integer $number 生成条形码数量 100
* @return mixed
*/
public function generateBarCode($type, $number);
}
\ No newline at end of file
...@@ -86,4 +86,13 @@ interface ShopifyServiceInterface ...@@ -86,4 +86,13 @@ interface ShopifyServiceInterface
*/ */
public function updateFulfillmentTracking($fulfillmentId, $params, $shopifySiteId); public function updateFulfillmentTracking($fulfillmentId, $params, $shopifySiteId);
/**
* 通过id数组获取shopify的location数据
* @param $ids
* @param string[] $columns
* @return array 默认keyBy('id')
* @author zero
*/
public function getLocationsByIds($ids, $columns = ['*']);
} }
...@@ -26,4 +26,12 @@ interface PurchaseDoneServiceInterface ...@@ -26,4 +26,12 @@ interface PurchaseDoneServiceInterface
* @return mixed * @return mixed
*/ */
public function productStandard($data); public function productStandard($data);
/**
* 通过子订单编号查询状态
* @param array $orderIds 子订单编号 ['3333444','12222']
* @return mixed
*/
public function getOrderStatus($orderIds);
} }
\ No newline at end of file
...@@ -9,7 +9,8 @@ ...@@ -9,7 +9,8 @@
namespace Meibuyu\Micro\Shopify\lib; namespace Meibuyu\Micro\Shopify\lib;
use Exception; use Exception;
use Meibuyu\Micro\Shopify\Tools\HttpRequestJson; use Meibuyu\Micro\Shopify\tools\CurlHttpRequestJson;
use Meibuyu\Micro\Shopify\tools\HttpRequestJson;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
abstract class AbstractShopify abstract class AbstractShopify
...@@ -45,7 +46,7 @@ abstract class AbstractShopify ...@@ -45,7 +46,7 @@ abstract class AbstractShopify
private $config; private $config;
/** /**
* @var HttpRequestJson * @var HttpRequestJson|CurlHttpRequestJson
*/ */
private $httpRequestJson; private $httpRequestJson;
...@@ -62,7 +63,7 @@ abstract class AbstractShopify ...@@ -62,7 +63,7 @@ abstract class AbstractShopify
$this->id = $id; $this->id = $id;
$this->pluralizeKey = $this->pluralizeKey ?: $this->resourceKey . 's'; $this->pluralizeKey = $this->pluralizeKey ?: $this->resourceKey . 's';
$this->resourceUrl = ($parentResourceUrl ? "$parentResourceUrl/" : $config['api_url']) . $this->pluralizeKey . ($this->id ? "/{$this->id}" : ''); $this->resourceUrl = ($parentResourceUrl ? "$parentResourceUrl/" : $config['api_url']) . $this->pluralizeKey . ($this->id ? "/{$this->id}" : '');
$this->httpRequestJson = make(HttpRequestJson::class); $this->httpRequestJson = make(CurlHttpRequestJson::class);
if (isset($config['api_password'])) { if (isset($config['api_password'])) {
$this->httpHeaders['X-Shopify-Access-Token'] = $config['api_password']; $this->httpHeaders['X-Shopify-Access-Token'] = $config['api_password'];
} elseif (!isset($config['api_password'])) { } elseif (!isset($config['api_password'])) {
...@@ -158,20 +159,20 @@ abstract class AbstractShopify ...@@ -158,20 +159,20 @@ abstract class AbstractShopify
return $resourceUrl . ($customAction ? "/$customAction" : '') . '.json' . (!empty($urlParams) ? '?' . http_build_query($urlParams) : ''); return $resourceUrl . ($customAction ? "/$customAction" : '') . '.json' . (!empty($urlParams) ? '?' . http_build_query($urlParams) : '');
} }
// /** /**
// * 获取数量 * 获取数量
// * @param array $urlParams * @param array $urlParams
// * @return mixed * @return mixed
// * @throws Exception * @throws Exception
// */ */
// public function count($urlParams = []) public function count($urlParams = [])
// { {
// if (!$this->countEnabled) { if (!$this->countEnabled) {
// throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); throw new Exception("当前类{$this->getResourceName()}不支持count()方法");
// } }
// $url = $this->generateUrl($urlParams, null, 'count'); $url = $this->generateUrl($urlParams, null, 'count');
// return $this->get([], $url, 'count'); return $this->get([], $url, 'count');
// } }
/** /**
* @param array $urlParams * @param array $urlParams
...@@ -282,15 +283,14 @@ abstract class AbstractShopify ...@@ -282,15 +283,14 @@ abstract class AbstractShopify
/** /**
* 处理响应 * 处理响应
* @param ResponseInterface $response * @param array $response
* @param null $dataKey * @param null $dataKey
* @return mixed * @return mixed
* @throws Exception * @throws Exception
*/ */
public function processResponse($response, $dataKey = null) public function processResponse($response, $dataKey = null)
{ {
$code = $response->getStatusCode(); [$code, , $content] = $response;
$content = $response->getBody()->getContents();
$content = json_decode($content, true); $content = json_decode($content, true);
if (isset($content['errors'])) { if (isset($content['errors'])) {
throw new Exception($this->castString($content['errors']), $code); throw new Exception($this->castString($content['errors']), $code);
...@@ -302,28 +302,6 @@ abstract class AbstractShopify ...@@ -302,28 +302,6 @@ abstract class AbstractShopify
} }
} }
/**
* 处理响应
* @param array $response
* @param null $dataKey
* @return mixed
* @throws Exception
*/
public function processResponseOld($response, $dataKey = null)
{
[$code, $header, $body] = $response;
$content = json_decode($body, true);
if (isset($content['errors'])) {
throw new Exception($this->castString($content['errors']), $code);
}
if ($dataKey && isset($content[$dataKey])) {
return $content[$dataKey];
} else {
return $content;
}
}
/** /**
* 处理响应 * 处理响应
* @param ResponseInterface $response * @param ResponseInterface $response
...@@ -333,9 +311,7 @@ abstract class AbstractShopify ...@@ -333,9 +311,7 @@ abstract class AbstractShopify
*/ */
public function processPageResponse($response, $dataKey = null) public function processPageResponse($response, $dataKey = null)
{ {
$code = $response->getStatusCode(); [$code, $headers, $content] = $response;
$headers = $response->getHeaders();
$content = $response->getBody()->getContents();
$content = json_decode($content, true); $content = json_decode($content, true);
$link = $this->getLink($headers); $link = $this->getLink($headers);
if (isset($content['errors'])) { if (isset($content['errors'])) {
...@@ -351,11 +327,11 @@ abstract class AbstractShopify ...@@ -351,11 +327,11 @@ abstract class AbstractShopify
public function getLink($header, $type = 'next') public function getLink($header, $type = 'next')
{ {
if (!empty($header['X-Shopify-API-Version'][0]) && $header['X-Shopify-API-Version'][0] < '2019-07') { if (!empty($header['x-shopify-api-version'][0]) && $header['x-shopify-api-version'][0] < '2019-07') {
return null; return null;
} }
if (!empty($header['Link'][0])) { if (!empty($header['link'][0])) {
$headerLinks = $header['Link'][0]; $headerLinks = $header['link'][0];
if (stristr($headerLinks, '; rel="' . $type . '"') > -1) { if (stristr($headerLinks, '; rel="' . $type . '"') > -1) {
$headerLinks = explode(',', $headerLinks); $headerLinks = explode(',', $headerLinks);
foreach ($headerLinks as $headerLink) { foreach ($headerLinks as $headerLink) {
......
...@@ -26,7 +26,7 @@ class Graphql extends AbstractShopify ...@@ -26,7 +26,7 @@ class Graphql extends AbstractShopify
{ {
if (!$url) $url = $this->generateUrl(); if (!$url) $url = $this->generateUrl();
$response = HttpRequestGraphQL::post($url, $graphQL, $this->httpHeaders, $variables); $response = HttpRequestGraphQL::post($url, $graphQL, $this->httpHeaders, $variables);
return $this->processResponseOld($response); return $this->processResponse($response);
} }
public function get($urlParams = array(), $url = null, $dataKey = null) public function get($urlParams = array(), $url = null, $dataKey = null)
......
...@@ -11,6 +11,6 @@ namespace Meibuyu\Micro\Shopify\lib; ...@@ -11,6 +11,6 @@ namespace Meibuyu\Micro\Shopify\lib;
class InventoryItem extends AbstractShopify class InventoryItem extends AbstractShopify
{ {
protected $resourceKey = 'inventory_item'; protected $resourceKey = 'inventory_item_123';
} }
...@@ -19,7 +19,7 @@ namespace Meibuyu\Micro\Shopify\lib; ...@@ -19,7 +19,7 @@ namespace Meibuyu\Micro\Shopify\lib;
class InventoryLevel extends AbstractShopify class InventoryLevel extends AbstractShopify
{ {
protected $resourceKey = 'inventory_level'; protected $resourceKey = 'inventory_level_123';
protected $customPostActions = [ protected $customPostActions = [
'adjust', 'adjust',
......
...@@ -6,20 +6,19 @@ ...@@ -6,20 +6,19 @@
* Time: 9:06 * Time: 9:06
*/ */
namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools;
//use GuzzleHttp\Client; use Exception;
//use Psr\Http\Message\ResponseInterface;
/** /**
* json格式请求(非协程) * Curl的json格式请求
* Class HttpRequestJson * Class HttpRequestJson
* @package Meibuyu\Micro\Tools * @package Meibuyu\Micro\Tools
*/ */
class HttpRequestJson class CurlHttpRequestJson
{ {
protected static function prepareRequest($headers, $data = []) protected function prepareRequest($headers, $data = [])
{ {
$data = json_encode($data); $data = json_encode($data);
if (!empty($data)) { if (!empty($data)) {
...@@ -29,63 +28,14 @@ class HttpRequestJson ...@@ -29,63 +28,14 @@ class HttpRequestJson
return [$headers, $data]; return [$headers, $data];
} }
// /**
// * get请求
// * @param $url
// * @param array $httpHeaders
// * @return ResponseInterface
// */
// public static function get($url, $httpHeaders = [])
// {
// $client = new Client(['timeout' => 30]);
// return $client->get($url, ['headers' => $httpHeaders]);
// }
//
// /**
// * post请求
// * @param $url
// * @param $data
// * @param array $httpHeaders
// * @return ResponseInterface
// */
// public static function post($url, $data, $httpHeaders = [])
// {
// $client = new Client(['timeout' => 30]);
// return $client->post($url, ['headers' => $httpHeaders, 'json' => $data]);
// }
//
// /**
// * put请求
// * @param $url
// * @param $data
// * @param array $httpHeaders
// * @return ResponseInterface
// */
// public static function put($url, $data, $httpHeaders = [])
// {
// $client = new Client(['timeout' => 30]);
// return $client->put($url, ['headers' => $httpHeaders, 'json' => $data]);
// }
//
// /**
// * delete请求
// * @param $url
// * @param array $httpHeaders
// * @return ResponseInterface
// */
// public static function delete($url, $httpHeaders = [])
// {
// $client = new Client(['timeout' => 30]);
// return $client->delete($url, ['headers' => $httpHeaders]);
// }
/** /**
* get请求
* @param $url * @param $url
* @param array $headers * @param array $headers
* @return array * @return array
* @throws Exception
* @author zero
*/ */
public static function get($url, $headers = []) public function get($url, $headers = [])
{ {
return CurlRequest::get($url, $headers); return CurlRequest::get($url, $headers);
} }
...@@ -96,8 +46,10 @@ class HttpRequestJson ...@@ -96,8 +46,10 @@ class HttpRequestJson
* @param $data * @param $data
* @param array $headers * @param array $headers
* @return array * @return array
* @throws Exception
* @author zero
*/ */
public static function post($url, $data, $headers = []) public function post($url, $data, $headers = [])
{ {
[$headers, $data] = self::prepareRequest($headers, $data); [$headers, $data] = self::prepareRequest($headers, $data);
return CurlRequest::post($url, $data, $headers); return CurlRequest::post($url, $data, $headers);
...@@ -109,8 +61,10 @@ class HttpRequestJson ...@@ -109,8 +61,10 @@ class HttpRequestJson
* @param $data * @param $data
* @param array $headers * @param array $headers
* @return array * @return array
* @throws Exception
* @author zero
*/ */
public static function put($url, $data, $headers = []) public function put($url, $data, $headers = [])
{ {
[$headers, $data] = self::prepareRequest($headers, $data); [$headers, $data] = self::prepareRequest($headers, $data);
return CurlRequest::put($url, $data, $headers); return CurlRequest::put($url, $data, $headers);
...@@ -121,8 +75,10 @@ class HttpRequestJson ...@@ -121,8 +75,10 @@ class HttpRequestJson
* @param $url * @param $url
* @param array $headers * @param array $headers
* @return array * @return array
* @throws Exception
* @author zero
*/ */
public static function delete($url, $headers = []) public function delete($url, $headers = [])
{ {
return CurlRequest::delete($url, $headers); return CurlRequest::delete($url, $headers);
} }
......
<?php <?php
namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools;
use Exception; use Exception;
...@@ -22,12 +22,27 @@ class CurlRequest ...@@ -22,12 +22,27 @@ class CurlRequest
return $ch; return $ch;
} }
/**
* @param $url
* @param array $httpHeaders
* @return array
* @throws Exception
* @author zero
*/
public static function get($url, $httpHeaders = []) public static function get($url, $httpHeaders = [])
{ {
$ch = self::init($url, $httpHeaders); $ch = self::init($url, $httpHeaders);
return self::processRequest($ch); return self::processRequest($ch);
} }
/**
* @param $url
* @param $data
* @param array $httpHeaders
* @return array
* @throws Exception
* @author zero
*/
public static function post($url, $data, $httpHeaders = []) public static function post($url, $data, $httpHeaders = [])
{ {
$ch = self::init($url, $httpHeaders); $ch = self::init($url, $httpHeaders);
...@@ -36,6 +51,14 @@ class CurlRequest ...@@ -36,6 +51,14 @@ class CurlRequest
return self::processRequest($ch); return self::processRequest($ch);
} }
/**
* @param $url
* @param $data
* @param array $httpHeaders
* @return array
* @throws Exception
* @author zero
*/
public static function put($url, $data, $httpHeaders = []) public static function put($url, $data, $httpHeaders = [])
{ {
$ch = self::init($url, $httpHeaders); $ch = self::init($url, $httpHeaders);
...@@ -44,6 +67,13 @@ class CurlRequest ...@@ -44,6 +67,13 @@ class CurlRequest
return self::processRequest($ch); return self::processRequest($ch);
} }
/**
* @param $url
* @param array $httpHeaders
* @return array
* @throws Exception
* @author zero
*/
public static function delete($url, $httpHeaders = []) public static function delete($url, $httpHeaders = [])
{ {
$ch = self::init($url, $httpHeaders); $ch = self::init($url, $httpHeaders);
...@@ -51,17 +81,23 @@ class CurlRequest ...@@ -51,17 +81,23 @@ class CurlRequest
return self::processRequest($ch); return self::processRequest($ch);
} }
/**
* @param $ch
* @return array
* @throws Exception
* @author zero
*/
protected static function processRequest($ch) protected static function processRequest($ch)
{ {
$output = curl_exec($ch); $output = curl_exec($ch);
$response = new CurlResponse($output); $response = new CurlResponse($output);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($httpCode == 429) { // if ($httpCode == 429) {
$limitHeader = explode('/', $response->getHeader('X-Shopify-Shop-Api-Call-Limit'), 2); // $limitHeader = explode('/', $response->getHeader('X-Shopify-Shop-Api-Call-Limit')[0], 2);
if (isset($limitHeader[1]) && $limitHeader[0] < $limitHeader[1]) { // if (isset($limitHeader[1]) && $limitHeader[0] < $limitHeader[1]) {
throw new Exception($response->getBody()); // throw new Exception($response->getBody());
} // }
} // }
if (curl_errno($ch)) { if (curl_errno($ch)) {
throw new Exception(curl_errno($ch) . ' : ' . curl_error($ch)); throw new Exception(curl_errno($ch) . ' : ' . curl_error($ch));
} }
......
<?php <?php
namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools;
class CurlResponse class CurlResponse
{ {
...@@ -21,16 +21,16 @@ class CurlResponse ...@@ -21,16 +21,16 @@ class CurlResponse
*/ */
private function parse($response) private function parse($response)
{ {
$response = \explode("\r\n\r\n", $response); $response = explode("\r\n\r\n", $response);
if (\count($response) > 1) { if (count($response) > 1) {
// We want the last two parts // We want the last two parts
$response = \array_slice($response, -2, 2); $response = array_slice($response, -2, 2);
list($headers, $body) = $response; list($headers, $body) = $response;
foreach (\explode("\r\n", $headers) as $header) { foreach (explode("\r\n", $headers) as $header) {
$pair = \explode(': ', $header, 2); $pair = explode(': ', $header, 2);
if (isset($pair[1])) { if (isset($pair[1])) {
$headerKey = strtolower($pair[0]); $headerKey = strtolower($pair[0]);
$this->headers[$headerKey] = $pair[1]; $this->headers[$headerKey][] = $pair[1];
} }
} }
} else { } else {
......
...@@ -7,18 +7,25 @@ ...@@ -7,18 +7,25 @@
namespace Meibuyu\Micro\Shopify\tools; namespace Meibuyu\Micro\Shopify\tools;
use Meibuyu\Micro\Tools\CurlRequest; use Exception;
use Meibuyu\Micro\Tools\HttpRequestJson;
class HttpRequestGraphQL extends HttpRequestJson class HttpRequestGraphQL
{ {
/**
* @param array $headers
* @param array $data
* @param null $variables
* @return array
* @throws Exception
* @author zero
*/
protected static function prepareRequest($headers = [], $data = [], $variables = null) protected static function prepareRequest($headers = [], $data = [], $variables = null)
{ {
if (is_string($data)) { if (is_string($data)) {
$postDataGraphQL = $data; $postDataGraphQL = $data;
} else { } else {
throw new \Exception("Only GraphQL string is allowed!"); throw new Exception("Only GraphQL string is allowed!");
} }
if (is_array($variables)) { if (is_array($variables)) {
$postDataGraphQL = json_encode(['query' => $data, 'variables' => $variables]); $postDataGraphQL = json_encode(['query' => $data, 'variables' => $variables]);
...@@ -29,6 +36,15 @@ class HttpRequestGraphQL extends HttpRequestJson ...@@ -29,6 +36,15 @@ class HttpRequestGraphQL extends HttpRequestJson
return [$headers, $postDataGraphQL]; return [$headers, $postDataGraphQL];
} }
/**
* @param $url
* @param $data
* @param array $headers
* @param null $variables
* @return array
* @throws Exception
* @author zero
*/
public static function post($url, $data, $headers = [], $variables = null) public static function post($url, $data, $headers = [], $variables = null)
{ {
[$headers, $postDataGraphQL] = self::prepareRequest($headers, $data, $variables); [$headers, $postDataGraphQL] = self::prepareRequest($headers, $data, $variables);
......
...@@ -47,7 +47,8 @@ class HttpRequestJson ...@@ -47,7 +47,8 @@ class HttpRequestJson
public function get($url, $httpHeaders = []) public function get($url, $httpHeaders = [])
{ {
$client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]); $client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]);
return $client->get($url, ['headers' => $httpHeaders]); $res = $client->get($url, ['headers' => $httpHeaders]);
return $this->processResponse($res);
} }
/** /**
...@@ -60,7 +61,8 @@ class HttpRequestJson ...@@ -60,7 +61,8 @@ class HttpRequestJson
public function post($url, $data, $httpHeaders = []) public function post($url, $data, $httpHeaders = [])
{ {
$client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]); $client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]);
return $client->post($url, ['headers' => $httpHeaders, 'json' => $data]); $res = $client->post($url, ['headers' => $httpHeaders, 'json' => $data]);
return $this->processResponse($res);
} }
/** /**
...@@ -73,7 +75,8 @@ class HttpRequestJson ...@@ -73,7 +75,8 @@ class HttpRequestJson
public function put($url, $data, $httpHeaders = []) public function put($url, $data, $httpHeaders = [])
{ {
$client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]); $client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]);
return $client->put($url, ['headers' => $httpHeaders, 'json' => $data]); $res = $client->put($url, ['headers' => $httpHeaders, 'json' => $data]);
return $this->processResponse($res);
} }
/** /**
...@@ -85,7 +88,21 @@ class HttpRequestJson ...@@ -85,7 +88,21 @@ class HttpRequestJson
public function delete($url, $httpHeaders = []) public function delete($url, $httpHeaders = [])
{ {
$client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]); $client = $this->clientFactory->create(['timeout' => 60, 'handler' => $this->stack,]);
return $client->delete($url, ['headers' => $httpHeaders]); $res = $client->delete($url, ['headers' => $httpHeaders]);
return $this->processResponse($res);
}
/**
* 处理响应
* @param ResponseInterface $response
* @return mixed
*/
public function processResponse($response)
{
$code = $response->getStatusCode();
$headers = $response->getHeaders();
$content = $response->getBody()->getContents();
return [$code, $headers, $content];
} }
} }
<?php
namespace Meibuyu\Micro\Tools;
use Psr\SimpleCache\CacheInterface;
/**
* Class Cache
* @package Meibuyu\Micro\Tools
* @method static get($key, $default = null)
* @method static set($key, $value, $ttl = null)
* @method static delete($key)
* @method static clear()
* @method static getMultiple($keys, $default = null)
* @method static setMultiple($values, $ttl = null)
* @method static deleteMultiple($keys)
* @method static has($key)
*/
class Cacher
{
/**
* @var CacheInterface
*/
protected static $driver;
/**
* @return CacheInterface
*/
public static function driver()
{
if (!self::$driver) {
self::$driver = container(CacheInterface::class);
}
return self::$driver;
}
public static function __callStatic($name, $arguments)
{
return static::driver()->{$name}(...$arguments);
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment