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