Ver código fonte

修改定时任务

syh 5 anos atrás
pai
commit
b90cff2532
40 arquivos alterados com 1062 adições e 118 exclusões
  1. 36 23
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouHourlyReportLoadJob.java
  2. 59 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouMaterialsLoadJob.java
  3. 96 41
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  4. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouAppInfoMapper.java
  5. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouCampaignMapper.java
  6. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouCreativeMapper.java
  7. 4 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouGroupMapper.java
  8. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouScheduleMapper.java
  9. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouVideoGetMapper.java
  10. 21 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouAppInfoMapper.xml
  11. 23 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouCampaignMapper.xml
  12. 40 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouCreativeMapper.xml
  13. 53 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouGroupMapper.xml
  14. 30 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouScheduleMapper.xml
  15. 27 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouVideoGetMapper.xml
  16. 3 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouCampaignService.java
  17. 3 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouCreativeService.java
  18. 3 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouVideoGetService.java
  19. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouInterfaceService.java
  20. 9 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouCampaignServiceImpl.java
  21. 9 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouCreativeServiceImpl.java
  22. 9 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouVideoGetServiceImpl.java
  23. 63 17
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  24. 4 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyCampaignMapper.java
  25. 4 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyCreativeMapper.java
  26. 2 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyCreativeStatisticMapper.java
  27. 4 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyGroupMapper.java
  28. 111 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyCampaignMapper.xml
  29. 111 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyCreativeMapper.xml
  30. 149 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyCreativeStatisticMapper.xml
  31. 111 2
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyGroupMapper.xml
  32. 3 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyCampaignService.java
  33. 3 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyCreativeService.java
  34. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyCreativeStatisticService.java
  35. 3 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyGroupService.java
  36. 10 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyCampaignServiceImpl.java
  37. 10 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyCreativeServiceImpl.java
  38. 13 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyCreativeStatisticServiceImpl.java
  39. 10 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyGroupServiceImpl.java
  40. 0 1
      module-report/src/main/java/cn/com/ctop/bytedance/controller/MaterialReportController.java

+ 36 - 23
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouHourlyReportLoadJob.java

@@ -14,6 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * @author syh
@@ -25,6 +28,10 @@ public class KuaishouHourlyReportLoadJob implements Job {
     @Autowired
     private IKuaishouInterfaceService kuaishouInterfaceService;
 
+    static ExecutorService executorService = null;
+    //线程计数器
+    static CountDownLatch countDownLatch = null;
+
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         Date getDate = new Date();
@@ -39,32 +46,38 @@ public class KuaishouHourlyReportLoadJob implements Job {
             log.info("定时获取头条数据异常:为获取到可用的token");
             return;
         }
-//        tokens.forEach(token -> {
-//            //1:获取全量广告计划数据
-//            kuaishouInterfaceService.getCampaignList(token);
-//            //1:获取全量广告组数据
-//            kuaishouInterfaceService.getGroupList(token);
-//            //1:获取全量创意数据
-//            kuaishouInterfaceService.getCreativeList(token);
-//            //2:获取全量视频素材数据
-//            kuaishouInterfaceService.getVideoList(token);
-//        });
-//        log.info("物料数据同步完成");
+        executorService = Executors.newFixedThreadPool(10);
+        countDownLatch = new CountDownLatch(tokens.size());
+        Date finalGetDate = getDate;
+        tokens.forEach(token -> {
+            executorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        kuaishouInterfaceService.getAdvertiserReportHourly(token, finalGetDate, finalGetDate);
+                        //2:获取广告计划信息数据
+                        kuaishouInterfaceService.getAdvertiserCampaignReportHourly(token, finalGetDate, finalGetDate);
+                        //3:获取广告组信息数据
+                        kuaishouInterfaceService.getAdvertiserGroupReportHourly(token, finalGetDate, finalGetDate);
+                        //4: 获取广告创意信息数据
+                        kuaishouInterfaceService.getAdvertiserCreativeReportHourly(token, finalGetDate, finalGetDate);
 
-        for (CtopOauthToken token : tokens) {
-            kuaishouInterfaceService.getAdvertiserReportHourly(token, getDate, getDate);
-        }
-        for (CtopOauthToken token : tokens) {
-            //2:获取广告计划信息数据
-            kuaishouInterfaceService.getAdvertiserCampaignReportHourly(token, getDate, getDate);
-        }
-        for (CtopOauthToken token : tokens) {
-            //3:获取广告组信息数据
-            kuaishouInterfaceService.getAdvertiserGroupReportHourly(token, getDate, getDate);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                        countDownLatch.countDown();
+                    }
+                }
+            });
+        });
+        try {
+            countDownLatch.await();
+        } catch (InterruptedException e) {
+            e.printStackTrace();
         }
+        executorService.shutdown();
         for (CtopOauthToken token : tokens) {
-            //4: 获取广告创意信息数据
-            kuaishouInterfaceService.getAdvertiserCreativeReportHourly(token, getDate, getDate);
+            kuaishouInterfaceService.updateCreativeReportHourlyStatistic(token, getDate);
         }
     }
 }

+ 59 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/KuaishouMaterialsLoadJob.java

@@ -0,0 +1,59 @@
+package org.jeecg.modules.ctop.job;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import lombok.extern.slf4j.Slf4j;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+@Slf4j
+public class KuaishouMaterialsLoadJob implements Job {
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IKuaishouInterfaceService kuaishouInterfaceService;
+
+    static ExecutorService executorService = null;
+
+    @Override
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        //1:查询当日数据
+        List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
+
+        executorService = Executors.newFixedThreadPool(10);
+        tokens.forEach(token -> {
+            executorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Long start = System.currentTimeMillis();
+                        //1:获取全量广告计划数据
+                        kuaishouInterfaceService.getCampaignList(token);
+                        Long end1 = System.currentTimeMillis();
+                        //1:获取全量广告组数据
+                        kuaishouInterfaceService.getGroupList(token);
+                        Long end2 = System.currentTimeMillis();
+                        //1:获取全量创意数据
+                        kuaishouInterfaceService.getCreativeList(token);
+                        Long end3 = System.currentTimeMillis();
+                        //2:获取全量视频素材数据
+                        kuaishouInterfaceService.getVideoList(token);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                    }
+                }
+            });
+        });
+        log.info("物料数据同步完成");
+
+    }
+}

+ 96 - 41
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -17,6 +17,7 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -72,74 +73,128 @@ public class SampleTest {
     }
 
     static ExecutorService executorService = null;
