huangpingkang 1 rok pred
rodič
commit
1f444d3ee9
20 zmenil súbory, kde vykonal 680 pridanie a 61 odobranie
  1. 69 0
      job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqAssetController.java
  2. 20 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAssetInfo.java
  3. 36 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAssetReportDaily.java
  4. 11 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqErrorLog.java
  5. 63 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/MessageModel.java
  6. 12 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqAssetReportMapper.java
  7. 1 5
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqCreativeReportMapper.java
  8. 6 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqErrorLogMapper.java
  9. 78 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqAssetReportMapper.xml
  10. 4 11
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqCreativeReportMapper.xml
  11. 15 4
      job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqErrorLogMapper.xml
  12. 11 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqAssetReportService.java
  13. 1 1
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqCreativeReportService.java
  14. 243 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqAssetReportServiceImpl.java
  15. 3 3
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqCreativeCreativeReportServiceImpl.java
  16. 8 32
      job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqRetryReportServiceImpl.java
  17. 43 0
      job-adq/src/main/java/cn/com/ctop/job/adq/data/utils/AlertUtils.java
  18. 24 1
      job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqAccountReportJob.java
  19. 31 3
      job-adq/src/main/java/cn/com/ctop/job/adq/handler/AdqRetryReportJob.java
  20. 1 1
      job-adq/src/main/resources/application.yml

+ 69 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/controller/AdqAssetController.java

@@ -0,0 +1,69 @@
+package cn.com.ctop.job.adq.controller;
+
+import cn.com.ctop.job.adq.data.entity.MessageModel;
+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.utils.Check;
+import com.alibaba.fastjson.JSONObject;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@RestController
+@RequestMapping("/adq/asset")
+@Api(tags = "adq")
+@Slf4j
+public class AdqAssetController {
+    private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(5);
+
+    @Autowired
+    private IAdqCreativeReportService adqCreativeReportService;
+    @Autowired
+    private IAdqAssetReportService adqAssetReportService;
+
+    @GetMapping("/assetInfo")
+    public MessageModel assetInfo(@RequestParam(required = false) Long advertiserId) {
+        List<JSONObject> allAdvertiserIdsInfo = adqCreativeReportService.getAccountList(advertiserId);
+        for (JSONObject info : allAdvertiserIdsInfo) {
+            Long advId = info.getLong("advertiserId");
+            String accessToken = info.getString("accessToken");
+            dailyExecutorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    if (!Check.isNull(accessToken)) {
+                        adqAssetReportService.getAdqAssetInfo("MARKETING_TARGET_TYPE_SHORT_DRAMA", null, advId, accessToken, 1, null, null);
+                    }
+                }
+            });
+        }
+        return MessageModel.ok();
+    }
+
+
+    @GetMapping("/assetReport")
+    public MessageModel assetReport(@RequestParam(required = false) Long advertiserId, String startDate, String endDate) {
+        List<JSONObject> allAdvertiserIdsInfo = adqCreativeReportService.getAccountList(advertiserId);
+        for (JSONObject jsonObject : allAdvertiserIdsInfo) {
+            Long adverId = jsonObject.getLong("advertiserId");
+            String accessToken = jsonObject.getString("accessToken");
+            dailyExecutorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    if (!Check.isNull(accessToken)) {
+                        adqAssetReportService.getAdqAssetDailyReport(adverId, accessToken, startDate, endDate, 1, 1, null, null);
+                    }
+                }
+            });
+        }
+        return MessageModel.ok();
+    }
+
+}

+ 20 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAssetInfo.java

@@ -0,0 +1,20 @@
+package cn.com.ctop.job.adq.data.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AdqAssetInfo {
+    private Long advertiserId; // 广告主ID
+    private Long marketingAssetId; // 产品ID
+    private String marketingAssetName; // 产品名称
+    private String marketingTargetType; // 产品类型
+    private String promotedAssetAttrKeyShortDramaDramaMall;
+    private String promotedAssetAttrKeySkuId;
+}
+

+ 36 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqAssetReportDaily.java

@@ -0,0 +1,36 @@
+package cn.com.ctop.job.adq.data.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AdqAssetReportDaily {
+    private Integer statTimeDay; // 数据起始时间
+    private Long advertiserId; // 广告主ID
+    private Long adgroupId; // 广告组ID
+    private String adgroupName; // 广告组名称
+    private Long marketingAssetId; // 产品ID
+    private String siteSet; // 广告版位
+    private String marketingTargetType; // 产品类型
+    private BigDecimal cost; // 消耗
+    private Long viewCount; // 展示
+    private Long validClickCount; // 点击
+    private Long conversionsCount; // 转化
+    private Long deepConversionsCount; // 深度转化
+    private Long activatedCount; // APP激活次数
+    private Long regPv; // 注册次数
+    private Long retentionCount; // 次日留存次数
+    private Long videoOuterPlayCount; // 视频有效播放次数
+    private Long videoOuterPlay100Count; // 100%进度播放次数
+    private Long keyBehaviorConversionsCount; // 关键行为转化次数
+    private Long purchasePv; // 付费次数
+    private BigDecimal purchaseAmount; // 付费金额
+    private Long firstPayCount; // 首次付费人数
+
+}
+

