webman_ad/app/controller/CustomerController.php

113 lines
3.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();
// 继续处理 Google Ads API 操作
return $this->listAccessibleCustomers($options);
}
public function accountHierarchy(Request $request)
{
$options = $request->all();
// 继续处理 Google Ads API 操作
return $this->getAccountHierarchy($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
{
$resourceName = $this->googleAdsAccountService->runGetAccountHierarchy($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
]);
}
}