chengwl пре 4 година
родитељ
комит
1bd819a6cd
2 измењених фајлова са 136 додато и 10 уклоњено
  1. 12 1
      controllers/IndexController.php
  2. 124 9
      lib/GA.php

+ 12 - 1
controllers/IndexController.php

@@ -25,7 +25,18 @@ class IndexController extends \app\controllers\HomeController
       $end_day = $request->get('end', date('Y-m-d',time()-3600*24));
       $res=[];
       try{
-        $storeData=$ga->storeData($store,$start_day,$end_day);
+        $config=[
+          'dp'=>$store,
+          'metricArr'=>[
+            '销量'=>"ga:itemQuantity",
+            '订单量'=>"ga:transactions",
+            '订单金额'=>"ga:transactionRevenue",
+          ],
+          'dateRange'=>['start_at'=>$start_day,'end_at'=>$end_day]
+        ];
+        
+        $storeData=$ga->getData($config);
+        $this->json(1,$storeData);
         $res['storeData']=$storeData;
       
         // $storeSellData=$ga->storeSellData($store,$start_day,$end_day,'week');

+ 124 - 9
lib/GA.php

@@ -77,10 +77,129 @@ class GA{
             break;
         }
         return $path;
+    }
+    /*进一步封装 
+     *$config=[
+         'dp'=>'',
+         'metricArr'=[],
+         'dimensionArr'=[],
+         'dateRange'=[start_at,end_at]
+         'SegmentDimensionFilters'=>[[name,operate,expression]]
+         'oderBy'=>[name,order]
+     ] 
+     * 
+     * 
+     * 
+    */
+    public function getData($config){
+        if(!$dp||!$dateRange||empty($config['metricArr'])){
+            return false;
+        }
         
+        $metricArr=$config['metricArr'];
+        $dimensionArr=$config['dimensionArr'];
+
+        $analytics=self::getInstance($dp);
+        $VIEW_ID = $this->getViewId($dp);//
+
+        $request = new \Google_Service_AnalyticsReporting_ReportRequest();
+        $request->setViewId($VIEW_ID);
+
         
+        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();
+        $dateRange->setStartDate($config['start_at']);
+        $dateRange->setEndDate($config['end_at']);
+        $request->setDateRanges($dateRange);
+
+        
+        $metrics=[];
+        $dimensions=[];
+        
+        foreach($metricArr as $k=>$v){
+            $Metric = new \Google_Service_AnalyticsReporting_Metric();
+            $Metric->setExpression($v);
+            $Metric->setAlias($k);
+            array_push($metrics,$Metric);
+        }
+        foreach($dimensionArr as $k=>$v){
+            $Dimension = new \Google_Service_AnalyticsReporting_Dimension();
+            $Dimension->setName($v);
+            array_push($dimensions,$Dimension);
+        }
+        $request->setMetrics($metrics);
+        $request->setDimensions($dimensions);
+
+
+
+        $segment=[];
+        if(isset($config['SegmentDimensionFilters'])&&!empty($config['SegmentDimensionFilters'])){
+            foreach($config['SegmentDimensionFilters'] as $filter){
+                $segment[]=$this->setSegmentDimensionFilter($filter);
+            }
+        }
+        if(isset($config['SegmentMetricFilters'])&&!empty($config['SegmentMetricFilters'])){
+            foreach($config['SegmentMetricFilters'] as $filter){
+                $segment[]=$this->setSegmentMetricFilters($filter);
+            }
+        }
+        if(!empty($segment)){
+            $request->setSegments(array($segment));
+        }
+        if(isset($config['orderBy'])&&!empty($config['orderBy'])){
+            $orderBy=new \Google_Service_AnalyticsReporting_OrderBy();
+            $orderBy->setFieldName($config['orderBy']['name']);
+            $orderBy->setSortOrder($config['orderBy']['order']);
+            $request->setOrderBys($orderBy);
+        }
+
+        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
+        $body->setReportRequests( array( $request) );
+        $reports= $analytics->reports->batchGet( $body );
+        $result=$this->getResults($reports);
+        return $result;
+    }
+    private function setSegmentDimensionFilter($param){
+        $dimensionFilter = new \Google_Service_AnalyticsReporting_SegmentDimensionFilter();
+        $dimensionFilter->setDimensionName($param['name']);
+        $dimensionFilter->setOperator($param['operate']);
+        $dimensionFilter->setExpressions($param['expression']);
+
+          // Create Segment Filter Clause.
+        $segmentFilterClause = new \Google_Service_AnalyticsReporting_SegmentFilterClause();
+        $segmentFilterClause->setDimensionFilter($dimensionFilter);
+
+
+
+        // Create the Or Filters for Segment.
+        $orFiltersForSegment = new \Google_Service_AnalyticsReporting_OrFiltersForSegment();
+        $orFiltersForSegment->setSegmentFilterClauses(array($segmentFilterClause));
+
+          // Create the Simple Segment.
+        $simpleSegment = new \Google_Service_AnalyticsReporting_SimpleSegment();
+        $simpleSegment->setOrFiltersForSegment(array($orFiltersForSegment));
+         // Create the Segment Filters.
+        $segmentFilter = new \Google_Service_AnalyticsReporting_SegmentFilter();
+        $segmentFilter->setSimpleSegment($simpleSegment);
+        $segmentFilter->setNot(True);
+
+        // Create the Segment Definition.
+        $segmentDefinition = new \Google_Service_AnalyticsReporting_SegmentDefinition();
+        $segmentDefinition->setSegmentFilters(array($segmentFilter));
+
+        $dynamicSegment = new \Google_Service_AnalyticsReporting_DynamicSegment();
+        $dynamicSegment->setSessionSegment($segmentDefinition);
+        $dynamicSegment->setName($param['name']);
+
+        $segment = new \Google_Service_AnalyticsReporting_Segment();
+        $segment->setDynamicSegment($dynamicSegment);
+        return $segment;
 
     }