+ 11 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/AdqErrorLog.java

@@ -39,6 +39,8 @@ public class AdqErrorLog {
     private String dataType;
     private String dataType;
     private Integer isSend;
     private Integer isSend;
 
 
+    private String msg;
+
     public Long getId() {
     public Long getId() {
         return id;
         return id;
     }
     }
@@ -95,6 +97,14 @@ public class AdqErrorLog {
         this.isSend = isSend;
         this.isSend = isSend;
     }
     }
 
 
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
     @Override
     @Override
     public String toString() {
     public String toString() {
         return "AdqErrorLog{" +
         return "AdqErrorLog{" +
@@ -105,6 +115,7 @@ public class AdqErrorLog {
                 ", dataDimension='" + dataDimension + '\'' +
                 ", dataDimension='" + dataDimension + '\'' +
                 ", dataType='" + dataType + '\'' +
                 ", dataType='" + dataType + '\'' +
                 ", isSend=" + isSend +
                 ", isSend=" + isSend +
+                ", msg=" + msg +
                 '}';
                 '}';
     }
     }
 }
 }

+ 63 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/entity/MessageModel.java

@@ -0,0 +1,63 @@
+package cn.com.ctop.job.adq.data.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class MessageModel<T> {
+    private static final MessageModel SUCCESS = new MessageModel();
+
+    private Integer code;
+
+    private String msg;
+
+    private T data;
+
+    public MessageModel() {
+        this.code = 0;
+        this.msg = "成功";
+    }
+
+    public MessageModel(Integer code, String message) {
+        this.code = code;
+        this.msg = message;
+    }
+
+    public MessageModel(Integer code, String message, T data) {
+        this.code = code;
+        this.msg = message;
+        this.data = data;
+    }
+
+    public MessageModel(T data) {
+        this();
+        this.data = data;
+    }
+    
+    public static MessageModel ok() {
+        return SUCCESS;
+    }
+
+    public static <T> MessageModel<T> ok(T data) {
+        return new MessageModel<T>(data);
+    }
+
+    public static <T> MessageModel<T> ok(Integer code, T data) {
+        return new MessageModel(code, "成功", data);
+    }
+
+    public static MessageModel error(Integer code, String message) {
+        return new MessageModel(code, message);
+    }
+
+
+    @Override
+    public String toString() {
+        return "MessageModel{" +
+                "code=" + code +
+                ", msg='" + msg + '\'' +
+                ", data=" + data +
+                '}';
+    }
+}

+ 12 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqAssetReportMapper.java

@@ -0,0 +1,12 @@
+package cn.com.ctop.job.adq.data.mapper;
+
+import cn.com.ctop.job.adq.data.entity.AdqAssetInfo;
+import cn.com.ctop.job.adq.data.entity.AdqAssetReportDaily;
+
+import java.util.List;
+
+public interface AdqAssetReportMapper {
+    void insertAdqAssetReportDaily(List<AdqAssetReportDaily> reports);
+
+    void insertAdqAssetInfo(List<AdqAssetInfo> infos);
+}

+ 1 - 5
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqCreativeReportMapper.java

@@ -2,7 +2,6 @@ package cn.com.ctop.job.adq.data.mapper;
 
 
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
-import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -11,11 +10,8 @@ import java.util.List;
 public interface AdqCreativeReportMapper {
 public interface AdqCreativeReportMapper {
     void addsHourList(@Param("adds") List<AdqCreativeReportHour> hourList);
     void addsHourList(@Param("adds") List<AdqCreativeReportHour> hourList);
 
 
-    List<JSONObject> getAccountList();
+    List<JSONObject> getAccountList(@Param("accountId") Long accountId);
 
 
     void addsDaily(@Param("adds") List<AdqCreativeReportDaily> dailies);
     void addsDaily(@Param("adds") List<AdqCreativeReportDaily> dailies);
 
 
-    List<JSONObject> getErrorLogs();
-
-    void deleteInfoByErrorId(@Param("errorId") Long errorId);
 }
 }

+ 6 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/AdqErrorLogMapper.java

@@ -1,7 +1,13 @@
 package cn.com.ctop.job.adq.data.mapper;
 package cn.com.ctop.job.adq.data.mapper;
 
 
 import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
 import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
