report调用广告分析数据聚合接口 更新1

This commit is contained in:
hgc 2025-02-28 14:45:18 +08:00
parent 64f26d4ced
commit f3f564e0da

View File

@ -2,15 +2,9 @@
namespace app\controller;
use app\service\GoogleAdsAdService;
use app\service\GoogleAdsCampaignService;
use app\service\GoogleAdsGroupService;
//use app\service\GoogleAdsReportService;
use app\service\AdsInsightService;
use app\service\AdsDashboardService;
use app\service\LandingUrlInsightService;
use app\service\GoogleOAuthService;
use app\service\BpsAdAccountService;
use DI\Annotation\Inject;
use support\Request;
@ -39,29 +33,6 @@ class BpsAdController
*/
private $landingUrlInsightService;
/**
* @Inject
* @var GoogleAdsGroupService
*/
private $googleAdsGroupService;
/**
* @Inject
* @var GoogleAdsAdService
*/
private $googleAdsAdService;
/**
* @Inject
* @var GoogleAdsCampaignService
*/
private $googleAdsCampaignService;
/**
* @Inject
* @var GoogleOAuthService
*/
private $googleOAuthService;
/**
* @Inject
* @var BpsAdAccountService
@ -74,6 +45,10 @@ class BpsAdController
public function aggregateAd(Request $request)
{
$options = $request->all();
//是否远程调用
$request->rpc = true;
// $startDate = $options['conditions']['startDate'] ?? null;
// $endDate = $options['conditions']['endDate'] ?? null;
$metrics = explode(',', $options['conditions']['metrics'] ?? '');
@ -82,8 +57,6 @@ class BpsAdController
// $merchantId = $options['jwtClaims']['merchant_id'];
$preloadedData = [];
//是否远程调用
$request->rpc = true;
// 预处理指标类型
$needsDashboard = false;
@ -97,17 +70,24 @@ class BpsAdController
$platformKey = strtolower($platform);
if ($sourceType === 'dashboard') {
$needsDashboard = true;
if (in_array($platformKey, ['meta_ads', 'google_ads', 'tiktok_ads'])) {
$needsDashboard = true;
}
} elseif ($sourceType === 'analytics') {
if (in_array($platformKey, ['accounts', 'campaigns', 'adsets', 'ads', 'creatives'])) {
$analyticsEntities[$platformKey] = true;
}
}
}
// return $this->successResponse(['data' => [$needsDashboard,$analyticsEntities]], $request);
//调试用 return $this->successResponse(['data' => [$needsDashboard,$analyticsEntities]], $request);
// 批量预加载数据
if ($needsDashboard) {
$preloadedData['dashboard'] = $this->listCards($request)->original['data'] ?? [];
$dashboardData = $this->listCards($request);
// 转换平台 key 添加 _ads 后缀
$preloadedData['dashboard'] = [];
foreach ($dashboardData as $platform => $data) {
$preloadedData['dashboard'][$platform . '_ads'] = $data; //键名适配
}
}
foreach (array_keys($analyticsEntities) as $entity) {
@ -117,7 +97,6 @@ class BpsAdController
$preloadedData[$entity] = $this->$methodName($request);
}
}
// return $this->successResponse(['data' => $preloadedData], $request);
// 处理每个指标
foreach ($metrics as $metric) {
@ -135,7 +114,7 @@ class BpsAdController
}
} elseif ($sourceType === 'analytics' && isset($preloadedData[$platformKey])) {
if (isset($preloadedData[$platformKey][$field])) {
$result[$platformKey][$field] = $preloadedData[$platformKey][$field];
$result[$platformKey][$field] = $preloadedData[$platformKey][$field];
}
}
} catch (\Exception $e) {
@ -733,6 +712,7 @@ class BpsAdController
{
$options = $request->all();
$options['jwtClaims'] = $request->jwtClaims;
$options['rpc'] = $request->rpc ?? false;
// 获取请求参数
$cycle = $options['conditions']['dateType'] ?? 'today'; //默认today || today yesterday、month、year 、custom
@ -758,6 +738,9 @@ class BpsAdController
$startDate, // 开始日期
$endDate // 结束日期
);
if ($options['rpc']) {
return $result['data'];
}
// 返回结果
return $this->successResponse($result, $request);