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

素材人群报表相关功能

huangxuechao 3 роки тому
батько
коміт
75ed94e681
21 змінених файлів з 2059 додано та 34 видалено
  1. 156 14
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  2. 1 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouCreativeLevelOperationRecordMapper.java
  3. 4 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouUnitLevelOperationRecordMapper.java
  4. 10 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouCreativeLevelOperationRecordMapper.xml
  5. 3 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouUnitLevelOperationRecordMapper.xml
  6. 158 5
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl2.java
  7. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/entity/KuaishouAudienceReportDaily.java
  8. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyAgeMapper.java
  9. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyBusinessMapper.java
  10. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyCityMapper.java
  11. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyClientMapper.java
  12. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyGenderMapper.java
  13. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/KuaishouAudienceReportDailyProvinceMapper.java
  14. 253 3
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyAgeMapper.xml
  15. 250 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyBusinessMapper.xml
  16. 251 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyCityMapper.xml
  17. 250 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyClientMapper.xml
  18. 250 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyGenderMapper.xml
  19. 251 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyProvinceMapper.xml
  20. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/IKuaishouAudienceReportDailyService.java
  21. 202 8
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyServiceImpl.java

+ 156 - 14
jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java

@@ -6,6 +6,8 @@ import cn.com.ctop.common.module.service.IBindAccountLoginService;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouUnitLevelOperationRecordMapper;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouOperationRecord;
 import cn.com.ctop.kuaishou.modules.batch.mapper.KuaishouOperationRecordMapper;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouReportDailyMaterialService;
@@ -15,6 +17,7 @@ import cn.com.ctop.kuaishou.modules.graphql.service.IKuaishouWebInterfaceService
 import cn.com.ctop.kuaishou.modules.material.service.IEtlKuaishouVideoInfoService;
 import cn.com.ctop.kuaishou.modules.report.entity.EtlKuaishouAccountMaterialReportDaily;
 import cn.com.ctop.kuaishou.modules.report.mapper.EtlKuaishouAccountMaterialReportDailyMapper;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouAudienceReportDailyService;
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyImageService;
 import cn.com.ctop.oa.modules.service.IWechatNoListService;
 import cn.com.ctop.toutiao.modules.link.service.IETLReportBytedanceVideoService;