+import com.alibaba.fastjson.JSONObject;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 
 public interface AdqErrorLogMapper {
 public interface AdqErrorLogMapper {
     void replaceErrorInfo(AdqErrorLog errorInfo);
     void replaceErrorInfo(AdqErrorLog errorInfo);
+    void deleteInfoByErrorId(@Param("errorId") Long errorId);
+    List<JSONObject> getErrorLogs();
 }
 }

+ 78 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqAssetReportMapper.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="cn.com.ctop.job.adq.data.mapper.AdqAssetReportMapper">
+
+    <insert id="insertAdqAssetReportDaily" parameterType="java.util.List">
+        replace INTO media_api.adq_asset_report_daily (
+        stat_time_day,
+        advertiser_id,
+        adgroup_id,
+        adgroup_name,
+        marketing_asset_id,
+        site_set,
+        marketing_target_type,
+        cost,
+        view_count,
+        valid_click_count,
+        conversions_count,
+        deep_conversions_count,
+        activated_count,
+        reg_pv,
+        retention_count,
+        video_outer_play_count,
+        video_outer_play100_count,
+        key_behavior_conversions_count,
+        purchase_pv,
+        purchase_amount,
+        first_pay_count
+        ) VALUES
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.statTimeDay},
+            #{item.advertiserId},
+            #{item.adgroupId},
+            #{item.adgroupName},
+            #{item.marketingAssetId},
+            #{item.siteSet},
+            #{item.marketingTargetType},
+            #{item.cost},
+            #{item.viewCount},
+            #{item.validClickCount},
+            #{item.conversionsCount},
+            #{item.deepConversionsCount},
+            #{item.activatedCount},
+            #{item.regPv},
+            #{item.retentionCount},
+            #{item.videoOuterPlayCount},
+            #{item.videoOuterPlay100Count},
+            #{item.keyBehaviorConversionsCount},
+            #{item.purchasePv},
+            #{item.purchaseAmount},
+            #{item.firstPayCount}
+            )
+        </foreach>
+    </insert>
+
+
+    <insert id="insertAdqAssetInfo" parameterType="java.util.List">
+        replace INTO media_api.adq_asset_info (
+        advertiser_id,
+        marketing_asset_id,
+        marketing_asset_name,
+        marketing_target_type,
+        promoted_asset_attr_key_short_drama_drama_mall,
+        promoted_asset_attr_key_sku_id
+        ) VALUES
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.advertiserId},
+            #{item.marketingAssetId},
+            #{item.marketingAssetName},
+            #{item.marketingTargetType},
+            #{item.promotedAssetAttrKeyShortDramaDramaMall},
+            #{item.promotedAssetAttrKeySkuId}
+            )
+        </foreach>
+    </insert>
+
+</mapper>

+ 4 - 11
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqCreativeReportMapper.xml

@@ -106,21 +106,14 @@
 
 
     </insert>
     </insert>
 
 
-    <delete id="deleteInfoByErrorId">
-        DELETE
-        FROM adq_error_log
-        WHERE id = #{errorId}
-    </delete>
     <select id="getAccountList" resultType="com.alibaba.fastjson.JSONObject">
     <select id="getAccountList" resultType="com.alibaba.fastjson.JSONObject">
         SELECT t1.advertiser_id AS 'advertiserId', t2.access_token AS 'accessToken'
         SELECT t1.advertiser_id AS 'advertiserId', t2.access_token AS 'accessToken'
         FROM deepthink.adq_advertiser_list t1
         FROM deepthink.adq_advertiser_list t1
                  LEFT JOIN deepthink.adq_auth_list t2 ON t1.admin_advertiser_id = t2.admin_advertiser_id
                  LEFT JOIN deepthink.adq_auth_list t2 ON t1.admin_advertiser_id = t2.admin_advertiser_id
+        <if test="accountId != null">
+            where t1.advertiser_id = #{accountId}
+        </if>
 
 
     </select>
     </select>
-    <select id="getErrorLogs" resultType="com.alibaba.fastjson.JSONObject">
-        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
-    </select>
+
 </mapper>
 </mapper>

+ 15 - 4
job-adq/src/main/java/cn/com/ctop/job/adq/data/mapper/xml/AdqErrorLogMapper.xml

@@ -2,8 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="cn.com.ctop.job.adq.data.mapper.AdqErrorLogMapper">
 <mapper namespace="cn.com.ctop.job.adq.data.mapper.AdqErrorLogMapper">
 
 
-
-
     <insert id="replaceErrorInfo">
     <insert id="replaceErrorInfo">
         replace into adq_error_log
         replace into adq_error_log
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -12,7 +10,7 @@
             <if test="endDate != null">end_date,</if>
             <if test="endDate != null">end_date,</if>
             <if test="dataDimension != null">data_dimension,</if>
             <if test="dataDimension != null">data_dimension,</if>
             <if test="dataType != null">data_type,</if>
             <if test="dataType != null">data_type,</if>
