广告接口支持多店铺 更新3
This commit is contained in:
parent
6c865b684a
commit
773a7942ff
@ -7,6 +7,7 @@ use app\model\BpsAdCreativeInsight;
|
|||||||
use app\model\BpsAdInsight;
|
use app\model\BpsAdInsight;
|
||||||
|
|
||||||
//use app\model\BpsAdsMerchantRelation;
|
//use app\model\BpsAdsMerchantRelation;
|
||||||
|
use app\model\BpsAdsMerchantRelation;
|
||||||
use app\model\BpsAdsMerchantStoreRelation;
|
use app\model\BpsAdsMerchantStoreRelation;
|
||||||
use app\model\DayData;
|
use app\model\DayData;
|
||||||
use app\model\Campaign;
|
use app\model\Campaign;
|
||||||
@ -271,8 +272,12 @@ class AdsInsightService
|
|||||||
// $ads = $query->page($page, $pageSize)->select();
|
// $ads = $query->page($page, $pageSize)->select();
|
||||||
$campaigns = $query->limit(($page - 1) * $pageSize, $pageSize)->select();
|
$campaigns = $query->limit(($page - 1) * $pageSize, $pageSize)->select();
|
||||||
|
|
||||||
|
|
||||||
|
$accountIds = array_unique(array_column($campaigns, 'account_id'));
|
||||||
|
$accountNames = BpsAdsMerchantRelation::whereIn('account_id', $accountIds)
|
||||||
|
->column('account_name', 'account_id');
|
||||||
// 确保数据格式统一
|
// 确保数据格式统一
|
||||||
$result = array_map(function ($item) {
|
$result = array_map(function ($item) use ($accountNames){
|
||||||
// CTR 的计算:点击率 = 点击数 / 展示数
|
// CTR 的计算:点击率 = 点击数 / 展示数
|
||||||
$ctr = $item['impressions'] > 0 ? number_format(($item['clicks'] / $item['impressions']) * 100, 2) . '%' : '-';
|
$ctr = $item['impressions'] > 0 ? number_format(($item['clicks'] / $item['impressions']) * 100, 2) . '%' : '-';
|
||||||
// Conversion Rate 的计算:转换率 = 购买数 / 点击数
|
// Conversion Rate 的计算:转换率 = 购买数 / 点击数
|
||||||
@ -287,6 +292,7 @@ class AdsInsightService
|
|||||||
'id' => $item['campaign_id'],
|
'id' => $item['campaign_id'],
|
||||||
'platform_type' => $item['platform_type'],
|
'platform_type' => $item['platform_type'],
|
||||||
'account_id' => $item['account_id'], // 映射为 customer_id
|
'account_id' => $item['account_id'], // 映射为 customer_id
|
||||||
|
'account_name' => $accountNames[$item['account_id']] ?? '-', // 新增字段
|
||||||
'name' => $item['name'] ?: '-', // 若 name 为空则显示 '-'
|
'name' => $item['name'] ?: '-', // 若 name 为空则显示 '-'
|
||||||
'status' => $item['status'],
|
'status' => $item['status'],
|
||||||
'platform_purchase' => number_format($item['platform_purchase']),
|
'platform_purchase' => number_format($item['platform_purchase']),
|
||||||
@ -393,7 +399,8 @@ class AdsInsightService
|
|||||||
$sheet->setCellValue('A' . $row, $campaign['name']); // Ad Campaigns
|
$sheet->setCellValue('A' . $row, $campaign['name']); // Ad Campaigns
|
||||||
$sheet->setCellValue('B' . $row, self::$statusMapping[$campaign['status']]); // Status
|
$sheet->setCellValue('B' . $row, self::$statusMapping[$campaign['status']]); // Status
|
||||||
$sheet->setCellValue('C' . $row, self::$platformMapping[$campaign['platform_type']]); // Platform Type
|
$sheet->setCellValue('C' . $row, self::$platformMapping[$campaign['platform_type']]); // Platform Type
|
||||||
$sheet->setCellValueExplicit('D' . $row, (string)$campaign['account_id'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
// $sheet->setCellValueExplicit('D' . $row, (string)$campaign['account_id'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
||||||
|
$sheet->setCellValue('D' . $row, $campaign['account_name']);
|
||||||
$sheet->setCellValue('E' . $row, $campaign['platform_purchase']);
|
$sheet->setCellValue('E' . $row, $campaign['platform_purchase']);
|
||||||
$sheet->setCellValue('F' . $row, $campaign['pixel_purchase']);
|
$sheet->setCellValue('F' . $row, $campaign['pixel_purchase']);
|
||||||
$sheet->setCellValue('G' . $row, $campaign['roas']); // ROAS
|
$sheet->setCellValue('G' . $row, $campaign['roas']); // ROAS
|
||||||
@ -626,7 +633,7 @@ class AdsInsightService
|
|||||||
'A1' => 'Ads',
|
'A1' => 'Ads',
|
||||||
'B1' => 'Status',
|
'B1' => 'Status',
|
||||||
'C1' => 'Ad Platform', // 修正为 Ad Platform
|
'C1' => 'Ad Platform', // 修正为 Ad Platform
|
||||||
'D1' => 'Ad Accounts', // 修正为 Ad Accounts
|
'D1' => 'Ad Sets',
|
||||||
'E1' => 'Platform Purchases',
|
'E1' => 'Platform Purchases',
|
||||||
'F1' => 'Best Pixel Purchases',
|
'F1' => 'Best Pixel Purchases',
|
||||||
'G1' => 'ROAS',
|
'G1' => 'ROAS',
|
||||||
@ -657,7 +664,8 @@ class AdsInsightService
|
|||||||
$sheet->setCellValue('A' . $row, $ad['name']); // Ad Campaigns
|
$sheet->setCellValue('A' . $row, $ad['name']); // Ad Campaigns
|
||||||
$sheet->setCellValue('B' . $row, self::$statusMapping[$ad['status']]); // Status
|
$sheet->setCellValue('B' . $row, self::$statusMapping[$ad['status']]); // Status
|
||||||
$sheet->setCellValue('C' . $row, self::$platformMapping[$ad['platform_type']]); // Platform Type
|
$sheet->setCellValue('C' . $row, self::$platformMapping[$ad['platform_type']]); // Platform Type
|
||||||
$sheet->setCellValueExplicit('D' . $row, (string)$ad['account_id'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
// $sheet->setCellValueExplicit('D' . $row, (string)$ad['account_id'], \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
||||||
|
$sheet->setCellValue('D' . $row, $ad['ad_set_name']);
|
||||||
$sheet->setCellValue('E' . $row, $ad['platform_purchase']);
|
$sheet->setCellValue('E' . $row, $ad['platform_purchase']);
|
||||||
$sheet->setCellValue('F' . $row, $ad['pixel_purchase']);
|
$sheet->setCellValue('F' . $row, $ad['pixel_purchase']);
|
||||||
$sheet->setCellValue('G' . $row, $ad['roas']); // ROAS
|
$sheet->setCellValue('G' . $row, $ad['roas']); // ROAS
|
||||||
|
Loading…
Reference in New Issue
Block a user