164 lines
5.7 KiB
PHP
164 lines
5.7 KiB
PHP
<?php
|
|
|
|
namespace app\event;
|
|
|
|
use app\model\ThirdUser;
|
|
use app\service\GoogleAdsAssetService;
|
|
use app\service\GoogleOAuthService;
|
|
use app\service\GoogleAdsAccountService;
|
|
use Google\ApiCore\ApiException;
|
|
use support\Response;
|
|
use support\Log;
|
|
use DI\Annotation\Inject;
|
|
|
|
|
|
//use QL\QueryList;
|
|
|
|
|
|
class GoogleAdsCustomers
|
|
{
|
|
/**
|
|
* @Inject
|
|
* @var GoogleOAuthService
|
|
*/
|
|
|
|
private $googleOAuthService;
|
|
|
|
|
|
/**
|
|
* @Inject
|
|
* @var GoogleAdsAccountService
|
|
*/
|
|
|
|
private $googleAdsAccountService;
|
|
|
|
const event = 'googleads:customers:event';
|
|
const add_queue = 'googleads:customers:add:queue';
|
|
const init_queue = 'googleads:customers:init:queue';
|
|
|
|
public function addCustomers()
|
|
{
|
|
// dump($options);
|
|
$thirdUser = ThirdUser::where('is_default', 'f')->where('third_type', 'google')
|
|
->find();
|
|
if (!$thirdUser || !$thirdUser->access_token) {
|
|
dump('not found third user');
|
|
return;
|
|
}
|
|
$option = [];
|
|
$option['refresh_token'] = $thirdUser->access_token;
|
|
// dump($option);
|
|
// $listAccessibleCustomers = $this->googleAdsAccountService->runListAccessibleCustomers($option);
|
|
// dump($listAccessibleCustomers);
|
|
// if (getenv('GOOGLE_DEVELOP_TOKEN_LEVEL') === 'test') {
|
|
// if (in_array(1509096882, $listAccessibleCustomers)) {
|
|
// $option['manager_customer_id'] = 1509096882; //开发者
|
|
// $option['login_customer_id'] = 1509096882;
|
|
// }
|
|
// if (in_array(1401879025, $listAccessibleCustomers)) {
|
|
// $option['manager_customer_id'] = 1401879025; //开发者
|
|
// $option['login_customer_id'] = 1401879025;
|
|
// }
|
|
// }else{
|
|
//正式开发者令牌2个参数默认不赋值
|
|
// }
|
|
$allRootAccounts = $this->googleAdsAccountService->runGetAccountHierarchy($option);
|
|
// dump($allRootAccounts);
|
|
foreach ($allRootAccounts as $rootAccountId => $accounts) {
|
|
foreach ($accounts as $account) {
|
|
// $customerId = $account['customer_id'];
|
|
// dump($customerId, $thirdUser->id, $rootAccountId, $account);
|
|
// if($account['customer_id'] == 1509096882)continue;
|
|
$this->googleOAuthService->saveThirdUserAdvertiser($account['customer_id'], $thirdUser->id, $rootAccountId, $account,$thirdUser->merchant_id);
|
|
}
|
|
}
|
|
$this->googleOAuthService->updateThirdUserDefault($thirdUser->id, 't');
|
|
// return $this->successResponse($allAccounts);
|
|
|
|
}
|
|
|
|
//添加某个root广告账号的全部层级账号
|
|
public function addRootCustomers()
|
|
{
|
|
// dump($options);
|
|
$thirdUser = ThirdUser::where('is_default', 'f')->where('third_type', 'google')
|
|
->find();
|
|
if (!$thirdUser || !$thirdUser->access_token) {
|
|
dump('not found third user');
|
|
return;
|
|
}
|
|
$option = [];
|
|
$option['refresh_token'] = $thirdUser->access_token;
|
|
$listAccessibleCustomers = $this->googleAdsAccountService->runListAccessibleCustomers($option);
|
|
foreach ($listAccessibleCustomers as $rootAccountId) {
|
|
$option['manager_customer_id'] = $rootAccountId; //开发者
|
|
$option['login_customer_id'] = $rootAccountId;
|
|
try {
|
|
// 获取当前 rootAccountId 的所有账户
|
|
$allAccountsByRoot = $this->googleAdsAccountService->runGetAccountHierarchy($option);
|
|
dump($allAccountsByRoot,333);
|
|
foreach ($allAccountsByRoot as $rootId => $accounts) {
|
|
foreach ($accounts as $account) {
|
|
$this->googleOAuthService->saveThirdUserAdvertiser(
|
|
$account['customer_id'],
|
|
$thirdUser->id,
|
|
$rootId,
|
|
$account,
|
|
$thirdUser->merchant_id
|
|
);
|
|
}
|
|
}
|
|
// 绑定的授权主体全部账号更新后将状态从 'f' 更新为 't'
|
|
$this->googleOAuthService->updateThirdUserDefault($thirdUser->id, 't');
|
|
} catch (\Exception $e) {
|
|
// 记录错误日志并跳过当前循环
|
|
Log::error("Error processing rootAccountId {$rootAccountId}: " . $e->getMessage());
|
|
continue;
|
|
}
|
|
//绑定的授权主体全部账号更新后 将f改成t
|
|
$this->googleOAuthService->updateThirdUserDefault($thirdUser->id, 't');
|
|
}
|
|
// return $this->successResponse($allAccounts);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* get assets
|
|
* @throws ApiException
|
|
*/
|
|
public function getAccountHierarchy($options)
|
|
{
|
|
$resourceName = $this->googleAdsAccountService->runGetAccountHierarchy($options);
|
|
return $this->successResponse(['links_resource_name' => $resourceName]);
|
|
|
|
|
|
$customers = $this->googleOAuthService->getGoogleAdCustomers([]);
|
|
foreach ($customers as $customerId) {
|
|
$googleAdsAssetService = new GoogleAdsAssetService($customerId);
|
|
$resourceName = $googleAdsAssetService->runListAssets($customerId);
|
|
}
|
|
|
|
// 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
|
|
]);
|
|
}
|
|
}
|