-
+            <if test="msg != null">msg,</if>
         </trim>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="advertiserId != null">#{advertiserId},</if>
             <if test="advertiserId != null">#{advertiserId},</if>
@@ -20,8 +18,21 @@
             <if test="endDate != null">#{endDate},</if>
             <if test="endDate != null">#{endDate},</if>
             <if test="dataDimension != null">#{dataDimension},</if>
             <if test="dataDimension != null">#{dataDimension},</if>
             <if test="dataType != null">#{dataType},</if>
             <if test="dataType != null">#{dataType},</if>
-
+            <if test="msg != null">#{msg},</if>
         </trim>
         </trim>
     </insert>
     </insert>
 
 
+    <delete id="deleteInfoByErrorId">
+        DELETE
+        FROM adq_error_log
+        WHERE id = #{errorId}
+    </delete>
+
+    <select id="getErrorLogs" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t1.msg as 'msg',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
+    </select>
+
 </mapper>
 </mapper>

+ 11 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/IAdqAssetReportService.java

@@ -0,0 +1,11 @@
+package cn.com.ctop.job.adq.data.service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public interface IAdqAssetReportService {
+    void getAdqAssetDailyReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog, Long errId, Integer isSend);
+    void getAdqAssetInfo(Map<String, Set<String>> assetIdsMap, Long advertiserId, String accessToken, Integer isLog, Long errId, Integer isSend);
+    void getAdqAssetInfo(String type, List<String> assetIds, Long advertiserId, String accessToken, Integer isLog, Long errId, Integer isSend);
+}

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

