From c4cfd60c7ab39840f2e320fcb0a98eb260d424e4 Mon Sep 17 00:00:00 2001 From: huangguancheng Date: Thu, 13 Feb 2025 14:42:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9F=A5=E8=AF=A2=20?= =?UTF-8?q?=E5=B9=BF=E5=91=8A=E4=B8=BB=E4=BD=93=E4=B8=8B=E5=B1=82=E7=BA=A7?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E8=8E=B7=E5=8F=96=E6=8E=A5=E5=8F=A3--?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=97=A0=E6=9D=83=E9=99=900level=E8=B4=A6?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/CustomerController.php | 31 +++++++++++++++++++++---- app/service/GoogleAdsAccountService.php | 3 +++ 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/app/controller/CustomerController.php b/app/controller/CustomerController.php index e57a2e6..41100d2 100644 --- a/app/controller/CustomerController.php +++ b/app/controller/CustomerController.php @@ -5,6 +5,7 @@ namespace app\controller; use app\service\GoogleOAuthService; use app\service\GoogleAdsAccountService; use Google\ApiCore\ApiException; +use support\Log; use support\Request; use support\Response; use DI\Annotation\Inject; @@ -55,8 +56,10 @@ class CustomerController { $options = $request->all(); - $options['refresh_token'] = $request->refresh_token; - $options['login_customer_id'] = $request->login_customer_id; + $options['refresh_token'] = $request->refresh_token; +// $options['login_customer_id'] = $request->login_customer_id; + $options['login_customer_id'] = $request->input('login_customer_id'); + $options['manager_customer_id'] = $request->input('manager_customer_id') !== null ? $request->input('manager_customer_id') : null; // 继续处理 Google Ads API 操作 return $this->getAccountHierarchy($options); } @@ -90,9 +93,27 @@ class CustomerController */ public function getAccountHierarchy($options): Response { -// dump($options); - $resourceName = $this->googleAdsAccountService->runGetAccountHierarchy($options); - return $this->successResponse(['links_resource_name' => $resourceName]); + if (!isset($options['manager_customer_id'])) { + $resourceName = []; + $listAccessibleCustomers = $this->googleAdsAccountService->runListAccessibleCustomers($options); + foreach ($listAccessibleCustomers as $rootAccountId) { + $options['manager_customer_id'] = $rootAccountId; //开发者 + $options['login_customer_id'] = $rootAccountId; + try { + // 获取当前 rootAccountId 的所有账户 + $allAccountsByRoot = $this->googleAdsAccountService->runGetAccountHierarchy($options); + $resourceName[$rootAccountId] = $allAccountsByRoot; + } catch (\Exception $e) { + // 记录错误日志并跳过当前循环 + Log::error("Error processing rootAccountId {$rootAccountId}: " . $e->getMessage()); + continue; + } + } + } else { + $resourceName = $this->googleAdsAccountService->runListAccessibleCustomers($options); + + } + return $this->successResponse(['links_resource_name' => $resourceName]); } /** diff --git a/app/service/GoogleAdsAccountService.php b/app/service/GoogleAdsAccountService.php index 3c53188..382bbcd 100644 --- a/app/service/GoogleAdsAccountService.php +++ b/app/service/GoogleAdsAccountService.php @@ -741,6 +741,9 @@ class GoogleAdsAccountService extends BaseService 'manager' => $customerClient->getManager(), 'test_account' => $customerClient->getTestAccount(), 'currency' => $customerClient->getCurrencyCode(), + 'status' => $customerClient->getStatus(), + 'level' => $customerClient->getLevel(), + 'time_zone' => $customerClient->getTimeZone(), ]; // Recursively call this function for all child accounts of $customerClient.