@@ -309,7 +312,7 @@ public class SampleTest {
 
     @Test
     public void dealOperationRecordData() throws InterruptedException {
-        Date beginDate = DateUtils.parseDate("2021-06-01", "yyyy-MM-dd");
+        Date beginDate = DateUtils.parseDate("2020-04-28", "yyyy-MM-dd");   //chuangyi
         Date endDate = DateUtils.parseDate("2021-07-19", "yyyy-MM-dd");
 //        Date beginDate = DateUtils.parseDate("2020-04-21", "yyyy-MM-dd");
 //        Date endDate = DateUtils.parseDate("2021-07-17", "yyyy-MM-dd");
@@ -319,12 +322,12 @@ public class SampleTest {
 
         while (beginDate.before(endDate)){
             System.out.println("开始拆分数据,当前时间为:" + beginDate);
-//            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectCreativeRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));    //开始拆分数据,当前时间为:Tue Apr 28 00:00:00 CST 2020
+            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectCreativeRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));    //开始拆分数据,当前时间为:Tue Apr 28 00:00:00 CST 2020
 //            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectAccountRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));
 //            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectAppRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));
 //            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectCampaignRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));  //已执行完毕
 //            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectPackageRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));
-            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectUnitRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));    //已执行完毕
+//            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectUnitRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));    //已执行完毕
 //            List<KuaishouOperationRecord> records = kuaishouOperationRecordMapper.selectVideoRecordByStatDate(DateUtils.formatDate(beginDate, "yyyy-MM-dd"));
             if(Check.isNull(records)){
                 System.out.print("     -> 今日的数据为空!!!");
@@ -432,7 +435,7 @@ public class SampleTest {
     KuaishouInterfaceServiceImpl2 kuaishouInterfaceServiceImpl2;
 
     @Test
-    public void getUnitData(){
+    public void getUnitData() throws InterruptedException {
         List<Long> accountIdList = new ArrayList<>();
         accountIdList.add(9556188l);
         accountIdList.add(9677284l);
@@ -445,22 +448,161 @@ public class SampleTest {
         accountIdList.add(9767055l);
         accountIdList.add(10248827l);
 
-        Date beginDate = DateUtils.parseDate("2021-06-01", "yyyy-MM-dd");
-        Date endDate = DateUtils.parseDate("2021-07-19", "yyyy-MM-dd");
+        Date beginDate = DateUtils.parseDate("2021-06-04", "yyyy-MM-dd");
+        Date endDate = DateUtils.parseDate("2021-07-22", "yyyy-MM-dd");
 
+        List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
         while (beginDate.before(endDate)){
-            for(Long accountId : accountIdList){
-                kuaishouInterfaceServiceImpl2.getOperationRecord( accountId,
-                        tokenService.getOauthTokenByAccountId(String.valueOf(accountId)).getAccessToken(),
-                        3,
-                        DateUtils.formatDate(beginDate,"yyyy-MM-dd"),
-                        DateUtils.formatDate(beginDate,"yyyy-MM-dd"));
-                System.out.println("获取完毕 -> accountId:" + accountId +",日期:" + DateUtils.formatDate(beginDate,"yyyy-MM-dd"));
+            Date mulDate = beginDate;
+            countDownLatch = new CountDownLatch(tokens.size());
+            tokens.forEach(token -> executorService.submit(() -> {
+                try{
+                    if(!accountIdList.contains(token.getAccountId())){
+                        kuaishouInterfaceServiceImpl2.getOperationRecord( token.getAccountId(),
+                                token.getAccessToken(),
+                                3,      //先3组   后2计划
+                                DateUtils.formatDate(mulDate,"yyyy-MM-dd"),
+                                DateUtils.formatDate(mulDate,"yyyy-MM-dd"));
+                        System.out.println("获取完毕 -> accountId:" + token.getAccountId() +",日期:" + DateUtils.formatDate(mulDate,"yyyy-MM-dd"));
+                    }
+                }catch (Exception e){
+                }finally {
+                    countDownLatch.countDown();
+                }
+            }));
+            beginDate = DateUtils.addDay(beginDate, 1);
+            countDownLatch.await();
+        }
 
-            }
+        System.out.println("走完了~");
+    }
+
+
+    @Autowired
+    IKuaishouAudienceReportDailyService kuaishouAudienceReportDailyService;
+    @Resource
+    AiKuaishouUnitLevelOperationRecordMapper kuaishouUnitLevelOperationRecordMapper;
+    @Test
+    public void getAudienceReport() throws InterruptedException {
+        int page = 1;
+        int pageSize = 2000;
+        Date beginDate = DateUtils.parseDate("2021-05-01", "yyyy-MM-dd");
+        Date endDate = DateUtils.parseDate("2021-06-01", "yyyy-MM-dd");
+
+        while (beginDate.before(endDate)){
+            Date mulDate = beginDate;
+            List<AiKuaishouUnitLevelOperationRecord> planIdsAndUnitIds = kuaishouUnitLevelOperationRecordMapper.selectAllByAccountId(mulDate, DateUtils.addDay(mulDate,1));
+            countDownLatch = new CountDownLatch(planIdsAndUnitIds.size());
+            planIdsAndUnitIds.forEach(planIdAndUnitId -> executorService.submit(() -> {
+                try{
+                    CtopOauthToken token = tokenService.getTokenByAccountId(planIdAndUnitId.getAccountId());
+                    if(!Check.isNull(token)){
+                        Date startDate = mulDate;
+                        Date enDate = DateUtils.addDay(startDate, 30);
+                        // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
+                        while (startDate.before(enDate)){
+                            kuaishouAudienceReportDailyService.crowdAnalysisReport2(token, DateUtils.formatDate(startDate,"yyyy-MM-dd"), "ageSegment", planIdAndUnitId.getCampaignId(), planIdAndUnitId.getUnitId(), page, pageSize);
+                            System.out.println("获取完毕 -> unit:" + planIdAndUnitId.getUnitId() +",日期:" + DateUtils.formatDate(startDate,"yyyy-MM-dd"));
+                            startDate = DateUtils.addDay(startDate, 1);
+                        }
+
+                    }else {
+                        System.out.println("token异常 -》 accountId:"+planIdAndUnitId.getAccountId());
+                    }
+                }catch (Exception e){
+                }finally {
+                    countDownLatch.countDown();
+                }
+            }));
             beginDate = DateUtils.addDay(beginDate, 1);
+            countDownLatch.await();
         }
+
         System.out.println("走完了~");
+
     }
 
+    @Test
+    public void haha(){
+        try{
+            CtopOauthToken token = tokenService.getTokenByAccountId(9766982l);
+            if(!Check.isNull(token)){
+                Date startDate = DateUtils.parseDate("2021-03-03","yyyy-MM-dd");
+                Date enDate = DateUtils.addDay(startDate, 2);
+                JSONArray units = new JSONArray();
+                units.add(162424553l);
+                units.add(162424693l);
+                units.add(162424707l);
+                units.add(162424718l);
+                units.add(162424732l);
+                units.add(162424744l);
+                units.add(162424854l);
+                units.add(162424868l);
+                units.add(162424878l);
+                units.add(162424899l);
+                units.add(162424909l);
+                units.add(162424946l);
+                units.add(162424955l);
+                units.add(162424992l);
+                units.add(162425014l);
+                units.add(162425049l);
+                units.add(162425073l);
+                units.add(162425166l);
+                units.add(162425181l);
+                units.add(162425200l);
+                units.add(162425234l);
+                units.add(162425249l);
+                units.add(162425293l);
+                units.add(162425433l);
+                units.add(162425455l);
+                units.add(162697794l);
+                units.add(162697799l);
+                units.add(162697800l);
+                units.add(162697802l);
+                units.add(162718546l);
+                units.add(162718554l);
+                units.add(162718558l);
+                units.add(162718559l);
+                units.add(162718563l);
+                units.add(162718566l);
+                units.add(162718572l);
+                units.add(162718574l);
+                units.add(162718577l);
+                units.add(162718583l);
+                units.add(162718588l);
+                units.add(162718598l);
+                units.add(162718604l);
+                units.add(162718617l);
+                units.add(162718635l);
+                units.add(162718653l);
+                units.add(162718657l);
+                units.add(162718660l);
+                units.add(162718663l);
+                units.add(162718667l);
+                units.add(162718676l);
+                units.add(162718708l);
+                units.add(162718797l);
+                units.add(162718801l);
+                units.add(162718837l);
+                units.add(162718847l);
+                units.add(162718871l);
+                units.add(162718921l);
+                units.add(162718952l);
+                units.add(162718971l);
+                units.add(162719041l);
+                units.add(162719052l);
+                // province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
+                while (startDate.before(enDate)){
+                    kuaishouAudienceReportDailyService.crowdAnalysisReport3(token, DateUtils.formatDate(startDate,"yyyy-MM-dd"), "ageSegment", 36372197l, units, 1, 2000);
+                    System.out.println("获取完毕 -> unit:" + 216642581 +",日期:" + DateUtils.formatDate(startDate,"yyyy-MM-dd"));
+                    startDate = DateUtils.addDay(startDate, 1);
+                }
+
+            }else {
+                System.out.println("token异常 -》 accountId:"+9766982l);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
 }

+ 1 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouCreativeLevelOperationRecordMapper.java

@@ -10,5 +10,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @cersion: V1.0
  */
 public interface AiKuaishouCreativeLevelOperationRecordMapper extends BaseMapper<AiKuaishouCreativeLevelOperationRecord> {
-
+    String selectSignatureByUnitId(Long unitId);
 }

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

@@ -3,6 +3,9 @@ package cn.com.ctop.kuaishou.modules.ai.mapper;
 import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * 组创建记录
  * @author: jeecg-boot
@@ -10,5 +13,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @cersion: V1.0
  */
 public interface AiKuaishouUnitLevelOperationRecordMapper extends BaseMapper<AiKuaishouUnitLevelOperationRecord> {
-
+    List<AiKuaishouUnitLevelOperationRecord> selectAllByAccountId(Date startDate, Date endDate);
 }

+ 10 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouCreativeLevelOperationRecordMapper.xml

@@ -1,5 +1,14 @@
 <?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.ai.mapper.AiKuaishouCreativeLevelOperationRecordMapper">
-
+    <select id="selectSignatureByUnitId" resultType="String">
+         SELECT
+            signature
+        FROM
+            ctop_kuaishou_creative t1
+        LEFT JOIN ctop_kuaishou_video_get t2 ON t1.photo_id = t2.photo_id
+        WHERE
+            unit_id = #{unitId}
+        LIMIT 1
+    </select>
 </mapper>

+ 3 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouUnitLevelOperationRecordMapper.xml

@@ -1,5 +1,7 @@
 <?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.ai.mapper.AiKuaishouUnitLevelOperationRecordMapper">
-
+    <select id="selectAllByAccountId" resultType="cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouUnitLevelOperationRecord">
+        select distinct account_id,campaign_id,unit_id from ctop_ai_kuaishou_unit_level_operation_record where unit_id is not null and  create_time &gt;= #{startDate} and create_time &lt;= #{endDate} and account_id in (select account_id from ctop_user_allocation where project_id = 458) group by account_id,campaign_id,unit_id
+    </select>
 </mapper>

+ 158 - 5
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl2.java

@@ -28,13 +28,13 @@ public class KuaishouInterfaceServiceImpl2 implements IKuaishouInterfaceService2
     @Override
     public void getOperationRecord(Long advertiserId, String accessToken, Integer operationTarget, String startDate, String endDate){
 
-        Long days = DateUtils.getDiscrepantDays(startDate, endDate);
-        String start = null;
-        String end = null;
+//        Long days = DateUtils.getDiscrepantDays(startDate, endDate);
+//        String start = null;
+//        String end = null;
         //for (int i = 0; i <= days; i++) {
         //    start = DateUtils.addDay(startDate, i);
         //    end = start;
-        getOperationRecordByPage(advertiserId, accessToken,1, 500, operationTarget, startDate, endDate);
+        getOperationRecordByPage2(advertiserId, accessToken,1, 500, operationTarget, startDate, endDate);
         //}
     }
 
@@ -125,9 +125,104 @@ public class KuaishouInterfaceServiceImpl2 implements IKuaishouInterfaceService2
                 }
             }else{
                 if(code == 500000){
+                    System.out.println("5秒后重试,accountId:"+advertiserId+",日期:"+startDate);
+                    try{Thread.sleep(5000);} catch (InterruptedException e){};
                     getOperationRecordByPage(advertiserId, accessToken,page, pageSize, operationTarget, startDate, endDate);
+                }else {
+                    log.error("快手操作记录接口code返回结果不正确,{} ~ {} resultJson:{}", startDate, endDate, result);
+                }
+            }
+        } else {
+            log.error("快手操作记录接口获取地域列表返回结果为空,{} ~ {}, resultJson:{}", startDate, endDate, result);
+        }
+
+    }
+
+    private void getOperationRecordByPage2(Long advertiserId, String accessToken, Integer page, Integer pageSize, Integer operationTarget, String startDate, String endDate) {
+        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.OPERATION_RECORD;
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Access-Token", accessToken);
+        headers.put("Content-Type", " application/json");
+        JSONObject json = new JSONObject();
+        json.put("advertiser_id", advertiserId);
+        json.put("operation_target", operationTarget);
+        json.put("page", page);
+        json.put("page_size", pageSize);
+        json.put("start_date", startDate);
+        json.put("end_date", endDate);
+
+        String result = HttpUtils.kuaiShouhttpPostRequest(url, json.toJSONString(), headers);
+        JSONObject resultJson = JSONObject.parseObject(result);
+
+        if(!Check.isNull(resultJson)){
+            Integer code = resultJson.getInteger("code");
+            if (code == 0) {
+                JSONObject data = resultJson.getJSONObject("data");
+                if (!Check.isNull(data)) {
+                    List<KuaishouOperationRecord> recordList =  new ArrayList();
+
+                    Integer totalCount = data.getInteger("total_count");
+                    JSONArray dataArr = data.getJSONArray("details");
+                    for (int i = 0; i < dataArr.size(); i++) {
+                        JSONObject dataJson = JSONObject.parseObject(dataArr.get(i).toString());
+                        if (!Check.isNull(dataJson)) {
+
+                            Date operationTime = dataJson.getDate("operation_time");
+                            //Date operationDate = DateUtils.parseDate()
+                            Integer operationType = dataJson.getInteger("operation_type");
+                            operationTarget = dataJson.getInteger("operation_target");
+                            Integer roleType = dataJson.getInteger("role_type");
+                            String objectId = dataJson.getString("object_id");
+                            String objectName = dataJson.getString("object_name");
+
+
+
+                            String contentLogArrayString =  dataJson.getString("content_log");
+                            JSONArray jsonArray = JSONArray.parseArray(contentLogArrayString);
+                            for(int j=0;j<jsonArray.size();j++){
+                                JSONObject object = jsonArray.getJSONObject(j);
+                                String originalData = object.getString("original_data");
+                                String updateData = object.getString("update_data");
+                                String fieldName = object.getString("field_name");
+                                KuaishouOperationRecord record = new KuaishouOperationRecord();
+                                record.setAccountId(advertiserId);
+                                record.setStatDate(DateUtils.formatDate(operationTime));
+                                record.setOriginalData(originalData);
+                                record.setUpdateData(updateData);
+                                record.setFieldName(fieldName);
+
+                                record.setOperationTime(operationTime);
+                                record.setOperationType(operationType);
+                                record.setOperationTarget(operationTarget);
+                                record.setRoleType(roleType);
+                                record.setObjectId(objectId);
+                                record.setObjectName(objectName);
+
+                                if("".equals(record.getOriginalData()) && "".equals(record.getUpdateData())){
+                                    continue;
+                                }
+                                recordList.add(record);
+                            }
+
+                        }
+                    }
+                    saveOperationRecordListToDb(recordList);
+
+                    Integer totalPage = (totalCount - 1) / pageSize + 1;
+                    if (page < totalPage) {
+                        getOperationRecordByPage2(advertiserId, accessToken, page + 1, pageSize, operationTarget, startDate, endDate);
+                    }
+                }else{
+                    log.error("快手操作记录接口data结果不正确,{} ~ {}, resultJson:{}", startDate, endDate, result);
+                }
+            }else{
+                if(code == 500000){
+                    System.out.print("》》5秒后重试,accountId:"+advertiserId+",日期:"+startDate+"《《 ");
+                    try{Thread.sleep(5000);} catch (InterruptedException e){};
+                    getOperationRecordByPage2(advertiserId, accessToken,page, pageSize, operationTarget, startDate, endDate);
+                }else {
+                    log.error("快手操作记录接口code返回结果不正确,{} ~ {} resultJson:{}", startDate, endDate, result);
                 }
-                log.error("快手操作记录接口code返回结果不正确,{} ~ {},再次调用!!! resultJson:{}", startDate, endDate, result);
             }
         } else {
             log.error("快手操作记录接口获取地域列表返回结果为空,{} ~ {}, resultJson:{}", startDate, endDate, result);
@@ -171,6 +266,64 @@ public class KuaishouInterfaceServiceImpl2 implements IKuaishouInterfaceService2
         }
     }
 
+    private void saveOperationRecordListToDb(List<KuaishouOperationRecord> records) {
+        if (Check.isNull(records)) {
+            return;
+        }
+
+        List<KuaishouOperationRecord> batchList = new ArrayList<>();
+        records.removeAll(Collections.singleton(null));
+        Integer operationTarget = records.get(0).getOperationTarget();
+
+
+
+        for (KuaishouOperationRecord sumPosition : records) {
+            batchList.add(sumPosition);
+
+            if (batchList.size() >= 1000) {
+                if (operationTarget == 1) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoAccountNew(batchList);
+                } else if (operationTarget == 2) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoCampaignNew(batchList);
+                } else if (operationTarget == 3) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoUnitNew(batchList);
+                } else if (operationTarget == 4) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoCreativeNew(batchList);
+                } else if (operationTarget == 5) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoVideoNew(batchList);
+                } else if (operationTarget == 6) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoAppNew(batchList);
+                } else if (operationTarget == 7) {
+                    kuaishouOperationRecordMapper.insertOperationRecordInfoPackageNew(batchList);
+                } else {
+                    System.out.println("未知的目标类型!");
+                }
+                batchList.clear();
+            }
+        }
+        if (!batchList.isEmpty()) {
+
+            if (operationTarget == 1) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoAccountNew(batchList);
+            } else if (operationTarget == 2) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoCampaignNew(batchList);
+            } else if (operationTarget == 3) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoUnitNew(batchList);
+            } else if (operationTarget == 4) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoCreativeNew(batchList);
+            } else if (operationTarget == 5) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoVideoNew(batchList);
+            } else if (operationTarget == 6) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoAppNew(batchList);
+            } else if (operationTarget == 7) {
+                kuaishouOperationRecordMapper.insertOperationRecordInfoPackageNew(batchList);
+            } else {
+                System.out.println("未知的目标类型!");
+            }
+            batchList.clear();
+        }
+
+    }
 
 
 

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

@@ -761,4 +761,8 @@ public class KuaishouAudienceReportDaily {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "修改时间")
     private java.util.Date updateTime;
+
+    private String signature;
+
+    private Long projectId;
 }

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

@@ -16,4 +16,6 @@ import java.util.List;
 public interface KuaishouAudienceReportDailyAgeMapper extends BaseMapper<KuaishouAudienceReportDailyAge> {
 
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyAge> data);
+
+    void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyAge> data);
 }

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

@@ -16,4 +16,6 @@ import java.util.List;
 public interface KuaishouAudienceReportDailyBusinessMapper extends BaseMapper<KuaishouAudienceReportDailyBusiness> {
 
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyBusiness> data);
+
+    void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyBusiness> data);
 }

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

