creative分页

This commit is contained in:
huangguancheng 2025-01-13 15:23:15 +08:00
parent 5c39141164
commit ed937585db

View File

@ -829,7 +829,15 @@ class AdsInsightService
]); ]);
// 6. 执行查询并获取聚合结果 // 6. 执行查询并获取聚合结果
$aggregatedData = $creativeDataQuery->select(); // $aggregatedData = $creativeDataQuery->select();
// 6. 执行查询并获取聚合结果
$aggregatedData = $creativeDataQuery->select()->toArray(); // 转换为数组处理
$totalRecords = count($aggregatedData); // 总记录数
// 计算分页起始索引
$startIndex = ($page - 1) * $pageSize;
// 打印调试 SQL 查询 // 打印调试 SQL 查询
//$sql = $creativeDataQuery->getLastSql(); //$sql = $creativeDataQuery->getLastSql();
// dump($sql); // dump($sql);
@ -842,15 +850,16 @@ class AdsInsightService
// 8. 遍历查询结果并计算每个 creative 的相关统计数据 // 8. 遍历查询结果并计算每个 creative 的相关统计数据
foreach ($aggregatedData as $creativeData) { foreach ($aggregatedData as $creativeData) {
// 初始化该 creative_id 的数据(如果不存在) // 初始化该 creative_id 的数据(如果不存在)
if (!isset($creativeSummaryData[$creativeData->creative_id])) { $creativeId = $creativeData['creative_id'];
$creativeSummaryData[$creativeData->creative_id] = [ if (!isset($creativeSummaryData[$creativeId])) {
'creative_id' => $creativeData->creative_id, $creativeSummaryData[$creativeId] = [
'platform' => $creativeData->platform, 'creative_id' => $creativeData['creative_id'],
'creative' => $creativeData->creative_name, // 使用联接查询中的 creative_name 'platform' => $creativeData['platform'],
'creative_type' => $creativeData->creative_type, // 使用联接查询中的 creative_name 'creative' => $creativeData['creative_name'],
'creative_url' => $creativeData->creative_url ?: '', // 使用联接查询中的 creative_url 'creative_type' => $creativeData['creative_type'],
'thumbnail_url' => $creativeData->thumbnail_url ?: '', // 使用联接查询中的 thumbnail_url 'creative_url' => $creativeData['creative_url'] ?? '',
'title' => $creativeData->title ?: '', // 使用联接查询中的 title 'thumbnail_url' => $creativeData['thumbnail_url'] ?? '',
'title' => $creativeData['title'] ?? '',
'spend' => 0, 'spend' => 0,
'purchases_value' => 0, 'purchases_value' => 0,
'roas' => 0, 'roas' => 0,
@ -882,21 +891,21 @@ class AdsInsightService
} }
// 更新该 creative_id 的统计数据 // 更新该 creative_id 的统计数据
$creativeSummaryData[$creativeData->creative_id]['spend'] += $creativeData->total_spend; $creativeSummaryData[$creativeId]['spend'] += $creativeData['total_spend'];
$creativeSummaryData[$creativeData->creative_id]['purchases_value'] += $creativeData->total_purchases_value; $creativeSummaryData[$creativeId]['purchases_value'] += $creativeData['total_purchases_value'];
$creativeSummaryData[$creativeData->creative_id]['purchases'] += $creativeData->total_purchases; $creativeSummaryData[$creativeId]['purchases'] += $creativeData['total_purchases'];
$creativeSummaryData[$creativeData->creative_id]['impressions'] += $creativeData->total_impressions; $creativeSummaryData[$creativeId]['impressions'] += $creativeData['total_impressions'];
$creativeSummaryData[$creativeData->creative_id]['clicks'] += $creativeData->total_clicks; $creativeSummaryData[$creativeId]['clicks'] += $creativeData['total_clicks'];
$creativeSummaryData[$creativeData->creative_id]['revenue'] += $creativeData->total_revenue; $creativeSummaryData[$creativeId]['revenue'] += $creativeData['total_revenue'];
$creativeSummaryData[$creativeData->creative_id]['video_plays_25_rate'] += $creativeData->video_plays_25_rate; $creativeSummaryData[$creativeId]['video_plays_25_rate'] += $creativeData['video_plays_25_rate'];
$creativeSummaryData[$creativeData->creative_id]['video_plays_50_rate'] += $creativeData->video_plays_50_rate; $creativeSummaryData[$creativeId]['video_plays_50_rate'] += $creativeData['video_plays_50_rate'];
$creativeSummaryData[$creativeData->creative_id]['video_plays_75_rate'] += $creativeData->video_plays_75_rate; $creativeSummaryData[$creativeId]['video_plays_75_rate'] += $creativeData['video_plays_75_rate'];
$creativeSummaryData[$creativeData->creative_id]['video_plays_100_rate'] += $creativeData->video_plays_100_rate; $creativeSummaryData[$creativeId]['video_plays_100_rate'] += $creativeData['video_plays_100_rate'];
// 计算 ROAS // 计算 ROAS
$roas = $creativeSummaryData[$creativeData->creative_id]['spend'] > 0 $roas = $creativeSummaryData[$creativeId]['spend'] > 0
? $creativeSummaryData[$creativeData->creative_id]['revenue'] / $creativeSummaryData[$creativeData->creative_id]['spend'] ? $creativeSummaryData[$creativeId]['revenue'] / $creativeSummaryData[$creativeId]['spend']
: 0; : 0;
$creativeSummaryData[$creativeData->creative_id]['roas'] = $roas > 0 ? number_format($roas, 2) . 'X' : '-'; $creativeSummaryData[$creativeId]['roas'] = $roas > 0 ? number_format($roas, 2) . 'X' : '-';
// 填充广告计数 // 填充广告计数
// $creativeSummaryData[$creativeData->creative_id]['ad_count'] = rand(10, 200); // 每个 creative_id 对应一个广告 // $creativeSummaryData[$creativeData->creative_id]['ad_count'] = rand(10, 200); // 每个 creative_id 对应一个广告
@ -1009,11 +1018,11 @@ class AdsInsightService
// 添加更多的格式化字段 // 添加更多的格式化字段
]; ];
}, $creativeSummaryData); }, $creativeSummaryData);
// $formattedData = array_values($creativeSummaryData); // 未分页处理
$pagedData = array_slice($creativeSummaryData, $startIndex, $pageSize); // 分页处理
// 9. 返回分页数据 // 9. 返回分页数据
return [ return [
'data' => array_values($formattedData), 'data' => $pagedData,
'total' => count($creativeSummaryData), 'total' => count($creativeSummaryData),
'statistics' => $statistics, // 汇总的统计数据 'statistics' => $statistics, // 汇总的统计数据
'pagination' => [ 'pagination' => [