-    static CountDownLatch countDownLatch = null; //线程计数器          如果不用执行完后统一走流程,可以不要这个
+    static CountDownLatch countDownLatch = null; //线程计数器
 
     @Test
     public void loadData() throws InterruptedException {
-        Date getDate = DateUtils.addDay(new Date(), -1);
-//        Date getDate = new Date();
+        Date getDate = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");
+        String hour = simpleDateFormat.format(getDate);
+        if (null != hour && hour.equals("00")) {
+            getDate = DateUtils.addDay(getDate, -1);
+        }
+        //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
         if (null == tokens || tokens.size() <= 0) {
             log.info("定时获取头条数据异常:为获取到可用的token");
             return;
         }
-        int times = tokens.size();
+
         executorService = Executors.newFixedThreadPool(10);
-        countDownLatch = new CountDownLatch(times);
-        for (CtopOauthToken token : tokens) {
+        countDownLatch = new CountDownLatch(tokens.size());
+        Date finalGetDate = getDate;
+        tokens.forEach(token -> {
             executorService.submit(new Runnable() {
                 @Override
                 public void run() {
-                    if (token.getAccountId() == 2731757) {
-                        System.out.println("" + token.getAccountId() + "开始");
-                        kuaishouInterfaceService.getAdvertiserCreativeReportHourly(token, getDate, getDate);
-                        System.out.println("" + token.getAccountId() + "结束");
+                    try {
+                        kuaishouInterfaceService.getAdvertiserReportHourly(token, finalGetDate, finalGetDate);
+                        //2:获取广告计划信息数据
+                        kuaishouInterfaceService.getAdvertiserCampaignReportHourly(token, finalGetDate, finalGetDate);
+                        //3:获取广告组信息数据
+                        kuaishouInterfaceService.getAdvertiserGroupReportHourly(token, finalGetDate, finalGetDate);
+                        //4: 获取广告创意信息数据
+                        kuaishouInterfaceService.getAdvertiserCreativeReportHourly(token, finalGetDate, finalGetDate);
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                        countDownLatch.countDown();
                     }
-                    countDownLatch.countDown();
                 }
             });
+        });
+        try {
+            countDownLatch.await();
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+        for (CtopOauthToken token : tokens) {
+            kuaishouInterfaceService.updateCreativeReportHourlyStatistic(token, getDate);
         }
-
-        countDownLatch.await();
-        System.out.println("Game Over");
-        //关掉线程池
         executorService.shutdown();
     }
     @Test
-    public void loadAllMetiaralInfo() {
-        Date getDate = DateUtils.addDay(new Date(), -1);
+    public void loadAllMetiaralInfo() throws InterruptedException {
+        Long start = System.currentTimeMillis();
+        Date getDate = new Date();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");
+        String hour = simpleDateFormat.format(getDate);
+        if (null != hour && hour.equals("00")) {
+            getDate = DateUtils.addDay(getDate, -1);
+        }
+        //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
         if (null == tokens || tokens.size() <= 0) {
             log.info("定时获取头条数据异常:为获取到可用的token");
             return;
         }
-//        tokens.forEach(token -> {
-//            kuaishouInterfaceService.getCampaignList(token);
-//        });
-//        tokens.forEach(token -> {
-//                kuaishouInterfaceService.getGroupList(token);
-//        });
-        tokens.forEach(token -> {
-            kuaishouInterfaceService.getCreativeList(token);
-        });
+        int times = tokens.size();
+        executorService = Executors.newFixedThreadPool(10);
+        countDownLatch = new CountDownLatch(times);
         tokens.forEach(token -> {
-            kuaishouInterfaceService.getVideoList(token);
-        });
-
+            executorService.submit(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Long start = System.currentTimeMillis();
+                        //1:获取全量广告计划数据
+                        kuaishouInterfaceService.getCampaignList(token);
+                        Long end1 = System.currentTimeMillis();
+                        //1:获取全量广告组数据
+                        kuaishouInterfaceService.getGroupList(token);
+                        Long end2 = System.currentTimeMillis();
+                        //1:获取全量创意数据
+                        kuaishouInterfaceService.getCreativeList(token);
+                        Long end3 = System.currentTimeMillis();
+                        //2:获取全量视频素材数据
+                        kuaishouInterfaceService.getVideoList(token);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    } finally {
+                        countDownLatch.countDown();
+                    }
 
-        log.info("快手物料数据同步完成");
-        tokens.forEach(token -> {
-            kuaishouInterfaceService.getAdvertiserReportDaily(token, getDate, getDate);
-        });
-        tokens.forEach(token -> {
-            kuaishouInterfaceService.getAdvertiserCampaignReportDaily(token, getDate, getDate);
-        });
-        tokens.forEach(token -> {
-            kuaishouInterfaceService.getAdvertiserGroupReportDaily(token, getDate, getDate);
-        });
-        tokens.forEach(token -> {
-            kuaishouInterfaceService.getAdvertiserCreativeReportDaily(token, getDate, getDate);
+                }
+            });
         });
+        countDownLatch.await();
+        System.out.println("数据获取完成");
+        //关掉线程池
+        executorService.shutdown();
+        Long end1 = System.currentTimeMillis();
+        System.out.println("#######################" + (end1 - start) + "#################");
+        log.info("物料数据同步完成");
+
+//        for (CtopOauthToken token : tokens) {
+//            kuaishouInterfaceService.getAdvertiserReportHourly(token, getDate, getDate);
+//        }
+//        for (CtopOauthToken token : tokens) {
+//            //2:获取广告计划信息数据
+//            kuaishouInterfaceService.getAdvertiserCampaignReportHourly(token, getDate, getDate);
+//        }
+//        for (CtopOauthToken token : tokens) {
+//            //3:获取广告组信息数据
+//            kuaishouInterfaceService.getAdvertiserGroupReportHourly(token, getDate, getDate);
+//        }
+//        for (CtopOauthToken token : tokens) {
+//            //4: 获取广告创意信息数据
+//            kuaishouInterfaceService.getAdvertiserCreativeReportHourly(token, getDate, getDate);
+//            kuaishouInterfaceService.updateCreativeReportHourlyStatistic(token, getDate);
+//        }
+//
+//        Long end2 = System.currentTimeMillis();
+//        System.out.println("#######################"+(end2-end1)+"#################");
     }
 
     @Autowired

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouAppInfoMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouAppInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 广告组-app信息
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KuaiShouAppInfoMapper extends BaseMapper<KuaiShouAppInfo> {
 
+    void replaceBatch(@Param(value = "appInfos") List<KuaiShouAppInfo> appInfos);
 }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouCampaignMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaign;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 快手-获取广告计划信息
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KuaiShouCampaignMapper extends BaseMapper<KuaiShouCampaign> {
 
+    void replaceBatch(@Param(value = "campaigns") List<KuaiShouCampaign> campaigns);
 }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouCreativeMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 快手-创意信息
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KuaiShouCreativeMapper extends BaseMapper<KuaiShouCreative> {
 
+    void replaceBatch(@Param(value = "creatives") List<KuaiShouCreative> creatives);
 }

+ 4 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouGroupMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 广告组信息
@@ -10,5 +13,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @Version: V1.0
  */
 public interface KuaiShouGroupMapper extends BaseMapper<KuaiShouGroup> {
-
+    void replaceBatch(@Param(value = "groups") List<KuaiShouGroup> groups);
 }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouScheduleMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouSchedule;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 广告组-时间段范围
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KuaiShouScheduleMapper extends BaseMapper<KuaiShouSchedule> {
 
+    void replaceBatch(@Param(value = "schedules") List<KuaiShouSchedule> shouSchedules);
 }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/KuaiShouVideoGetMapper.java

@@ -2,6 +2,9 @@ package cn.com.ctop.kuaishou.modules.batch.mapper;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @Description: 快手-获取视频接口
@@ -11,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface KuaiShouVideoGetMapper extends BaseMapper<KuaiShouVideoGet> {
 
+    void replaceBatch(@Param(value = "videos") List<KuaiShouVideoGet> videoGets);
 }

+ 21 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouAppInfoMapper.xml

@@ -1,5 +1,24 @@
 <?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.kuaishou.modules.batch.mapper.KuaiShouAppInfoMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_app_info(
+        account_id ,
+        unit_id,
+        app_package_name,
+        app_name,
+        device_os_type,
+        create_time,
+        update_time)
+        values
+        <foreach collection="appInfos" item="appInfo" separator=",">
+            (#{appInfo.accountId},
+            #{appInfo.unitId},
+            #{appInfo.appPackageName},
+            #{appInfo.appName},
+            #{appInfo.deviceOsType},
+            #{appInfo.createTime},
+            #{appInfo.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 23 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouCampaignMapper.xml

@@ -1,5 +1,26 @@
 <?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.kuaishou.modules.batch.mapper.KuaiShouCampaignMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_campaign(
+        id,
+        account_id,
+        campaign_id,
+        campaign_name,
+        status,
+        day_budget,
+        create_time,
+        update_time)
+        values
+        <foreach collection="campaigns" item="campaign" separator=",">
+            (#{campaign.id},
+            #{campaign.accountId},
+            #{campaign.campaignId},
+            #{campaign.campaignName},
+            #{campaign.status},
+            #{campaign.dayBudget},
+            #{campaign.createTime},
+            #{campaign.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 40 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouCreativeMapper.xml

@@ -1,5 +1,43 @@
 <?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.kuaishou.modules.batch.mapper.KuaiShouCreativeMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_creative(id,
+        account_id,
+        campaign_id,
+        unit_id,
+        creative_id,
+        creative_name,
+        photo_id,
+        status,
+        review_detail,
+        cover_url,
+        cover_width,
+        cover_height,
+        description,
+        action_bar_text,
+        click_track_url,
+        create_time,
+        update_time)
+        values
+        <foreach collection="creatives" item="creative" separator=",">
+            (#{creative.id},
+            #{creative.accountId},
+            #{creative.campaignId},
+            #{creative.unitId},
+            #{creative.creativeId},
+            #{creative.creativeName},
+            #{creative.photoId},
+            #{creative.status},
+            #{creative.reviewDetail},
+            #{creative.coverUrl},
+            #{creative.coverWidth},
+            #{creative.coverHeight},
+            #{creative.description},
+            #{creative.actionBarText},
+            #{creative.clickTrackUrl},
+            #{creative.createTime},
+            #{creative.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 53 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouGroupMapper.xml

@@ -1,5 +1,56 @@
 <?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.kuaishou.modules.batch.mapper.KuaiShouGroupMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_group(
+        id,
+        account_id,
+        campaign_id,
+        unit_id,
+        unit_name,
+        status,
+        review_detail,
+        bid_type,
+        bid,
+        cpa_bid,
+        ocpx_action_type,
+        day_budget,
+        speed,
+        begin_time,
+        end_time,
+        schedule,
+        show_model,
+        url_type,
+        url,
+        app_id,
+        app_icon_url,
+        create_time,
+        update_time)
+        values
+        <foreach collection="groups" item="getGroup" separator=",">
+            (#{getGroup.id},
+            #{getGroup.accountId},
+            #{getGroup.campaignId},
+            #{getGroup.unitId},
+            #{getGroup.unitName},
+            #{getGroup.status},
+            #{getGroup.reviewDetail},
+            #{getGroup.bidType},
+            #{getGroup.bid},
+            #{getGroup.cpaBid},
+            #{getGroup.ocpxActionType},
+            #{getGroup.dayBudget},
+            #{getGroup.speed},
+            #{getGroup.beginTime},
+            #{getGroup.endTime},
+            #{getGroup.schedule},
+            #{getGroup.showModel},
+            #{getGroup.urlType},
+            #{getGroup.url},
+            #{getGroup.appId},
+            #{getGroup.appIconUrl},
+            #{getGroup.createTime},
+            #{getGroup.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 30 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouScheduleMapper.xml

@@ -1,5 +1,33 @@
 <?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.kuaishou.modules.batch.mapper.KuaiShouScheduleMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_schedule(
+        account_id,
+        unit_id,
+        mon,
+        tues,
+        wed,
+        thur,
+        fri,
+        sat,
+        sun,
+        create_time,
+        update_time)
+        values
+        <foreach collection="schedules" item="schedule" separator=",">
+            (
+            #{schedule.accountId},
+            #{schedule.unitId},
+            #{schedule.mon},
+            #{schedule.tues},
+            #{schedule.wed},
+            #{schedule.thur},
+            #{schedule.fri},
+            #{schedule.sat},
+            #{schedule.sun},
+            #{schedule.createTime},
+            #{schedule.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 27 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/mapper/xml/KuaiShouVideoGetMapper.xml

@@ -1,5 +1,30 @@
 <?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.kuaishou.modules.batch.mapper.KuaiShouVideoGetMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_video_get(
+        id,
+        account_id,
+        photo_id,
+        width,
+        height,
+        url,
+        cover_url,
+        create_time,
+        update_time,
+        signature)
+        values
+        <foreach collection="videos" item="video" separator=",">
+            (#{video.id},
+            #{video.accountId},
+            #{video.photoId},
+            #{video.width},
+            #{video.height},
+            #{video.url},
+            #{video.coverUrl},
+            #{video.createTime},
+            #{video.updateTime},
+            #{video.signature})
+        </foreach>
+    </insert>
+</mapper>

+ 3 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouCampaignService.java

@@ -3,6 +3,8 @@ package cn.com.ctop.kuaishou.modules.batch.service;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaign;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 快手-获取广告计划信息
  * @Author: jeecg-boot
@@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IKuaiShouCampaignService extends IService<KuaiShouCampaign> {
 
+    void replaceBatch(List<KuaiShouCampaign> campaigns);
 }

+ 3 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouCreativeService.java

@@ -3,6 +3,8 @@ package cn.com.ctop.kuaishou.modules.batch.service;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 快手-创意信息
  * @Author: jeecg-boot
@@ -11,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IKuaiShouCreativeService extends IService<KuaiShouCreative> {
 
+    void replaceBatch(List<KuaiShouCreative> creatives);
 }

+ 3 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouVideoGetService.java

@@ -3,6 +3,8 @@ package cn.com.ctop.kuaishou.modules.batch.service;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * @Description: 快手-获取视频接口
  * @Author: jeecg-boot
@@ -10,4 +12,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @Version: V1.0
  */
 public interface IKuaiShouVideoGetService extends IService<KuaiShouVideoGet> {
+    void replaceBatch(List<KuaiShouVideoGet> videoGets);
 }

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouInterfaceService.java

@@ -258,4 +258,6 @@ public interface IKuaishouInterfaceService {
     void getGroupList(CtopOauthToken token);
 
     void loadData() throws InterruptedException;
+
+    void updateCreativeReportHourlyStatistic(CtopOauthToken token, Date getDate);
 }

+ 9 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouCampaignServiceImpl.java

@@ -4,8 +4,11 @@ import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCampaign;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCampaignMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCampaignService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @Description: 快手-获取广告计划信息
  * @Author: jeecg-boot
@@ -14,5 +17,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class KuaiShouCampaignServiceImpl extends ServiceImpl<KuaiShouCampaignMapper, KuaiShouCampaign> implements IKuaiShouCampaignService {
+    @Autowired
+    private KuaiShouCampaignMapper campaignMapper;
 
+    @Override
+    public void replaceBatch(List<KuaiShouCampaign> campaigns) {
+        campaignMapper.replaceBatch(campaigns);
+    }
 }

+ 9 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouCreativeServiceImpl.java

@@ -4,8 +4,11 @@ import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouCreative;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouCreativeMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCreativeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @Description: 快手-创意信息
  * @Author: jeecg-boot
@@ -14,5 +17,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class KuaiShouCreativeServiceImpl extends ServiceImpl<KuaiShouCreativeMapper, KuaiShouCreative> implements IKuaiShouCreativeService {
+    @Autowired
+    private KuaiShouCreativeMapper kuaiShouCreativeMapper;
 
+    @Override
+    public void replaceBatch(List<KuaiShouCreative> creatives) {
+        kuaiShouCreativeMapper.replaceBatch(creatives);
+    }
 }

+ 9 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouVideoGetServiceImpl.java

@@ -4,8 +4,11 @@ import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouVideoGetMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @Description: 快手-获取视频接口
  * @Author: jeecg-boot
@@ -14,5 +17,11 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class KuaiShouVideoGetServiceImpl extends ServiceImpl<KuaiShouVideoGetMapper, KuaiShouVideoGet> implements IKuaiShouVideoGetService {
+    @Autowired
+    private KuaiShouVideoGetMapper videoGetMapper;
 
+    @Override
+    public void replaceBatch(List<KuaiShouVideoGet> videoGets) {
+        videoGetMapper.replaceBatch(videoGets);
+    }
 }

+ 63 - 17
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java

@@ -147,6 +147,8 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             var kuaishouReportHourlyAccount = JSONObject.toJavaObject(detailJson, KuaishouReportHourlyAccount.class);
             kuaishouReportHourlyAccount.setAccountId(token.getAccountId());
             kuaishouReportHourlyAccount.setId("" + token.getAccountId() + kuaishouReportHourlyAccount.getStatDate() + kuaishouReportHourlyAccount.getStatHour());
+            kuaishouReportHourlyAccount.setCreateTime(new Date());
+            kuaishouReportHourlyAccount.setUpdateTime(new Date());
             hourlyAccountService.saveOrUpdate(kuaishouReportHourlyAccount);
         }
     }
@@ -232,13 +234,17 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             log.info("快手视频列表信息为空=》accountId:{}", token.getAccountId());
             return;
         }
+        List<KuaiShouVideoGet> videoGets = new ArrayList<>();
         for (int i = 0; i < details.size(); i++) {
             var detailJson = details.getJSONObject(i);
             var kuaiShouVideoGet = JSONObject.toJavaObject(detailJson, KuaiShouVideoGet.class);
             kuaiShouVideoGet.setAccountId(token.getAccountId());
             kuaiShouVideoGet.setId("" + token.getAccountId() + kuaiShouVideoGet.getPhotoId());
-            kuaiShouVideoGetService.saveOrUpdate(kuaiShouVideoGet);
+            kuaiShouVideoGet.setCreateTime(new Date());
+            kuaiShouVideoGet.setUpdateTime(new Date());
+            videoGets.add(kuaiShouVideoGet);
         }
+        kuaiShouVideoGetService.replaceBatch(videoGets);
         getVideoListByPage(token, page + 1);
     }
 
@@ -442,6 +448,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             log.info("快手广告计划时报表信息为空=》accountId:{}", token.getAccountId());
             return;
         }
+        List<KuaishouReportHourlyCampaign> campaigns = new ArrayList<>();
         for (int i = 0; i < details.size(); i++) {
             JSONObject detailJson = details.getJSONObject(i);
             var show = detailJson.getLong("show");
@@ -451,8 +458,11 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             var hourlyCampaign = JSONObject.toJavaObject(detailJson, KuaishouReportHourlyCampaign.class);
             hourlyCampaign.setAccountId(token.getAccountId());
             hourlyCampaign.setId("" + hourlyCampaign.getAccountId() + hourlyCampaign.getCampaignId() + hourlyCampaign.getStatDate() + hourlyCampaign.getStatHour());
-            hourlyCampaignService.saveOrUpdate(hourlyCampaign);
+            hourlyCampaign.setCreateTime(new Date());
+            hourlyCampaign.setUpdateTime(new Date());
+            campaigns.add(hourlyCampaign);
         }
+        hourlyCampaignService.replaceBatch(campaigns);
         getAdvertiserReportHourlyByPage(token, startDate, endDate, page + 1);
     }
 
@@ -610,6 +620,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             log.info("快手广告组时报表信息为空=》accountId:{}", token.getAccountId());
             return;
         }