@@ -16,4 +16,6 @@ import java.util.List;
 public interface KuaishouAudienceReportDailyCityMapper extends BaseMapper<KuaishouAudienceReportDailyCity> {
 
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyCity> data);
+
+    void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyCity> data);
 }

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

@@ -16,4 +16,6 @@ import java.util.List;
 public interface KuaishouAudienceReportDailyClientMapper extends BaseMapper<KuaishouAudienceReportDailyClient> {
 
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyClient> data);
+
+    void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyClient> data);
 }

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

@@ -15,4 +15,6 @@ import java.util.List;
  */
 public interface KuaishouAudienceReportDailyGenderMapper extends BaseMapper<KuaishouAudienceReportDailyGender> {
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyGender> data);
+
+    void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyGender> data);
 }

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

@@ -16,4 +16,6 @@ import java.util.List;
 public interface KuaishouAudienceReportDailyProvinceMapper extends BaseMapper<KuaishouAudienceReportDailyProvince> {
 
     void replaceBatch(@Param(value = "data") List<KuaishouAudienceReportDailyProvince> data);
+
+    void replaceBatchNew(@Param(value = "data") List<KuaishouAudienceReportDailyProvince> data);
 }

+ 253 - 3
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyAgeMapper.xml

@@ -3,6 +3,253 @@
 <mapper namespace="cn.com.ctop.kuaishou.modules.report.mapper.KuaishouAudienceReportDailyAgeMapper">
 
     <insert id="replaceBatch">
+    replace into ctop_kuaishou_audience_report_daily_age (
+    account_id,
+    plan_id ,
+    unit_id ,
+    placement_type,
+    stat_date ,
+    aclick ,
+    bclick ,
+    photo_click_cost,
+    follow ,
+    cancel_follow ,
+    report ,
+    block ,
+    negative ,
+    download_started ,
+    download_completed ,
+    activation ,
+    submit ,
+    photo_click ,
+    photo_click_ratio,
+    charge ,
+    action_ratio ,
+    impression_1k_cost,
+    action_cost ,
+    event_pay_first_day ,
+    event_pay_purchase_amount_first_day,
+    event_pay_first_day_roi,
+    event_pay ,
+    event_pay_purchase_amount ,
+    event_pay_roi ,
+    event_register ,
+    event_register_cost ,
+    event_register_ratio ,
+    event_jin_jian_app ,
+    event_jin_jian_app_cost ,
+    event_credit_grant_app ,
+    event_credit_grant_app_cost,
+    event_order_paid ,
+    event_order_paid_purchase_amount,
+    event_jin_jian_landing_page ,
+    event_jin_jian_landing_page_cost ,
+    event_credit_grant_landing_page ,
+    event_credit_grant_landing_page_cost,
+    event_credit_grant_landing_ratio ,
+    event_next_day_stay_cost ,
+    event_next_day_stay_ratio ,
+    form_action_ratio ,
+    event_order_paid_cost ,
+    event_next_day_stay ,
+    form_cost ,
+    form_count ,
+    play_3s_ratio ,
+    stat_hour ,
+    click_1k_cost ,
+    event_valid_clues ,
+    event_valid_clues_cost,
+    ad_product_cnt ,
+    event_goods_view ,
+    merchant_reco_fans ,
+    event_order_amount_roi ,
+    event_new_user_pay ,
+    event_new_user_pay_cost ,
+    event_new_user_pay_ratio ,
+    event_button_click ,
+    event_button_click_cost ,
+    event_button_click_ratio ,
+    play_5s_ratio ,
+    play_end_ratio ,
+    event_order_paid_roi,
+    event_new_user_jinjian_app ,
+    event_new_user_jinjian_app_cost,
+    event_new_user_jinjian_app_roi ,
+    event_new_user_credit_grant_app ,
+    event_new_user_credit_grant_app_cost,
+    event_new_user_credit_grant_app_roi ,
+    event_new_user_jinjian_page ,
+    event_new_user_jinjian_page_cost ,
+    event_new_user_jinjian_page_roi ,
+    event_new_user_credit_grant_page ,
+    event_new_user_credit_grant_page_cost ,
+    event_new_user_credit_grant_page_roi ,
+    event_appoint_form ,
+    event_appoint_form_cost,
+    event_appoint_form_ratio,
+    event_appoint_jump_click ,
+    event_appoint_jump_click_cost,
+    event_appoint_jump_click_ratio,
+    union_event_pay_purchase_amount_7d ,
+    province ,
+    event_app_invoked ,
+    union_event_pay_purchase_amount_7d_roi,
+    event_add_shopping_cart_cost ,
+    gender ,
+    city ,
+    event_ad_watch_times_ratio ,
+    shares ,
+    business_interest_tags ,
+    event_watch_app_ad ,
+    event_multi_conversion_cost,
+    merchant_reco_fans_cost ,
+    ad_scene ,
+    event_ad_watch_times_cost ,
+    event_add_shopping_cart ,
+    age_segment ,
+    photo_like ,
+    event_add_wechat ,
+    event_add_wechat_cost,
+    event_add_wechat_ratio,
+    event_app_invoked_cost ,
+    event_multi_conversion ,
+    event_dsp_gift_form ,
+    event_app_invoked_ratio ,
+    photo_show ,
+    event_multi_conversion_ratio,
+    client ,
+    event_goods_view_cost ,
+    event_credit_grant_app_ratio,
+    event_ad_watch_times ,
+    comments
+    )
+    values
+    <foreach collection="data" item="da" separator=",">
+        (
+        #{da.accountId},
+        #{da.planId},
+        #{da.unitId},
+        #{da.placementType},
+        #{da.statDate},
+        #{da.aclick},
+        #{da.bclick},
+        #{da.photoClickCost},
+        #{da.follow},
+        #{da.cancelFollow},
+        #{da.report},
+        #{da.block},
+        #{da.negative},
+        #{da.downloadStarted},
+        #{da.downloadCompleted},
+        #{da.activation},
+        #{da.submit},
+        #{da.photoClick},
+        #{da.photoClickRatio},
+        #{da.charge},
+        #{da.actionRatio},
+        #{da.impression_1kCost},
+        #{da.actionCost},
+        #{da.eventPayFirstDay},
+        #{da.eventPayPurchaseAmountFirstDay},
+        #{da.eventPayFirstDayRoi},
+        #{da.eventPay},
+        #{da.eventPayPurchaseAmount},
+        #{da.eventPayRoi},
+        #{da.eventRegister},
+        #{da.eventRegisterCost},
+        #{da.eventRegisterRatio},
+        #{da.eventJinJianApp},
+        #{da.eventJinJianAppCost},
+        #{da.eventCreditGrantApp},
+        #{da.eventCreditGrantAppCost},
+        #{da.eventOrderPaid},
+        #{da.eventOrderPaidPurchaseAmount},
+        #{da.eventJinJianLandingPage},
+        #{da.eventJinJianLandingPageCost},
+        #{da.eventCreditGrantLandingPage},
+        #{da.eventCreditGrantLandingPageCost},
+        #{da.eventCreditGrantLandingRatio},
+        #{da.eventNextDayStayCost},
+        #{da.eventNextDayStayRatio},
+        #{da.formActionRatio},
+        #{da.eventOrderPaidCost},
+        #{da.eventNextDayStay},
+        #{da.formCost},
+        #{da.formCount},
+        #{da.play_3sRatio},
+        #{da.statHour},
+        #{da.click_1kCost},
+        #{da.eventValidClues},
+        #{da.eventValidCluesCost},
+        #{da.adProductCnt},
+        #{da.eventGoodsView},
+        #{da.merchantRecoFans},
+        #{da.eventOrderAmountRoi},
+        #{da.eventNewUserPay},
+        #{da.eventNewUserPayCost},
+        #{da.eventNewUserPayRatio},
+        #{da.eventButtonClick},
+        #{da.eventButtonClickCost},
+        #{da.eventButtonClickRatio},
+        #{da.play_5sRatio},
+        #{da.playEndRatio},
+        #{da.eventOrderPaidRoi},
+        #{da.eventNewUserJinjianApp},
+        #{da.eventNewUserJinjianAppCost},
+        #{da.eventNewUserJinjianAppRoi},
+        #{da.eventNewUserCreditGrantApp},
+        #{da.eventNewUserCreditGrantAppCost},
+        #{da.eventNewUserCreditGrantAppRoi},
+        #{da.eventNewUserJinjianPage},
+        #{da.eventNewUserJinjianPageCost},
+        #{da.eventNewUserJinjianPageRoi},
+        #{da.eventNewUserCreditGrantPage},
+        #{da.eventNewUserCreditGrantPageCost},
+        #{da.eventNewUserCreditGrantPageRoi},
+        #{da.eventAppointForm},
+        #{da.eventAppointFormCost},
+        #{da.eventAppointFormRatio},
+        #{da.eventAppointJumpClick},
+        #{da.eventAppointJumpClickCost},
+        #{da.eventAppointJumpClickRatio},
+        #{da.unionEventPayPurchaseAmount_7d},
+        #{da.province},
+        #{da.eventAppInvoked},
+        #{da.unionEventPayPurchaseAmount_7dRoi},
+        #{da.eventAddShoppingCartCost},
+        #{da.gender},
+        #{da.city},
+        #{da.eventAdWatchTimesRatio},
+        #{da.shares},
+        #{da.businessInterestTags},
+        #{da.eventWatchAppAd},
+        #{da.eventMultiConversionCost},
+        #{da.merchantRecoFansCost},
+        #{da.adScene},
+        #{da.eventAdWatchTimesCost},
+        #{da.eventAddShoppingCart},
+        #{da.ageSegment},
+        #{da.photoLike},
+        #{da.eventAddWechat},
+        #{da.eventAddWechatCost},
+        #{da.eventAddWechatRatio},
+        #{da.eventAppInvokedCost},
+        #{da.eventMultiConversion},
+        #{da.eventDspGiftForm},
+        #{da.eventAppInvokedRatio},
+        #{da.photoShow},
+        #{da.eventMultiConversionRatio},
+        #{da.client},
+        #{da.eventGoodsViewCost},
+        #{da.eventCreditGrantAppRatio},
+        #{da.eventAdWatchTimes},
+        #{da.comments}
+        )
+    </foreach>
+</insert>
+
+
+    <insert id="replaceBatchNew">
         replace into ctop_kuaishou_audience_report_daily_age (
         account_id,
         plan_id ,
@@ -121,7 +368,9 @@
         event_goods_view_cost ,
         event_credit_grant_app_ratio,
         event_ad_watch_times ,
-        comments
+        comments,
+        signature,
+        project_id
         )
         values
         <foreach collection="data" item="da" separator=",">
@@ -243,9 +492,10 @@
             #{da.eventGoodsViewCost},
             #{da.eventCreditGrantAppRatio},
             #{da.eventAdWatchTimes},
-            #{da.comments}
+            #{da.comments},
+            #{da.signature},
+            #{da.projectId}
             )
         </foreach>
     </insert>
-
 </mapper>

+ 250 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyBusinessMapper.xml

@@ -248,4 +248,254 @@
         </foreach>
     </insert>
 
