143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace app\controller;
 | |
| 
 | |
| use app\service\GoogleOAuthService;
 | |
| use app\service\GoogleAdsAccountService;
 | |
| use Google\ApiCore\ApiException;
 | |
| use support\Request;
 | |
| use support\Response;
 | |
| use DI\Annotation\Inject;
 | |
| 
 | |
| //use app\model\ThirdUserAdvertiser;
 | |
| 
 | |
| class CustomerController
 | |
| {
 | |
| 
 | |
|     /**
 | |
|      * @Inject
 | |
|      * @var GoogleOAuthService
 | |
|      */
 | |
|     private $googleOAuthService;
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * @Inject
 | |
|      * @var GoogleAdsAccountService
 | |
|      */
 | |
|     private $googleAdsAccountService;
 | |
| 
 | |
|     //绑定某个广告账号
 | |
|     public function bindAdvertiser(Request $request)
 | |
|     {
 | |
|         $customerId         = $request->input('customer_id'); // 需要绑定的广告账号 ID
 | |
|         $thirdUserId        = $request->input('third_user_id'); // bps_third_user的id
 | |
|         $googleOAuthService = new GoogleOAuthService();
 | |
|         $hasThirdUser       = $googleOAuthService->bindThirdUserAdvertiser($customerId, $thirdUserId);
 | |
|         if (!$hasThirdUser) {
 | |
|             return $this->errorResponse(300, 'Invalid state parameter');
 | |
|         }
 | |
|         return $this->successResponse($hasThirdUser);
 | |
|     }
 | |
| 
 | |
|     public function getCustomerList(Request $request)
 | |
|     {
 | |
|         $thirdUserId = $request->input('third_user_id'); // bps_third_user的id
 | |
| 
 | |
|         $googleOAuthService = new GoogleOAuthService();
 | |
|         $hasThirdUser       = $googleOAuthService->getCustomerList($thirdUserId);
 | |
|         if (!$hasThirdUser) {
 | |
|             return $this->errorResponse(300, 'Invalid state parameter');
 | |
|         }
 | |
|         return $this->successResponse($hasThirdUser);
 | |
| 
 | |
|     }
 | |
| 
 | |
| 
 | |
|     public function accessibleCustomers(Request $request)
 | |
|     {
 | |
|         $options                      = $request->all();
 | |
|         $options['refresh_token']     = $request->refresh_token;
 | |
|         $options['login_customer_id'] = $request->login_customer_id;
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->listAccessibleCustomers($options);
 | |
|     }
 | |
| 
 | |
|     public function accountHierarchy(Request $request)
 | |
|     {
 | |
|         $options = $request->all();
 | |
| 
 | |
|         $options['refresh_token']     = $request->refresh_token;
 | |
|         $options['login_customer_id'] = $request->login_customer_id;
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->getAccountHierarchy($options);
 | |
|     }
 | |
| 
 | |
|     //管理用户访问权限
 | |
|     public function accountAccess(Request $request)
 | |
|     {
 | |
|         $options = $request->all();
 | |
| 
 | |
|         $options['refresh_token']     = $request->refresh_token;
 | |
|         $options['login_customer_id'] = $request->login_customer_id;
 | |
| 
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->getAccountAccess($options);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     /**
 | |
|      * 关联广告客户ID
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function listAccessibleCustomers($options): Response
 | |
|     {
 | |
|         $resourceName = $this->googleAdsAccountService->runListAccessibleCustomers($options);
 | |
|         return $this->successResponse(['links_resource_name' => $resourceName]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 广告主体下层级账号
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function getAccountHierarchy($options): Response
 | |
|     {
 | |
| //        dump($options);
 | |
|         $resourceName = $this->googleAdsAccountService->runGetAccountHierarchy($options);
 | |
|         return $this->successResponse(['links_resource_name' => $resourceName]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 管理用户访问权限
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function getAccountAccess($options): Response
 | |
|     {
 | |
| //        dump($options);
 | |
| 
 | |
|         $resourceName = $this->googleAdsAccountService->runGetAccountAccess($options);
 | |
|         return $this->successResponse(['links_resource_name' => $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
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
| 
 | |
| } |