Переглянути джерело

日流水报表增加重试日志和逻辑

lining 1 рік тому
батько
коміт
22aab69c11

+ 2 - 2
job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqController.java

@@ -92,7 +92,7 @@ public class AdqController {
     @GetMapping("/flowDetailsReport")
     public void flowDetailsReport(@RequestParam(required = false) Long advertiserId, String accessToken, String startDate, String endDate) {
 
-        adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserId, accessToken, startDate, endDate, 1);
+        adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserId, accessToken, startDate, endDate, 1, null);
 
     }
 
@@ -112,7 +112,7 @@ public class AdqController {
                     @Override
                     public void run() {
                         if(!Check.isNull(advertiserAccount.getAccessToken())){
-                            adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserAccount.getAdvertiserId(), advertiserAccount.getAccessToken(), startDateString, startDateString, 1);
+                            adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserAccount.getAdvertiserId(), advertiserAccount.getAccessToken(), startDateString, startDateString, 1, null);
                         }
                     }
                 });

+ 1 - 1
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqFlowDetailsReportService.java

@@ -15,5 +15,5 @@ public interface IAdqFlowDetailsReportService {
 
     List<AdvertiserAccount> getAdAccount();
 
-    void getAdqFlowDetailsDailyReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page);
+    void getAdqFlowDetailsDailyReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Long errorLogId);
 }

+ 24 - 2
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqFlowDetailsReportServiceImpl.java

@@ -1,7 +1,9 @@
 package cn.com.ctop.job.adq.data.service.impl;
 
+import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
 import cn.com.ctop.job.adq.data.entity.AdqFlowDetailsReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdvertiserAccount;
+import cn.com.ctop.job.adq.data.mapper.AdqErrorLogMapper;
 import cn.com.ctop.job.adq.data.mapper.AdqFlowDetailsReportDailyMapper;
 import cn.com.ctop.job.adq.data.service.IAdqFlowDetailsReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
@@ -11,6 +13,7 @@ import cn.com.ctop.job.adq.utils.RandomStringGenerator;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -32,13 +35,16 @@ public class AdqFlowDetailsReportServiceImpl implements IAdqFlowDetailsReportSer
     @Resource
     private AdqFlowDetailsReportDailyMapper adqFlowDetailsReportDailyMapper;
 
+    @Autowired
+    private AdqErrorLogMapper adqErrorLogMapper;
+
     @Override
     public List<AdvertiserAccount> getAdAccount() {
         return adqFlowDetailsReportDailyMapper.getAdAccount();
     }
 
     @Override
-    public void getAdqFlowDetailsDailyReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
+    public void getAdqFlowDetailsDailyReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Long errorLogId) {
         Map<String, Object> paramsMap = new HashMap<>();
         paramsMap.put("access_token", accessToken);
         long timestamp = Instant.now().getEpochSecond();
@@ -111,6 +117,17 @@ public class AdqFlowDetailsReportServiceImpl implements IAdqFlowDetailsReportSer
                         }
                     }
                 }
+            }else {
+                //add log
+                log.error("请求流水详情日报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                AdqErrorLog errorInfo = new AdqErrorLog();
+                errorInfo.setAdvertiserId(advertiserId);
+                errorInfo.setStartDate(startDate);
+                errorInfo.setEndDate(endDate);
+                errorInfo.setDataDimension("flow_details");
+                errorInfo.setDataType("daily");
+                adqErrorLogMapper.replaceErrorInfo(errorInfo);
+                return;
             }
         }
 
@@ -120,7 +137,12 @@ public class AdqFlowDetailsReportServiceImpl implements IAdqFlowDetailsReportSer
             } catch (InterruptedException e) {
                 throw new RuntimeException(e);
             }
-            getAdqFlowDetailsDailyReport(advertiserId, accessToken, startDate, endDate, page + 1);
+            getAdqFlowDetailsDailyReport(advertiserId, accessToken, startDate, endDate, page + 1, null);
+        }else{
+            log.info("账户id:{},广告流水详情请求结果返回成功,入库完成", advertiserId);
+            if(errorLogId != null){
+                adqErrorLogMapper.deleteInfoByErrorId(errorLogId);
+            }
         }
     }
 

+ 1 - 1
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqFlowDetailsReportJob.java

@@ -46,7 +46,7 @@ public class AdqFlowDetailsReportJob {
             @Override
             public void run() {
                 if (!Check.isNull(accessToken)) {
-                    adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserId, accessToken, data, data, 1);
+                    adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserId, accessToken, data, data, 1, null);
                 }
             }
         });

+ 17 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqRetryReportJob.java

@@ -3,6 +3,7 @@ package cn.com.ctop.job.adq.handler;
 
 import cn.com.ctop.job.adq.data.service.IAdqAssetReportService;
 import cn.com.ctop.job.adq.data.service.IAdqCreativeReportService;
+import cn.com.ctop.job.adq.data.service.IAdqFlowDetailsReportService;
 import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
 import com.alibaba.fastjson.JSONArray;
@@ -33,6 +34,8 @@ public class AdqRetryReportJob {
     private static ExecutorService dailyAccountExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService assetExecutorService = Executors.newFixedThreadPool(2);
 
+    private static ExecutorService flowExecutorService = Executors.newFixedThreadPool(2);
+
 
     @Autowired
     private IAdqCreativeReportService adqReportService;
@@ -41,6 +44,9 @@ public class AdqRetryReportJob {
     @Autowired
     private IAdqAssetReportService assetReportService;
 
+    @Autowired
+    private IAdqFlowDetailsReportService adqFlowDetailsReportService;
+
     @XxlJob("adqRetryReport")
     public void promoterReport() throws Exception {
         List<JSONObject> accountList = adqReportService.getErrorLogs();
@@ -126,6 +132,17 @@ public class AdqRetryReportJob {
                             }
                         }
                     });
+                } else if ("flow_details".equals(dataDimension)) {
+                    flowExecutorService.submit(new Runnable() {
+
+                        @Override
+                        public void run() {
+                            if (!Check.isNull(accessToken)) {
+                                adqFlowDetailsReportService.getAdqFlowDetailsDailyReport(advertiserId, accessToken, startDate, endDate, 1, id);
+                            }
+
+                        }
+                    });
                 }