From 1bb6e7d17afc6f9ebb129fbb14df85252146395d Mon Sep 17 00:00:00 2001 From: yangyao Date: Mon, 24 Jul 2023 11:44:10 +0800 Subject: [PATCH 1/2] Add helper function to verify is performance test --- Helper/CommonHelper.php | 40 +++++++++++++++++++++++++++ Observer/InventoryUpdateObserver.php | 33 ++++++++-------------- Observer/ProductDeleteObserver.php | 33 ++++++++-------------- Observer/ProductSaveObserver.php | 33 ++++++++-------------- Observer/SalesOrderUpdateObserver.php | 34 ++++++++--------------- 5 files changed, 88 insertions(+), 85 deletions(-) create mode 100644 Helper/CommonHelper.php diff --git a/Helper/CommonHelper.php b/Helper/CommonHelper.php new file mode 100644 index 0000000..4a10838 --- /dev/null +++ b/Helper/CommonHelper.php @@ -0,0 +1,40 @@ + + * @copyright 2023 AfterShip + * @license MIT http://opensource.org/licenses/MIT + * @link https://aftership.com + */ + +namespace AfterShip\TikTokShop\Helper; + +/** + * CommonHelper helper function. + * + * @author AfterShip + * @license MIT http://opensource.org/licenses/MIT + * @link https://aftership.com + */ +class CommonHelper +{ + /** + * Check if is running under PerformanceTest + * + * @return bool + */ + public function isRunningUnderPerformanceTest() + { + $backtrace = debug_backtrace(); + foreach ($backtrace as $trace) { + if (isset($trace['function']) + && isset($trace['file']) + && (strpos($trace['file'], 'GenerateFixturesCommand') !== false) + ) { + return true; + } + } + return false; + } +} diff --git a/Observer/InventoryUpdateObserver.php b/Observer/InventoryUpdateObserver.php index cc960a8..00dbe46 100644 --- a/Observer/InventoryUpdateObserver.php +++ b/Observer/InventoryUpdateObserver.php @@ -15,6 +15,7 @@ use AfterShip\TikTokShop\Model\Api\WebhookEvent; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; +use AfterShip\TikTokShop\Helper\CommonHelper; use Magento\Authorization\Model\UserContextInterface; use AfterShip\TikTokShop\Model\Queue\WebhookPublisher; @@ -46,21 +47,30 @@ class InventoryUpdateObserver implements ObserverInterface */ protected $publisher; + /** + * Common Helper Instance. + * @var CommonHelper + */ + protected $commonHelper; + /** * Construct * * @param UserContextInterface $userContext * @param LoggerInterface $logger * @param WebhookPublisher $publisher + * @param CommonHelper $commonHelper */ public function __construct( UserContextInterface $userContext, LoggerInterface $logger, - WebhookPublisher $publisher + WebhookPublisher $publisher, + CommonHelper $commonHelper ) { $this->userContext = $userContext; $this->logger = $logger; $this->publisher = $publisher; + $this->commonHelper = $commonHelper; } /** @@ -74,25 +84,6 @@ public function isRestfulApiRequest() return ($userType === UserContextInterface::USER_TYPE_INTEGRATION); } - /** - * Check if is running under PerformanceTest - * - * @return bool - */ - public function isRunningUnderPerformanceTest() - { - $backtrace = debug_backtrace(); - foreach ($backtrace as $trace) { - if (isset($trace['function']) - && isset($trace['file']) - && (strpos($trace['file'], 'GenerateFixturesCommand') !== false) - ) { - return true; - } - } - return false; - } - /** * Execute * @@ -106,7 +97,7 @@ public function execute(Observer $observer) if (!$this->isRestfulApiRequest()) { return; } - if ($this->isRunningUnderPerformanceTest()) { + if ($this->commonHelper->isRunningUnderPerformanceTest()) { $this->logger->error( '[AfterShip TikTokShop] InventoryUpdateObserver do not sync inventory during performance test' ); diff --git a/Observer/ProductDeleteObserver.php b/Observer/ProductDeleteObserver.php index 313414c..f00f758 100644 --- a/Observer/ProductDeleteObserver.php +++ b/Observer/ProductDeleteObserver.php @@ -11,6 +11,7 @@ namespace AfterShip\TikTokShop\Observer; use AfterShip\TikTokShop\Constants; +use AfterShip\TikTokShop\Helper\CommonHelper; use AfterShip\TikTokShop\Model\Api\WebhookEvent; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; @@ -39,37 +40,27 @@ class ProductDeleteObserver implements ObserverInterface */ protected $publisher; + /** + * Common Helper Instance. + * @var CommonHelper + */ + protected $commonHelper; + /** * Construct * * @param LoggerInterface $logger * @param WebhookPublisher $publisher + * @param CommonHelper $commonHelper */ public function __construct( LoggerInterface $logger, - WebhookPublisher $publisher + WebhookPublisher $publisher, + CommonHelper $commonHelper ) { $this->logger = $logger; $this->publisher = $publisher; - } - - /** - * Check if is running under PerformanceTest - * - * @return bool - */ - public function isRunningUnderPerformanceTest() - { - $backtrace = debug_backtrace(); - foreach ($backtrace as $trace) { - if (isset($trace['function']) - && isset($trace['file']) - && (strpos($trace['file'], 'GenerateFixturesCommand') !== false) - ) { - return true; - } - } - return false; + $this->commonHelper = $commonHelper; } /** @@ -82,7 +73,7 @@ public function isRunningUnderPerformanceTest() public function execute(Observer $observer) { try { - if ($this->isRunningUnderPerformanceTest()) { + if ($this->commonHelper->isRunningUnderPerformanceTest()) { $this->logger->error( '[AfterShip TikTokShop] ProductDeleteObserver do not sync inventory during performance test' ); diff --git a/Observer/ProductSaveObserver.php b/Observer/ProductSaveObserver.php index 290a758..4bfdc9d 100644 --- a/Observer/ProductSaveObserver.php +++ b/Observer/ProductSaveObserver.php @@ -11,6 +11,7 @@ namespace AfterShip\TikTokShop\Observer; use AfterShip\TikTokShop\Constants; +use AfterShip\TikTokShop\Helper\CommonHelper; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; use AfterShip\TikTokShop\Model\Queue\WebhookPublisher; @@ -39,37 +40,27 @@ class ProductSaveObserver implements ObserverInterface */ protected $publisher; + /** + * Common Helper Instance. + * @var CommonHelper + */ + protected $commonHelper; + /** * Construct * * @param LoggerInterface $logger * @param WebhookPublisher $publisher + * @param CommonHelper $commonHelper */ public function __construct( LoggerInterface $logger, - WebhookPublisher $publisher + WebhookPublisher $publisher, + CommonHelper $commonHelper ) { $this->logger = $logger; $this->publisher = $publisher; - } - - /** - * Check if is running under PerformanceTest - * - * @return bool - */ - public function isRunningUnderPerformanceTest() - { - $backtrace = debug_backtrace(); - foreach ($backtrace as $trace) { - if (isset($trace['function']) - && isset($trace['file']) - && (strpos($trace['file'], 'GenerateFixturesCommand') !== false) - ) { - return true; - } - } - return false; + $this->commonHelper = $commonHelper; } /** @@ -82,7 +73,7 @@ public function isRunningUnderPerformanceTest() public function execute(Observer $observer) { try { - if ($this->isRunningUnderPerformanceTest()) { + if ($this->commonHelper->isRunningUnderPerformanceTest()) { $this->logger->error( '[AfterShip TikTokShop] ProductSaveObserver do not sync inventory during performance test' ); diff --git a/Observer/SalesOrderUpdateObserver.php b/Observer/SalesOrderUpdateObserver.php index 2068004..c90ac3c 100644 --- a/Observer/SalesOrderUpdateObserver.php +++ b/Observer/SalesOrderUpdateObserver.php @@ -11,10 +11,10 @@ namespace AfterShip\TikTokShop\Observer; use AfterShip\TikTokShop\Constants; +use AfterShip\TikTokShop\Helper\CommonHelper; use AfterShip\TikTokShop\Model\Api\WebhookEvent; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; -use Magento\Framework\MessageQueue\PublisherInterface; use AfterShip\TikTokShop\Model\Queue\WebhookPublisher; use Psr\Log\LoggerInterface; @@ -40,37 +40,27 @@ class SalesOrderUpdateObserver implements ObserverInterface */ protected $publisher; + /** + * Common Helper Instance. + * @var CommonHelper + */ + protected $commonHelper; + /** * Construct * * @param LoggerInterface $logger * @param WebhookPublisher $publisher + * @param CommonHelper $commonHelper */ public function __construct( LoggerInterface $logger, - WebhookPublisher $publisher + WebhookPublisher $publisher, + CommonHelper $commonHelper ) { $this->logger = $logger; $this->publisher = $publisher; - } - - /** - * Check if is running under PerformanceTest - * - * @return bool - */ - public function isRunningUnderPerformanceTest() - { - $backtrace = debug_backtrace(); - foreach ($backtrace as $trace) { - if (isset($trace['function']) - && isset($trace['file']) - && (strpos($trace['file'], 'GenerateFixturesCommand') !== false) - ) { - return true; - } - } - return false; + $this->commonHelper = $commonHelper; } /** @@ -83,7 +73,7 @@ public function isRunningUnderPerformanceTest() public function execute(Observer $observer) { try { - if ($this->isRunningUnderPerformanceTest()) { + if ($this->commonHelper->isRunningUnderPerformanceTest()) { $this->logger->error( '[AfterShip TikTokShop] SalesOrderUpdateObserver do not sync inventory during performance test' ); From 1516dcde1485c8da49408a6b2d214beaacfb9381 Mon Sep 17 00:00:00 2001 From: yangyao Date: Mon, 24 Jul 2023 13:49:47 +0800 Subject: [PATCH 2/2] Update webhook helper to send webhook events --- Constants.php | 2 +- Helper/WebhookHelper.php | 19 ++++++------------- Model/Queue/WebhookConsumer.php | 12 +++--------- composer.json | 2 +- etc/module.xml | 2 +- 5 files changed, 12 insertions(+), 25 deletions(-) diff --git a/Constants.php b/Constants.php index 156ae49..6c51433 100644 --- a/Constants.php +++ b/Constants.php @@ -29,7 +29,7 @@ class Constants public const WEBHOOK_RESOURCE_ORDERS = 'orders'; public const WEBHOOK_RESOURCE_PRODUCTS = 'products'; - public const AFTERSHIP_TIKTOK_SHOP_VERSION = '1.0.11'; + public const AFTERSHIP_TIKTOK_SHOP_VERSION = '1.0.12'; public const WEBHOOK_CONFIG_SCOPE_PATH = 'aftership/webhooks/webhooks'; diff --git a/Helper/WebhookHelper.php b/Helper/WebhookHelper.php index 310424a..afc51b9 100644 --- a/Helper/WebhookHelper.php +++ b/Helper/WebhookHelper.php @@ -25,13 +25,6 @@ */ class WebhookHelper { - - /** - * Webhoks - * - * @var array|mixed - */ - protected $webhooks = []; /** * ScopeConfig Instance * @@ -75,11 +68,6 @@ public function __construct( $this->oauthService = $oauthService; $this->logger = $logger; $this->integrationService = $integrationService; - $webhooksJson = $this->scopeConfig->getValue( - Constants::WEBHOOK_CONFIG_SCOPE_PATH, - 'default' - ); - $this->webhooks = $webhooksJson ? json_decode($webhooksJson) : []; } /** @@ -92,7 +80,12 @@ public function __construct( */ public function makeWebhookRequest($topic, $data) { - foreach ($this->webhooks as $webhook) { + $webhooksJson = $this->scopeConfig->getValue( + Constants::WEBHOOK_CONFIG_SCOPE_PATH, + 'default' + ); + $webhooks = $webhooksJson ? json_decode($webhooksJson) : []; + foreach ($webhooks as $webhook) { if ($webhook->topic !== $topic) { continue; } diff --git a/Model/Queue/WebhookConsumer.php b/Model/Queue/WebhookConsumer.php index 4a349a3..3ec28e7 100644 --- a/Model/Queue/WebhookConsumer.php +++ b/Model/Queue/WebhookConsumer.php @@ -202,15 +202,9 @@ public function sendProductWebhook($event, $productId) ); foreach ($parentIds as $parentId) { $parentProduct = $this->productRepository->getById($parentId); - $this->webhookHelper->makeWebhookRequest( - Constants::WEBHOOK_TOPIC_PRODUCTS_UPDATE, - [ - "id" => $parentProduct->getId(), - "type_id" => $parentProduct->getTypeId(), - "sku" => $parentProduct->getSku(), - "visibility" => (string)$parentProduct->getVisibility(), - ] - ); + $parentProduct->setData('updated_at', date('Y-m-d H:i:s')); + // This will trigger an webhook, no need to send an repeat event. + $this->productRepository->save($parentProduct); } } } diff --git a/composer.json b/composer.json index 417ea94..97c84a7 100755 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "aftership/tiktok-shop", "description": "Aftership TikTok Shop extension for Magento 2. Allows connect with TikTok Shop and more.", "type": "magento2-module", - "version": "1.0.11", + "version": "1.0.12", "minimum-stability": "stable", "license": "MIT", "keywords": ["aftership", "magento", "magento2", "magento-2", "tiktok", "shopping", "shop", "feed"], diff --git a/etc/module.xml b/etc/module.xml index e153ddd..1e97e12 100755 --- a/etc/module.xml +++ b/etc/module.xml @@ -1,5 +1,5 @@ - +