@@ -7,7 +7,7 @@ import java.util.List;
 public interface IAdqCreativeReportService {
 public interface IAdqCreativeReportService {
     void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate,Integer page,Integer isLog);
     void getAdqCreativeHour(Long advertiserId, String accessToken, String startDate, String endDate,Integer page,Integer isLog);
 
 
-    List<JSONObject> getAccountList();
+    List<JSONObject> getAccountList(Long accountId);
 
 
     void getAdqCreativeDaily(Long advertiserId, String accessToken, String date, String date1, Integer page,Integer isLog);
     void getAdqCreativeDaily(Long advertiserId, String accessToken, String date, String date1, Integer page,Integer isLog);
 
 

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

@@ -0,0 +1,243 @@
+package cn.com.ctop.job.adq.data.service.impl;
+
+import cn.com.ctop.job.adq.data.entity.AdqAssetInfo;
+import cn.com.ctop.job.adq.data.entity.AdqAssetReportDaily;
+import cn.com.ctop.job.adq.data.entity.AdqErrorLog;
+import cn.com.ctop.job.adq.data.mapper.AdqAssetReportMapper;
+import cn.com.ctop.job.adq.data.mapper.AdqErrorLogMapper;
+import cn.com.ctop.job.adq.data.service.IAdqAssetReportService;
+import cn.com.ctop.job.adq.data.utils.AlertUtils;
+import cn.com.ctop.job.adq.data.utils.Check;
+import cn.com.ctop.job.adq.data.utils.HttpUtils;
+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 java.time.Instant;
+import java.util.*;
+
+@Slf4j
+@Service
+public class AdqAssetReportServiceImpl implements IAdqAssetReportService {
+    @Autowired
+    private AdqErrorLogMapper adqErrorLogMapper;
+    @Autowired
+    private AdqAssetReportMapper adqAssetReportMapper;
+
+    @Override
+    public void getAdqAssetDailyReport(Long advertiserId, String accessToken, String startDate, String endDate, Integer page, Integer isLog, Long errId, Integer isSend) {
+        try {
+            Map<String, Object> paramsMap = new HashMap<>();
+            paramsMap.put("access_token", accessToken);
+            paramsMap.put("timestamp", String.valueOf(Instant.now().getEpochSecond()));
+            paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+            paramsMap.put("page", page);
+            paramsMap.put("page_size", 1000);
+            paramsMap.put("account_id", advertiserId);
+            paramsMap.put("level", "REPORT_LEVEL_MARKETING_ASSET");
+            paramsMap.put("date_range", new JSONObject().fluentPut("start_date", startDate).fluentPut("end_date", endDate));
+            paramsMap.put("group_by", new JSONArray(Arrays.asList("date", "adgroup_id", "marketing_target_type", "marketing_asset_id", "site_set")));
+            paramsMap.put("fields", new JSONArray(Arrays.asList("date", "account_id", "adgroup_id", "adgroup_name", "marketing_target_type", "marketing_asset_id", "site_set", "cost", "view_count", "valid_click_count", "conversions_count", "deep_conversions_count", "activated_count", "reg_pv", "retention_count", "video_outer_play_count", "video_outer_play100_count", "key_behavior_conversions_count", "purchase_pv", "purchase_amount", "first_pay_count")));
+            List<AdqAssetReportDaily> dailies = new ArrayList<>();
+            HashMap<String, Set<String>> assetIdsMap = new HashMap<>();
+            String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/daily_reports/get", paramsMap, null);
+            JSONObject jsonObject = JSONObject.parseObject(s);
+            int totalPage = 1;
+            if (!Check.isNull(jsonObject)) {
+                Integer code = jsonObject.getInteger("code");
+                if (code == 0) {
+                    JSONObject data = jsonObject.getJSONObject("data");
+                    if (!Check.isNull(data)) {
+                        JSONObject pageInfo = data.getJSONObject("page_info");
+                        if (!Check.isNull(pageInfo)) {
+                            totalPage = pageInfo.getInteger("total_page");
+                        }
+                        JSONArray list = data.getJSONArray("list");
+                        if (!Check.isNull(list)) {
+                            for (int i = 0; i < list.size(); i++) {
+                                JSONObject dataJson = list.getJSONObject(i);
+                                AdqAssetReportDaily report = JSONObject.parseObject(dataJson.toJSONString(), AdqAssetReportDaily.class);
+                                report.setAdvertiserId(advertiserId);
+                                report.setStatTimeDay(Integer.valueOf(dataJson.getString("date").replace("-", "")));
+                                dailies.add(report);
+
+                                String marketingTargetType = report.getMarketingTargetType();
+                                Set<String> orDefault = assetIdsMap.getOrDefault(marketingTargetType, new HashSet<>());
+                                orDefault.add(report.getMarketingAssetId().toString());
+                                assetIdsMap.put(marketingTargetType, orDefault);
+                            }
+                        }
+                    }
+                } else {
+                    log.error("请求产品日报失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                    insertErrorLog(isLog, advertiserId, "asset", startDate, endDate, jsonObject.getString("message_cn"));
+                    return;
+                }
+            } else {
+                log.error("请求产品日报失败,account_id:{},返回为空。", advertiserId);
+                insertErrorLog(isLog, advertiserId, "asset", startDate, endDate, "请求返回结果为空");
+                return;
+            }
+            if (!Check.isNull(dailies)) {
+                adqAssetReportMapper.insertAdqAssetReportDaily(dailies);
+            }
+            if (!Check.isNullMap(assetIdsMap)) {
+                getAdqAssetInfo(assetIdsMap, advertiserId, accessToken, 1, null, null);
+            }
+            if (page < totalPage) {
+                getAdqAssetDailyReport(advertiserId, accessToken, startDate, endDate, page + 1, isLog, errId, isSend);
+            } else {
+                log.error("请求产品日报完成,account_id:{},日期:{}{}", advertiserId, startDate, endDate);
+                if (errId != null) {
+                    adqErrorLogMapper.deleteInfoByErrorId(errId);
+                }
+                if (isSend != null && isSend == 1) {
+                    AlertUtils.sendMessage(advertiserId, startDate, endDate, 3, "asset_daily", 1);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    @Override
+    public void getAdqAssetInfo(Map<String, Set<String>> assetIdsMap, Long advertiserId, String accessToken, Integer isLog, Long errId, Integer isSend) {
+        try {
+            Set<Map.Entry<String, Set<String>>> entries = assetIdsMap.entrySet();
+            for (Map.Entry<String, Set<String>> entry : entries) {
+                String type = entry.getKey();
+                List<String> assetIds = new ArrayList<>(entry.getValue());
+                getAdqAssetInfo(type, assetIds, advertiserId, accessToken, isLog, errId, isSend);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    @Override
+    public void getAdqAssetInfo(String type, List<String> assetIds, Long advertiserId, String accessToken, Integer isLog, Long errId, Integer isSend) {
+        try {
+            int page = 1;
+            int totalPage = 1;
+            while (page <= totalPage) {
+                Map<String, Object> paramsMap = new HashMap<>();
+                paramsMap.put("account_id", advertiserId);
+                paramsMap.put("access_token", accessToken);
+                paramsMap.put("timestamp", String.valueOf(Instant.now().getEpochSecond()));
+                paramsMap.put("nonce", RandomStringGenerator.generateRandomString(32));
+                paramsMap.put("marketing_target_type", type);
+                paramsMap.put("page", page);
+                paramsMap.put("page_size", 100);
+
+                if (!Check.isNull(assetIds)) {
+                    JSONObject filter = new JSONObject()
+                            .fluentPut("field", "marketing_asset_id")
+                            .fluentPut("operator", "IN")
+                            .fluentPut("values", assetIds);
+                    paramsMap.put("filtering", new JSONArray().fluentAdd(filter));
+                }
+
+                List<AdqAssetInfo> infos = new ArrayList<>();
+
+                String s = HttpUtils.httpGet("https://api.e.qq.com/v3.0/marketing_target_assets/get", paramsMap, null);
+                JSONObject jsonObject = JSONObject.parseObject(s);
+
+                if (!Check.isNull(jsonObject)) {
+                    Integer code = jsonObject.getInteger("code");
+                    if (code == 0) {
+                        JSONObject data = jsonObject.getJSONObject("data");
+                        if (!Check.isNull(data)) {
+                            JSONObject pageInfo = data.getJSONObject("page_info");
+                            if (!Check.isNull(pageInfo)) {
+                                totalPage = pageInfo.getInteger("total_page");
+                            }
+                            JSONArray list = data.getJSONArray("list");
+                            if (!Check.isNull(list)) {
+                                for (int i = 0; i < list.size(); i++) {
+                                    JSONObject dataJson = list.getJSONObject(i);
+                                    AdqAssetInfo info = JSONObject.parseObject(dataJson.toJSONString(), AdqAssetInfo.class);
+                                    info.setAdvertiserId(advertiserId);
+                                    info.setMarketingTargetType(type);
+                                    JSONArray properties = dataJson.getJSONArray("properties");
+                                    if (!Check.isNull(properties)) {
+                                        for (int j = 0; j < properties.size(); j++) {
+                                            JSONObject propertyJson = properties.getJSONObject(j);
+                                            String propertyName = propertyJson.getString("property_name");
+                                            JSONArray propertyValue = propertyJson.getJSONArray("property_value");
+                                            if ("PROMOTED_ASSET_ATTR_KEY_SHORT_DRAMA_DRAMA_MALL".equals(propertyName) && !Check.isNull(propertyValue)) {
+                                                info.setPromotedAssetAttrKeyShortDramaDramaMall(propertyValue.getString(0));
+                                            } else if ("PROMOTED_ASSET_ATTR_KEY_SKU_ID".equals(propertyName) && !Check.isNull(propertyValue)) {
+                                                info.setPromotedAssetAttrKeySkuId(propertyValue.getString(0));
+                                            }
+                                            if (!Check.isNull(info.getPromotedAssetAttrKeyShortDramaDramaMall()) && !Check.isNull(info.getPromotedAssetAttrKeySkuId())) {
+                                                break;
+                                            }
+                                        }
+                                        infos.add(info);
+                                    }
+                                }
+                            }
+                        }
+                    } else {
+                        log.error("请求产品信息列表失败,account_id:{},返回信息:{}", advertiserId, jsonObject);
+                        insertErrorLog(isLog, advertiserId, "asset_info", "-", "-", new JSONObject()
+                                .fluentPut("msg", jsonObject.getString("message_cn"))
+                                .fluentPut("marketing_target_type", type)
+                                .fluentPut("marketing_asset_ids", assetIds)
+                                .toJSONString()
+                        );
+                        return;
+                    }
+                } else {
+                    log.error("请求产品信息列表失败,account_id:{},返回为空。", advertiserId);
+                    insertErrorLog(isLog, advertiserId, "asset_info", "-", "-", new JSONObject()
+                            .fluentPut("msg", "请求返回结果为空")
+                            .fluentPut("marketing_target_type", type)
+                            .fluentPut("marketing_asset_ids", assetIds)
+                            .toJSONString()
+                    );
+                    return;
+                }
+                if (!Check.isNull(infos)) {
+                    adqAssetReportMapper.insertAdqAssetInfo(infos);
+                }
+
+                if (page == totalPage) {
+                    log.error("请求产品信息列表完成,account_id:{}, assetIds:{} ", advertiserId, assetIds);
+                    if (errId != null) {
+                        adqErrorLogMapper.deleteInfoByErrorId(errId);
+                    }
+                    if (isSend != null && isSend == 1) {
+                        AlertUtils.sendMessage(advertiserId, "-", "-", 3, "asset_info", 1);
+                    }
+                }
+
+                page = page + 1;
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    private void insertErrorLog(Integer isLog, Long advertiserId, String dataDimension, String startDate, String endDate, String msg) {
+        if (isLog != null && isLog == 1) {
+            AdqErrorLog errorInfo = new AdqErrorLog();
+            errorInfo.setAdvertiserId(advertiserId);
+            errorInfo.setStartDate(startDate);
+            errorInfo.setEndDate(endDate);
+            errorInfo.setDataDimension(dataDimension);
+            errorInfo.setDataType("daily");
+            errorInfo.setMsg(msg);
+            adqErrorLogMapper.replaceErrorInfo(errorInfo);
+        }
+    }
+
+
+}

+ 3 - 3
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqCreativeCreativeReportServiceImpl.java

@@ -107,8 +107,8 @@ public class AdqCreativeCreativeReportServiceImpl implements IAdqCreativeReportS
     }
     }
 
 
     @Override
     @Override
-    public List<JSONObject> getAccountList() {
-        return adqReportMapper.getAccountList();
+    public List<JSONObject> getAccountList(Long accountId) {
+        return adqReportMapper.getAccountList(accountId);
     }
     }
 
 
     @Override
     @Override
@@ -187,6 +187,6 @@ public class AdqCreativeCreativeReportServiceImpl implements IAdqCreativeReportS
 
 
     @Override
     @Override
     public List<JSONObject> getErrorLogs() {
     public List<JSONObject> getErrorLogs() {
-        return adqReportMapper.getErrorLogs();
+        return adqErrorLogMapper.getErrorLogs();
     }
     }
 }
 }

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

@@ -3,7 +3,9 @@ package cn.com.ctop.job.adq.data.service.impl;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportDaily;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
 import cn.com.ctop.job.adq.data.entity.AdqCreativeReportHour;
 import cn.com.ctop.job.adq.data.mapper.AdqCreativeReportMapper;
 import cn.com.ctop.job.adq.data.mapper.AdqCreativeReportMapper;
+import cn.com.ctop.job.adq.data.mapper.AdqErrorLogMapper;
 import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
 import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
+import cn.com.ctop.job.adq.data.utils.AlertUtils;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.FieldsConfig;
 import cn.com.ctop.job.adq.data.utils.FieldsConfig;
 import cn.com.ctop.job.adq.data.utils.HttpUtils;
 import cn.com.ctop.job.adq.data.utils.HttpUtils;
@@ -29,6 +31,8 @@ public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
     private AdqCreativeReportMapper adqReportMapper;
     private AdqCreativeReportMapper adqReportMapper;
     private static String sendUrl = "http://172.16.0.108:8765/webhook/media_report";
     private static String sendUrl = "http://172.16.0.108:8765/webhook/media_report";
     private static ExecutorService sendExecutorService = Executors.newFixedThreadPool(5);
     private static ExecutorService sendExecutorService = Executors.newFixedThreadPool(5);
+    @Autowired
+    private AdqErrorLogMapper adqErrorLogMapper;
 
 
 
 
     @Override
     @Override
@@ -89,9 +93,9 @@ public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
             getCreativeHourRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1, isSend);
             getCreativeHourRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1, isSend);
         } else {
         } else {
             log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
             log.error("请求创意时报完成,account_id:{},日期:{}", advertiserId, startDate);
-            adqReportMapper.deleteInfoByErrorId(errorId);
+            adqErrorLogMapper.deleteInfoByErrorId(errorId);
             if (isSend == 1) {
             if (isSend == 1) {
-                sendMessage(advertiserId, startDate, endDate, 3, "hour", 1);
+                AlertUtils.sendMessage(advertiserId, startDate, endDate, 3, "hour", 1);
             }
             }
         }
         }
     }
     }
@@ -156,9 +160,9 @@ public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
                 getCreativeDailyRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1, isSend);
                 getCreativeDailyRetry(errorId, advertiserId, accessToken, startDate, endDate, page + 1, isSend);
             } else {
             } else {
                 log.error("请求创意日报完成,account_id:{},日期:{}", advertiserId, startDate);
                 log.error("请求创意日报完成,account_id:{},日期:{}", advertiserId, startDate);
-                adqReportMapper.deleteInfoByErrorId(errorId);
+                adqErrorLogMapper.deleteInfoByErrorId(errorId);
                 if (isSend == 1) {
                 if (isSend == 1) {
-                    sendMessage(advertiserId, startDate, endDate, 3, "daily", 1);
+                    AlertUtils.sendMessage(advertiserId, startDate, endDate, 3, "daily", 1);
                 }
                 }
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {
@@ -167,32 +171,4 @@ public class AdqRetryReportServiceImpl implements IAdqRetryReportService {
     }
     }
 
 
 
 
-    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);
-                    }
-                }
-            }
-        });
-    }
-
 }
 }

