webman_ad/app/controller/GoogleAdsController.php
2024-12-17 11:15:18 +08:00

207 lines
5.4 KiB
PHP

<?php
namespace app\controller;
use Google\ApiCore\ApiException;
use support\Request;
use app\service\GoogleAdsCampaignService;
use app\service\GoogleAdsGroupService;
use app\service\GoogleAdsAccountService;
use support\Response;
use DI\Annotation\Inject;
class GoogleAdsController
{
/**
* @Inject
* @var GoogleAdsCampaignService
*/
private $googleAdsCampaignService;
/**
* @Inject
* @var GoogleAdsGroupService
*/
private $googleAdsGroupService;
/**
* @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 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 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]);
}
// 可以加入一些公共方法
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,
]);
}
}