+    <insert id="replaceBatchNew">
+        replace into ctop_kuaishou_audience_report_daily_business (
+        account_id,
+        plan_id ,
+        unit_id ,
+        placement_type,
+        stat_date ,
+        aclick ,
+        bclick ,
+        photo_click_cost,
+        follow ,
+        cancel_follow ,
+        report ,
+        block ,
+        negative ,
+        download_started ,
+        download_completed ,
+        activation ,
+        submit ,
+        photo_click ,
+        photo_click_ratio,
+        charge ,
+        action_ratio ,
+        impression_1k_cost,
+        action_cost ,
+        event_pay_first_day ,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay ,
+        event_pay_purchase_amount ,
+        event_pay_roi ,
+        event_register ,
+        event_register_cost ,
+        event_register_ratio ,
+        event_jin_jian_app ,
+        event_jin_jian_app_cost ,
+        event_credit_grant_app ,
+        event_credit_grant_app_cost,
+        event_order_paid ,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page ,
+        event_jin_jian_landing_page_cost ,
+        event_credit_grant_landing_page ,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio ,
+        event_next_day_stay_cost ,
+        event_next_day_stay_ratio ,
+        form_action_ratio ,
+        event_order_paid_cost ,
+        event_next_day_stay ,
+        form_cost ,
+        form_count ,
+        play_3s_ratio ,
+        stat_hour ,
+        click_1k_cost ,
+        event_valid_clues ,
+        event_valid_clues_cost,
+        ad_product_cnt ,
+        event_goods_view ,
+        merchant_reco_fans ,
+        event_order_amount_roi ,
+        event_new_user_pay ,
+        event_new_user_pay_cost ,
+        event_new_user_pay_ratio ,
+        event_button_click ,
+        event_button_click_cost ,
+        event_button_click_ratio ,
+        play_5s_ratio ,
+        play_end_ratio ,
+        event_order_paid_roi,
+        event_new_user_jinjian_app ,
+        event_new_user_jinjian_app_cost,
+        event_new_user_jinjian_app_roi ,
+        event_new_user_credit_grant_app ,
+        event_new_user_credit_grant_app_cost,
+        event_new_user_credit_grant_app_roi ,
+        event_new_user_jinjian_page ,
+        event_new_user_jinjian_page_cost ,
+        event_new_user_jinjian_page_roi ,
+        event_new_user_credit_grant_page ,
+        event_new_user_credit_grant_page_cost ,
+        event_new_user_credit_grant_page_roi ,
+        event_appoint_form ,
+        event_appoint_form_cost,
+        event_appoint_form_ratio,
+        event_appoint_jump_click ,
+        event_appoint_jump_click_cost,
+        event_appoint_jump_click_ratio,
+        union_event_pay_purchase_amount_7d ,
+        province ,
+        event_app_invoked ,
+        union_event_pay_purchase_amount_7d_roi,
+        event_add_shopping_cart_cost ,
+        gender ,
+        city ,
+        event_ad_watch_times_ratio ,
+        shares ,
+        business_interest_tags ,
+        event_watch_app_ad ,
+        event_multi_conversion_cost,
+        merchant_reco_fans_cost ,
+        ad_scene ,
+        event_ad_watch_times_cost ,
+        event_add_shopping_cart ,
+        age_segment ,
+        photo_like ,
+        event_add_wechat ,
+        event_add_wechat_cost,
+        event_add_wechat_ratio,
+        event_app_invoked_cost ,
+        event_multi_conversion ,
+        event_dsp_gift_form ,
+        event_app_invoked_ratio ,
+        photo_show ,
+        event_multi_conversion_ratio,
+        client ,
+        event_goods_view_cost ,
+        event_credit_grant_app_ratio,
+        event_ad_watch_times ,
+        comments,
+        signature,
+        project_id
+        )
+        values
+        <foreach collection="data" item="da" separator=",">
+            (
+            #{da.accountId},
+            #{da.planId},
+            #{da.unitId},
+            #{da.placementType},
+            #{da.statDate},
+            #{da.aclick},
+            #{da.bclick},
+            #{da.photoClickCost},
+            #{da.follow},
+            #{da.cancelFollow},
+            #{da.report},
+            #{da.block},
+            #{da.negative},
+            #{da.downloadStarted},
+            #{da.downloadCompleted},
+            #{da.activation},
+            #{da.submit},
+            #{da.photoClick},
+            #{da.photoClickRatio},
+            #{da.charge},
+            #{da.actionRatio},
+            #{da.impression_1kCost},
+            #{da.actionCost},
+            #{da.eventPayFirstDay},
+            #{da.eventPayPurchaseAmountFirstDay},
+            #{da.eventPayFirstDayRoi},
+            #{da.eventPay},
+            #{da.eventPayPurchaseAmount},
+            #{da.eventPayRoi},
+            #{da.eventRegister},
+            #{da.eventRegisterCost},
+            #{da.eventRegisterRatio},
+            #{da.eventJinJianApp},
+            #{da.eventJinJianAppCost},
+            #{da.eventCreditGrantApp},
+            #{da.eventCreditGrantAppCost},
+            #{da.eventOrderPaid},
+            #{da.eventOrderPaidPurchaseAmount},
+            #{da.eventJinJianLandingPage},
+            #{da.eventJinJianLandingPageCost},
+            #{da.eventCreditGrantLandingPage},
+            #{da.eventCreditGrantLandingPageCost},
+            #{da.eventCreditGrantLandingRatio},
+            #{da.eventNextDayStayCost},
+            #{da.eventNextDayStayRatio},
+            #{da.formActionRatio},
+            #{da.eventOrderPaidCost},
+            #{da.eventNextDayStay},
+            #{da.formCost},
+            #{da.formCount},
+            #{da.play_3sRatio},
+            #{da.statHour},
+            #{da.click_1kCost},
+            #{da.eventValidClues},
+            #{da.eventValidCluesCost},
+            #{da.adProductCnt},
+            #{da.eventGoodsView},
+            #{da.merchantRecoFans},
+            #{da.eventOrderAmountRoi},
+            #{da.eventNewUserPay},
+            #{da.eventNewUserPayCost},
+            #{da.eventNewUserPayRatio},
+            #{da.eventButtonClick},
+            #{da.eventButtonClickCost},
+            #{da.eventButtonClickRatio},
+            #{da.play_5sRatio},
+            #{da.playEndRatio},
+            #{da.eventOrderPaidRoi},
+            #{da.eventNewUserJinjianApp},
+            #{da.eventNewUserJinjianAppCost},
+            #{da.eventNewUserJinjianAppRoi},
+            #{da.eventNewUserCreditGrantApp},
+            #{da.eventNewUserCreditGrantAppCost},
+            #{da.eventNewUserCreditGrantAppRoi},
+            #{da.eventNewUserJinjianPage},
+            #{da.eventNewUserJinjianPageCost},
+            #{da.eventNewUserJinjianPageRoi},
+            #{da.eventNewUserCreditGrantPage},
+            #{da.eventNewUserCreditGrantPageCost},
+            #{da.eventNewUserCreditGrantPageRoi},
+            #{da.eventAppointForm},
+            #{da.eventAppointFormCost},
+            #{da.eventAppointFormRatio},
+            #{da.eventAppointJumpClick},
+            #{da.eventAppointJumpClickCost},
+            #{da.eventAppointJumpClickRatio},
+            #{da.unionEventPayPurchaseAmount_7d},
+            #{da.province},
+            #{da.eventAppInvoked},
+            #{da.unionEventPayPurchaseAmount_7dRoi},
+            #{da.eventAddShoppingCartCost},
+            #{da.gender},
+            #{da.city},
+            #{da.eventAdWatchTimesRatio},
+            #{da.shares},
+            #{da.businessInterestTags},
+            #{da.eventWatchAppAd},
+            #{da.eventMultiConversionCost},
+            #{da.merchantRecoFansCost},
+            #{da.adScene},
+            #{da.eventAdWatchTimesCost},
+            #{da.eventAddShoppingCart},
+            #{da.ageSegment},
+            #{da.photoLike},
+            #{da.eventAddWechat},
+            #{da.eventAddWechatCost},
+            #{da.eventAddWechatRatio},
+            #{da.eventAppInvokedCost},
+            #{da.eventMultiConversion},
+            #{da.eventDspGiftForm},
+            #{da.eventAppInvokedRatio},
+            #{da.photoShow},
+            #{da.eventMultiConversionRatio},
+            #{da.client},
+            #{da.eventGoodsViewCost},
+            #{da.eventCreditGrantAppRatio},
+            #{da.eventAdWatchTimes},
+            #{da.comments},
+            #{da.signature},
+            #{da.projectId}
+            )
+        </foreach>
+    </insert>
+
 </mapper>

+ 251 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyCityMapper.xml

@@ -248,4 +248,255 @@
         </foreach>
     </insert>
 
