all(); // 继续处理 Google Ads API 操作 return $this->addCampaign($options); } public function listCampaigns(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->getCampaigns($options); } public function deleteCampaign(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->removeCampaign($options); } public function updateCampaign(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->modifyCampaign($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 createGroup(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->addGroup($options); } public function updateGroup(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->modifyGroup($options); } public function updateAd(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->modifyAd($options); } public function updateResponsiveSearchAd(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->modifyResponsiveSearchAd($options); } public function listResponsiveSearchAds(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->getResponsiveSearchAds($options); } public function listGoogleAdsFields(Request $request) { $options = $request->all(); // 继续处理 Google Ads API 操作 return $this->searchForGoogleAdsFields($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(); $resourceName = $this->googleAdsCampaignService->runAddCampaign(4060397299, $options); return $this->successResponse(['campaign_resource_name' => $resourceName]); } /** * 创建广告预算 * @throws ApiException */ public function addCampaignBudget($options): Response { $resourceName = $this->googleAdsCampaignService->runAddCampaignBudget(0, $options); return $this->successResponse(['budget_resource_name' => $resourceName]); } /** * 关联广告客户ID * @throws ApiException */ public function addLinkManagerToClient($options): Response { $resourceName = $this->googleAdsAccountService->runLinkManagerToClient($options); return $this->successResponse(['link_resource_name' => $resourceName]); } /** * 关联广告客户ID * @throws ApiException */ public function listAccessibleCustomers(): Response { $resourceName = $this->googleAdsAccountService->runListAccessibleCustomers(); return $this->successResponse(['links_resource_name' => $resourceName]); } /** * get campaigns * @throws ApiException */ public function getCampaigns($options): Response { $resourceName = $this->googleAdsCampaignService->runListCampaigns($options['customer_id']); return $this->successResponse(['campaigns_list' => $resourceName]); } /** * 删除广告系列 * @throws ApiException */ public function removeCampaign($options): Response { $resourceName = $this->googleAdsCampaignService->runRemoveCampaign($options); return $this->successResponse(['campaign_deleted' => $resourceName]); } /** * 更新广告系列 * @throws ApiException */ public function modifyCampaign($options): Response { $resourceName = $this->googleAdsCampaignService->runUpdateCampaign($options); return $this->successResponse(['campaign_updated' => $resourceName]); } /** * 新增广告组 * @throws ApiException */ public function addGroup($options): Response { $resourceName = $this->googleAdsGroupService->runAddGroup($options); return $this->successResponse(['groups_created' => $resourceName]); } /** * 更新广告组 * @throws ApiException */ public function modifyGroup($options): Response { $adGroupStatus = [ 0, // UNSPECIFIED 1, // UNKNOWN 2, // ENABLED 3, // PAUSED 4 // REMOVED ]; $options['bid_micro_amount'] = $options['amount'] * 1000000 < 0 ? 0 : $options['amount'] * 1000000; if (!in_array($options['status'], $adGroupStatus)) { return $this->errorResponse(101, 'status参数错误'); } $resourceName = $this->googleAdsGroupService->runUpdateGroup($options); return $this->successResponse(['group_updated' => $resourceName]); } /** * 更新广告 * @throws ApiException */ public function modifyAd($options): Response { $adGroupStatus = [ 0, // UNSPECIFIED 1, // UNKNOWN 2, // ENABLED 3, // PAUSED 4 // REMOVED ]; if (!in_array($options['status'], $adGroupStatus)) { return $this->errorResponse(101, 'status参数错误'); } $resourceName = $this->googleAdsAdService->runUpdateAd($options); return $this->successResponse(['ad_updated' => $resourceName]); } /** * get campaigns * @throws ApiException */ public function getResponsiveSearchAds($options): Response { $resourceName = $this->googleAdsAdService->runGetResponsiveSearchAds($options); return $this->successResponse(['ads_list' => $resourceName]); } /** * get campaigns * @throws ApiException */ public function searchForGoogleAdsFields($options): Response { $googleAdsFieldData = $this->googleAdsAdService->runSearchForGoogleAdsFields($options); return $this->successResponse(['ads_fields' => $googleAdsFieldData]); } /** * get campaigns * @throws ApiException */ public function modifyResponsiveSearchAd($options): Response { $resourceName = $this->googleAdsAdService->runUpdateResponsiveSearchAd($options); return $this->successResponse(['ad_updated' => $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 ]); } }