+        List<KuaishouReportHourlyGroup> groups = new ArrayList<>();
         for (int i = 0; i < details.size(); i++) {
             JSONObject detailJson = details.getJSONObject(i);
             var show = detailJson.getLong("show");
@@ -619,8 +630,14 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             var hourlyGroup = JSONObject.toJavaObject(detailJson, KuaishouReportHourlyGroup.class);
             hourlyGroup.setAccountId(token.getAccountId());
             hourlyGroup.setId("" + hourlyGroup.getAccountId() + hourlyGroup.getUnitId() + hourlyGroup.getStatDate() + hourlyGroup.getStatHour());
-            hourlyGroupService.saveOrUpdate(hourlyGroup);
+            hourlyGroup.setCreateTime(new Date());
+            hourlyGroup.setUpdateTime(new Date());
+            groups.add(hourlyGroup);
+//            hourlyGroupService.saveOrUpdate(hourlyGroup);
         }
+        hourlyGroupService.replaceBatch(groups);
+
+
         getGroupHourlyReportByPage(token, startDate, endDate, page + 1);
     }
 
@@ -795,6 +812,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             log.info("快手广告创意时报表信息为空=》accountId:{}", token.getAccountId());
             return;
         }
+        List<KuaishouReportHourlyCreative> creatives = new ArrayList<>();
         for (int i = 0; i < details.size(); i++) {
             JSONObject detailJson = details.getJSONObject(i);
             var show = detailJson.getLong("show");
@@ -804,10 +822,11 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
             var creative = JSONObject.toJavaObject(detailJson, KuaishouReportHourlyCreative.class);
             creative.setAccountId(token.getAccountId());
             creative.setId("" + creative.getAccountId() + creative.getCreativeId() + creative.getStatDate() + creative.getStatHour());
-//            KuaishouReportHourlyCreativeStatistic statistic = setHourlyStatistic(creative, token);
-//            hourlyCreativeStatisticService.saveOrUpdate(statistic);
-            hourlyCreativeService.saveOrUpdate(creative);
+            creative.setCreateTime(new Date());
+            creative.setUpdateTime(new Date());
+            creatives.add(creative);
         }
