129 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace app\controller;
 | |
| 
 | |
| use Google\ApiCore\ApiException;
 | |
| use support\Request;
 | |
| use app\service\GoogleAdsCampaignService;
 | |
| use app\service\GoogleAdsAccountService;
 | |
| use support\Response;
 | |
| use DI\Annotation\Inject;
 | |
| 
 | |
| class GoogleAdsController
 | |
| {
 | |
|     /**
 | |
|      * @Inject
 | |
|      * @var GoogleAdsCampaignService
 | |
|      */
 | |
| 
 | |
|     private $googleAdsCampaignService;
 | |
| 
 | |
|     /**
 | |
|      * @Inject
 | |
|      * @var GoogleAdsAccountService
 | |
|      */
 | |
|     private $googleAdsAccountService;
 | |
| 
 | |
| 
 | |
| 
 | |
|     public function __construct()
 | |
|     {
 | |
| 
 | |
|     }
 | |
| 
 | |
|     public function createCampaign(Request $request)
 | |
|     {
 | |
|         $options = $request->all();
 | |
| 
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->addCampaign($options);
 | |
|     }
 | |
| 
 | |
|     public function createCampaignBudget(Request $request)
 | |
|     {
 | |
|         $options = $request->all();
 | |
| //        return json(['code' => 0, 'msg' => getenv('GOOGLE_ADS_CUSTOMER_ID'),'data'=>$options]);
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->addCampaignBudget($options);
 | |
|     }
 | |
| 
 | |
|     public function createLinkManagerToClient(Request $request)
 | |
|     {
 | |
|         $options = $request->all();
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->addLinkManagerToClient($options);
 | |
|     }
 | |
| 
 | |
|     public function accessibleCustomers(Request $request)
 | |
|     {
 | |
| //        $options = $request->all();
 | |
|         // 继续处理 Google Ads API 操作
 | |
|         return $this->listAccessibleCustomers();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 创建广告系列
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function addCampaign($options): Response
 | |
|     {
 | |
|         // 使用 $options 数组中的数据进行 Google Ads API 的调用
 | |
|         // 例如使用 $options['customer_id'] 和 $options['feed_id']
 | |
|         // 调用相应的 Google Ads 服务
 | |
| //        $budgetResourceName   = $this->googleAdsCampaignBudgetService->createCampaignBudget();
 | |
|         $campaignResourceName = $this->googleAdsCampaignService->runAddCampaign(4060397299, $options);
 | |
|         return $this->successResponse(['campaignResourceName' => $campaignResourceName]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 创建广告预算
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function addCampaignBudget($options): Response
 | |
|     {
 | |
|         $budgetResourceName = $this->googleAdsCampaignService->runAddCampaignBudget(0, $options);
 | |
|         return $this->successResponse(['budgetResourceName' => $budgetResourceName]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 关联广告客户ID
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function addLinkManagerToClient($options): Response
 | |
|     {
 | |
|         $linkResourceName = $this->googleAdsAccountService->runLinkManagerToClient($options);
 | |
|         return $this->successResponse(['linkResourceName' => $linkResourceName]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 关联广告客户ID
 | |
|      * @throws ApiException
 | |
|      */
 | |
|     public function listAccessibleCustomers(): Response
 | |
|     {
 | |
|         $linkResourceName = $this->googleAdsAccountService->runListAccessibleCustomers();
 | |
|         return $this->successResponse(['linkResourceName' => $linkResourceName]);
 | |
|     }
 | |
| 
 | |
|     // 可以加入一些公共方法
 | |
|     protected function successResponse($data): Response
 | |
|     {
 | |
|         return Json([
 | |
|             'code' => 200,
 | |
|             'status' => 'success',
 | |
|             'data' => $data,
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     protected function errorResponse($message): Response
 | |
|     {
 | |
|         return Json([
 | |
|             'code' => 400,
 | |
|             'status' => 'error',
 | |
|             'message' => $message,
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
| }
 | |
| 
 |