+
+    <insert id="replaceBatchNew">
+        replace into ctop_kuaishou_audience_report_daily_city (
+        account_id,
+        plan_id ,
+        unit_id ,
+        placement_type,
+        stat_date ,
+        aclick ,
+        bclick ,
+        photo_click_cost,
+        follow ,
+        cancel_follow ,
+        report ,
+        block ,
+        negative ,
+        download_started ,
+        download_completed ,
+        activation ,
+        submit ,
+        photo_click ,
+        photo_click_ratio,
+        charge ,
+        action_ratio ,
+        impression_1k_cost,
+        action_cost ,
+        event_pay_first_day ,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay ,
+        event_pay_purchase_amount ,
+        event_pay_roi ,
+        event_register ,
+        event_register_cost ,
+        event_register_ratio ,
+        event_jin_jian_app ,
+        event_jin_jian_app_cost ,
+        event_credit_grant_app ,
+        event_credit_grant_app_cost,
+        event_order_paid ,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page ,
+        event_jin_jian_landing_page_cost ,
+        event_credit_grant_landing_page ,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio ,
+        event_next_day_stay_cost ,
+        event_next_day_stay_ratio ,
+        form_action_ratio ,
+        event_order_paid_cost ,
+        event_next_day_stay ,
+        form_cost ,
+        form_count ,
+        play_3s_ratio ,
+        stat_hour ,
+        click_1k_cost ,
+        event_valid_clues ,
+        event_valid_clues_cost,
+        ad_product_cnt ,
+        event_goods_view ,
+        merchant_reco_fans ,
+        event_order_amount_roi ,
+        event_new_user_pay ,
+        event_new_user_pay_cost ,
+        event_new_user_pay_ratio ,
+        event_button_click ,
+        event_button_click_cost ,
+        event_button_click_ratio ,
+        play_5s_ratio ,
+        play_end_ratio ,
+        event_order_paid_roi,
+        event_new_user_jinjian_app ,
+        event_new_user_jinjian_app_cost,
+        event_new_user_jinjian_app_roi ,
+        event_new_user_credit_grant_app ,
+        event_new_user_credit_grant_app_cost,
+        event_new_user_credit_grant_app_roi ,
+        event_new_user_jinjian_page ,
+        event_new_user_jinjian_page_cost ,
+        event_new_user_jinjian_page_roi ,
+        event_new_user_credit_grant_page ,
+        event_new_user_credit_grant_page_cost ,
+        event_new_user_credit_grant_page_roi ,
+        event_appoint_form ,
+        event_appoint_form_cost,
+        event_appoint_form_ratio,
+        event_appoint_jump_click ,
+        event_appoint_jump_click_cost,
+        event_appoint_jump_click_ratio,
+        union_event_pay_purchase_amount_7d ,
+        province ,
+        event_app_invoked ,
+        union_event_pay_purchase_amount_7d_roi,
+        event_add_shopping_cart_cost ,
+        gender ,
+        city ,
+        event_ad_watch_times_ratio ,
+        shares ,
+        business_interest_tags ,
+        event_watch_app_ad ,
+        event_multi_conversion_cost,
+        merchant_reco_fans_cost ,
+        ad_scene ,
+        event_ad_watch_times_cost ,
+        event_add_shopping_cart ,
+        age_segment ,
+        photo_like ,
+        event_add_wechat ,
+        event_add_wechat_cost,
+        event_add_wechat_ratio,
+        event_app_invoked_cost ,
+        event_multi_conversion ,
+        event_dsp_gift_form ,
+        event_app_invoked_ratio ,
+        photo_show ,
+        event_multi_conversion_ratio,
+        client ,
+        event_goods_view_cost ,
+        event_credit_grant_app_ratio,
+        event_ad_watch_times ,
+        comments,
+        signature,
+        project_id
+        )
+        values
+        <foreach collection="data" item="da" separator=",">
+            (
+            #{da.accountId},
+            #{da.planId},
+            #{da.unitId},
+            #{da.placementType},
+            #{da.statDate},
+            #{da.aclick},
+            #{da.bclick},
+            #{da.photoClickCost},
+            #{da.follow},
+            #{da.cancelFollow},
+            #{da.report},
+            #{da.block},
+            #{da.negative},
+            #{da.downloadStarted},
+            #{da.downloadCompleted},
+            #{da.activation},
+            #{da.submit},
+            #{da.photoClick},
+            #{da.photoClickRatio},
+            #{da.charge},
+            #{da.actionRatio},
+            #{da.impression_1kCost},
+            #{da.actionCost},
+            #{da.eventPayFirstDay},
+            #{da.eventPayPurchaseAmountFirstDay},
+            #{da.eventPayFirstDayRoi},
+            #{da.eventPay},
+            #{da.eventPayPurchaseAmount},
+            #{da.eventPayRoi},
+            #{da.eventRegister},
+            #{da.eventRegisterCost},
+            #{da.eventRegisterRatio},
+            #{da.eventJinJianApp},
+            #{da.eventJinJianAppCost},
+            #{da.eventCreditGrantApp},
+            #{da.eventCreditGrantAppCost},
+            #{da.eventOrderPaid},
+            #{da.eventOrderPaidPurchaseAmount},
+            #{da.eventJinJianLandingPage},
+            #{da.eventJinJianLandingPageCost},
+            #{da.eventCreditGrantLandingPage},
+            #{da.eventCreditGrantLandingPageCost},
+            #{da.eventCreditGrantLandingRatio},
+            #{da.eventNextDayStayCost},
+            #{da.eventNextDayStayRatio},
+            #{da.formActionRatio},
+            #{da.eventOrderPaidCost},
+            #{da.eventNextDayStay},
+            #{da.formCost},
+            #{da.formCount},
+            #{da.play_3sRatio},
+            #{da.statHour},
+            #{da.click_1kCost},
+            #{da.eventValidClues},
+            #{da.eventValidCluesCost},
+            #{da.adProductCnt},
+            #{da.eventGoodsView},
+            #{da.merchantRecoFans},
+            #{da.eventOrderAmountRoi},
+            #{da.eventNewUserPay},
+            #{da.eventNewUserPayCost},
+            #{da.eventNewUserPayRatio},
+            #{da.eventButtonClick},
+            #{da.eventButtonClickCost},
+            #{da.eventButtonClickRatio},
+            #{da.play_5sRatio},
+            #{da.playEndRatio},
+            #{da.eventOrderPaidRoi},
+            #{da.eventNewUserJinjianApp},
+            #{da.eventNewUserJinjianAppCost},
+            #{da.eventNewUserJinjianAppRoi},
+            #{da.eventNewUserCreditGrantApp},
+            #{da.eventNewUserCreditGrantAppCost},
+            #{da.eventNewUserCreditGrantAppRoi},
+            #{da.eventNewUserJinjianPage},
+            #{da.eventNewUserJinjianPageCost},
+            #{da.eventNewUserJinjianPageRoi},
+            #{da.eventNewUserCreditGrantPage},
+            #{da.eventNewUserCreditGrantPageCost},
+            #{da.eventNewUserCreditGrantPageRoi},
+            #{da.eventAppointForm},
+            #{da.eventAppointFormCost},
+            #{da.eventAppointFormRatio},
+            #{da.eventAppointJumpClick},
+            #{da.eventAppointJumpClickCost},
+            #{da.eventAppointJumpClickRatio},
+            #{da.unionEventPayPurchaseAmount_7d},
+            #{da.province},
+            #{da.eventAppInvoked},
+            #{da.unionEventPayPurchaseAmount_7dRoi},
+            #{da.eventAddShoppingCartCost},
+            #{da.gender},
+            #{da.city},
+            #{da.eventAdWatchTimesRatio},
+            #{da.shares},
+            #{da.businessInterestTags},
+            #{da.eventWatchAppAd},
+            #{da.eventMultiConversionCost},
+            #{da.merchantRecoFansCost},
+            #{da.adScene},
+            #{da.eventAdWatchTimesCost},
+            #{da.eventAddShoppingCart},
+            #{da.ageSegment},
+            #{da.photoLike},
+            #{da.eventAddWechat},
+            #{da.eventAddWechatCost},
+            #{da.eventAddWechatRatio},
+            #{da.eventAppInvokedCost},
+            #{da.eventMultiConversion},
+            #{da.eventDspGiftForm},
+            #{da.eventAppInvokedRatio},
+            #{da.photoShow},
+            #{da.eventMultiConversionRatio},
+            #{da.client},
+            #{da.eventGoodsViewCost},
+            #{da.eventCreditGrantAppRatio},
+            #{da.eventAdWatchTimes},
+            #{da.comments},
+            #{da.signature},
+            #{da.projectId}
+            )
+        </foreach>
+    </insert>
+
 </mapper>

+ 250 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyClientMapper.xml

@@ -248,4 +248,254 @@
         </foreach>
     </insert>
 
+    <insert id="replaceBatchNew">
+        replace into ctop_kuaishou_audience_report_daily_client (
+        account_id,
+        plan_id ,
+        unit_id ,
+        placement_type,
+        stat_date ,
+        aclick ,
+        bclick ,
+        photo_click_cost,
+        follow ,
+        cancel_follow ,
+        report ,
+        block ,
+        negative ,
+        download_started ,
+        download_completed ,
+        activation ,
+        submit ,
+        photo_click ,
+        photo_click_ratio,
+        charge ,
+        action_ratio ,
+        impression_1k_cost,
+        action_cost ,
+        event_pay_first_day ,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay ,
+        event_pay_purchase_amount ,
+        event_pay_roi ,
+        event_register ,
+        event_register_cost ,
+        event_register_ratio ,
+        event_jin_jian_app ,
+        event_jin_jian_app_cost ,
+        event_credit_grant_app ,
+        event_credit_grant_app_cost,
+        event_order_paid ,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page ,
+        event_jin_jian_landing_page_cost ,
+        event_credit_grant_landing_page ,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio ,
+        event_next_day_stay_cost ,
+        event_next_day_stay_ratio ,
+        form_action_ratio ,
+        event_order_paid_cost ,
+        event_next_day_stay ,
+        form_cost ,
+        form_count ,
+        play_3s_ratio ,
+        stat_hour ,
+        click_1k_cost ,
+        event_valid_clues ,
+        event_valid_clues_cost,
+        ad_product_cnt ,
+        event_goods_view ,
+        merchant_reco_fans ,
+        event_order_amount_roi ,
+        event_new_user_pay ,
+        event_new_user_pay_cost ,
+        event_new_user_pay_ratio ,
+        event_button_click ,
+        event_button_click_cost ,
+        event_button_click_ratio ,
+        play_5s_ratio ,
+        play_end_ratio ,
+        event_order_paid_roi,
+        event_new_user_jinjian_app ,
+        event_new_user_jinjian_app_cost,
+        event_new_user_jinjian_app_roi ,
+        event_new_user_credit_grant_app ,
+        event_new_user_credit_grant_app_cost,
+        event_new_user_credit_grant_app_roi ,
+        event_new_user_jinjian_page ,
+        event_new_user_jinjian_page_cost ,
+        event_new_user_jinjian_page_roi ,
+        event_new_user_credit_grant_page ,
+        event_new_user_credit_grant_page_cost ,
+        event_new_user_credit_grant_page_roi ,
+        event_appoint_form ,
+        event_appoint_form_cost,
+        event_appoint_form_ratio,
+        event_appoint_jump_click ,
+        event_appoint_jump_click_cost,
+        event_appoint_jump_click_ratio,
+        union_event_pay_purchase_amount_7d ,
+        province ,
+        event_app_invoked ,
+        union_event_pay_purchase_amount_7d_roi,
+        event_add_shopping_cart_cost ,
+        gender ,
+        city ,
+        event_ad_watch_times_ratio ,
+        shares ,
+        business_interest_tags ,
+        event_watch_app_ad ,
+        event_multi_conversion_cost,
+        merchant_reco_fans_cost ,
+        ad_scene ,
+        event_ad_watch_times_cost ,
+        event_add_shopping_cart ,
+        age_segment ,
+        photo_like ,
+        event_add_wechat ,
+        event_add_wechat_cost,
+        event_add_wechat_ratio,
+        event_app_invoked_cost ,
+        event_multi_conversion ,
+        event_dsp_gift_form ,
+        event_app_invoked_ratio ,
+        photo_show ,
+        event_multi_conversion_ratio,
+        client ,
+        event_goods_view_cost ,
+        event_credit_grant_app_ratio,
+        event_ad_watch_times ,
+        comments,
+        signature,
+        project_id
+        )
+        values
+        <foreach collection="data" item="da" separator=",">
+            (
+            #{da.accountId},
+            #{da.planId},
+            #{da.unitId},
+            #{da.placementType},
+            #{da.statDate},
+            #{da.aclick},
+            #{da.bclick},
+            #{da.photoClickCost},
+            #{da.follow},
+            #{da.cancelFollow},
+            #{da.report},
+            #{da.block},
+            #{da.negative},
+            #{da.downloadStarted},
+            #{da.downloadCompleted},
+            #{da.activation},
+            #{da.submit},
+            #{da.photoClick},
+            #{da.photoClickRatio},
+            #{da.charge},
+            #{da.actionRatio},
+            #{da.impression_1kCost},
+            #{da.actionCost},
+            #{da.eventPayFirstDay},
+            #{da.eventPayPurchaseAmountFirstDay},
+            #{da.eventPayFirstDayRoi},
+            #{da.eventPay},
+            #{da.eventPayPurchaseAmount},
+            #{da.eventPayRoi},
+            #{da.eventRegister},
+            #{da.eventRegisterCost},
+            #{da.eventRegisterRatio},
+            #{da.eventJinJianApp},
+            #{da.eventJinJianAppCost},
+            #{da.eventCreditGrantApp},
+            #{da.eventCreditGrantAppCost},
+            #{da.eventOrderPaid},
+            #{da.eventOrderPaidPurchaseAmount},
+            #{da.eventJinJianLandingPage},
+            #{da.eventJinJianLandingPageCost},
+            #{da.eventCreditGrantLandingPage},
+            #{da.eventCreditGrantLandingPageCost},
+            #{da.eventCreditGrantLandingRatio},
+            #{da.eventNextDayStayCost},
+            #{da.eventNextDayStayRatio},
+            #{da.formActionRatio},
+            #{da.eventOrderPaidCost},
+            #{da.eventNextDayStay},
+            #{da.formCost},
+            #{da.formCount},
+            #{da.play_3sRatio},
+            #{da.statHour},
+            #{da.click_1kCost},
+            #{da.eventValidClues},
+            #{da.eventValidCluesCost},
+            #{da.adProductCnt},
+            #{da.eventGoodsView},
+            #{da.merchantRecoFans},
+            #{da.eventOrderAmountRoi},
+            #{da.eventNewUserPay},
+            #{da.eventNewUserPayCost},
+            #{da.eventNewUserPayRatio},
+            #{da.eventButtonClick},
+            #{da.eventButtonClickCost},
+            #{da.eventButtonClickRatio},
+            #{da.play_5sRatio},
+            #{da.playEndRatio},
+            #{da.eventOrderPaidRoi},
+            #{da.eventNewUserJinjianApp},
+            #{da.eventNewUserJinjianAppCost},
+            #{da.eventNewUserJinjianAppRoi},
+            #{da.eventNewUserCreditGrantApp},
+            #{da.eventNewUserCreditGrantAppCost},
+            #{da.eventNewUserCreditGrantAppRoi},
+            #{da.eventNewUserJinjianPage},
+            #{da.eventNewUserJinjianPageCost},
+            #{da.eventNewUserJinjianPageRoi},
+            #{da.eventNewUserCreditGrantPage},
+            #{da.eventNewUserCreditGrantPageCost},
+            #{da.eventNewUserCreditGrantPageRoi},
+            #{da.eventAppointForm},
+            #{da.eventAppointFormCost},
+            #{da.eventAppointFormRatio},
+            #{da.eventAppointJumpClick},
+            #{da.eventAppointJumpClickCost},
+            #{da.eventAppointJumpClickRatio},
+            #{da.unionEventPayPurchaseAmount_7d},
+            #{da.province},
+            #{da.eventAppInvoked},
+            #{da.unionEventPayPurchaseAmount_7dRoi},
+            #{da.eventAddShoppingCartCost},
+            #{da.gender},
+            #{da.city},
+            #{da.eventAdWatchTimesRatio},
+            #{da.shares},
+            #{da.businessInterestTags},
+            #{da.eventWatchAppAd},
+            #{da.eventMultiConversionCost},
+            #{da.merchantRecoFansCost},
+            #{da.adScene},
+            #{da.eventAdWatchTimesCost},
+            #{da.eventAddShoppingCart},
+            #{da.ageSegment},
+            #{da.photoLike},
+            #{da.eventAddWechat},
+            #{da.eventAddWechatCost},
+            #{da.eventAddWechatRatio},
+            #{da.eventAppInvokedCost},
+            #{da.eventMultiConversion},
+            #{da.eventDspGiftForm},
+            #{da.eventAppInvokedRatio},
+            #{da.photoShow},
+            #{da.eventMultiConversionRatio},
+            #{da.client},
+            #{da.eventGoodsViewCost},
+            #{da.eventCreditGrantAppRatio},
+            #{da.eventAdWatchTimes},
+            #{da.comments},
+            #{da.signature},
+            #{da.projectId}
+            )
+        </foreach>
+    </insert>
+
 </mapper>

