修改报告接口字段
This commit is contained in:
parent
17ee8aa79b
commit
2371684912
@ -21,12 +21,14 @@ class GoogleAdsReportService
|
||||
{
|
||||
// 基础查询:广告表和日数据表联接
|
||||
$query = Ad::alias('a')
|
||||
->leftJoin('bps_google_ads_ad_group g', 'a.ad_group_id = g.ad_group_id') // 关联广告组表
|
||||
->leftJoin('bps_google_ads_campaign c', 'a.campaign_id = c.campaign_id') // 关联广告系列表
|
||||
->leftJoin('bps_google_ad_day_data d', 'a.ad_id = d.ad_id')
|
||||
->field('a.ad_id, a.ad_name, a.status as ad_status, a.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) as cost_micros,
|
||||
SUM(d.conversions) as conversions, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as impressions')
|
||||
->group('a.ad_id')
|
||||
->field('a.ad_id, -1 as ad_name, a.status as ad_status, a.customer_id,a.ad_group_id, g.ad_group_name, a.campaign_id,c.campaign_name,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) / 1000000 as spend,
|
||||
SUM(d.conversions) as results, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as reach,-1 as roas,-1 as be_roas,-1 as revenue, -1 as profit, -1 as delivery')
|
||||
->group('a.ad_id, a.ad_name, a.status, a.customer_id, a.ad_group_id, g.ad_group_name, a.campaign_id, c.campaign_name') // 确保所有字段都在 group by 中
|
||||
->where(function ($query) use ($keyword) {
|
||||
if ($keyword) {
|
||||
$query->where('a.ad_name', 'like', '%' . $keyword . '%');
|
||||
@ -77,12 +79,14 @@ class GoogleAdsReportService
|
||||
{
|
||||
// 获取所有的广告数据
|
||||
$query = Ad::alias('a')
|
||||
->leftJoin('bps_google_ads_ad_group g', 'a.ad_group_id = g.ad_group_id') // 关联广告组表
|
||||
->leftJoin('bps_google_ads_campaign c', 'a.campaign_id = c.campaign_id') // 关联广告系列表
|
||||
->leftJoin('bps_google_ad_day_data d', 'a.ad_id = d.ad_id')
|
||||
->field('a.ad_id, a.ad_name, a.status as ad_status, a.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) as cost_micros,
|
||||
SUM(d.conversions) as conversions, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as impressions')
|
||||
->group('a.ad_id')
|
||||
->field('a.ad_id, -1 as ad_name, a.status as ad_status, a.customer_id,a.ad_group_id, g.ad_group_name, a.campaign_id,c.campaign_name,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) / 1000000 as spend,
|
||||
SUM(d.conversions) as results, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as reach,-1 as roas,-1 as be_roas,-1 as revenue, -1 as profit, -1 as delivery')
|
||||
->group('a.ad_id, a.ad_name, a.status, a.customer_id, a.ad_group_id, g.ad_group_name, a.campaign_id, c.campaign_name') // 确保所有字段都在 group by 中
|
||||
->where(function ($query) use ($keyword) {
|
||||
if ($keyword) {
|
||||
$query->where('a.ad_name', 'like', '%' . $keyword . '%');
|
||||
@ -119,27 +123,43 @@ class GoogleAdsReportService
|
||||
|
||||
// 设置表头
|
||||
$sheet->setCellValue('A1', 'Ad ID');
|
||||
$sheet->setCellValue('B1', 'Ad Name');
|
||||
$sheet->setCellValue('C1', 'Customer ID');
|
||||
$sheet->setCellValue('D1', 'Ad Status');
|
||||
$sheet->setCellValue('E1', 'Clicks');
|
||||
$sheet->setCellValue('F1', 'Cost Micros');
|
||||
$sheet->setCellValue('G1', 'Conversions');
|
||||
$sheet->setCellValue('H1', 'Conversions Value');
|
||||
$sheet->setCellValue('I1', 'Impressions');
|
||||
$sheet->setCellValue('B1', 'Ad Status');
|
||||
$sheet->setCellValue('C1', 'Name');
|
||||
$sheet->setCellValue('D1', 'Campaign');
|
||||
$sheet->setCellValue('E1', 'Ad Set');
|
||||
$sheet->setCellValue('F1', 'Delivery');
|
||||
$sheet->setCellValue('G1', 'Results');
|
||||
$sheet->setCellValue('H1', 'Reach');
|
||||
$sheet->setCellValue('I1', 'Revenue');
|
||||
$sheet->setCellValue('J1', 'ROAS');
|
||||
$sheet->setCellValue('K1', 'beROAS');
|
||||
$sheet->setCellValue('L1', 'Profit');
|
||||
$sheet->setCellValue('M1', 'Spend');
|
||||
// $sheet->setCellValue('N1', 'Customer ID');
|
||||
// $sheet->setCellValue('E1', 'Clicks');
|
||||
// $sheet->setCellValue('F1', 'Cost Micros');
|
||||
// $sheet->setCellValue('G1', 'Conversions');
|
||||
// $sheet->setCellValue('H1', 'Conversions Value');
|
||||
// $sheet->setCellValue('I1', 'Impressions');
|
||||
|
||||
// 填充数据
|
||||
$row = 2; // 从第二行开始
|
||||
foreach ($ads as $ad) {
|
||||
$sheet->setCellValueExplicit('A' . $row, (string)$ad->ad_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置 ad_id 为文本
|
||||
$sheet->setCellValueExplicit('B' . $row, $ad->ad_name); // 直接设置 ad_name
|
||||
$sheet->setCellValueExplicit('C' . $row, (string)$ad->customer_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置 customer_id 为文本
|
||||
$sheet->setCellValue('D' . $row, $ad->ad_status);
|
||||
$sheet->setCellValue('E' . $row, $ad->clicks);
|
||||
$sheet->setCellValue('F' . $row, $ad->cost_micros);
|
||||
$sheet->setCellValue('B' . $row, $ad->ad_status);
|
||||
$sheet->setCellValueExplicit('C' . $row, $ad->ad_name); // 直接设置 ad_name
|
||||
$sheet->setCellValueExplicit('D' . $row, $ad->campaign_name); // 直接设置 ad_name
|
||||
$sheet->setCellValueExplicit('E' . $row, $ad->ad_group_name); // 直接设置 ad_name
|
||||
$sheet->setCellValueExplicit('F' . $row, $ad->delivery); // 直接设置 ad_name
|
||||
$sheet->setCellValue('G' . $row, $ad->conversions);
|
||||
$sheet->setCellValue('H' . $row, $ad->conversions_value);
|
||||
$sheet->setCellValue('I' . $row, $ad->impressions);
|
||||
$sheet->setCellValue('H' . $row, $ad->reach);
|
||||
$sheet->setCellValue('I' . $row, $ad->revenue);
|
||||
$sheet->setCellValue('J' . $row, $ad->roas);
|
||||
$sheet->setCellValue('K' . $row, $ad->be_roas);
|
||||
$sheet->setCellValue('L' . $row, $ad->profit);
|
||||
$sheet->setCellValue('M' . $row, $ad->spend);
|
||||
// $sheet->setCellValueExplicit('N' . $row, (string)$ad->customer_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置 customer_id 为文本
|
||||
|
||||
$row++;
|
||||
}
|
||||
|
||||
@ -168,11 +188,11 @@ class GoogleAdsReportService
|
||||
// 基础查询:广告活动和日数据表联接
|
||||
$query = Campaign::alias('c')
|
||||
->leftJoin('bps_google_ad_day_data d', 'c.campaign_id = d.campaign_id')
|
||||
->field('c.campaign_id, c.status as campaign_status, c.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) as cost_micros,
|
||||
SUM(d.conversions) as conversions, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as impressions')
|
||||
->group('c.campaign_id')
|
||||
->field('c.campaign_id, c.status as campaign_status,c.campaign_name, c.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) / 1000000 as spend,
|
||||
SUM(d.conversions) as results, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as reach,-1 as roas,-1 as be_roas,-1 as revenue, -1 as profit, -1 as delivery')
|
||||
->group('c.campaign_id, c.status,c.customer_id, c.campaign_name')
|
||||
->where(function ($query) use ($keyword) {
|
||||
if ($keyword) {
|
||||
$query->where('c.campaign_name', 'like', '%' . $keyword . '%');
|
||||
@ -225,11 +245,11 @@ class GoogleAdsReportService
|
||||
// 获取所有的广告系列数据
|
||||
$query = Campaign::alias('c')
|
||||
->leftJoin('bps_google_ad_day_data d', 'c.campaign_id = d.campaign_id')
|
||||
->field('c.campaign_id, c.status as campaign_status, c.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) as cost_micros,
|
||||
SUM(d.conversions) as conversions, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as impressions')
|
||||
->group('c.campaign_id')
|
||||
->field('c.campaign_id, c.status as campaign_status,c.campaign_name, c.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) / 1000000 as spend,
|
||||
SUM(d.conversions) as results, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as reach,-1 as roas,-1 as be_roas,-1 as revenue, -1 as profit, -1 as delivery')
|
||||
->group('c.campaign_id, c.status,c.customer_id, c.campaign_name')
|
||||
->where(function ($query) use ($keyword) {
|
||||
if ($keyword) {
|
||||
$query->where('c.campaign_name', 'like', '%' . $keyword . '%');
|
||||
@ -266,26 +286,33 @@ class GoogleAdsReportService
|
||||
|
||||
// 设置表头
|
||||
$sheet->setCellValue('A1', 'Campaign ID');
|
||||
$sheet->setCellValue('B1', 'Customer ID');
|
||||
$sheet->setCellValue('C1', 'Status');
|
||||
$sheet->setCellValue('D1', 'Clicks');
|
||||
$sheet->setCellValue('E1', 'Cost Micros');
|
||||
$sheet->setCellValue('F1', 'Conversions');
|
||||
$sheet->setCellValue('G1', 'Conversions Value');
|
||||
$sheet->setCellValue('H1', 'Impressions');
|
||||
$sheet->setCellValue('B1', 'Status');
|
||||
$sheet->setCellValue('C1', 'Name');
|
||||
$sheet->setCellValue('D1', 'Delivery');
|
||||
$sheet->setCellValue('E1', 'Results');
|
||||
$sheet->setCellValue('F1', 'Reach');
|
||||
$sheet->setCellValue('G1', 'Revenue');
|
||||
$sheet->setCellValue('H1', 'ROAS');
|
||||
$sheet->setCellValue('I1', 'beROAS');
|
||||
$sheet->setCellValue('J1', 'Profit');
|
||||
$sheet->setCellValue('K1', 'Spend');
|
||||
|
||||
// 填充数据
|
||||
$row = 2; // 从第二行开始
|
||||
foreach ($campaigns as $campaign) {
|
||||
//使用 setCellValueExplicit 显式设置为文本格式
|
||||
$sheet->setCellValueExplicit('A' . $row, (string)$campaign->campaign_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置为文本格式
|
||||
$sheet->setCellValueExplicit('B' . $row, (string)$campaign->customer_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置为文本格式
|
||||
$sheet->setCellValue('C' . $row, $campaign->campaign_status);
|
||||
$sheet->setCellValue('D' . $row, $campaign->clicks);
|
||||
$sheet->setCellValue('E' . $row, $campaign->cost_micros);
|
||||
$sheet->setCellValue('F' . $row, $campaign->conversions);
|
||||
$sheet->setCellValue('G' . $row, $campaign->conversions_value);
|
||||
$sheet->setCellValue('H' . $row, $campaign->impressions);
|
||||
$sheet->setCellValue('B' . $row, $campaign->campaign_status);
|
||||
$sheet->setCellValueExplicit('C' . $row, $campaign->campaign_name);
|
||||
$sheet->setCellValueExplicit('D' . $row, $campaign->delivery); // 直接设置 ad_name
|
||||
$sheet->setCellValue('E' . $row, $campaign->conversions);
|
||||
$sheet->setCellValue('F' . $row, $campaign->reach);
|
||||
$sheet->setCellValue('G' . $row, $campaign->revenue);
|
||||
$sheet->setCellValue('H' . $row, $campaign->roas);
|
||||
$sheet->setCellValue('I' . $row, $campaign->be_roas);
|
||||
$sheet->setCellValue('J' . $row, $campaign->profit);
|
||||
$sheet->setCellValue('K' . $row, $campaign->spend);
|
||||
// $sheet->setCellValueExplicit('N' . $row, (string)$campaign->customer_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置为文本格式
|
||||
$row++;
|
||||
}
|
||||
|
||||
@ -315,11 +342,12 @@ class GoogleAdsReportService
|
||||
// 初始化查询
|
||||
$query = AdGroup::alias('ag')
|
||||
->leftJoin('bps_google_ad_day_data d', 'ag.ad_group_id = d.ad_group_id')
|
||||
->field('ag.ad_group_id, ag.campaign_id, ag.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) as cost_micros,
|
||||
SUM(d.conversions) as conversions, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as impressions')
|
||||
->group('ag.ad_group_id')
|
||||
->leftJoin('bps_google_ads_campaign c', 'ag.campaign_id = c.campaign_id') // 关联广告系列表
|
||||
->field('ag.ad_group_id,ag.ad_group_name,ag.status as ad_group_status, ag.campaign_id,c.campaign_name, ag.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) / 1000000 as spend,
|
||||
SUM(d.conversions) as results, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as reach,-1 as roas,-1 as be_roas,-1 as revenue, -1 as profit, -1 as delivery')
|
||||
->group('ag.ad_group_id,ag.ad_group_name,ag.status, ag.campaign_id,c.campaign_name, ag.customer_id')
|
||||
->where(function ($query) use ($keyword) {
|
||||
if ($keyword) {
|
||||
$query->where('ag.ad_group_name', 'like', '%' . $keyword . '%');
|
||||
@ -382,11 +410,12 @@ class GoogleAdsReportService
|
||||
// 初始化查询
|
||||
$query = AdGroup::alias('ag')
|
||||
->leftJoin('bps_google_ad_day_data d', 'ag.ad_group_id = d.ad_group_id')
|
||||
->field('ag.ad_group_id, ag.campaign_id, ag.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) as cost_micros,
|
||||
SUM(d.conversions) as conversions, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as impressions')
|
||||
->group('ag.ad_group_id')
|
||||
->leftJoin('bps_google_ads_campaign c', 'ag.campaign_id = c.campaign_id') // 关联广告系列表
|
||||
->field('ag.ad_group_id,ag.ad_group_name,ag.status as ad_group_status, ag.campaign_id,c.campaign_name, ag.customer_id,
|
||||
SUM(d.clicks) as clicks, SUM(d.cost_micros) / 1000000 as spend,
|
||||
SUM(d.conversions) as results, SUM(d.conversions_value) as conversions_value,
|
||||
SUM(d.impressions) as reach,-1 as roas,-1 as be_roas,-1 as revenue, -1 as profit, -1 as delivery')
|
||||
->group('ag.ad_group_id,ag.ad_group_name,ag.status, ag.campaign_id,c.campaign_name, ag.customer_id')
|
||||
->where(function ($query) use ($keyword) {
|
||||
if ($keyword) {
|
||||
$query->where('ag.ad_group_name', 'like', '%' . $keyword . '%');
|
||||
@ -422,27 +451,40 @@ class GoogleAdsReportService
|
||||
$sheet = $spreadsheet->getActiveSheet();
|
||||
|
||||
// 设置表头
|
||||
$sheet->setCellValue('A1', 'Ad Group ID')
|
||||
->setCellValue('B1', 'Campaign ID')
|
||||
->setCellValue('C1', 'Customer ID')
|
||||
->setCellValue('D1', 'Clicks')
|
||||
->setCellValue('E1', 'Cost Micros')
|
||||
->setCellValue('F1', 'Conversions')
|
||||
->setCellValue('G1', 'Conversions Value')
|
||||
->setCellValue('H1', 'Impressions');
|
||||
$sheet->setCellValue('A1', 'Ad Group ID');
|
||||
$sheet->setCellValue('B1', 'Status');
|
||||
$sheet->setCellValue('C1', 'Name');
|
||||
$sheet->setCellValue('D1', 'Campaign');
|
||||
$sheet->setCellValue('E1', 'Delivery');
|
||||
$sheet->setCellValue('F1', 'Results');
|
||||
$sheet->setCellValue('G1', 'Reach');
|
||||
$sheet->setCellValue('H1', 'Revenue');
|
||||
$sheet->setCellValue('I1', 'ROAS');
|
||||
$sheet->setCellValue('J1', 'beROAS');
|
||||
$sheet->setCellValue('K1', 'Profit');
|
||||
$sheet->setCellValue('L1', 'Spend');
|
||||
|
||||
|
||||
// 填充数据
|
||||
$row = 2;
|
||||
foreach ($ad_groups as $adGroup) {
|
||||
// 使用 setCellValueExplicit 显式设置为文本格式
|
||||
$sheet->setCellValueExplicit('A' . $row, (string)$adGroup->ad_group_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING); // 设置为文本格式
|
||||
$sheet->setCellValueExplicit('B' . $row, (string)$adGroup->campaign_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
||||
$sheet->setCellValueExplicit('C' . $row, (string)$adGroup->customer_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
||||
$sheet->setCellValue('D' . $row, $adGroup->clicks);
|
||||
$sheet->setCellValue('E' . $row, $adGroup->cost_micros);
|
||||
// $sheet->setCellValueExplicit('B' . $row, (string)$adGroup->campaign_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
||||
$sheet->setCellValue('B' . $row, $adGroup->ag_group_status);
|
||||
$sheet->setCellValueExplicit('C' . $row, $adGroup->ad_group_name);
|
||||
$sheet->setCellValueExplicit('D' . $row, $adGroup->campaign_name);
|
||||
$sheet->setCellValueExplicit('E' . $row, $adGroup->delivery); // 直接设置 ad_name
|
||||
$sheet->setCellValue('F' . $row, $adGroup->conversions);
|
||||
$sheet->setCellValue('G' . $row, $adGroup->conversions_value);
|
||||
$sheet->setCellValue('H' . $row, $adGroup->impressions);
|
||||
$sheet->setCellValue('G' . $row, $adGroup->reach);
|
||||
$sheet->setCellValue('H' . $row, $adGroup->revenue);
|
||||
$sheet->setCellValue('I' . $row, $adGroup->roas);
|
||||
$sheet->setCellValue('J' . $row, $adGroup->be_roas);
|
||||
$sheet->setCellValue('K' . $row, $adGroup->profit);
|
||||
$sheet->setCellValue('L' . $row, $adGroup->spend);
|
||||
|
||||
// $sheet->setCellValueExplicit('M' . $row, (string)$adGroup->customer_id, \PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
|
||||
|
||||
$row++;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user