+
+
+
+
+
     public function contentpages($dp,$start_at,$end_at){
         $analytics=self::getInstance($dp);
         $metricArr=[
@@ -150,7 +269,6 @@ class GA{
           // Create the Simple Segment.
         $simpleSegment = new \Google_Service_AnalyticsReporting_SimpleSegment();
         $simpleSegment->setOrFiltersForSegment(array($orFiltersForSegment));
-
          // Create the Segment Filters.
         $segmentFilter = new \Google_Service_AnalyticsReporting_SegmentFilter();
         $segmentFilter->setSimpleSegment($simpleSegment);
@@ -171,7 +289,6 @@ class GA{
         $orderBy->setFieldName('ga:pageviews');
         $orderBy->setSortOrder("DESCENDING");
 
-
         $request = new \Google_Service_AnalyticsReporting_ReportRequest();
         $request->setViewId($VIEW_ID);
         $request->setDateRanges($dateRange);
@@ -189,7 +306,6 @@ class GA{
 
         $result=$this->getResults($reports);
          return $result;
-       
     }
     public function trafficsource($dp,$start_at,$end_at){
         $analytics=self::getInstance($dp);
@@ -605,12 +721,11 @@ class GA{
             // 'campaign'=>'ga:campaign'
         ];
         $metricArr=[
-            'transactions'=>"ga:transactions",
-            'transactionRevenue'=>"ga:transactionRevenue",
-            'itemQuantity'=>"ga:itemQuantity",
-            'adClicks'=>"ga:adClicks",//点击次数
-            'adCost'=>"ga:adCost",//成本
-            'CPC'=>"ga:CPC",//每次点击费用
+            '销量'=>"ga:itemQuantity",
+            '订单量'=>"ga:transactions",
+            '订单金额'=>"ga:transactionRevenue",
+            '广告点击次数'=>"ga:adClicks",//点击次数
+            '广告花费'=>"ga:adCost",//成本
             'CTR'=>"ga:CTR",//点击率
             'ROAS'=>"ga:ROAS",//回报率
         ];