+ 250 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyGenderMapper.xml

@@ -248,4 +248,254 @@
         </foreach>
     </insert>
 
+
+    <insert id="replaceBatchNew">
+        replace into ctop_kuaishou_audience_report_daily_gender (
+        account_id,
+        plan_id ,
+        unit_id ,
+        placement_type,
+        stat_date ,
+        aclick ,
+        bclick ,
+        photo_click_cost,
+        follow ,
+        cancel_follow ,
+        report ,
+        block ,
+        negative ,
+        download_started ,
+        download_completed ,
+        activation ,
+        submit ,
+        photo_click ,
+        photo_click_ratio,
+        charge ,
+        action_ratio ,
+        impression_1k_cost,
+        action_cost ,
+        event_pay_first_day ,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay ,
+        event_pay_purchase_amount ,
+        event_pay_roi ,
+        event_register ,
+        event_register_cost ,
+        event_register_ratio ,
+        event_jin_jian_app ,
+        event_jin_jian_app_cost ,
+        event_credit_grant_app ,
+        event_credit_grant_app_cost,
+        event_order_paid ,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page ,
+        event_jin_jian_landing_page_cost ,
+        event_credit_grant_landing_page ,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio ,
+        event_next_day_stay_cost ,
+        event_next_day_stay_ratio ,
+        form_action_ratio ,
+        event_order_paid_cost ,
+        event_next_day_stay ,
+        form_cost ,
+        form_count ,
+        play_3s_ratio ,
+        stat_hour ,
+        click_1k_cost ,
+        event_valid_clues ,
+        event_valid_clues_cost,
+        ad_product_cnt ,
+        event_goods_view ,
+        merchant_reco_fans ,
+        event_order_amount_roi ,
+        event_new_user_pay ,
+        event_new_user_pay_cost ,
+        event_new_user_pay_ratio ,
+        event_button_click ,
+        event_button_click_cost ,
+        event_button_click_ratio ,
+        play_5s_ratio ,
+        play_end_ratio ,
+        event_order_paid_roi,
+        event_new_user_jinjian_app ,
+        event_new_user_jinjian_app_cost,
+        event_new_user_jinjian_app_roi ,
+        event_new_user_credit_grant_app ,
+        event_new_user_credit_grant_app_cost,
+        event_new_user_credit_grant_app_roi ,
+        event_new_user_jinjian_page ,
+        event_new_user_jinjian_page_cost ,
+        event_new_user_jinjian_page_roi ,
+        event_new_user_credit_grant_page ,
+        event_new_user_credit_grant_page_cost ,
+        event_new_user_credit_grant_page_roi ,
+        event_appoint_form ,
+        event_appoint_form_cost,
+        event_appoint_form_ratio,
+        event_appoint_jump_click ,
+        event_appoint_jump_click_cost,
+        event_appoint_jump_click_ratio,
+        union_event_pay_purchase_amount_7d ,
+        province ,
+        event_app_invoked ,
+        union_event_pay_purchase_amount_7d_roi,
+        event_add_shopping_cart_cost ,
+        gender ,
+        city ,
+        event_ad_watch_times_ratio ,
+        shares ,
+        business_interest_tags ,
+        event_watch_app_ad ,
+        event_multi_conversion_cost,
+        merchant_reco_fans_cost ,
+        ad_scene ,
+        event_ad_watch_times_cost ,
+        event_add_shopping_cart ,
+        age_segment ,
+        photo_like ,
+        event_add_wechat ,
+        event_add_wechat_cost,
+        event_add_wechat_ratio,
+        event_app_invoked_cost ,
+        event_multi_conversion ,
+        event_dsp_gift_form ,
+        event_app_invoked_ratio ,
+        photo_show ,
+        event_multi_conversion_ratio,
+        client ,
+        event_goods_view_cost ,
+        event_credit_grant_app_ratio,
+        event_ad_watch_times ,
+        comments,
+        signature,
+        project_id
+        )
+        values
+        <foreach collection="data" item="da" separator=",">
+            (
+            #{da.accountId},
+            #{da.planId},
+            #{da.unitId},
+            #{da.placementType},
+            #{da.statDate},
+            #{da.aclick},
+            #{da.bclick},
+            #{da.photoClickCost},
+            #{da.follow},
+            #{da.cancelFollow},
+            #{da.report},
+            #{da.block},
+            #{da.negative},
+            #{da.downloadStarted},
+            #{da.downloadCompleted},
+            #{da.activation},
+            #{da.submit},
+            #{da.photoClick},
+            #{da.photoClickRatio},
+            #{da.charge},
+            #{da.actionRatio},
+            #{da.impression_1kCost},
+            #{da.actionCost},
+            #{da.eventPayFirstDay},
+            #{da.eventPayPurchaseAmountFirstDay},
+            #{da.eventPayFirstDayRoi},
+            #{da.eventPay},
+            #{da.eventPayPurchaseAmount},
+            #{da.eventPayRoi},
+            #{da.eventRegister},
+            #{da.eventRegisterCost},
+            #{da.eventRegisterRatio},
+            #{da.eventJinJianApp},
+            #{da.eventJinJianAppCost},
+            #{da.eventCreditGrantApp},
+            #{da.eventCreditGrantAppCost},
+            #{da.eventOrderPaid},
+            #{da.eventOrderPaidPurchaseAmount},
+            #{da.eventJinJianLandingPage},
+            #{da.eventJinJianLandingPageCost},
+            #{da.eventCreditGrantLandingPage},
+            #{da.eventCreditGrantLandingPageCost},
+            #{da.eventCreditGrantLandingRatio},
+            #{da.eventNextDayStayCost},
+            #{da.eventNextDayStayRatio},
+            #{da.formActionRatio},
+            #{da.eventOrderPaidCost},
+            #{da.eventNextDayStay},
+            #{da.formCost},
+            #{da.formCount},
+            #{da.play_3sRatio},
+            #{da.statHour},
+            #{da.click_1kCost},
+            #{da.eventValidClues},
+            #{da.eventValidCluesCost},
+            #{da.adProductCnt},
+            #{da.eventGoodsView},
+            #{da.merchantRecoFans},
+            #{da.eventOrderAmountRoi},
+            #{da.eventNewUserPay},
+            #{da.eventNewUserPayCost},
+            #{da.eventNewUserPayRatio},
+            #{da.eventButtonClick},
+            #{da.eventButtonClickCost},
+            #{da.eventButtonClickRatio},
+            #{da.play_5sRatio},
+            #{da.playEndRatio},
+            #{da.eventOrderPaidRoi},
+            #{da.eventNewUserJinjianApp},
+            #{da.eventNewUserJinjianAppCost},
+            #{da.eventNewUserJinjianAppRoi},
+            #{da.eventNewUserCreditGrantApp},
+            #{da.eventNewUserCreditGrantAppCost},
+            #{da.eventNewUserCreditGrantAppRoi},
+            #{da.eventNewUserJinjianPage},
+            #{da.eventNewUserJinjianPageCost},
+            #{da.eventNewUserJinjianPageRoi},
+            #{da.eventNewUserCreditGrantPage},
+            #{da.eventNewUserCreditGrantPageCost},
+            #{da.eventNewUserCreditGrantPageRoi},
+            #{da.eventAppointForm},
+            #{da.eventAppointFormCost},
+            #{da.eventAppointFormRatio},
+            #{da.eventAppointJumpClick},
+            #{da.eventAppointJumpClickCost},
+            #{da.eventAppointJumpClickRatio},
+            #{da.unionEventPayPurchaseAmount_7d},
+            #{da.province},
+            #{da.eventAppInvoked},
+            #{da.unionEventPayPurchaseAmount_7dRoi},
+            #{da.eventAddShoppingCartCost},
+            #{da.gender},
+            #{da.city},
+            #{da.eventAdWatchTimesRatio},
+            #{da.shares},
+            #{da.businessInterestTags},
+            #{da.eventWatchAppAd},
+            #{da.eventMultiConversionCost},
+            #{da.merchantRecoFansCost},
+            #{da.adScene},
+            #{da.eventAdWatchTimesCost},
+            #{da.eventAddShoppingCart},
+            #{da.ageSegment},
+            #{da.photoLike},
+            #{da.eventAddWechat},
+            #{da.eventAddWechatCost},
+            #{da.eventAddWechatRatio},
+            #{da.eventAppInvokedCost},
+            #{da.eventMultiConversion},
+            #{da.eventDspGiftForm},
+            #{da.eventAppInvokedRatio},
+            #{da.photoShow},
+            #{da.eventMultiConversionRatio},
+            #{da.client},
+            #{da.eventGoodsViewCost},
+            #{da.eventCreditGrantAppRatio},
+            #{da.eventAdWatchTimes},
+            #{da.comments},
+            #{da.signature},
+            #{da.projectId}
+            )
+        </foreach>
+    </insert>
 </mapper>

