广告账号绑定即时同步账号2

This commit is contained in:
huangguancheng 2025-01-13 17:26:35 +08:00
parent b1003d65fc
commit 69732e01e1
4 changed files with 75 additions and 21 deletions

View File

@ -33,6 +33,7 @@ class GoogleAdsCustomers
const event = 'googleads:customers:event';
const add_queue = 'googleads:customers:add:queue';
const init_queue = 'googleads:customers:init:queue';
public function addCustomers()
{

View File

@ -0,0 +1,50 @@
<?php
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;
class GoogleAdsCustomerInitQueue implements Consumer
{
// 要消费的队列名
public $queue = GoogleAdsCustomers::init_queue;
// 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接`
public $connection = 'default';
// 消费
public function consume($data)
{
dump($this->queue . ' consumed', $data);
//新绑定的客户,立即同步广告系列
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);
}
}

View File

@ -27,23 +27,23 @@ class GoogleAdsCustomerQueue implements Consumer
//新绑定的客户,立即同步广告系列
Event::emit(GoogleAdsCustomers::add_queue, $data);
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);
// 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);
}

View File

@ -6,7 +6,8 @@ use GuzzleHttp\Client;
use think\facade\Db as ThinkDb;
use app\model\ThirdUserAdvertiser;
use app\model\ThirdUser;
//use Webman\RedisQueue\Redis;
use Webman\Event\Event;
use Webman\RedisQueue\Redis;
use Webman\RedisQueue\Client as QueueClient;
use app\event\GoogleAdsCustomers;
@ -211,6 +212,7 @@ class GoogleOAuthService
$options = [];
$options['refresh_token'] = $refreshToken;
Event::emit(GoogleAdsCustomers::add_queue, $data);
$this->queue($options);
}
@ -311,16 +313,17 @@ class GoogleOAuthService
public function queue($options = []): string
{
// 队列名
$queue = GoogleAdsCustomers::add_queue;
// $queue = GoogleAdsCustomers::add_queue;
$queue2 = GoogleAdsCustomers::init_queue;
// 数据,可以直接传数组,无需序列化
// $options = ['to' => 'tom@gmail.com', 'content' => 'hello'];
// 投递消息
// Redis::send($queue, $options['data']);
QueueClient::send($queue, $options); //异步投递 延后15秒
QueueClient::send($queue2, $options); //异步投递 延后15秒
// 投递延迟消息消息会在60秒后处理
// Redis::send($queue, $options['data'], 60);
return $queue.' redis queue ok';
return $queue2.' redis queue ok';
}