+        hourlyCreativeService.replaceBatch(creatives);
         getAdvertiserCreativeReportHourlyByPage(token, startDate, endDate, page + 1);
     }
 
@@ -1080,7 +1099,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         JSONObject dataJson = resultJson.getJSONObject("data");
         JSONArray details = dataJson.getJSONArray("details");
         if (Check.isNull(details)) {
-            log.info("获取广告计划信息返回结果为空,advertiserId:{}", accountId);
+//            log.info("获取广告计划信息返回结果为空,advertiserId:{}", accountId);
             return;
         }
         addCampaign(accountId, details);
@@ -1166,6 +1185,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
     }
 
     private void addCampaign(Long advertiserId, JSONArray details) {
+        List<KuaiShouCampaign> campaigns = new ArrayList<>();
         for (int i = 0; i < details.size(); i++) {
             JSONObject detail = JSONObject.parseObject(details.get(i).toString());
             if (!Check.isNull(detail)) {
@@ -1176,9 +1196,10 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                 campaign.setCampaignName(detail.getString("campaign_name"));
                 campaign.setDayBudget(detail.getLong("day_budget"));
                 campaign.setStatus(detail.getInteger("status"));
-                kuaiShouCampaignService.saveOrUpdate(campaign);
+                campaigns.add(campaign);
             }
         }
+        kuaiShouCampaignService.replaceBatch(campaigns);
     }
 
     @Override