+ 251 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/KuaishouAudienceReportDailyProvinceMapper.xml

@@ -248,4 +248,255 @@
         </foreach>
     </insert>
 
+
+    <insert id="replaceBatchNew">
+        replace into ctop_kuaishou_audience_report_daily_province (
+        account_id,
+        plan_id ,
+        unit_id ,
+        placement_type,
+        stat_date ,
+        aclick ,
+        bclick ,
+        photo_click_cost,
+        follow ,
+        cancel_follow ,
+        report ,
+        block ,
+        negative ,
+        download_started ,
+        download_completed ,
+        activation ,
+        submit ,
+        photo_click ,
+        photo_click_ratio,
+        charge ,
+        action_ratio ,
+        impression_1k_cost,
+        action_cost ,
+        event_pay_first_day ,
+        event_pay_purchase_amount_first_day,
+        event_pay_first_day_roi,
+        event_pay ,
+        event_pay_purchase_amount ,
+        event_pay_roi ,
+        event_register ,
+        event_register_cost ,
+        event_register_ratio ,
+        event_jin_jian_app ,
+        event_jin_jian_app_cost ,
+        event_credit_grant_app ,
+        event_credit_grant_app_cost,
+        event_order_paid ,
+        event_order_paid_purchase_amount,
+        event_jin_jian_landing_page ,
+        event_jin_jian_landing_page_cost ,
+        event_credit_grant_landing_page ,
+        event_credit_grant_landing_page_cost,
+        event_credit_grant_landing_ratio ,
+        event_next_day_stay_cost ,
+        event_next_day_stay_ratio ,
+        form_action_ratio ,
+        event_order_paid_cost ,
+        event_next_day_stay ,
+        form_cost ,
+        form_count ,
+        play_3s_ratio ,
+        stat_hour ,
+        click_1k_cost ,
+        event_valid_clues ,
+        event_valid_clues_cost,
+        ad_product_cnt ,
+        event_goods_view ,
+        merchant_reco_fans ,
+        event_order_amount_roi ,
+        event_new_user_pay ,
+        event_new_user_pay_cost ,
+        event_new_user_pay_ratio ,
+        event_button_click ,
+        event_button_click_cost ,
+        event_button_click_ratio ,
+        play_5s_ratio ,
+        play_end_ratio ,
+        event_order_paid_roi,
+        event_new_user_jinjian_app ,
+        event_new_user_jinjian_app_cost,
+        event_new_user_jinjian_app_roi ,
+        event_new_user_credit_grant_app ,
+        event_new_user_credit_grant_app_cost,
+        event_new_user_credit_grant_app_roi ,
+        event_new_user_jinjian_page ,
+        event_new_user_jinjian_page_cost ,
+        event_new_user_jinjian_page_roi ,
+        event_new_user_credit_grant_page ,
+        event_new_user_credit_grant_page_cost ,
+        event_new_user_credit_grant_page_roi ,
+        event_appoint_form ,
+        event_appoint_form_cost,
+        event_appoint_form_ratio,
+        event_appoint_jump_click ,
+        event_appoint_jump_click_cost,
+        event_appoint_jump_click_ratio,
+        union_event_pay_purchase_amount_7d ,
+        province ,
+        event_app_invoked ,
+        union_event_pay_purchase_amount_7d_roi,
+        event_add_shopping_cart_cost ,
+        gender ,
+        city ,
+        event_ad_watch_times_ratio ,
+        shares ,
+        business_interest_tags ,
+        event_watch_app_ad ,
+        event_multi_conversion_cost,
+        merchant_reco_fans_cost ,
+        ad_scene ,
+        event_ad_watch_times_cost ,
+        event_add_shopping_cart ,
+        age_segment ,
+        photo_like ,
+        event_add_wechat ,
+        event_add_wechat_cost,
+        event_add_wechat_ratio,
+        event_app_invoked_cost ,
+        event_multi_conversion ,
+        event_dsp_gift_form ,
+        event_app_invoked_ratio ,
+        photo_show ,
+        event_multi_conversion_ratio,
+        client ,
+        event_goods_view_cost ,
+        event_credit_grant_app_ratio,
+        event_ad_watch_times ,
+        comments,
+        signature,
+        project_id
+        )
+        values
+        <foreach collection="data" item="da" separator=",">
+            (
+            #{da.accountId},
+            #{da.planId},
+            #{da.unitId},
+            #{da.placementType},
+            #{da.statDate},
+            #{da.aclick},
+            #{da.bclick},
+            #{da.photoClickCost},
+            #{da.follow},
+            #{da.cancelFollow},
+            #{da.report},
+            #{da.block},
+            #{da.negative},
+            #{da.downloadStarted},
+            #{da.downloadCompleted},
+            #{da.activation},
+            #{da.submit},
+            #{da.photoClick},
+            #{da.photoClickRatio},
+            #{da.charge},
+            #{da.actionRatio},
+            #{da.impression_1kCost},
+            #{da.actionCost},
+            #{da.eventPayFirstDay},
+            #{da.eventPayPurchaseAmountFirstDay},
+            #{da.eventPayFirstDayRoi},
+            #{da.eventPay},
+            #{da.eventPayPurchaseAmount},
+            #{da.eventPayRoi},
+            #{da.eventRegister},
+            #{da.eventRegisterCost},
+            #{da.eventRegisterRatio},
+            #{da.eventJinJianApp},
+            #{da.eventJinJianAppCost},
+            #{da.eventCreditGrantApp},
+            #{da.eventCreditGrantAppCost},
+            #{da.eventOrderPaid},
+            #{da.eventOrderPaidPurchaseAmount},
+            #{da.eventJinJianLandingPage},
+            #{da.eventJinJianLandingPageCost},
+            #{da.eventCreditGrantLandingPage},
+            #{da.eventCreditGrantLandingPageCost},
+            #{da.eventCreditGrantLandingRatio},
+            #{da.eventNextDayStayCost},
+            #{da.eventNextDayStayRatio},
+            #{da.formActionRatio},
+            #{da.eventOrderPaidCost},
+            #{da.eventNextDayStay},
+            #{da.formCost},
+            #{da.formCount},
+            #{da.play_3sRatio},
+            #{da.statHour},
+            #{da.click_1kCost},
+            #{da.eventValidClues},
+            #{da.eventValidCluesCost},
+            #{da.adProductCnt},
+            #{da.eventGoodsView},
+            #{da.merchantRecoFans},
+            #{da.eventOrderAmountRoi},
+            #{da.eventNewUserPay},
+            #{da.eventNewUserPayCost},
+            #{da.eventNewUserPayRatio},
+            #{da.eventButtonClick},
+            #{da.eventButtonClickCost},
+            #{da.eventButtonClickRatio},
+            #{da.play_5sRatio},
+            #{da.playEndRatio},
+            #{da.eventOrderPaidRoi},
+            #{da.eventNewUserJinjianApp},
+            #{da.eventNewUserJinjianAppCost},
+            #{da.eventNewUserJinjianAppRoi},
+            #{da.eventNewUserCreditGrantApp},
+            #{da.eventNewUserCreditGrantAppCost},
+            #{da.eventNewUserCreditGrantAppRoi},
+            #{da.eventNewUserJinjianPage},
+            #{da.eventNewUserJinjianPageCost},
+            #{da.eventNewUserJinjianPageRoi},
+            #{da.eventNewUserCreditGrantPage},
+            #{da.eventNewUserCreditGrantPageCost},
+            #{da.eventNewUserCreditGrantPageRoi},
+            #{da.eventAppointForm},
+            #{da.eventAppointFormCost},
+            #{da.eventAppointFormRatio},
+            #{da.eventAppointJumpClick},
+            #{da.eventAppointJumpClickCost},
+            #{da.eventAppointJumpClickRatio},
+            #{da.unionEventPayPurchaseAmount_7d},
+            #{da.province},
+            #{da.eventAppInvoked},
+            #{da.unionEventPayPurchaseAmount_7dRoi},
+            #{da.eventAddShoppingCartCost},
+            #{da.gender},
+            #{da.city},
+            #{da.eventAdWatchTimesRatio},
+            #{da.shares},
+            #{da.businessInterestTags},
+            #{da.eventWatchAppAd},
+            #{da.eventMultiConversionCost},
+            #{da.merchantRecoFansCost},
+            #{da.adScene},
+            #{da.eventAdWatchTimesCost},
+            #{da.eventAddShoppingCart},
+            #{da.ageSegment},
+            #{da.photoLike},
+            #{da.eventAddWechat},
+            #{da.eventAddWechatCost},
+            #{da.eventAddWechatRatio},
+            #{da.eventAppInvokedCost},
+            #{da.eventMultiConversion},
+            #{da.eventDspGiftForm},
+            #{da.eventAppInvokedRatio},
+            #{da.photoShow},
+            #{da.eventMultiConversionRatio},
+            #{da.client},
+            #{da.eventGoodsViewCost},
+            #{da.eventCreditGrantAppRatio},
+            #{da.eventAdWatchTimes},
+            #{da.comments},
+            #{da.signature},
+            #{da.projectId}
+            )
+        </foreach>
+    </insert>
+
 </mapper>

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

@@ -2,6 +2,7 @@ package cn.com.ctop.kuaishou.modules.report.service;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.common.api.vo.Result;
 
@@ -22,4 +23,7 @@ public interface IKuaishouAudienceReportDailyService extends IService<KuaishouAu
      */
     void crowdAnalysisReport(CtopOauthToken token, String date, String type, Long plan, Long unit, Integer page, Integer pageSize);
 
