From 7fa9118f2f6f6518af80ecec99a73d77dbefc4c6 Mon Sep 17 00:00:00 2001 From: huangguancheng Date: Wed, 8 Jan 2025 17:30:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=88=E6=9D=83=E7=BB=91=E5=AE=9A=E5=B0=B1?= =?UTF-8?q?=E9=87=87=E9=9B=86=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/event/GoogleAdsAds.php | 8 +-- app/event/GoogleAdsAssetRelations.php | 10 ++-- app/event/GoogleAdsAssets.php | 8 +-- app/event/GoogleAdsCampaigns.php | 11 ++-- app/event/GoogleAdsDateDatas.php | 10 ++-- app/event/GoogleAdsGroups.php | 62 +++++++++++----------- app/queue/redis/GoogleAdsCustomerQueue.php | 31 +++++++++-- 7 files changed, 80 insertions(+), 60 deletions(-) diff --git a/app/event/GoogleAdsAds.php b/app/event/GoogleAdsAds.php index 3b14f92..277ba44 100644 --- a/app/event/GoogleAdsAds.php +++ b/app/event/GoogleAdsAds.php @@ -29,16 +29,16 @@ class GoogleAdsAds const queue = 'googleads:ads:queue'; - public function syncAds() + public function syncAds($options = []) { $queue = self::queue; - $customers = $this->googleOAuthService->getGoogleAdCustomers([]); + $customers = $this->googleOAuthService->getGoogleAdCustomers($options); foreach ($customers as $customer) { if ($customer['login_customer_id'] > 0) { - Redis::send($queue, $customer); + Redis::send($queue, $customer,rand(1,10)); } } - return 'ads redis queue ok'; + return self::event.' send queue ok'; } /** diff --git a/app/event/GoogleAdsAssetRelations.php b/app/event/GoogleAdsAssetRelations.php index 19608dd..da9da6d 100644 --- a/app/event/GoogleAdsAssetRelations.php +++ b/app/event/GoogleAdsAssetRelations.php @@ -26,18 +26,18 @@ class GoogleAdsAssetRelations const queue = 'googleads:assetrelations:queue'; const video_queue = 'googleads:assetrelations:video_queue'; - public function syncAssetRelations() + public function syncAssetRelations($options = []) { $queue = self::queue; $video_queue = self::video_queue; - $customers = $this->googleOAuthService->getGoogleAdCustomers([]); + $customers = $this->googleOAuthService->getGoogleAdCustomers($options); foreach ($customers as $customer) { if ($customer['login_customer_id'] > 0) { - Redis::send($queue, $customer); - Redis::send($video_queue, $customer); + Redis::send($queue, $customer,rand(5,15)); + Redis::send($video_queue, $customer,rand(5,15)); } } - return 'assets redis queue ok'; + return self::event.' send queue ok'; } /** diff --git a/app/event/GoogleAdsAssets.php b/app/event/GoogleAdsAssets.php index 81fa0ca..4caa8df 100644 --- a/app/event/GoogleAdsAssets.php +++ b/app/event/GoogleAdsAssets.php @@ -27,16 +27,16 @@ class GoogleAdsAssets const event = 'googleads:assets:event'; const queue = 'googleads:assets:queue'; - public function syncAssets() + public function syncAssets($options = []) { $queue = self::queue; - $customers = $this->googleOAuthService->getGoogleAdCustomers([]); + $customers = $this->googleOAuthService->getGoogleAdCustomers($options); foreach ($customers as $customer) { if ($customer['login_customer_id'] > 0) { - Redis::send($queue, $customer); + Redis::send($queue, $customer,rand(1,10)); } } - return 'assets redis queue ok'; + return self::event.' send queue ok'; } /** diff --git a/app/event/GoogleAdsCampaigns.php b/app/event/GoogleAdsCampaigns.php index 2552302..8a07ef6 100644 --- a/app/event/GoogleAdsCampaigns.php +++ b/app/event/GoogleAdsCampaigns.php @@ -5,9 +5,6 @@ namespace app\event; use app\service\GoogleAdsCampaignService; use app\service\GoogleOAuthService; use Google\ApiCore\ApiException; -use GuzzleHttp\Client; -use GuzzleHttp\Exception\GuzzleException; -use support\Db; use support\Response; use DI\Annotation\Inject; use Webman\RedisQueue\Redis; @@ -28,16 +25,16 @@ class GoogleAdsCampaigns const event = 'googleads:campaigns:event'; const queue = 'googleads:campaigns:queue'; - public function syncCampaigns() + public function syncCampaigns($options = []): string { $queue = self::queue; - $customers = $this->googleOAuthService->getGoogleAdCustomers([]); + $customers = $this->googleOAuthService->getGoogleAdCustomers($options); foreach ($customers as $customer) { if ($customer['login_customer_id'] >0){ - Redis::send($queue,$customer); + Redis::send($queue,$customer,rand(1,10)); } } - return 'redis queue ok'; + return self::event.' send queue ok'; } /** diff --git a/app/event/GoogleAdsDateDatas.php b/app/event/GoogleAdsDateDatas.php index 8e9b468..35a7e54 100644 --- a/app/event/GoogleAdsDateDatas.php +++ b/app/event/GoogleAdsDateDatas.php @@ -5,8 +5,6 @@ namespace app\event; use app\service\GoogleAdsCampaignService; use app\service\GoogleOAuthService; use Google\ApiCore\ApiException; - - use support\Response; use DI\Annotation\Inject; use Webman\RedisQueue\Redis; @@ -27,17 +25,17 @@ class GoogleAdsDateDatas const event = 'googleads:datedatas:event'; const queue = 'googleads:datedatas:queue'; - public function syncDateDatas($options) + public function syncDateDatas($options = []) { $queue = self::queue; - $customers = $this->googleOAuthService->getGoogleAdCustomers([]); + $customers = $this->googleOAuthService->getGoogleAdCustomers($options); foreach ($customers as $customer) { if ($customer['login_customer_id'] > 0) { $customer['date'] = $options['date']; - Redis::send($queue, $customer); + Redis::send($queue, $customer,rand(1,10)); } } - return 'redis queue ok'; + return self::event.' send queue ok'; } /** diff --git a/app/event/GoogleAdsGroups.php b/app/event/GoogleAdsGroups.php index 4977f50..62a2486 100644 --- a/app/event/GoogleAdsGroups.php +++ b/app/event/GoogleAdsGroups.php @@ -10,8 +10,8 @@ use Google\ApiCore\ApiException; use support\Response; use DI\Annotation\Inject; use Webman\RedisQueue\Redis; -//use QL\QueryList; +//use QL\QueryList; class GoogleAdsGroups @@ -28,16 +28,16 @@ class GoogleAdsGroups const queue = 'googleads:groups:queue'; - public function syncGroups() + public function syncGroups($options = []) { - $queue = self::queue; - $customers = $this->googleOAuthService->getGoogleAdCustomers([]); + $queue = self::queue; + $customers = $this->googleOAuthService->getGoogleAdCustomers($options); foreach ($customers as $customer) { - if ($customer['login_customer_id'] >0){ - Redis::send($queue,$customer); + if ($customer['login_customer_id'] > 0) { + Redis::send($queue,$customer,rand(1,10)); } } - return 'redis queue ok'; + return self::event.' send queue ok'; } /** @@ -47,31 +47,31 @@ class GoogleAdsGroups public function getGroups($customer) { - $googleAdsGroupService = new GoogleAdsGroupService($customer['customer_id']); - if ($customer['login_customer_id'] >0){ - $resourceName = $googleAdsGroupService->runListGroups($customer['customer_id'],$customer); - } + $googleAdsGroupService = new GoogleAdsGroupService($customer['customer_id']); + if ($customer['login_customer_id'] > 0) { + $resourceName = $googleAdsGroupService->runListGroups($customer['customer_id'], $customer); + } // return $this->successResponse(['groups_list' => $resourceName]); } - // 可以加入一些公共方法 - protected - function successResponse($data): Response - { - return Json([ - 'code' => 0, - 'msg' => 'ok', - 'data' => $data, - ]); - } - - protected - function errorResponse($code, $message, $data = []): Response - { - return Json([ - 'code' => $code, - 'msg' => $message ?: 'error', - 'data' => $data - ]); - } + // 可以加入一些公共方法 + protected + function successResponse($data): Response + { + return Json([ + 'code' => 0, + 'msg' => 'ok', + 'data' => $data, + ]); } + + protected + function errorResponse($code, $message, $data = []): Response + { + return Json([ + 'code' => $code, + 'msg' => $message ?: 'error', + 'data' => $data + ]); + } +} diff --git a/app/queue/redis/GoogleAdsCustomerQueue.php b/app/queue/redis/GoogleAdsCustomerQueue.php index 1fa2250..88b294b 100644 --- a/app/queue/redis/GoogleAdsCustomerQueue.php +++ b/app/queue/redis/GoogleAdsCustomerQueue.php @@ -3,6 +3,12 @@ namespace app\queue\redis; use app\event\GoogleAdsCustomers; +use app\event\GoogleAdsCampaigns; +use app\event\GoogleAdsGroups; +use app\event\GoogleAdsAds; +use app\event\GoogleAdsAssets; +use app\event\GoogleAdsDateDatas; +use app\event\GoogleAdsAssetRelations; use Webman\Event\Event; use Webman\RedisQueue\Consumer; @@ -17,10 +23,29 @@ class GoogleAdsCustomerQueue implements Consumer // 消费 public function consume($data) { - dump($this->queue.' consumed',$data); + dump($this->queue . ' consumed', $data); + //新绑定的客户,立即同步广告系列 + Event::emit(GoogleAdsCustomers::add_queue, $data); - // 无需反序列化 -// var_export($data); // 输出 ['to' => 'tom@gmail.com', 'content' => 'hello'] + Event::emit(GoogleAdsCampaigns::event, $data); + + //新绑定的客户,立即同步广告组 + Event::emit(GoogleAdsGroups::event, $data); + //新绑定的客户,立即同步广告 + Event::emit(GoogleAdsAds::event, $data); + //新绑定的客户,立即同步素材库 + Event::emit(GoogleAdsAssets::event, $data); + //新绑定的客户,立即同步素材关系绑定 + Event::emit(GoogleAdsAssetRelations::event, $data); + //新绑定的客户,立即同步最近3天的广告报表 + $data['date'] = date('Y-m-d', strtotime('-2 day')); + Event::emit(GoogleAdsDateDatas::event, $data); + $data['date'] = date('Y-m-d', strtotime('-1 day')); + Event::emit(GoogleAdsDateDatas::event, $data); + $data['date'] = date('Y-m-d', strtotime('0 day')); + Event::emit(GoogleAdsDateDatas::event, $data); + + } } \ No newline at end of file