@@ -1239,6 +1260,11 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         executorService.shutdown();
     }
 
+    @Override
+    public void updateCreativeReportHourlyStatistic(CtopOauthToken token, Date getDate) {
+        hourlyCreativeStatisticService.updateCreativeReportHourlyStatistic(token, getDate);
+    }
+
     private void getGroupListByPage(CtopOauthToken token, int page) {
         String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.GROUP_LIST;
         JSONObject param = new JSONObject();
@@ -1262,7 +1288,7 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         }
         JSONArray details = resultJson.getJSONObject("data").getJSONArray("details");
         if (Check.isNull(details)) {
-            log.info("获取广告组返回结果为空,advertiserId:{}", token.getAccountId());
+//            log.info("获取广告组返回结果为空,advertiserId:{}", token.getAccountId());
             return;
         }
         addGroup(token.getAccountId(), details);
@@ -1367,6 +1393,9 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
 
     private void addGroup(Long advertiserId, JSONArray details) {
         if (!Check.isNull(details)) {
+            List<KuaiShouGroup> groups = new ArrayList<>();
+            List<KuaiShouAppInfo> appInfos = new ArrayList<>();
+            List<KuaiShouSchedule> shouSchedules = new ArrayList<>();
             for (int i = 0; i < details.size(); i++) {
                 JSONObject detail = JSONObject.parseObject(details.get(i).toString());
                 if (!Check.isNull(detail)) {
@@ -1393,7 +1422,9 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     group.setUrlType(detail.getInteger("url_type"));
                     group.setAppId(detail.getLong("app_id"));
                     group.setAppIconUrl(detail.getString("app_icon_url"));
-                    kuaiShouGroupService.saveOrUpdate(group);
+                    group.setCreateTime(new Date());
+                    group.setUpdateTime(new Date());
+                    groups.add(group);
                     // 添加应用信息
                     JSONObject diverseJson = detail.getJSONObject("diverse_data");
                     if (!Check.isNull(diverseJson)) {
@@ -1403,7 +1434,9 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                         appInfo.setAppPackageName(diverseJson.getString("app_package_name"));
                         appInfo.setDeviceOsType(diverseJson.getInteger("device_os_type"));
                         appInfo.setUnitId(unitId);
-                        appInfoMapper.insert(appInfo);
+                        appInfo.setCreateTime(new Date());
+                        appInfo.setUpdateTime(new Date());
+                        appInfos.add(appInfo);
                     }
                     //时间段信息
                     JSONObject scheduleJson = detail.getJSONObject("schedule");
@@ -1418,10 +1451,20 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                         schedule.setFri(scheduleJson.getJSONArray("fri").toJSONString());
                         schedule.setSat(scheduleJson.getJSONArray("sat").toJSONString());
                         schedule.setSun(scheduleJson.getJSONArray("sun").toJSONString());
-                        shouScheduleMapper.insert(schedule);
+                        schedule.setCreateTime(new Date());
+                        schedule.setUpdateTime(new Date());
+                        shouSchedules.add(schedule);
                     }
                 }
-
+            }
+            if (!Check.isNull(groups)) {
+                groupMapper.replaceBatch(groups);
+            }
+            if (!Check.isNull(shouSchedules)) {
+                shouScheduleMapper.replaceBatch(shouSchedules);
+            }
+            if (!Check.isNull(appInfos)) {
+                appInfoMapper.replaceBatch(appInfos);
             }
         }
     }
@@ -1455,9 +1498,10 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         }
         JSONArray details = resultJson.getJSONObject("data").getJSONArray("details");
         if (null == details || details.size() <= 0) {
-            log.error("获取广告创意返回结果数据为空,advertiserId:{}", advertiserId);
+//            log.error("获取广告创意返回结果数据为空,advertiserId:{}", advertiserId);
             return;
         }
+        List<KuaiShouCreative> creatives = new ArrayList<>();
         for (int i = 0; i < details.size(); i++) {
             JSONObject detailJson = JSONObject.parseObject(details.get(i).toString());
             if (!Check.isNull(detailJson)) {
@@ -1480,10 +1524,13 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                     creative.setDescription(displayInfoJson.getString("description"));
                     creative.setActionBarText(displayInfoJson.getString("action_bar_text"));
                 }
-                creativeService.saveOrUpdate(creative);
+                creative.setCreateTime(new Date());
+                creative.setUpdateTime(new Date());
+                creatives.add(creative);
             }
         }
-        getCreativeList(accessToken, advertiserId, page + 1);
+        creativeService.replaceBatch(creatives);
+        getCreativeListByPage(accessToken, advertiserId, page + 1);
     }
 
     /**
@@ -1523,7 +1570,6 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
                                 videoGet.setUrl(detailJson.getString("url"));
                                 videoGet.setCoverUrl(detailJson.getString("creative_name"));
                                 videoGet.setPhotoId(detailJson.getString("photo_id"));
-                                //videoGet.setSignature(UUID.randomUUID().toString());
                                 kuaiShouVideoGetService.saveOrUpdate(videoGet);
                             }
                         }

+ 4 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyCampaignMapper.java

@@ -1,8 +1,11 @@
 package cn.com.ctop.kuaishou.modules.report.mapper;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCampaign;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface KuaishouReportHourlyCampaignMapper extends BaseMapper<KuaishouReportHourlyCampaign> {
+    void replaceBatch(@Param(value = "campaigns") List<KuaishouReportHourlyCampaign> campaigns);
 }

+ 4 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyCreativeMapper.java

@@ -1,8 +1,11 @@
 package cn.com.ctop.kuaishou.modules.report.mapper;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreative;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface KuaishouReportHourlyCreativeMapper extends BaseMapper<KuaishouReportHourlyCreative> {
+    void replaceBatch(@Param(value = "creatives") List<KuaishouReportHourlyCreative> creatives);
 }

+ 2 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyCreativeStatisticMapper.java

@@ -2,6 +2,7 @@ package cn.com.ctop.kuaishou.modules.report.mapper;
 
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreativeStatistic;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 时报清洗数据
@@ -11,5 +12,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @cersion: V1.0
  */
 public interface KuaishouReportHourlyCreativeStatisticMapper extends BaseMapper<KuaishouReportHourlyCreativeStatistic> {
-
+    void updateCreativeReportHourlyStatistic(@Param(value = "accountId") Long accountId, @Param(value = "date") String dateString);
 }

+ 4 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouReportHourlyGroupMapper.java

@@ -1,8 +1,11 @@
 package cn.com.ctop.kuaishou.modules.report.mapper;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface KuaishouReportHourlyGroupMapper extends BaseMapper<KuaishouReportHourlyGroup> {
+    void replaceBatch(@Param(value = "groups") List<KuaishouReportHourlyGroup> groups);
 }

+ 111 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyCampaignMapper.xml

@@ -1,5 +1,114 @@
 <?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.kuaishou.modules.report.mapper.KuaishouReportHourlyCampaignMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_report_hourly_campaign(
+        id,
+        account_id,
+        campaign_id,
+        stat_date,
+        stat_hour,
+        charge,
+        photo_click,
+        photo_show,
+        aclick,
+        bclick,
+        photo_click_ratio,
+        action_ratio,
+        impression_1k_cost,
+        event_credit_grant_landing_page_cost ,
+        event_credit_grant_landing_page,
+        event_jin_jian_landing_page_cost,
+        event_jin_jian_landing_page,
+        form_action_ratio,
+        form_cost,
+        form_count,
+        event_order_paid_cost,
+        event_order_paid_purchase_amount,
+        event_order_paid,
+        event_credit_grant_app_ratio,
+        event_credit_grant_app_cost,
+        event_credit_grant_app,
+        event_pay_purchase_amount_first_day,
+        event_jin_jian_app_cost,
+        event_jin_jian_app,
+        event_register_cost,
+        event_register,
+        event_pay_roi,
+        event_pay_purchase_amount,
+        event_pay,
+        event_pay_first_day_roi,
+        event_pay_first_day,
+        photo_click_cost,
+        action_cost,
+        share ,
+        comment ,
+        photo_like ,
+        follow,
+        report,
+        block,
+        negative,
+        activation,
+        submit,
+        cancel_follow,
+        download_started,
+        download_completed,
+        create_time,
+        update_time)
+        values
+        <foreach collection="campaigns" item="campaign" separator=",">
+            (#{campaign.id},
+            #{campaign.accountId},
+            #{campaign.campaignId},
+            #{campaign.statDate},
+            #{campaign.statHour},
+            #{campaign.charge},
+            #{campaign.photoClick},
+            #{campaign.photoShow},
+            #{campaign.aclick},
+            #{campaign.bclick},
+            #{campaign.photoClickRatio},
+            #{campaign.actionRatio},
+            #{campaign.impression1kCost},
+            #{campaign.eventCreditGrantLandingPageCost},
+            #{campaign.eventCreditGrantLandingPage},
+            #{campaign.eventJinJianLandingPageCost},
+            #{campaign.eventJinJianLandingPage},
+            #{campaign.formActionRatio},
+            #{campaign.formCost},
+            #{campaign.formCount},
+            #{campaign.eventOrderPaidCost},
+            #{campaign.eventOrderPaidPurchaseAmount},
+            #{campaign.eventOrderPaid},
+            #{campaign.eventCreditGrantAppRatio},
+            #{campaign.eventCreditGrantAppCost},
+            #{campaign.eventCreditGrantApp},
+            #{campaign.eventPayPurchaseAmountFirstDay},
+            #{campaign.eventJinJianAppCost},
+            #{campaign.eventJinJianApp},
+            #{campaign.eventRegisterCost},
+            #{campaign.eventRegister},
+            #{campaign.eventPayRoi},
+            #{campaign.eventPayPurchaseAmount},
+            #{campaign.eventPay},
+            #{campaign.eventPayFirstDayRoi},
+            #{campaign.eventPayFirstDay},
+            #{campaign.photoClickCost},
+            #{campaign.actionCost},
+            #{campaign.share},
+            #{campaign.comment},
+            #{campaign.photoLike},
+            #{campaign.follow},
+            #{campaign.report},
+            #{campaign.block},
+            #{campaign.negative},
+            #{campaign.activation},
+            #{campaign.submit},
+            #{campaign.cancelFollow},
+            #{campaign.downloadStarted},
+            #{campaign.downloadCompleted},
+            #{campaign.createTime},
+            #{campaign.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 111 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyCreativeMapper.xml

@@ -1,5 +1,114 @@
 <?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.kuaishou.modules.report.mapper.KuaishouReportHourlyCreativeMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_report_hourly_creative(
+        id,
+        account_id,
+        creative_id,
+        stat_date,
+        stat_hour,
+        charge,
+        photo_click,
+        photo_show,
+        aclick,
+        bclick,
+        photo_click_ratio,
+        action_ratio,
+        impression_1k_cost,
+        event_credit_grant_landing_page_cost ,
+        event_credit_grant_landing_page,
+        event_jin_jian_landing_page_cost,
+        event_jin_jian_landing_page,
+        form_action_ratio,
+        form_cost,
+        form_count,
+        event_order_paid_cost,
+        event_order_paid_purchase_amount,
+        event_order_paid,
+        event_credit_grant_app_ratio,
+        event_credit_grant_app_cost,
+        event_credit_grant_app,
+        event_pay_purchase_amount_first_day,
+        event_jin_jian_app_cost,
+        event_jin_jian_app,
+        event_register_cost,
+        event_register,
+        event_pay_roi,
+        event_pay_purchase_amount,
+        event_pay,
+        event_pay_first_day_roi,
+        event_pay_first_day,
+        photo_click_cost,
+        action_cost,
+        share ,
+        comment ,
+        photo_like ,
+        follow,
+        report,
+        block,
+        negative,
+        activation,
+        submit,
+        cancel_follow,
+        download_started,
+        download_completed,
+        create_time,
+        update_time)
+        values
+        <foreach collection="creatives" item="campaign" separator=",">
+            (#{campaign.id},
+            #{campaign.accountId},
+            #{campaign.creativeId},
+            #{campaign.statDate},
+            #{campaign.statHour},
+            #{campaign.charge},
+            #{campaign.photoClick},
+            #{campaign.photoShow},
+            #{campaign.aclick},
+            #{campaign.bclick},
+            #{campaign.photoClickRatio},
+            #{campaign.actionRatio},
+            #{campaign.impression1kCost},
+            #{campaign.eventCreditGrantLandingPageCost},
+            #{campaign.eventCreditGrantLandingPage},
+            #{campaign.eventJinJianLandingPageCost},
+            #{campaign.eventJinJianLandingPage},
+            #{campaign.formActionRatio},
+            #{campaign.formCost},
+            #{campaign.formCount},
+            #{campaign.eventOrderPaidCost},
+            #{campaign.eventOrderPaidPurchaseAmount},
+            #{campaign.eventOrderPaid},
+            #{campaign.eventCreditGrantAppRatio},
+            #{campaign.eventCreditGrantAppCost},
+            #{campaign.eventCreditGrantApp},
+            #{campaign.eventPayPurchaseAmountFirstDay},
+            #{campaign.eventJinJianAppCost},
+            #{campaign.eventJinJianApp},
+            #{campaign.eventRegisterCost},
+            #{campaign.eventRegister},
+            #{campaign.eventPayRoi},
+            #{campaign.eventPayPurchaseAmount},
+            #{campaign.eventPay},
+            #{campaign.eventPayFirstDayRoi},
+            #{campaign.eventPayFirstDay},
+            #{campaign.photoClickCost},
+            #{campaign.actionCost},
+            #{campaign.share},
+            #{campaign.comment},
+            #{campaign.photoLike},
+            #{campaign.follow},
+            #{campaign.report},
+            #{campaign.block},
+            #{campaign.negative},
+            #{campaign.activation},
+            #{campaign.submit},
+            #{campaign.cancelFollow},
+            #{campaign.downloadStarted},
+            #{campaign.downloadCompleted},
+            #{campaign.createTime},
+            #{campaign.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 149 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyCreativeStatisticMapper.xml

@@ -1,5 +1,153 @@
 <?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.kuaishou.modules.report.mapper.KuaishouReportHourlyCreativeStatisticMapper">
-
+	<insert id="updateCreativeReportHourlyStatistic">
+        REPLACE INTO `ctop_kuaishou_report_hourly_creative_statistic` (
+	`id`,
+	`account_id`,
+	`account_name`,
+	`unit_id`,
+	`unit_name`,
+	`campaign_id`,
+	`campaign_name`,
+	`creative_id`,
+	`creative_name`,
+	`stat_date`,
+	`stat_hour`,
+	`charge`,
+	`photo_click`,
+	`photo_show`,
+	`aclick`,
+	`bclick`,
+	`photo_click_ratio`,
+	`action_ratio`,
+	`impression_1k_cost`,
+	`event_credit_grant_landing_page_cost`,
+	`event_credit_grant_landing_page`,
+	`event_jin_jian_landing_page_cost`,
+	`event_jin_jian_landing_page`,
+	`form_action_ratio`,
+	`form_cost`,
+	`form_count`,
+	`event_order_paid_cost`,
+	`event_order_paid_purchase_amount`,
+	`event_order_paid`,
+	`event_credit_grant_app_ratio`,
+	`event_credit_grant_app_cost`,
+	`event_credit_grant_app`,
+	`event_pay_purchase_amount_first_day`,
+	`event_jin_jian_app_cost`,
+	`event_jin_jian_app`,
+	`event_register_cost`,
+	`event_register`,
+	`event_pay_roi`,
+	`event_pay_purchase_amount`,
+	`event_pay`,
+	`event_pay_first_day_roi`,
+	`event_pay_first_day`,
+	`photo_click_cost`,
+	`action_cost`,
+	`share`,
+	`comment`,
+	`photo_like`,
+	`follow`,
+	`report`,
+	`block`,
+	`negative`,
+	`activation`,
+	`submit`,
+	`cancel_follow`,
+	`download_started`,
+	`download_completed`,
+	`create_time`,
+	`update_time`,
+	`signature`,
+	`url`
+) SELECT
+	*
+FROM
+	(
+		SELECT
+			ckrhc.`id`,
+			ckrhc.`account_id`,
+			cua.account_name,
+			ckg.unit_id,
+			ckg.unit_name,
+			ckc.campaign_id,
+			ckc.campaign_name,
+			ckrhc.`creative_id`,
+			ckr.creative_name,
+			ckrhc.`stat_date`,
+			ckrhc.`stat_hour`,
+			ckrhc.`charge`,
+			ckrhc.`photo_click`,
+			ckrhc.`photo_show`,
+			ckrhc.`aclick`,
+			ckrhc.`bclick`,
+			ckrhc.`photo_click_ratio`,
+			ckrhc.`action_ratio`,
+			ckrhc.`impression_1k_cost`,
+			ckrhc.`event_credit_grant_landing_page_cost`,
+			ckrhc.`event_credit_grant_landing_page`,
+			ckrhc.`event_jin_jian_landing_page_cost`,
+			ckrhc.`event_jin_jian_landing_page`,
+			ckrhc.`form_action_ratio`,
+			ckrhc.`form_cost`,
+			ckrhc.`form_count`,
+			ckrhc.`event_order_paid_cost`,
+			ckrhc.`event_order_paid_purchase_amount`,
+			ckrhc.`event_order_paid`,
+			ckrhc.`event_credit_grant_app_ratio`,
+			ckrhc.`event_credit_grant_app_cost`,
+			ckrhc.`event_credit_grant_app`,
+			ckrhc.`event_pay_purchase_amount_first_day`,
+			ckrhc.`event_jin_jian_app_cost`,
+			ckrhc.`event_jin_jian_app`,
+			ckrhc.`event_register_cost`,
+			ckrhc.`event_register`,
+			ckrhc.`event_pay_roi`,
+			ckrhc.`event_pay_purchase_amount`,
+			ckrhc.`event_pay`,
+			ckrhc.`event_pay_first_day_roi`,
+			ckrhc.`event_pay_first_day`,
+			ckrhc.`photo_click_cost`,
+			ckrhc.`action_cost`,
+			ckrhc.`share`,
+			ckrhc.`comment`,
+			ckrhc.`photo_like`,
+			ckrhc.`follow`,
+			ckrhc.`report`,
+			ckrhc.`block`,
+			ckrhc.`negative`,
+			ckrhc.`activation`,
+			ckrhc.`submit`,
+			ckrhc.`cancel_follow`,
+			ckrhc.`download_started`,
+			ckrhc.`download_completed`,
+			ckrhc.`create_time`,
+			ckrhc.`update_time`,
+			ckvg.signature,
+			ckvg.url
+		FROM
+			(
+				SELECT
+					*
+				FROM
+					ctop_kuaishou_report_hourly_creative
+				WHERE
+					account_id = #{accountId} and stat_date = #{date}) ckrhc,
+					ctop_kuaishou_creative ckr,
+					ctop_user_allocation cua,
+					ctop_kuaishou_campaign ckc,
+					ctop_kuaishou_group ckg,
+					ctop_kuaishou_video_get ckvg
+				WHERE
+					ckrhc.creative_id = ckr.creative_id
+				AND ckr.account_id = cua.account_id
+				AND ckr.campaign_id = ckc.campaign_id
+				AND ckr.unit_id = ckg.unit_id
+				AND ckr.photo_id = ckvg.photo_id
+				AND ckr.account_id = ckvg.account_id
+			) t
+    </insert>
 </mapper>

+ 111 - 2
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouReportHourlyGroupMapper.xml

@@ -1,5 +1,114 @@
 <?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.kuaishou.modules.report.mapper.KuaishouReportHourlyGroupMapper">
-
-</mapper>
+    <insert id="replaceBatch">
+        replace into ctop_kuaishou_report_hourly_group(
+        id,
+        account_id,
+        unit_id,
+        stat_date,
+        stat_hour,
+        charge,
+        photo_click,
+        photo_show,
+        aclick,
+        bclick,
+        photo_click_ratio,
+        action_ratio,
+        impression_1k_cost,
+        event_credit_grant_landing_page_cost ,
+        event_credit_grant_landing_page,
+        event_jin_jian_landing_page_cost,
+        event_jin_jian_landing_page,
+        form_action_ratio,
+        form_cost,
+        form_count,
+        event_order_paid_cost,
+        event_order_paid_purchase_amount,
+        event_order_paid,
+        event_credit_grant_app_ratio,
+        event_credit_grant_app_cost,
+        event_credit_grant_app,
+        event_pay_purchase_amount_first_day,
+        event_jin_jian_app_cost,
+        event_jin_jian_app,
+        event_register_cost,
+        event_register,
+        event_pay_roi,
+        event_pay_purchase_amount,
+        event_pay,
+        event_pay_first_day_roi,
+        event_pay_first_day,
+        photo_click_cost,
+        action_cost,
+        share ,
+        comment ,
+        photo_like ,
+        follow,
+        report,
+        block,
+        negative,
+        activation,
+        submit,
+        cancel_follow,
+        download_started,
+        download_completed,
+        create_time,
+        update_time)
+        values
+        <foreach collection="groups" item="campaign" separator=",">
+            (#{campaign.id},
+            #{campaign.accountId},
+            #{campaign.unitId},
+            #{campaign.statDate},
+            #{campaign.statHour},
+            #{campaign.charge},
+            #{campaign.photoClick},
+            #{campaign.photoShow},
+            #{campaign.aclick},
+            #{campaign.bclick},
+            #{campaign.photoClickRatio},
+            #{campaign.actionRatio},
+            #{campaign.impression1kCost},
+            #{campaign.eventCreditGrantLandingPageCost},
+            #{campaign.eventCreditGrantLandingPage},
+            #{campaign.eventJinJianLandingPageCost},
+            #{campaign.eventJinJianLandingPage},
+            #{campaign.formActionRatio},
+            #{campaign.formCost},
+            #{campaign.formCount},
+            #{campaign.eventOrderPaidCost},
+            #{campaign.eventOrderPaidPurchaseAmount},
+            #{campaign.eventOrderPaid},
+            #{campaign.eventCreditGrantAppRatio},
+            #{campaign.eventCreditGrantAppCost},
+            #{campaign.eventCreditGrantApp},
+            #{campaign.eventPayPurchaseAmountFirstDay},
+            #{campaign.eventJinJianAppCost},
+            #{campaign.eventJinJianApp},
+            #{campaign.eventRegisterCost},
+            #{campaign.eventRegister},
+            #{campaign.eventPayRoi},
+            #{campaign.eventPayPurchaseAmount},
+            #{campaign.eventPay},
+            #{campaign.eventPayFirstDayRoi},
+            #{campaign.eventPayFirstDay},
+            #{campaign.photoClickCost},
+            #{campaign.actionCost},
+            #{campaign.share},
+            #{campaign.comment},
+            #{campaign.photoLike},
+            #{campaign.follow},
+            #{campaign.report},
+            #{campaign.block},
+            #{campaign.negative},
+            #{campaign.activation},
+            #{campaign.submit},
+            #{campaign.cancelFollow},
+            #{campaign.downloadStarted},
+            #{campaign.downloadCompleted},
+            #{campaign.createTime},
+            #{campaign.updateTime})
+        </foreach>
+    </insert>
+</mapper>

+ 3 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyCampaignService.java

@@ -1,8 +1,10 @@
 package cn.com.ctop.kuaishou.modules.report.service;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCampaign;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 public interface IKuaishouReportHourlyCampaignService extends IService<KuaishouReportHourlyCampaign> {
+    void replaceBatch(List<KuaishouReportHourlyCampaign> campaigns);
 }

+ 3 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyCreativeService.java

@@ -1,8 +1,10 @@
 package cn.com.ctop.kuaishou.modules.report.service;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreative;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 public interface IKuaishouReportHourlyCreativeService extends IService<KuaishouReportHourlyCreative> {
+    void replaceBatch(List<KuaishouReportHourlyCreative> creatives);
 }

+ 4 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyCreativeStatisticService.java

@@ -1,8 +1,11 @@
 package cn.com.ctop.kuaishou.modules.report.service;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreativeStatistic;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Date;
+
 /**
  * 时报清洗数据
  *
@@ -12,4 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IKuaishouReportHourlyCreativeStatisticService extends IService<KuaishouReportHourlyCreativeStatistic> {
 
+    void updateCreativeReportHourlyStatistic(CtopOauthToken token, Date getDate);
 }

+ 3 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouReportHourlyGroupService.java

@@ -1,8 +1,10 @@
 package cn.com.ctop.kuaishou.modules.report.service;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 public interface IKuaishouReportHourlyGroupService extends IService<KuaishouReportHourlyGroup> {
+    void replaceBatch(List<KuaishouReportHourlyGroup> groups);
 }

+ 10 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyCampaignServiceImpl.java

@@ -1,14 +1,21 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCampaign;
-import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyCampaignMapper;
-import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyAccountService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyCampaignService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class KuaishouReportHourlyCampaignServiceImpl extends ServiceImpl<KuaishouReportHourlyCampaignMapper, KuaishouReportHourlyCampaign> implements IKuaishouReportHourlyCampaignService {
+    @Autowired
+    private KuaishouReportHourlyCampaignMapper campaignMapper;
+
+    @Override
+    public void replaceBatch(List<KuaishouReportHourlyCampaign> campaigns) {
+        campaignMapper.replaceBatch(campaigns);
+    }
 }

+ 10 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyCreativeServiceImpl.java

@@ -1,14 +1,21 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreative;
-import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyCreativeMapper;
-import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyAccountService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyCreativeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class KuaishouReportHourlyCreativeServiceImpl extends ServiceImpl<KuaishouReportHourlyCreativeMapper, KuaishouReportHourlyCreative> implements IKuaishouReportHourlyCreativeService {
+    @Autowired
+    private KuaishouReportHourlyCreativeMapper hourlyCreativeMapper;
+
+    @Override
+    public void replaceBatch(List<KuaishouReportHourlyCreative> creatives) {
+        hourlyCreativeMapper.replaceBatch(creatives);
+    }
 }

+ 13 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyCreativeStatisticServiceImpl.java

@@ -1,11 +1,16 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
+import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyCreativeStatistic;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyCreativeStatisticMapper;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyCreativeStatisticService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 /**
  * 时报清洗数据
  *
@@ -15,5 +20,13 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class KuaishouReportHourlyCreativeStatisticServiceImpl extends ServiceImpl<KuaishouReportHourlyCreativeStatisticMapper, KuaishouReportHourlyCreativeStatistic> implements IKuaishouReportHourlyCreativeStatisticService {
+    @Autowired
+    private KuaishouReportHourlyCreativeStatisticMapper statisticMapper;
 
+    @Override
+    public void updateCreativeReportHourlyStatistic(CtopOauthToken token, Date getDate) {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        String dateString = format.format(getDate);
+        statisticMapper.updateCreativeReportHourlyStatistic(token.getAccountId(), dateString);
+    }
 }

+ 10 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportHourlyGroupServiceImpl.java

@@ -1,14 +1,21 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportHourlyGroup;
-import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyAccountMapper;
 import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportHourlyGroupMapper;
-import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyAccountService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportHourlyGroupService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class KuaishouReportHourlyGroupServiceImpl extends ServiceImpl<KuaishouReportHourlyGroupMapper, KuaishouReportHourlyGroup> implements IKuaishouReportHourlyGroupService {
+    @Autowired
+    private KuaishouReportHourlyGroupMapper groupMapper;
+
+    @Override
+    public void replaceBatch(List<KuaishouReportHourlyGroup> groups) {
+        groupMapper.replaceBatch(groups);
+    }
 }

+ 0 - 1
module-report/src/main/java/cn/com/ctop/bytedance/controller/MaterialReportController.java

@@ -24,7 +24,6 @@ public class MaterialReportController {
     public List<JSONObject> getKuaiShouMaterialMarket(@RequestBody JSONObject json) {
         List<JSONObject> marketJson = materialReportService.getKuaiShouMaterialMarket(json);
         return marketJson;
-
     }