+    void crowdAnalysisReport2(CtopOauthToken token, String date, String type, Long plan, Long unit, Integer page, Integer pageSize);
+
+    void crowdAnalysisReport3(CtopOauthToken token, String date, String type, Long plan, JSONArray unit, Integer page, Integer pageSize);
 }

+ 202 - 8
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouAudienceReportDailyServiceImpl.java

@@ -1,11 +1,13 @@
 package cn.com.ctop.kuaishou.modules.report.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.mapper.UserAllocationMapper;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.HttpUtils;
 import cn.com.ctop.common.module.utils.KuaishouInterfaceConstant;
 import cn.com.ctop.common.module.utils.PropertiesUtils;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouCreativeLevelOperationRecordMapper;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDaily;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAccount;
 import cn.com.ctop.kuaishou.modules.report.entity.KuaishouAudienceReportDailyAge;
@@ -37,6 +39,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -53,19 +56,19 @@ import java.util.Map;
 @Service
 public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<KuaishouAudienceReportDailyMapper, KuaishouAudienceReportDaily> implements IKuaishouAudienceReportDailyService {
 
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyMapper kuaishouAudienceReportDailyMapper;
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyProvinceMapper provinceMapper;
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyAgeMapper ageMapper;
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyCityMapper cityMapper;
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyClientMapper clientMapper;
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyBusinessMapper bussinessMapper;
-    @Autowired
+    @Resource
     private KuaishouAudienceReportDailyGenderMapper genderMapper;
     @Autowired
     private IKuaishouAudienceReportDailyAccountService dailyAccountService;
@@ -89,7 +92,7 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
      * 人群分析报表入库
      *
      * @param type      province: 省级地域分布, city: 地级地域分布,gender: 性别分布,ageSegment: 年龄分布clientId: 系统分布 businessInterestTags: 商业兴趣分布
-     * @param accountId 广告主ID
+     * @param
      * @return
      */
     @Override
@@ -211,5 +214,196 @@ public class KuaishouAudienceReportDailyServiceImpl extends ServiceImpl<Kuaishou
             log.error("插入人群分析报表数据异常,数据维度:{}", type, e);
         }
     }
+    @Resource
+    cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouCreativeLevelOperationRecordMapper creativeLevelOperationRecordMapper;
+
+    @Resource
+    UserAllocationMapper userAllocationMapper;
+
+    @Override
+    public void crowdAnalysisReport2(CtopOauthToken token, String date, String type, Long plan, Long unit, Integer page, Integer pageSize) {
+        long start = System.currentTimeMillis();
+        try {
+            String url = urlPath + KuaishouInterfaceConstant.AUDIENCE_REPORT;
+            JSONArray reportDims = new JSONArray();
+            reportDims.add(type);
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Access-Token", token.getAccessToken());
+            headers.put("Content-Type", "application/json");
+            JSONObject requestJson = new JSONObject();
+            requestJson.put("advertiser_id", token.getAccountId());
+            requestJson.put("start_date", date);
+            requestJson.put("end_date", date);
+            requestJson.put("report_dims", reportDims);
+            requestJson.put("page", page);
+            requestJson.put("page_size", pageSize);
+            if (!Check.isNull(plan)) {
+                JSONArray plans = new JSONArray();
+                plans.add(plan);
+                requestJson.put("campaign_ids", plans);
+            }
+            if (!Check.isNull(unit)) {
+                JSONArray units = new JSONArray();
+                units.add(unit);
+                requestJson.put("unit_ids", units);
+            }
+            String result = HttpUtils.kuaiShouhttpPostRequest(url, requestJson.toJSONString(), headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    JSONObject datas = resultJson.getJSONObject("data");
+                    Integer totalCount = datas.getInteger("total_count");
+                    JSONArray details = datas.getJSONArray("details");
+                    if (!Check.isNull(details)) {
+                        //账户级数据
+                        if (Check.isNull(plan) && Check.isNull(unit)) {
+                            List<KuaishouAudienceReportDailyAccount> list = new ArrayList<>();
+                            for (int i = 0; i < details.size(); i++) {
+                                JSONObject obj = details.getJSONObject(i);
+                                KuaishouAudienceReportDailyAccount entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDailyAccount.class);
+                                entity.setPhotoLike(obj.getLong("like"));
+                                entity.setComments(obj.getLong("comment"));
+                                entity.setPhotoShow(obj.getLong("show"));
+                                entity.setShares(obj.getString("share"));
+                                entity.setAccountId(Long.valueOf(token.getAccountId()));
+                                entity.setAudienceType(type);
+                                list.add(entity);
+                            }
+                            dailyAccountService.saveBatch(list);
+                        } else {
+                            List<KuaishouAudienceReportDailyProvince> provinceList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyCity> cityList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyGender> genderList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyAge> ageList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyClient> clientList = new ArrayList<>();
+                            List<KuaishouAudienceReportDailyBusiness> businessList = new ArrayList<>();
+                            //组级
+                            for (int i = 0; i < details.size(); i++) {
+                                JSONObject obj = details.getJSONObject(i);
+                                KuaishouAudienceReportDaily entity = JSONObject.toJavaObject(obj, KuaishouAudienceReportDaily.class);
+                                entity.setPhotoLike(obj.getLong("like"));
+                                entity.setComments(obj.getLong("comment"));
+                                entity.setPhotoShow(obj.getLong("show"));
+                                entity.setShares(obj.getString("share"));
+                                entity.setAccountId(Long.valueOf(token.getAccountId()));
+                                entity.setPlanId(plan);
+                                entity.setUnitId(unit);
+
+                                String signature = creativeLevelOperationRecordMapper.selectSignatureByUnitId(unit);
+                                if(!Check.isNull(signature)){
+                                    entity.setSignature(signature);
+                                }
+
+                                Long projectId = userAllocationMapper.getProjectIdByAccountId(token.getAccountId());
+                                if(!Check.isNull(projectId)){
+                                    entity.setProjectId(projectId);
+                                }
+
+                                if ("province".equals(type)) {
+                                    KuaishouAudienceReportDailyProvince provinceEntity = new KuaishouAudienceReportDailyProvince();
+                                    BeanUtils.copyProperties(entity, provinceEntity);
+                                    provinceList.add(provinceEntity);
+                                } else if ("city".equals(type)) {
+                                    KuaishouAudienceReportDailyCity cityEntity = new KuaishouAudienceReportDailyCity();
+                                    BeanUtils.copyProperties(entity, cityEntity);
+                                    cityList.add(cityEntity);
+                                } else if ("gender".equals(type)) {
+                                    KuaishouAudienceReportDailyGender genderEntity = new KuaishouAudienceReportDailyGender();
+                                    BeanUtils.copyProperties(entity, genderEntity);
+                                    genderList.add(genderEntity);
+                                } else if ("ageSegment".equals(type)) {
+                                    KuaishouAudienceReportDailyAge ageEntity = new KuaishouAudienceReportDailyAge();
+                                    BeanUtils.copyProperties(entity, ageEntity);
+                                    ageList.add(ageEntity);
+                                } else if ("clientId".equals(type)) {
+                                    KuaishouAudienceReportDailyClient clientEntity = new KuaishouAudienceReportDailyClient();
+                                    BeanUtils.copyProperties(entity, clientEntity);
+                                    clientList.add(clientEntity);
+                                } else if ("businessInterestTags".equals(type)) {
+                                    KuaishouAudienceReportDailyBusiness bussinessEntity = new KuaishouAudienceReportDailyBusiness();
+                                    BeanUtils.copyProperties(entity, bussinessEntity);
+                                    businessList.add(bussinessEntity);
+                                }
+                            }
+                            if ("province".equals(type)) {
+                                provinceMapper.replaceBatchNew(provinceList);
+                            } else if ("city".equals(type)) {
+                                cityMapper.replaceBatchNew(cityList);
+                            } else if ("gender".equals(type)) {
+                                genderMapper.replaceBatchNew(genderList);
+                            } else if ("ageSegment".equals(type)) {
+                                ageMapper.replaceBatchNew(ageList);
+                            } else if ("clientId".equals(type)) {
+                                clientMapper.replaceBatchNew(clientList);
+                            } else if ("businessInterestTags".equals(type)) {
+                                bussinessMapper.replaceBatchNew(businessList);
+                            }
+                        }
+                        Integer totalPage = (totalCount - 1) / pageSize + 1;
+                        if (page < totalPage) {
+                            crowdAnalysisReport2(token,date, type, plan, unit, page + 1, pageSize);
+                        }
+                    } else {
+                        if(totalCount != 0){
+                            log.error("-----------未查询到人群分析报表数据:unitId:{},日期:{}, 总量:{}", unit, date,totalCount);
+                        }
+                    }
+                } else {
+                    if(code == 500000 || code == 400001){
+                        System.out.print("》》5秒后重试,accountId:"+unit+",日期:"+date+"《《 "+resultJson);
+                        try{Thread.sleep(5000);} catch (InterruptedException e){};
+                        crowdAnalysisReport2(token,date, type, plan, unit, page, pageSize);
+                    }else {
+                        log.error("查询人群分析报表数据返回信息错误:unit:{},日期{},返回信息:{}", unit,date, resultJson);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("插入人群分析报表数据异常,数据维度:{}", type, e);
+        }
+    }
+
+
+    @Override
+    public void crowdAnalysisReport3(CtopOauthToken token, String date, String type, Long plan, JSONArray unit, Integer page, Integer pageSize) {
+        long start = System.currentTimeMillis();
+        try {
+            String url = urlPath + KuaishouInterfaceConstant.AUDIENCE_REPORT;
+            JSONArray reportDims = new JSONArray();
+            reportDims.add(type);
+            Map<String, String> headers = new HashMap<>();
+            headers.put("Access-Token", token.getAccessToken());
+            headers.put("Content-Type", "application/json");
+            JSONObject requestJson = new JSONObject();
+            requestJson.put("advertiser_id", token.getAccountId());
+            requestJson.put("start_date", date);
+            requestJson.put("end_date", date);
+            requestJson.put("report_dims", reportDims);
+            requestJson.put("page", page);
+            requestJson.put("page_size", pageSize);
+            if (!Check.isNull(plan)) {
+                JSONArray plans = new JSONArray();
+                plans.add(plan);
+                requestJson.put("campaign_ids", plans);
+            }
+            if (!Check.isNull(unit)) {
+                requestJson.put("unit_ids", unit);
+            }
+            String result = HttpUtils.kuaiShouhttpPostRequest(url, requestJson.toJSONString(), headers);
+            JSONObject resultJson = JSONObject.parseObject(result);
+            if (!Check.isNull(resultJson)) {
+                Integer code = resultJson.getInteger("code");
+                if (code == 0) {
+                    JSONObject datas = resultJson.getJSONObject("data");
+                    Integer totalCount = datas.getInteger("total_count");
+                    JSONArray details = datas.getJSONArray("details");
+                    System.out.println("datas"+datas.toJSONString());
+                }
+            }
+        } catch (Exception e) {
+            log.error("插入人群分析报表数据异常,数据维度:{}", type, e);
+        }
+    }
 }