Selaa lähdekoodia

广点通基础类

PC-202304251453\Administrator 3 kuukautta sitten
vanhempi
commit
5427fea1f2

+ 60 - 2
app/adapter/GdtAdapter.php

@@ -34,12 +34,70 @@ class GdtAdapter
     // 获取小时消耗
     public function getHourlyCost($advertiserId, $accessToken, $date): array
     {
-        return [];
+        $page = 1;
+        $data = [];
+        do {
+            $nonce = md5(time().rand(00000, 99999));
+            $url = 'https://api.e.qq.com/v3.0/hourly_reports/get?access_token='.$accessToken.'&timestamp='.time().'&nonce='.$nonce;
+            $request_data = [
+                'account_id' => $advertiserId,
+                'level'      => 'REPORT_LEVEL_ADGROUP',
+                'date_range' => json_encode(['start_date' => $date, 'end_date' => $date]),
+                'group_by'   => json_encode(['hour', 'adgroup_id']),
+                'fields'     => json_encode(['hour', 'adgroup_id', 'adgroup_name', 'view_count', 'valid_click_count', 'cost', 'activated_count']),
+                'page'       => $page,
+                'page_size'  => 100,
+            ];
+            $url = $url."&".http_build_query($request_data);
+            $httpClient = new Client(['timeout' => 10]);
+            $res = $httpClient->request('GET', $url);
+            $result = json_decode($res->getBody(), true);
+
+            if (empty($result['data']['list'])) {
+                break;
+            }
+
+            $data = array_merge($data, $result['data']['list']);
+            $totalPage = $result['data']['page_info']['total_page'] ?? 1;
+            $page++;
+        } while ($page <= $totalPage);
+
+        return $data;
     }
 
     // 获取媒体消耗
     public function getVideoCost($advertiserId, $accessToken, $date): array
     {
-        return [];
+        $page = 1;
+        $data = [];
+        do {
+            $nonce = md5(time().rand(00000, 99999));
+            $url = 'https://api.e.qq.com/v3.0/daily_reports/get?access_token='.$accessToken.'&timestamp='.time().'&nonce='.$nonce;
+
+            $request_data = [
+                'account_id' => $advertiserId,
+                'level'      => 'REPORT_LEVEL_MATERIAL_VIDEO',
+                'date_range' => json_encode(['start_date'=>$date,'end_date'=>$date]),
+                'group_by'   => json_encode(['date','video_id','adgroup_id']),
+                'fields'     => json_encode(['date','video_id','adgroup_id','adgroup_name', 'view_count','valid_click_count','cost', 'activated_count','download_count','first_pay_count','video_outer_play_count','video_outer_play100_count']),
+                'page'       => $page,
+                'page_size'  => 1000,
+            ];
+
+            $url = $url."&".http_build_query($request_data);
+            $httpClient = new Client(['timeout' => 10]);
+            $res = $httpClient->request('GET', $url);
+            $result = json_decode($res->getBody(), true);
+
+            if (empty($result['data']['list'])) {
+                break;
+            }
+
+            $data = array_merge($data, $result['data']['list']);
+            $totalPage = $result['data']['page_info']['total_page'] ?? 1;
+            $page++;
+        } while ($page <= $totalPage);
+
+        return $data;
     }
 }

+ 2 - 35
app/v1/logic/tool/advertCost/GdtCostHourLogic.php

@@ -2,6 +2,7 @@
 
 namespace app\v1\logic\tool\advertCost;
 
+use app\adapter\GdtAdapter;
 use GuzzleHttp\Client;
 use support\think\Db;
 
@@ -21,47 +22,13 @@ class GdtCostHourLogic extends BaseAdvertLogic
             if(!$accessToken) continue;
 
             // 获取消耗
-            $dataList = $this->getGdtCost($account['advertiser_id'], $accessToken);
+            $dataList = (new GdtAdapter())->getHourlyCost($account['advertiser_id'], $accessToken, $this->date);
 
             // 整理数据入库
             $this->organizeDataList($account, $dataList);
         }
     }
 
