Browse Source

GA report

wfansh 5 months ago
parent
commit
96d3c0ccc5

+ 1 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/dto/OpenAPIResponse.java

@@ -1,17 +1,14 @@
 package org.jeecg.modules.adweb.dmp.dto;
 
-import lombok.Builder;
 import lombok.Data;
 
 /**
  * @author wfansh
  */
 @Data
-@Builder
 public class OpenAPIResponse<T> {
 
-    @Builder.Default
-    private APIStatus status = APIStatus.SUCCESS;
+    private APIStatus status;
 
     private String message;
 

+ 0 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/dto/google/analytics/report/data/CountryChartData.java

@@ -1,13 +1,11 @@
 package org.jeecg.modules.adweb.dmp.dto.google.analytics.report.data;
 
-import lombok.Builder;
 import lombok.Data;
 
 /**
  * @author wfansh
  */
 @Data
-@Builder
 public class CountryChartData implements GAReportDataDTO {
 
     private String country;

+ 0 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/dto/google/analytics/report/data/DateViewData.java

@@ -1,6 +1,5 @@
 package org.jeecg.modules.adweb.dmp.dto.google.analytics.report.data;
 
-import lombok.Builder;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -10,7 +9,6 @@ import java.time.format.DateTimeFormatter;
  * @author wfansh
  */
 @Data
-@Builder
 public class DateViewData implements GAReportDataDTO {
 
     /**

+ 0 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/dto/google/analytics/report/data/PagePathViewData.java

@@ -1,6 +1,5 @@
 package org.jeecg.modules.adweb.dmp.dto.google.analytics.report.data;
 
-import lombok.Builder;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -9,7 +8,6 @@ import java.math.BigDecimal;
  * @author wfansh
  */
 @Data
-@Builder
 public class PagePathViewData implements GAReportDataDTO {
 
     private String pagePath;

+ 0 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/dto/google/analytics/report/data/SourceMediaViewData.java

@@ -1,6 +1,5 @@
 package org.jeecg.modules.adweb.dmp.dto.google.analytics.report.data;
 
-import lombok.Builder;
 import lombok.Data;
 
 import java.math.BigDecimal;
@@ -9,7 +8,6 @@ import java.math.BigDecimal;
  * @author wfansh
  */
 @Data
-@Builder
 public class SourceMediaViewData implements GAReportDataDTO {
 
     private String type;

+ 47 - 10
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/service/google/GAReportService.java

@@ -1,15 +1,25 @@
 package org.jeecg.modules.adweb.dmp.service.google;
 
+import com.google.common.annotations.VisibleForTesting;
+
 import jakarta.annotation.PostConstruct;
 
 import lombok.extern.slf4j.Slf4j;
 
+import org.apache.commons.lang3.reflect.TypeUtils;
+import org.jeecg.common.util.FastJsonUtil;
 import org.jeecg.modules.adweb.common.util.RestTemplateUtil;
-import org.jeecg.modules.adweb.dmp.entity.GoogleGTM;
+import org.jeecg.modules.adweb.dmp.dto.OpenAPIRequest;
+import org.jeecg.modules.adweb.dmp.dto.OpenAPIResponse;
+import org.jeecg.modules.adweb.dmp.dto.google.analytics.report.GAReportRequestDTO;
+import org.jeecg.modules.adweb.dmp.dto.google.analytics.report.data.GAReportDataDTO;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.stereotype.Service;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.List;
+
 /**
  * Google Analytics数据同步 - http://data-bridge.v3.adwebcloud.com:9002/swagger-ui/index.html
  *
@@ -34,17 +44,44 @@ public class GAReportService {
         this.restTemplate = RestTemplateUtil.getRestTemplate(30, 30, dataBridgeApiToken);
     }
 
-//    /**
-//     * 拉取Google Analytics国家报表
-//     *
-//     * @param googleGTM
-//     */
-//    private void queryGARegionReport(GoogleGTM googleGTM) {}
-//
+    //    /**
+    //     * 拉取Google Analytics国家报表
+    //     *
+    //     * @param googleGTM
+    //     */
+    //    private void queryGARegionReport(GoogleGTM googleGTM) {}
+    //
 
+    /**
+     * 请求Google Analytics报表,http://data-bridge.v3.adwebcloud.com:9002/swagger-ui/index.html
+     *
+     * @param gaReportRequest
+     * @param reportDataType
+     * @return
+     * @param <T>
+     */
+    @VisibleForTesting
+    <T extends GAReportDataDTO> List<T> runGAReport(
+            GAReportRequestDTO gaReportRequest, Class<T> reportDataType) {
+        log.info("runGAReport: {}", FastJsonUtil.toJSONString(gaReportRequest));
 
-    private void runGAReport(GARe) {
+        // 1. 创建API request
+        OpenAPIRequest<GAReportRequestDTO> openAPIRequest = new OpenAPIRequest<>();
+        openAPIRequest.setRequestServer(this.getClass().getSimpleName());
+        openAPIRequest.setRequestTime(System.currentTimeMillis());
+        openAPIRequest.setData(gaReportRequest);
 
-    }
+        // 2. 请求API接口
+        OpenAPIResponse<List<T>> openAPIResponse =
+                RestTemplateUtil.postForObject(
+                        restTemplate,
+                        dataBridgeApiHost + DATA_BRIDGE_GA_REPORT_PATH,
+                        openAPIRequest,
+                        ParameterizedTypeReference.forType(
+                                TypeUtils.parameterize(
+                                        OpenAPIResponse.class,
+                                        TypeUtils.parameterize(List.class, reportDataType))));
 
+        return openAPIResponse.getData();
+    }
 }

+ 3 - 3
jeecg-module-system/jeecg-system-start/src/main/resources/application-test.yml

@@ -166,9 +166,9 @@ spring:
           slow-sql-millis: 5000
       datasource:
         master:
-          url: jdbc:mysql://127.0.0.1:3306/adweb3?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-          username: root
-          password: root
+          url: jdbc:mysql://52.83.163.165:3306/adweb3_dev?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          username: adweb3_dev
+          password: Advich@2024,.
           driver-class-name: com.mysql.cj.jdbc.Driver
           # 多数据源配置
           #multi-datasource1:

+ 31 - 0
jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/adweb/dmp/service/google/GoogleServiceTest.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.adweb.dmp.service.google;
+
+import org.jeecg.common.util.FastJsonUtil;
+import org.jeecg.modules.adweb.dmp.dto.google.analytics.report.GAReportRequestDTO;
+import org.jeecg.modules.adweb.dmp.dto.google.analytics.report.ReportType;
+import org.jeecg.modules.adweb.dmp.dto.google.analytics.report.data.CountryChartData;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.List;
+
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class GoogleServiceTest {
+
+    @Autowired GAReportService gaReportService;
+
+    @Test
+    public void testGAReport() {
+        GAReportRequestDTO gaReportRequest = new GAReportRequestDTO();
+        gaReportRequest.setPropertyResourceName("properties/457183952");
+        gaReportRequest.setReportType(ReportType.ADWEB_COUNTRY_CHART);
+        gaReportRequest.setStartDate("2023-10-01");
+        gaReportRequest.setEndDate("2024-10-01");
+
+        List<CountryChartData> countryReport =
+                gaReportService.runGAReport(gaReportRequest, CountryChartData.class);
+
+        System.out.println(FastJsonUtil.toJSONString(countryReport));
+    }
+}