+ 43 - 0
job-adq/src/main/java/cn/com/ctop/job/adq/data/utils/AlertUtils.java

@@ -0,0 +1,43 @@
+package cn.com.ctop.job.adq.data.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Slf4j
+public class AlertUtils {
+    private static final String sendUrl = "http://172.16.0.108:8765/webhook/media_report";
+    private static final ExecutorService sendExecutorService = Executors.newFixedThreadPool(5);
+
+    public 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);
+                    }
+                }
+            }
+        });
+    }
+}

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

@@ -2,7 +2,7 @@ package cn.com.ctop.job.adq.handler;
 
 
 
 
 import cn.com.ctop.job.adq.data.service.IAdqAccountReportService;
 import cn.com.ctop.job.adq.data.service.IAdqAccountReportService;
-import cn.com.ctop.job.adq.data.service.IAdqCreativeReportService;
+import cn.com.ctop.job.adq.data.service.IAdqAssetReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.DateUtils;
 import cn.com.ctop.job.adq.data.utils.DateUtils;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.context.XxlJobHelper;
@@ -24,6 +24,8 @@ import java.util.concurrent.Executors;
 @Component
 @Component
 public class AdqAccountReportJob {
 public class AdqAccountReportJob {
     @Autowired
     @Autowired
+    private IAdqAssetReportService adqAssetReportService;
+    @Autowired
     private IAdqAccountReportService accountReportService;
     private IAdqAccountReportService accountReportService;
     private static ExecutorService hourExecutorService = Executors.newFixedThreadPool(3);
     private static ExecutorService hourExecutorService = Executors.newFixedThreadPool(3);
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(3);
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(3);
@@ -48,4 +50,25 @@ public class AdqAccountReportJob {
         });
         });
     }
     }
 
 