-    // 获取媒体消耗
-    protected function getGdtCost($advertiserId, $accessToken): array
-    {
-        $page = 1;
-        $data = [];
-        do {
-            $nonce = md5(time().rand(00000, 99999));
-            $url = 'https://api.e.qq.com/v3.0/hourly_reports/get?access_token='.$accessToken.'&timestamp='.time().'&nonce='.$nonce;
-            $request_data = [
-                'account_id' => $advertiserId,
-                'level'      => 'REPORT_LEVEL_ADGROUP',
-                'date_range' => json_encode(['start_date' => $this->date, 'end_date' => $this->date]),
-                'group_by'   => json_encode(['hour', 'adgroup_id']),
-                'fields'     => json_encode(['hour', 'adgroup_id', 'adgroup_name', 'view_count', 'valid_click_count', 'cost', 'activated_count']),
-                'page'       => $page,
-                'page_size'  => 100,
-            ];
-            $url = $url."&".http_build_query($request_data);
-            $httpClient = new Client(['timeout' => 10]);
-            $res = $httpClient->request('GET', $url);
-            $result = json_decode($res->getBody(), true);
-
-            if (empty($result['data']['list'])) {
-                break;
-            }
-
-            $data = array_merge($data, $result['data']['list']);
-            $totalPage = $result['data']['page_info']['total_page'] ?? 1;
-            $page++;
-        } while ($page <= $totalPage);
-
-        return $data;
-    }
-
     // 整理入库数据列表
     protected function organizeDataList($account, $dataList): void
     {

+ 2 - 37
app/v1/logic/tool/advertCost/GdtCostVideoLogic.php

@@ -2,6 +2,7 @@
 
 namespace app\v1\logic\tool\advertCost;
 
+use app\adapter\GdtAdapter;
 use GuzzleHttp\Client;
 use support\think\Db;
 
@@ -21,7 +22,7 @@ class GdtCostVideoLogic extends BaseAdvertLogic
             if(!$accessToken) continue;
 
             // 获取消耗
-            $dataList = $this->getGdtVideoCost($account['advertiser_id'], $accessToken);
+            $dataList = (new GdtAdapter())->getVideoCost($account['advertiser_id'], $accessToken, $this->date);
 
             // 数据加工,获取素材信息
             if($dataList){
@@ -32,42 +33,6 @@ class GdtCostVideoLogic extends BaseAdvertLogic
         }
     }
 
-    // 获取媒体消耗
-    protected function getGdtVideoCost($advertiserId, $accessToken): array
-    {
-        $page = 1;
-        $data = [];
-        do {
-            $nonce = md5(time().rand(00000, 99999));
-            $url = 'https://api.e.qq.com/v3.0/daily_reports/get?access_token='.$accessToken.'&timestamp='.time().'&nonce='.$nonce;
-
-            $request_data = [
-                'account_id' => $advertiserId,
-                'level'      => 'REPORT_LEVEL_MATERIAL_VIDEO',
-                'date_range' => json_encode(['start_date'=>$this->date,'end_date'=>$this->date]),
-                'group_by'   => json_encode(['date','video_id','adgroup_id']),
-                'fields'     => json_encode(['date','video_id','adgroup_id','adgroup_name', 'view_count','valid_click_count','cost', 'activated_count','download_count','first_pay_count','video_outer_play_count','video_outer_play100_count']),
-                'page'       => $page,
-                'page_size'  => 1000,
-            ];
-
-            $url = $url."&".http_build_query($request_data);
-            $httpClient = new Client(['timeout' => 10]);
-            $res = $httpClient->request('GET', $url);
-            $result = json_decode($res->getBody(), true);
-
-            if (empty($result['data']['list'])) {
-                break;
-            }
-
-            $data = array_merge($data, $result['data']['list']);
-            $totalPage = $result['data']['page_info']['total_page'] ?? 1;
-            $page++;
-        } while ($page <= $totalPage);
-
-        return $data;
-    }
-
     // 获取素材id信息 $mediaIds 最多100个
     protected function getGdtVideo($advertiserId, $accessToken, $videoIds): array
     {