yumeng před 1 rokem
rodič
revize
595134d81e

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

@@ -80,7 +80,7 @@ public class AdqController {
 
                 if ("creative".equals(dataDimension)) {
                     if (dataType.equals("hour")) { // 广告时报
-                        retryReportService.getCreativeHourRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+                        retryReportService.getCreativeHourRetry(id, advertiserId, accessToken, startDate, endDate, 1,2);
                     }
                     if (dataType.equals("daily")) { // 广告日报
                         retryReportService.getCreativeDailyRetry(id, advertiserId, accessToken, startDate, endDate, 1);

+ 24 - 17
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqErrorLog.java

@@ -2,8 +2,6 @@ package cn.com.ctop.job.adq.data.entity;
 
 
 /**
- *
- *
  * @author ruoyi
  * @date 2025-03-07
  */
@@ -39,65 +37,74 @@ public class AdqErrorLog {
      * hour:时报 daily:日报
      */
     private String dataType;
+    private Integer isSend;
+
+    public Long getId() {
+        return id;
+    }
 
     public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() {
-        return id;
+    public Long getAdvertiserId() {
+        return advertiserId;
     }
 
     public void setAdvertiserId(Long advertiserId) {
         this.advertiserId = advertiserId;
     }
 
-    public Long getAdvertiserId() {
-        return advertiserId;
+    public String getStartDate() {
+        return startDate;
     }
 
     public void setStartDate(String startDate) {
         this.startDate = startDate;
     }
 
-    public String getStartDate() {
-        return startDate;
+    public String getEndDate() {
+        return endDate;
     }
 
     public void setEndDate(String endDate) {
         this.endDate = endDate;
     }
 
-    public String getEndDate() {
-        return endDate;
+    public String getDataDimension() {
+        return dataDimension;
     }
 
     public void setDataDimension(String dataDimension) {
         this.dataDimension = dataDimension;
     }
 
-    public String getDataDimension() {
-        return dataDimension;
+    public String getDataType() {
+        return dataType;
     }
 
     public void setDataType(String dataType) {
         this.dataType = dataType;
     }
 
-    public String getDataType() {
-        return dataType;
+    public Integer getIsSend() {
+        return isSend;
+    }
+
+    public void setIsSend(Integer isSend) {
+        this.isSend = isSend;
     }
 
     @Override
-    public String
-    toString() {
-        return "BytedanceErrorLog{" +
+    public String toString() {
+        return "AdqErrorLog{" +
                 "id=" + id +
                 ", advertiserId=" + advertiserId +
                 ", startDate='" + startDate + '\'' +
                 ", endDate='" + endDate + '\'' +
                 ", dataDimension='" + dataDimension + '\'' +
                 ", dataType='" + dataType + '\'' +
+                ", isSend=" + isSend +
                 '}';
     }
 }

+ 1 - 1
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqReportMapper.xml

@@ -136,7 +136,7 @@
 
     </select>
     <select id="getErrorLogs" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT t1.id AS 'id', t1.advertiser_id AS 'advertiserId', t1.start_date AS 'startDate', t1.end_date AS 'endDate', t1.data_dimension AS 'dataDimension', t1.data_type AS 'dataType', t3.access_token AS 'accessToken'
+        SELECT t1.is_send AS 'isSend', t1.id AS 'id', t1.advertiser_id AS 'advertiserId', t1.start_date AS 'startDate', t1.end_date AS 'endDate', t1.data_dimension AS 'dataDimension', t1.data_type AS 'dataType', t3.access_token AS 'accessToken'
         FROM adq_error_log t1
                  LEFT JOIN deepthink.adq_advertiser_list t2 ON t1.advertiser_id = t2.advertiser_id
                  LEFT JOIN deepthink.adq_auth_list t3 ON t2.admin_advertiser_id = t3.admin_advertiser_id

+ 2 - 2
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqRetryReportService.java

@@ -1,7 +1,7 @@
 package cn.com.ctop.job.adq.data.service;
 
 public interface IAdqRetryReportService {
-    void getCreativeHourRetry(Long id, Long advertiserId, String accessToken, String startDate, String endDate, Integer page);
+    void getCreativeHourRetry(Long id, Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isSend);
 
-    void getCreativeDailyRetry(Long id, Long advertiserId, String accessToken, String startDate, String endDate, Integer page);
+    void getCreativeDailyRetry(Long id, Long advertiserId, String accessToken, String startDate, String endDate, Integer page,Integer isSend);
 }

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

@@ -30,8 +30,6 @@ public class AdqReportServiceImpl implements IAdqReportService {
     @Override
     public void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog) {
         try {
-
-
             Map<String, Object> paramsMap = new HashMap<>();
             paramsMap.put("access_token", accessToken);
             long timestamp = Instant.now().getEpochSecond();

+ 47 - 4
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqRetryReportServiceImpl.java

@@ -19,6 +19,8 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
 
@@ -27,9 +29,12 @@ import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
 public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
     @Autowired
     private AdqReportMapper adqReportMapper;
+    private static String sendUrl = "http://172.16.0.108:8765/webhook/media_report";
+    private static ExecutorService sendExecutorService = Executors.newFixedThreadPool(5);
+
 
     @Override
-    public void getCreativeHourRetry(Long errorId, Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
+    public void getCreativeHourRetry(Long errorId, Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isSend) {
         Map<String, Object> paramsMap = new HashMap<>();
         paramsMap.put("access_token", accessToken);
         long timestamp = Instant.now().getEpochSecond();
@@ -83,15 +88,18 @@ public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
             adqReportMapper.addsHourList(hourList);
         }
         if (totalNumber >= 1000) {
-            getCreativeHourRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1);
+            getCreativeHourRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1, isSend);
         } else {
             log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
             adqReportMapper.deleteInfoByErrorId(errorId);
+            if (isSend == 1) {
+                sendMessage(advertiserId, startDate, endDate, 3, "hour", 1);
+            }
         }
     }
 
     @Override
-    public void getCreativeDailyRetry(Long errorId, Long advertiserId, String accessToken, String startDate, String endDate, Integer page) {
+    public void getCreativeDailyRetry(Long errorId, Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isSend) {
 
         try {
             Map<String, Object> paramsMap = new HashMap<>();
@@ -146,13 +154,48 @@ public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
                 adqReportMapper.addsDaily(dailies);
             }
             if (totalNumber >= 1000) {
-                getCreativeDailyRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1);
+                getCreativeDailyRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1, isSend);
             } else {
                 log.error("请求创意日报完成,account_id:{},日期:{}", advertiserId, startDate);
                 adqReportMapper.deleteInfoByErrorId(errorId);
+                sendMessage(advertiserId, startDate, endDate, 3, "daily", 1);
+                if (isSend == 1) {
+                    sendMessage(advertiserId, startDate, endDate, 3, "daily", 1);
+                }
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
+
+
+    private static void sendMessage(Long account_id, String start_date, String end_date, Integer media_type, String type, Integer count) {
+        if (count > 5) {
+            log.error("超过最大次数,account_id:{}", count);
+            return;
+        }
+        sendExecutorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                Map<String, Object> param = new HashMap<>();
+                param.put("account_id", account_id);
+                param.put("start_date", start_date);
+                param.put("end_date", end_date);
+                param.put("media_type", media_type);
+                param.put("type", type);
+                String s = HttpUtils.httpPostRequest(sendUrl, param, new HashMap<>());
+                JSONObject jsonObject = JSONObject.parseObject(s);
+                if (!Check.isNull(jsonObject)) {
+                    Integer code = jsonObject.getInteger("code");
+                    if (code == 200) {
+                        log.info("请求数据清洗服务成功,account_id:{}", account_id);
+
+                    } else {
+                        sendMessage(account_id, start_date, end_date, media_type, type, count + 1);
+                    }
+                }
+            }
+        });
+    }
+
 }

+ 3 - 2
job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqRetryReportJob.java

@@ -48,6 +48,7 @@ public class AdqRetryReportJob {
                 String dataDimension = jsonObject.getString("dataDimension");
                 String dataType = jsonObject.getString("dataType");
                 String accessToken = jsonObject.getString("accessToken");
+                Integer isSend = jsonObject.getInteger("isSend");
 
                 if ("creative".equals(dataDimension)) {
                     if (dataType.equals("hour")) { // 广告时报
@@ -55,7 +56,7 @@ public class AdqRetryReportJob {
                             @Override
                             public void run() {
                                 if (!Check.isNull(accessToken)) {
-                                    retryReportService.getCreativeHourRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+                                    retryReportService.getCreativeHourRetry(id, advertiserId, accessToken, startDate, endDate, 1, isSend);
                                 }
                             }
                         });
@@ -65,7 +66,7 @@ public class AdqRetryReportJob {
                             @Override
                             public void run() {
                                 if (!Check.isNull(accessToken)) {
-                                    retryReportService.getCreativeDailyRetry(id, advertiserId, accessToken, startDate, endDate, 1);
+                                    retryReportService.getCreativeDailyRetry(id, advertiserId, accessToken, startDate, endDate, 1, isSend);
 
                                 }
                             }