Browse Source

region-product

chengwl 4 years ago
parent
commit
00a5bcaa2f
2 changed files with 75 additions and 26 deletions
  1. 19 14
      controllers/IndexController.php
  2. 56 12
      lib/GA.php

+ 19 - 14
controllers/IndexController.php

@@ -219,22 +219,9 @@ class IndexController extends \app\controllers\HomeController
       $start_day=$request->get('start', date('Y-m-d',time()-3600*24*8));
       $end_day = $request->get('end', date('Y-m-d',time()-3600*24));
       $productInfo=$ga->productInfo($productName,$store,$start_day,$end_day);
-      $this->json(1,$productInfo);
-
-
-
-
-
-
-      
-
-
+      $this->json(1,$productInfo);      
     }
 
-
-
-
-
     public function addContentpages($contentpages,$store){
         $i=1;
         $limit=20;
@@ -279,6 +266,24 @@ class IndexController extends \app\controllers\HomeController
         }
 
     }
+    public function actionRegionProduct(){
+      $ga=new GA();
+      $request = Yii::$app->request;
+      $store=$request->get('store');
+      $region=$request->get('region');
+      if(!$region||!$store){
+         $this->json(0,[],'参数错误');
+      }
+      $start_day=$request->get('start', date('Y-m-d',time()-3600*24*8));
+      $end_day = $request->get('end', date('Y-m-d',time()-3600*24));
+      try{
+        $productInfo=$ga->regionProduct($region,$store,$start_day,$end_day);
+      }catch(\Exception $e){
+         $this->json(0,[],$e->getMessage());
+      }
+      $this->json(1,$productInfo);   
+
+    }
 
   }
 

+ 56 - 12
lib/GA.php

@@ -488,24 +488,68 @@ class GA{
         $result=$this->getResults($reports);
          return $result;
 
-
-
-
-
-
-
     }
+    public function regionProduct($region,$dp,$start_at,$end_at){
+        $analytics=self::getInstance($dp);
+        $dimensionArr=[
+            'region'=>'ga:region',
+        ];
+        $metricArr=[
+            'itemRevenue'=>"ga:itemRevenue",
+            'revenuePerItem'=>"ga:revenuePerItem",
+            'productRefundAmount'=>"ga:productRefundAmount",
+            'quantityAddedToCart'=>"ga:quantityAddedToCart",
+            // 'quantityRemovedFromCart'=>"ga:quantityRemovedFromCart",
+            'itemQuantity'=>"ga:itemQuantity",
+            'productListViews'=>"ga:productListViews",
+            'productDetailViews'=>"ga:productDetailViews",
+            'productAddsToCart'=>"ga:productAddsToCart",
+            // 'productRemovesFromCart'=>"ga:productRemovesFromCart",
+            'productCheckouts'=>"ga:productCheckouts",
+            'uniquePurchases'=>"ga:uniquePurchases",
+        ];
+       
+        $VIEW_ID = $this->getViewId($dp);//
+        $dateRange = new \Google_Service_AnalyticsReporting_DateRange();
+        $dateRange->setStartDate($start_at);
+        $dateRange->setEndDate($end_at);
+        $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);
+        }
+        $regionFilter = new \Google_Service_AnalyticsReporting_DimensionFilter();
+        $regionFilter->setDimensionName("ga:region");
+        $regionFilter->setOperator("EXACT");
+        $regionFilter->setExpressions([$region]);
 
+        $MetricFilterClause=new \Google_Service_AnalyticsReporting_MetricFilterClause();
+        $MetricFilterClause->setFilters(array($regionFilter));
 
 
+        $request = new \Google_Service_AnalyticsReporting_ReportRequest();
+        $request->setViewId($VIEW_ID);
+        $request->setDateRanges($dateRange);
+        $request->setMetrics($metrics);
+        $request->setDimensions($dimensions);
+        $request->setDimensionFilterClauses($MetricFilterClause);
+        // $request->setOrderBys($orderBy);
 
+        $body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
+        $body->setReportRequests( array( $request) );
+        $reports= $analytics->reports->batchGet( $body );
 
-
-
-
-
-
-
+        $result=$this->getResults($reports);
+         return $result;
+    }
 
 
     /**