207 lines
5.4 KiB
PHP
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,
|
|
]);
|
|
}
|
|
|
|
}
|
|
|