Loading src/Service/Interfaces/DatacenterServiceInterface.php +11 −0 Original line number Diff line number Diff line Loading @@ -23,5 +23,16 @@ interface DatacenterServiceInterface public function getCurrencyRate($currencyId, $field = ['id', 'currency_id', 'rate_val']): array; /** * description:获取国家汇率 默认取最新一个汇率值 * author: fuyunnan * @param array $currencyIds 货币ids * @param array $field 字段 * @return array * @throws * Date: 2020/8/11 */ public function getCurrencyListRate($currencyIds, $field = ['id', 'currency_id', 'rate_val']): array; } No newline at end of file src/Shopify/ShopifyApp.php +20 −0 Original line number Diff line number Diff line Loading @@ -13,7 +13,12 @@ use Meibuyu\Micro\Shopify\lib\AbstractShopify; use Meibuyu\Micro\Shopify\lib\Collect; use Meibuyu\Micro\Shopify\lib\Collection; use Meibuyu\Micro\Shopify\lib\CustomCollection; use Meibuyu\Micro\Shopify\lib\InventoryItem; use Meibuyu\Micro\Shopify\lib\InventoryLevel; use Meibuyu\Micro\Shopify\lib\Location; use Meibuyu\Micro\Shopify\lib\Metafield; use Meibuyu\Micro\Shopify\lib\Product; use Meibuyu\Micro\Shopify\lib\ProductVariant; use Meibuyu\Micro\Shopify\lib\SmartCollection; use Meibuyu\Micro\Shopify\lib\Webhook; Loading @@ -27,12 +32,22 @@ use Meibuyu\Micro\Shopify\lib\Webhook; * @property-read CustomCollection $CustomCollection * @property-read SmartCollection $SmartCollection * @property-read Metafield $Metafield * @property-read Product $Product * @property-read ProductVariant $ProductVariant * @property-read InventoryItem $InventoryItem * @property-read InventoryLevel $InventoryLevel * @property-read Location $Location * * @method Webhook Webhook(integer $id = null) * @method Collection Collection(integer $id = null) * @method CustomCollection CustomCollection(integer $id = null) * @method SmartCollection SmartCollection(integer $id = null) * @method Metafield Metafield(integer $id = null) * @method Product Product(integer $id = null) * @method ProductVariant ProductVariant(integer $id = null) * @method InventoryItem InventoryItem(integer $id = null) * @method InventoryLevel InventoryLevel(integer $id = null) * @method Location Location(integer $id = null) * */ class ShopifyApp Loading @@ -45,6 +60,11 @@ class ShopifyApp 'CustomCollection', 'SmartCollection', 'Metafield', 'Product', 'ProductVariant', 'InventoryItem', 'InventoryLevel', 'Location', ]; protected $childResources = array( Loading src/Shopify/lib/AbstractShopify.php +115 −19 Original line number Diff line number Diff line Loading @@ -153,6 +153,95 @@ abstract class AbstractShopify return $resourceUrl . ($customAction ? "/$customAction" : '') . '.json' . (!empty($urlParams) ? '?' . http_build_query($urlParams) : ''); } // /** // * @param array $urlParams // * @param null $url // * @param null $dataKey // * @return mixed // * @throws Exception // */ // public function get($urlParams = [], $url = null, $dataKey = null) // { // if (!$url) $url = $this->generateUrl($urlParams); // $response = HttpRequestJson::get($url, $this->httpHeaders); // if (!$dataKey) $dataKey = $this->id ? $this->resourceKey : $this->pluralizeKey; // return $this->processResponse($response, $dataKey); // } // // /** // * 根据id获取一条数据 // * @param $id // * @param array $urlParams // * @return mixed // * @throws Exception // */ // public function show($id, $urlParams = []) // { // $url = $this->generateUrl($urlParams, $id); // $response = HttpRequestJson::get($url, $this->httpHeaders); // return $this->processResponse($response, $this->resourceKey); // } // // /** // * 获取数量 // * @param array $urlParams // * @return mixed // * @throws Exception // */ // public function count($urlParams = []) // { // if (!$this->countEnabled) { // throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); // } // $url = $this->generateUrl($urlParams, null, 'count'); // return $this->get([], $url, 'count'); // } // // /** // * @param $dataArray // * @param null $url // * @param bool $wrapData // * @return mixed // * @throws Exception // */ // public function post($dataArray, $url = null, $wrapData = true) // { // if (!$url) $url = $this->generateUrl(); // if ($wrapData && !empty($dataArray)) $dataArray = $this->wrapData($dataArray); // $response = HttpRequestJson::post($url, $dataArray, $this->httpHeaders); // return $this->processResponse($response, $this->resourceKey); // } // // /** // * @param int|string $id // * @param $dataArray // * @param null $url // * @param bool $wrapData // * @return mixed // * @throws Exception // */ // public function put($id, $dataArray, $url = null, $wrapData = true) // { // if (!$url) $url = $this->generateUrl([], $id); // if ($wrapData && !empty($dataArray)) $dataArray = $this->wrapData($dataArray); // $response = HttpRequestJson::put($url, $dataArray, $this->httpHeaders); // return $this->processResponse($response, $this->resourceKey); // } // // /** // * @param int|string $id // * @param array $urlParams // * @param null $url // * @return mixed // * @throws Exception // */ // public function delete($id = null, $urlParams = [], $url = null) // { // if (!$url) $url = $this->generateUrl($urlParams, $id); // $response = HttpRequestJson::delete($url, $this->httpHeaders); // return $this->processResponse($response); // } /** * @param array $urlParams * @param null $url Loading Loading @@ -196,21 +285,6 @@ abstract class AbstractShopify return $this->processResponse($response, $this->resourceKey); } /** * 获取数量 * @param array $urlParams * @return mixed * @throws Exception */ public function count($urlParams = []) { if (!$this->countEnabled) { throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); } $url = $this->generateUrl($urlParams, null, 'count'); return $this->get([], $url, 'count'); } /** * @param $dataArray * @param null $url Loading Loading @@ -282,14 +356,36 @@ abstract class AbstractShopify * @return mixed * @throws Exception */ // public function processResponse($response, $dataKey = null) // { // $httpCode = $response->getStatusCode(); // $content = $response->getBody()->getContents(); // $content = json_decode($content, true); // // if (isset($content['errors'])) { // throw new Exception($this->castString($content['errors']), $httpCode); // } // if ($dataKey && isset($content[$dataKey])) { // return $content[$dataKey]; // } else { // return $content; // } // } /** * 处理响应 * @param array $response * @param null $dataKey * @return mixed * @throws Exception */ public function processResponse($response, $dataKey = null) { $httpCode = $response->getStatusCode(); $content = $response->getBody()->getContents(); $content = json_decode($content, true); [$code, $header, $body] = $response; $content = json_decode($body, true); if (isset($content['errors'])) { throw new Exception($this->castString($content['errors']), $httpCode); throw new Exception($this->castString($content['errors']), $code); } if ($dataKey && isset($content[$dataKey])) { return $content[$dataKey]; Loading src/Shopify/lib/InventoryItem.php 0 → 100644 +16 −0 Original line number Diff line number Diff line <?php /** * Created by PhpStorm. * User: Zero * Date: 2020/9/23 * Time: 8:58 */ namespace Meibuyu\Micro\Shopify\lib; class InventoryItem extends AbstractShopify { protected $resourceKey = 'inventory_item'; } src/Shopify/lib/InventoryLevel.php 0 → 100644 +30 −0 Original line number Diff line number Diff line <?php /** * Created by PhpStorm. * User: Zero * Date: 2020/9/23 * Time: 8:58 */ namespace Meibuyu\Micro\Shopify\lib; /** * Class InventoryLevel * @package Meibuyu\Micro\Shopify\lib * * @method array adjust($data) Adjust inventory level. * @method array connect($data) Connect an inventory item to a location. * @method array set($data) Sets an inventory level for a single inventory item within a location. */ class InventoryLevel extends AbstractShopify { protected $resourceKey = 'inventory_level'; protected $customPostActions = [ 'adjust', 'connect', 'set', ]; } Loading
src/Service/Interfaces/DatacenterServiceInterface.php +11 −0 Original line number Diff line number Diff line Loading @@ -23,5 +23,16 @@ interface DatacenterServiceInterface public function getCurrencyRate($currencyId, $field = ['id', 'currency_id', 'rate_val']): array; /** * description:获取国家汇率 默认取最新一个汇率值 * author: fuyunnan * @param array $currencyIds 货币ids * @param array $field 字段 * @return array * @throws * Date: 2020/8/11 */ public function getCurrencyListRate($currencyIds, $field = ['id', 'currency_id', 'rate_val']): array; } No newline at end of file
src/Shopify/ShopifyApp.php +20 −0 Original line number Diff line number Diff line Loading @@ -13,7 +13,12 @@ use Meibuyu\Micro\Shopify\lib\AbstractShopify; use Meibuyu\Micro\Shopify\lib\Collect; use Meibuyu\Micro\Shopify\lib\Collection; use Meibuyu\Micro\Shopify\lib\CustomCollection; use Meibuyu\Micro\Shopify\lib\InventoryItem; use Meibuyu\Micro\Shopify\lib\InventoryLevel; use Meibuyu\Micro\Shopify\lib\Location; use Meibuyu\Micro\Shopify\lib\Metafield; use Meibuyu\Micro\Shopify\lib\Product; use Meibuyu\Micro\Shopify\lib\ProductVariant; use Meibuyu\Micro\Shopify\lib\SmartCollection; use Meibuyu\Micro\Shopify\lib\Webhook; Loading @@ -27,12 +32,22 @@ use Meibuyu\Micro\Shopify\lib\Webhook; * @property-read CustomCollection $CustomCollection * @property-read SmartCollection $SmartCollection * @property-read Metafield $Metafield * @property-read Product $Product * @property-read ProductVariant $ProductVariant * @property-read InventoryItem $InventoryItem * @property-read InventoryLevel $InventoryLevel * @property-read Location $Location * * @method Webhook Webhook(integer $id = null) * @method Collection Collection(integer $id = null) * @method CustomCollection CustomCollection(integer $id = null) * @method SmartCollection SmartCollection(integer $id = null) * @method Metafield Metafield(integer $id = null) * @method Product Product(integer $id = null) * @method ProductVariant ProductVariant(integer $id = null) * @method InventoryItem InventoryItem(integer $id = null) * @method InventoryLevel InventoryLevel(integer $id = null) * @method Location Location(integer $id = null) * */ class ShopifyApp Loading @@ -45,6 +60,11 @@ class ShopifyApp 'CustomCollection', 'SmartCollection', 'Metafield', 'Product', 'ProductVariant', 'InventoryItem', 'InventoryLevel', 'Location', ]; protected $childResources = array( Loading
src/Shopify/lib/AbstractShopify.php +115 −19 Original line number Diff line number Diff line Loading @@ -153,6 +153,95 @@ abstract class AbstractShopify return $resourceUrl . ($customAction ? "/$customAction" : '') . '.json' . (!empty($urlParams) ? '?' . http_build_query($urlParams) : ''); } // /** // * @param array $urlParams // * @param null $url // * @param null $dataKey // * @return mixed // * @throws Exception // */ // public function get($urlParams = [], $url = null, $dataKey = null) // { // if (!$url) $url = $this->generateUrl($urlParams); // $response = HttpRequestJson::get($url, $this->httpHeaders); // if (!$dataKey) $dataKey = $this->id ? $this->resourceKey : $this->pluralizeKey; // return $this->processResponse($response, $dataKey); // } // // /** // * 根据id获取一条数据 // * @param $id // * @param array $urlParams // * @return mixed // * @throws Exception // */ // public function show($id, $urlParams = []) // { // $url = $this->generateUrl($urlParams, $id); // $response = HttpRequestJson::get($url, $this->httpHeaders); // return $this->processResponse($response, $this->resourceKey); // } // // /** // * 获取数量 // * @param array $urlParams // * @return mixed // * @throws Exception // */ // public function count($urlParams = []) // { // if (!$this->countEnabled) { // throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); // } // $url = $this->generateUrl($urlParams, null, 'count'); // return $this->get([], $url, 'count'); // } // // /** // * @param $dataArray // * @param null $url // * @param bool $wrapData // * @return mixed // * @throws Exception // */ // public function post($dataArray, $url = null, $wrapData = true) // { // if (!$url) $url = $this->generateUrl(); // if ($wrapData && !empty($dataArray)) $dataArray = $this->wrapData($dataArray); // $response = HttpRequestJson::post($url, $dataArray, $this->httpHeaders); // return $this->processResponse($response, $this->resourceKey); // } // // /** // * @param int|string $id // * @param $dataArray // * @param null $url // * @param bool $wrapData // * @return mixed // * @throws Exception // */ // public function put($id, $dataArray, $url = null, $wrapData = true) // { // if (!$url) $url = $this->generateUrl([], $id); // if ($wrapData && !empty($dataArray)) $dataArray = $this->wrapData($dataArray); // $response = HttpRequestJson::put($url, $dataArray, $this->httpHeaders); // return $this->processResponse($response, $this->resourceKey); // } // // /** // * @param int|string $id // * @param array $urlParams // * @param null $url // * @return mixed // * @throws Exception // */ // public function delete($id = null, $urlParams = [], $url = null) // { // if (!$url) $url = $this->generateUrl($urlParams, $id); // $response = HttpRequestJson::delete($url, $this->httpHeaders); // return $this->processResponse($response); // } /** * @param array $urlParams * @param null $url Loading Loading @@ -196,21 +285,6 @@ abstract class AbstractShopify return $this->processResponse($response, $this->resourceKey); } /** * 获取数量 * @param array $urlParams * @return mixed * @throws Exception */ public function count($urlParams = []) { if (!$this->countEnabled) { throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); } $url = $this->generateUrl($urlParams, null, 'count'); return $this->get([], $url, 'count'); } /** * @param $dataArray * @param null $url Loading Loading @@ -282,14 +356,36 @@ abstract class AbstractShopify * @return mixed * @throws Exception */ // public function processResponse($response, $dataKey = null) // { // $httpCode = $response->getStatusCode(); // $content = $response->getBody()->getContents(); // $content = json_decode($content, true); // // if (isset($content['errors'])) { // throw new Exception($this->castString($content['errors']), $httpCode); // } // if ($dataKey && isset($content[$dataKey])) { // return $content[$dataKey]; // } else { // return $content; // } // } /** * 处理响应 * @param array $response * @param null $dataKey * @return mixed * @throws Exception */ public function processResponse($response, $dataKey = null) { $httpCode = $response->getStatusCode(); $content = $response->getBody()->getContents(); $content = json_decode($content, true); [$code, $header, $body] = $response; $content = json_decode($body, true); if (isset($content['errors'])) { throw new Exception($this->castString($content['errors']), $httpCode); throw new Exception($this->castString($content['errors']), $code); } if ($dataKey && isset($content[$dataKey])) { return $content[$dataKey]; Loading
src/Shopify/lib/InventoryItem.php 0 → 100644 +16 −0 Original line number Diff line number Diff line <?php /** * Created by PhpStorm. * User: Zero * Date: 2020/9/23 * Time: 8:58 */ namespace Meibuyu\Micro\Shopify\lib; class InventoryItem extends AbstractShopify { protected $resourceKey = 'inventory_item'; }
src/Shopify/lib/InventoryLevel.php 0 → 100644 +30 −0 Original line number Diff line number Diff line <?php /** * Created by PhpStorm. * User: Zero * Date: 2020/9/23 * Time: 8:58 */ namespace Meibuyu\Micro\Shopify\lib; /** * Class InventoryLevel * @package Meibuyu\Micro\Shopify\lib * * @method array adjust($data) Adjust inventory level. * @method array connect($data) Connect an inventory item to a location. * @method array set($data) Sets an inventory level for a single inventory item within a location. */ class InventoryLevel extends AbstractShopify { protected $resourceKey = 'inventory_level'; protected $customPostActions = [ 'adjust', 'connect', 'set', ]; }