webman_ad/app/event/GoogleAdsAds.php

84 lines
2.0 KiB
PHP

<?php
namespace app\event;
use app\service\BpsAdAccountService;
use app\service\GoogleAdsAdService;
use app\service\GoogleOAuthService;
use Google\ApiCore\ApiException;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
use support\Db;
use Webman\RedisQueue\Redis;
use support\Response;
use DI\Annotation\Inject;
//use QL\QueryList;
class GoogleAdsAds
{
/**
* @Inject
* @var GoogleOAuthService
*/
private $googleOAuthService;
/**
* @Inject
* @var BpsAdAccountService
*/
private $bpsAdAccountService;
const event = 'googleads:ads:event';
const queue = 'googleads:ads:queue';
public function syncAds($options = [])
{
$queue = self::queue;
// $customers = $this->googleOAuthService->getGoogleAdCustomers($options);
$customers = $this->bpsAdAccountService->getGoogleAdAccounts($options);
foreach ($customers as $customer) {
if ($customer['login_customer_id'] > 0) {
Redis::send($queue, $customer, rand(1, 10));
}
}
return self::event . ' send queue ok';
}
/**
* get groups
* @throws ApiException
*/
public function getAds($customer)
{
$googleAdsAdService = new GoogleAdsAdService($customer['account_id']);
if ($customer['login_customer_id'] > 0) {
$resourceName = $googleAdsAdService->runListAds($customer['account_id'], $customer);
}
// return $this->successResponse(['ads_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
]);
}
}