From ba50f79c55f74017813d57b7a0b6bccb072e24e3 Mon Sep 17 00:00:00 2001 From: hgc Date: Fri, 20 Dec 2024 15:24:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A6=86=E7=9B=96=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/service/GoogleAdsAdService.php | 2 +- app/service/GoogleAdsCampaignService.php | 65 +++++++++++++++--------- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/app/service/GoogleAdsAdService.php b/app/service/GoogleAdsAdService.php index 9039a35..b2fc643 100644 --- a/app/service/GoogleAdsAdService.php +++ b/app/service/GoogleAdsAdService.php @@ -69,7 +69,7 @@ class GoogleAdsAdService $googleAdsClient = $this->googleAdsClient; // Creates a single shared budget to be used by the campaigns added below. $groupadsResourceName = self::getAds($googleAdsClient, $customerId); - dump(json_encode($groupadsResourceName)); +// dump(json_encode($groupadsResourceName)); if (is_array($groupadsResourceName)) { self::saveAds($groupadsResourceName); } diff --git a/app/service/GoogleAdsCampaignService.php b/app/service/GoogleAdsCampaignService.php index ca9cf55..539cce5 100644 --- a/app/service/GoogleAdsCampaignService.php +++ b/app/service/GoogleAdsCampaignService.php @@ -341,10 +341,27 @@ class GoogleAdsCampaignService { $tableName = 'bps_google_ads_campaign'; $tableName = getenv('DB_PG_SCHEMA')? getenv('DB_PG_SCHEMA').'.'.$tableName: 'public'.$tableName; +// foreach ($campaignsResourceName as $data) { +// $sql = "INSERT INTO {$tableName} +// (campaign_id, customer_id, campaign_name, status, advertising_channel_type, start_date, end_date, budget_amount_micros) +// VALUES (:campaign_id, :customer_id, :campaign_name, :status, :advertising_channel_type, :start_date, :end_date, :budget_amount_micros)"; +// ThinkDb::execute($sql, $data); +// } foreach ($campaignsResourceName as $data) { - $sql = "INSERT INTO {$tableName} - (campaign_id, customer_id, campaign_name, status, advertising_channel_type, start_date, end_date, budget_amount_micros) - VALUES (:campaign_id, :customer_id, :campaign_name, :status, :advertising_channel_type, :start_date, :end_date, :budget_amount_micros)"; + $sql = "INSERT INTO {$tableName} + (campaign_id, customer_id, campaign_name, status, advertising_channel_type, start_date, end_date, budget_amount_micros) + VALUES (:campaign_id, :customer_id, :campaign_name, :status, :advertising_channel_type, :start_date, :end_date, :budget_amount_micros) + ON CONFLICT (campaign_id) + DO UPDATE SET + customer_id = EXCLUDED.customer_id, + campaign_name = EXCLUDED.campaign_name, + status = EXCLUDED.status, + advertising_channel_type = EXCLUDED.advertising_channel_type, + start_date = EXCLUDED.start_date, + end_date = EXCLUDED.end_date, + budget_amount_micros = EXCLUDED.budget_amount_micros, + update_at = EXCLUDED.update_at"; // 你可以根据实际情况决定是否需要更新时间戳 + ThinkDb::execute($sql, $data); } } @@ -358,29 +375,31 @@ class GoogleAdsCampaignService public static function saveDateDatas($dayResourceName) { // dump($campaignsResourceName); -// $dayDataModel = new DayDataModel; -// $list = $campaignsResourceName; -// ThinkDb::execute("update public.ad_ga_campaign_budgets set name='thinkphp999' where id=2"); -// $dayDataModel->saveAll($dayResourceName); -// $dayResourceName = [ -// 'ad_id' => 725809753919, -// 'customer_id' => 4060397299, -// 'ad_name' => '', -// 'ad_resource_name' => 'customers/4060397299/ads/725809753919', -// 'ad_group_id' => 171788435506, -// 'campaign_id' => 22026467676, -// 'clicks' => 0, -// 'cost_micros' => 0, -// 'conversions' => 0, -// 'conversions_value' => 0, -// 'impressions' => 0, -// 'date' => '2024-12-18', -// ]; foreach ($dayResourceName as $data) { - $sql = "INSERT INTO public.bps_google_ad_day_data (ad_id, customer_id, ad_name, ad_resource_name, ad_group_id, campaign_id, clicks, cost_micros, conversions, conversions_value, impressions, date) - VALUES (:ad_id, :customer_id, :ad_name, :ad_resource_name, :ad_group_id, :campaign_id, :clicks, :cost_micros, :conversions, :conversions_value, :impressions, :date)"; +// $sql = "INSERT INTO public.bps_google_ad_day_data (ad_id, customer_id, ad_name, ad_resource_name, ad_group_id, campaign_id, clicks, cost_micros, conversions, conversions_value, impressions, date) +// VALUES (:ad_id, :customer_id, :ad_name, :ad_resource_name, :ad_group_id, :campaign_id, :clicks, :cost_micros, :conversions, :conversions_value, :impressions, :date)"; +// ThinkDb::execute($sql, $data); + + $sql = "INSERT INTO public.bps_google_ad_day_data + (ad_id, customer_id, ad_name, ad_resource_name, ad_group_id, campaign_id, clicks, cost_micros, conversions, conversions_value, impressions, date) + VALUES (:ad_id, :customer_id, :ad_name, :ad_resource_name, :ad_group_id, :campaign_id, :clicks, :cost_micros, :conversions, :conversions_value, :impressions, :date) + ON CONFLICT (ad_id, date) -- 假设 (ad_id, date) 为唯一约束 + DO UPDATE SET + customer_id = EXCLUDED.customer_id, + ad_name = EXCLUDED.ad_name, + ad_resource_name = EXCLUDED.ad_resource_name, + ad_group_id = EXCLUDED.ad_group_id, + campaign_id = EXCLUDED.campaign_id, + clicks = EXCLUDED.clicks, + cost_micros = EXCLUDED.cost_micros, + conversions = EXCLUDED.conversions, + conversions_value = EXCLUDED.conversions_value, + impressions = EXCLUDED.impressions, + update_at = EXCLUDED.update_at"; // 更新其他字段和更新时间戳 + ThinkDb::execute($sql, $data); + } }