+    @XxlJob("assetReport")
+    public void assetReport() throws Exception {
+        String param = XxlJobHelper.getJobParam(); // 执行参数
+        if (Check.isNull(param)) {
+            log.error("入参为空");
+            return;
+        }
+
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+        String data = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+        String[] s = param.split("_");
+        Long advertiserId = Long.valueOf(s[0]);
+        String accessToken = s[1];
+        dailyExecutorService.submit(new Runnable() {
+            @Override
+            public void run() {
+                adqAssetReportService.getAdqAssetDailyReport(advertiserId, accessToken, data, data, 1, 1, null, null);
+            }
+        });
+    }
+
 }
 }

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

@@ -1,15 +1,18 @@
 package cn.com.ctop.job.adq.handler;
 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.IAdqCreativeReportService;
 import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
 import cn.com.ctop.job.adq.data.service.IAdqRetryReportService;
 import cn.com.ctop.job.adq.data.utils.Check;
 import cn.com.ctop.job.adq.data.utils.Check;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Executors;
@@ -26,12 +29,15 @@ public class AdqRetryReportJob {
 
 
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService dailyExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService hourrExecutorService = Executors.newFixedThreadPool(2);
     private static ExecutorService hourrExecutorService = Executors.newFixedThreadPool(2);
+    private static ExecutorService assetExecutorService = Executors.newFixedThreadPool(2);
 
 
 
 
     @Autowired
     @Autowired
     private IAdqCreativeReportService adqReportService;
     private IAdqCreativeReportService adqReportService;
     @Autowired
     @Autowired
     private IAdqRetryReportService retryReportService;
     private IAdqRetryReportService retryReportService;
+    @Autowired
+    private IAdqAssetReportService assetReportService;
 
 
     @XxlJob("adqRetryReport")
     @XxlJob("adqRetryReport")
     public void promoterReport() throws Exception {
     public void promoterReport() throws Exception {
@@ -70,11 +76,33 @@ public class AdqRetryReportJob {
                             }
                             }
                         });
                         });
                     }
                     }
