113 lines
3.0 KiB
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
|
|
]);
|
|
}
|
|
|
|
|
|
} |