+                } else if ("asset".equals(dataDimension)) {
+                    assetExecutorService.submit(new Runnable() {
+                        @Override
+                        public void run() {
+                            if (!Check.isNull(accessToken)) {
+                                assetReportService.getAdqAssetDailyReport(advertiserId, accessToken, startDate, endDate, 1, null, id, isSend);
+                            }
+                        }
+                    });
+                } else if ("asset_info".equals(dataDimension)) {
+                    assetExecutorService.submit(new Runnable() {
+                        @Override
+                        public void run() {
+                            if (!Check.isNull(accessToken)) {
+                                JSONObject msg = jsonObject.getJSONObject("msg");
+                                String marketingTargetType = msg.getString("marketing_target_type");
+                                JSONArray marketingAssetIds = msg.getJSONArray("marketing_asset_ids");
+                                List<String> assetIds = new ArrayList<>();
+                                if (!Check.isNull(marketingAssetIds)) {
+                                    assetIds = marketingAssetIds.toJavaList(String.class);
+                                }
+                                assetReportService.getAdqAssetInfo(marketingTargetType, assetIds, advertiserId, accessToken, null, id, isSend);
+                            }
+                        }
+                    });
                 }
                 }
-
-
             }
             }
-
         } else {
         } else {
             log.info("重试列表为空");
             log.info("重试列表为空");
         }
         }

+ 1 - 1
job-adq/src/main/resources/application.yml

@@ -1,5 +1,5 @@
 server:
 server:
-  port: 8087
+  port: 58087
   ip: 127.0.0.1
   ip: 127.0.0.1
   servlet:
   servlet:
     context-path: /
     context-path: /