Forráskód Böngészése

Merge branch 'master' into test

zhaoxian 4 éve
szülő
commit
59b2534c59
71 módosított fájl, 883 hozzáadás és 262 törlés
  1. 23 0
      jeecg-boot-base-common/src/main/java/org/jeecg/common/util/JsonResourceUtil.java
  2. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/controller/AiKuaiShouReportAnalyzeCtrl.java
  3. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/controller/AiKuaiShouStrategyListPageCtrl.java
  4. 1 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/controller/KuaishouStrategyController.java
  5. 0 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/Test.java
  6. 0 95
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/TestImpl.java
  7. 24 0
      jeecg-boot-module-system/src/main/resources/ads/timing-task.json
  8. 2 2
      jeecg-boot-module-system/src/main/resources/application-dev.yml
  9. 4 4
      jeecg-boot-module-system/src/main/resources/application-wps.yml
  10. 2 2
      jeecg-boot-module-system/src/main/resources/jeecg/jeecg_database.properties
  11. 41 20
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  12. 27 19
      module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java
  13. 1 1
      module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml
  14. 0 5
      module-job-bytedance/pom.xml
  15. 4 0
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDancePlanRuleDataJob.java
  16. 0 6
      module-job-kuaishou/pom.xml
  17. 25 0
      module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouAiAdsNewMaterialCreativityJob.java
  18. 75 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/AiKuaishouAccountTargetTemplate.java
  19. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyMapCreative.java
  20. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyMiddle.java
  21. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTargetBase.java
  22. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTargetDetails.java
  23. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTargetUnion.java
  24. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTemplate.java
  25. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaiShouStrategyListPageMapper.java
  26. 14 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouAccountTargetTemplateMapper.java
  27. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyMapCreativeMapper.java
  28. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyMiddleMapper.java
  29. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTargetBaseMapper.java
  30. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTargetDetailsMapper.java
  31. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTargetUnionMapper.java
  32. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTemplateMapper.java
  33. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/IAiKuaiShouReportAnalyzeMapper.java
  34. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTemplateMapper.xml
  35. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouReportAnalyzeMapper.xml
  36. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyListPageMapper.xml
  37. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyMapCreativeMapper.xml
  38. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTargetDetailsMapper.xml
  39. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTargetBaseMapper.xml
  40. 5 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouStrategyTargetDetailsMapper.xml
  41. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTargetUnionMapper.xml
  42. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyMiddleMapper.xml
  43. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaiShouReportAnalyzeService.java
  44. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaiShouStrategyListPageService.java
  45. 18 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IAiKuaishouAccountTargetTemplateService.java
  46. 7 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IAiKuaishouNewCreateCampaign.java
  47. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyMapCreativeService.java
  48. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyMiddleService.java
  49. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyService.java
  50. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTargetBaseService.java
  51. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTargetDetailsService.java
  52. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTargetUnionService.java
  53. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTemplateService.java
  54. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiStrategyService.java
  55. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaiShouReportAnalyzeServiceImpl.java
  56. 3 3
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaiShouStrategyListPageServiceImpl.java
  57. 27 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaishouAccountTargetTemplateServiceImpl.java
  58. 299 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaishouNewCreateCampaignServiceImpl.java
  59. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyMapCreativeServiceImpl.java
  60. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyMiddleServiceImpl.java
  61. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTargetBaseServiceImpl.java
  62. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTargetDetailsServiceImpl.java
  63. 4 4
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTargetUnionServiceImpl.java
  64. 4 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTemplateServiceImpl.java
  65. 13 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiStrategyServiceImpl.java
  66. 2 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaiShouVideoGetService.java
  67. 46 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/IKuaishouInterfaceService.java
  68. 4 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouReportDailyMaterialServiceImpl.java
  69. 14 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaiShouVideoGetServiceImpl.java
  70. 111 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/batch/service/impl/KuaishouInterfaceServiceImpl.java
  71. 1 1
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java

+ 23 - 0
jeecg-boot-base-common/src/main/java/org/jeecg/common/util/JsonResourceUtil.java

@@ -49,6 +49,29 @@ public class JsonResourceUtil {
         return json;
     }
 
+    //json文件转化为JSONArray
+    public static JSONArray getJsonArrFromResource(String filename) {
+        JSONArray json = null;
+        if (!filename.contains(".json")) {
+            filename += ".json";
+        }
+        try {
+            ClassPathResource classPathResource = new ClassPathResource(filename);
+            if (classPathResource.exists()) {
+                InputStream inputStream = classPathResource.getInputStream();
+                String content = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+                json = JSON.parseArray(content);
+            } else {
+                logger.info("file not exist!");
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            logger.info("readFileToString" + e.getMessage());
+        }
+        return json;
+    }
+
     public static Map<String, Map<String, Object>> jsonToMap(Object jsonObj) {
         JSONObject jsonObject = JSONObject.parseObject(jsonObj.toString());
         Map<String, Map<String, Object>> mapMap = new HashMap<>();

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/controller/AiKuaiShouReportAnalyzeCtrl.java

@@ -1,9 +1,9 @@
 package org.jeecg.modules.ads.controller;
 
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaiShouReportAnalyzeService;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.ads.service.IAiKuaiShouReportAnalyzeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/controller/AiKuaiShouStrategyListPageCtrl.java

@@ -1,9 +1,9 @@
 package org.jeecg.modules.ads.controller;
 
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaiShouStrategyListPageService;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.ads.service.IAiKuaiShouStrategyListPageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;

+ 1 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/controller/KuaishouStrategyController.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.ads.controller;
 
 import cn.com.ctop.common.module.annotation.AutoLog;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiStrategyService;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouStrategy;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouStrategyService;
 import com.alibaba.fastjson.JSON;
@@ -14,13 +15,10 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.shiro.SecurityUtils;
-import org.checkerframework.checker.units.qual.A;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyService;
-import org.jeecg.modules.ads.service.IAiStrategyService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;

+ 0 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/Test.java

@@ -1,5 +0,0 @@
-package org.jeecg.modules.ads.service;
-
-public interface Test {
-    int f();
-}

+ 0 - 95
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/TestImpl.java

@@ -1,95 +0,0 @@
-package org.jeecg.modules.ads.service.impl;
-
-import cn.com.ctop.kuaishou.modules.batch.mapper.KuaiShouReportDailyMaterialMapper;
-import cn.com.ctop.kuaishou.modules.report.entity.KuaiShouReportDailyMaterial;
-import cn.hutool.json.JSON;
-import com.alibaba.fastjson.JSONObject;
-import io.swagger.models.auth.In;
-//import jdk.nashorn.internal.parser.JSONParser;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTemplate;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyTemplateMapper;
-import org.jeecg.modules.ads.service.Test;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-public class TestImpl implements Test {
-
-    private KuaiShouReportDailyMaterialMapper dailyMaterialMapper;
-    private AiKuaishouStrategyTemplateMapper strategyTemplateMapper;
-    @Override
-    public int f() {
-        return 123;
-    }
-
-    private static int printInt(int a){
-        System.out.println(a);
-        return a;
-    }
-
-    public static String getStrategy(){
-        /**
-         *
-         * [{
-         *     "matGetType":"highQualityMaterial",
-         *     "matNum":5
-         * },
-         *    {
-         *     "matGetType":"highQualityMaterial",
-         *     "matNum":5
-         *     "intervalDays": 7,
-         * }]
-         */
-
-       /* String materialCombinationMode = "{'highQualityMaterial':{'intervalDays':7, 'highQualityMaterialNum':5}, 'newMaterialNum':5}";
-        JSONObject jsonObject = JSONObject.parseObject(materialCombinationMode);
-
-        int intervalDays = (int) jsonObject.getJSONObject("highQualityMaterial").get("intervalDays");
-        int highQualityMaterialNum = (int) jsonObject.getJSONObject("highQualityMaterial").get("highQualityMaterialNum");
-        int newQualityMaterialNum = (int) jsonObject.get("newMaterialNum");*/
-
-        return "213";
-
-
-    }
-
-    public List<String> getMaterialId(){
-        // 获取素材组合方式
-        // 下面这三个字段从前端传给的JSON数据进行解析得到
-//        Long accountId = 7087890L;
-//        Integer strategyType = 1;
-//        List<AiKuaishouStrategyTemplate> StrategyTemplate =
-//                strategyTemplateMapper.getStrategyTemplate(accountId,strategyType);
-//
-//        String materialCombinationMode = StrategyTemplate.get(0).getMaterialCombinationMode();
-//        JSONObject JsonObject = JSONObject.parseObject(materialCombinationMode);
-//        Integer intervalDays = (Integer) JsonObject.getJSONObject("highQualityMaterial").get("intervalDays");
-//        Integer highQualityMaterialNum = (Integer) JsonObject.getJSONObject("highQualityMaterial").get("highQualityMaterialNum");
-//        Integer newQualityMaterialNum = (Integer) JsonObject.get("newMaterialNum");
-//
-//        // 获取优质素材的签名
-//        List<String> materialIds = new ArrayList<>();
-//        List<KuaiShouReportDailyMaterial> highQualityMaterialIds =
-//                        dailyMaterialMapper.getHighQualityMaterialId(accountId,intervalDays,highQualityMaterialNum);
-//        for (KuaiShouReportDailyMaterial item: highQualityMaterialIds){
-//            materialIds.add(item.getSignature());
-//        }
-
-        // 获取最新上线素材的签名
-
-
-
-//        return materialIds;
-
-        return null;
-    }
-
-    public static void main(String[] args) {
-        int getNum = 123;
-        int num = printInt(getNum);
-        System.out.println(num++);
-    }
-
-}

+ 24 - 0
jeecg-boot-module-system/src/main/resources/ads/timing-task.json

@@ -0,0 +1,24 @@
+[
+  {
+    "accountId": "9556344",
+    "marketing_goal": "2",
+    "app_store": "[\"huawei\",\"oppo\",\"vivo\",\"xiaomi\",\"meizu\",\"smartisan\"]",
+    "use_app_market":"1",
+    "app_ids": "[2817201]",
+    "region": "[]",
+    "ages_range": "[18, 24, 31, 41, 50]",
+    "gender": 0,
+    "platform_os": 0,
+    "custom_crowd":"2",
+    "population": "[]",
+    "exclude_population": "[11950861, 11814320]",
+    "bid_type": 10,
+    "ocpx_action_type":180,
+    "cpa_bid": 26500,
+    "scene_id": "[6, 7]",
+    "site_id": "[{\"appId\":2817201,\"siteId\":\"\"}]",
+    "impression_url": "https://adtracker.surge.alibaba.com/monitor.htm?channel=3&taskId=4&app=7&action=1&adid=__DID__&adName=__DNAME__&cid=__CID__&imeiMd5=__IMEI2__&idfaMd5=__IDFA2__&oaid=__OAID__&callbackUrl=__CALLBACK__&groupId=__AID__&csite=__CSITE__&androidIdMd5=__ANDROIDID2__&timestamp=__TS__&mac1Md5=__MAC2__&macMd5=__MAC3__&ip=__IP__&translationTag=1&serviceProviderName=Huichuang.wz",
+    "click_track_url": "https://adtracker.surge.alibaba.com/monitor.htm?channel=3&taskId=4&app=7&action=1&adid=__DID__&adName=__DNAME__&cid=__CID__&imeiMd5=__IMEI2__&idfaMd5=__IDFA2__&oaid=__OAID__&callbackUrl=__CALLBACK__&groupId=__AID__&csite=__CSITE__&androidIdMd5=__ANDROIDID2__&timestamp=__TS__&mac1Md5=__MAC2__&macMd5=__MAC3__&ip=__IP__&translationTag=1&serviceProviderName=Huichuang.wz",
+    "actionbar_click_url": "https://adtracker.surge.alibaba.com/monitor.htm?channel=3&taskId=4&app=7&action=2&adid=__DID__&adName=__DNAME__&cid=__CID__&imeiMd5=__IMEI2__&idfaMd5=__IDFA2__&oaid=__OAID__&callbackUrl=__CALLBACK__&groupId=__AID__&csite=__CSITE__&androidIdMd5=__ANDROIDID2__&timestamp=__TS__&mac1Md5=__MAC2__&macMd5=__MAC3__&ip=__IP__&translationTag=1&serviceProviderName=NewHuichuang.wz"
+  }
+]

+ 2 - 2
jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -136,8 +136,8 @@ spring:
       datasource:
         master:
           url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&allowMultiQueries=true
-          username: hcst
-          password: hcst@2020
+          username: data
+          password: hcst@2021
           driver-class-name: com.mysql.jdbc.Driver
           # 多数据源配置
           #multi-datasource1:

+ 4 - 4
jeecg-boot-module-system/src/main/resources/application-wps.yml

@@ -57,8 +57,8 @@ spring:
     exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
   datasource:
     url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-    username: hcst
-    password: hcst@2020
+    username: data
+    password: hcst@2021
     driver-class-name: com.mysql.jdbc.Driver
     druid:
       stat-view-servlet:
@@ -97,8 +97,8 @@ spring:
       datasource:
         master:
           url: jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-          username: hcst
-          password: hcst@2020
+          username: data
+          password: hcst@2021
           driver-class-name: com.mysql.jdbc.Driver
   #redis 配置
   redis:

+ 2 - 2
jeecg-boot-module-system/src/main/resources/jeecg/jeecg_database.properties

@@ -1,8 +1,8 @@
 #mysql
 diver_name=com.mysql.jdbc.Driver
 url=jdbc:mysql://139.186.27.96:4000/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false
-username=hcst
-password=hcst@2020
+username=data
+password=hcst@2021
 database_name=jeecg-boot
 #oracle
 #diver_name=oracle.jdbc.driver.OracleDriver

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

@@ -7,6 +7,7 @@ import cn.com.ctop.common.module.service.IBindAccountLoginService;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.IUserAllocationService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouNewCreateCampaign;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouCommentService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouDailyReportTaskService;
 import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouHistoryReportTaskService;
@@ -364,27 +365,49 @@ public class SampleTest {
             videoReportDailyService.videoInfoList(date, date);
         }
     }
-    @Autowired
-    private org.jeecg.modules.ads.service.Test test;
-
-    @Test
-    public void test(){
-        test.f();
-    }
 
     @Autowired
     private IRuleKuaiShouPlanService ruleKuaiShouPlanService;
 
     @Test
     public void execute() {
-        CtopOauthToken token = tokenService.getTokenByAccountId(9589905L);
-        ruleKuaiShouPlanService.cleanRuleDataTarget(token.getAccountId(), 1);
+        String accountIds = "1675239584963662,1676540490482759,1675237415468045";
+        String[] arrays = accountIds.split(",");
+        for(int i=0;i<arrays.length;i++){
+            Long accountId = Long.parseLong(arrays[i]);
+            CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
+            load12Data(token);
+            load12AccountData(token);
+        }
+    }
+
+    @Test
+    public void loadBytedanceData(){
+        String accountIds = "1676540490482759";
+        String[] arrays = accountIds.split(",");
+        for(int i=0;i<arrays.length;i++){
+            Long accountId = Long.parseLong(arrays[i]);
+            CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
+            load12Data(token);
+        }
+    }
+
+    private void load12AccountData(CtopOauthToken token){
+        reportService.getAdvertiserReport(token, DateUtils.parseDate("2020-12-01","yyyy-MM-dd"), DateUtils.parseDate("2020-12-11","yyyy-MM-dd"),CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+        reportService.getAdvertiserReport(token, DateUtils.parseDate("2020-12-11","yyyy-MM-dd"), DateUtils.parseDate("2020-12-21","yyyy-MM-dd"),CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+        reportService.getAdvertiserReport(token, DateUtils.parseDate("2020-12-21","yyyy-MM-dd"), DateUtils.parseDate("2020-12-31","yyyy-MM-dd"),CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
+    }
+
+    private void load12Data(CtopOauthToken token){
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-12-01", "2020-12-11");
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-12-11", "2020-12-21");
+        bytedanceReportService.bytedanceMaterialReport(token, "2020-12-21", "2020-12-31");
     }
     @Autowired
     private IKuaishouVideoEtlInfoService kuaishouVideoEtlInfoService;
     @Test
     public void etlKuaishouData(){
-        String dateString = "2020-12-25";
+        String dateString = "2020-12-31";
         Date startDate = DateUtils.parseDate(dateString,"yyyy-MM-dd");
         for(int i=0;i<=10;i++){
             Date getDate = DateUtils.addDay(startDate,i);
@@ -395,16 +418,6 @@ public class SampleTest {
 
     @Autowired
     private IBytedanceVideoEtlInfoService bytedanceVideoEtlInfoService;
-    @Test
-    public void etlBytedanceData(){
-        String dateString = "2020-12-23";
-        Date startDate = DateUtils.parseDate(dateString,"yyyy-MM-dd");
-        for(int i=0;i<=10;i++){
-            Date getDate = DateUtils.addDay(startDate,i);
-            bytedanceVideoEtlInfoService.etlBytedanceVideoInfo(getDate);
-            kuaishouVideoEtlInfoService.etlKuaishouVideoInfo(getDate);
-        }
-    }
 
     @Test
     public void loadBytedanceVideo(){
@@ -438,4 +451,12 @@ public class SampleTest {
         }
     }
 
+    @Autowired
+    IAiKuaishouNewCreateCampaign aiKuaishouNewCreateCampaign;
+
+    @Test
+    public void kuaishouAiTest(){
+        aiKuaishouNewCreateCampaign.kuaishouAiAdsNewMaterialCreativity();
+    }
+
 }

+ 27 - 19
module-alarm/src/main/java/cn/com/ctop/alarm/modules/service/impl/RuleGroupServiceImpl.java

@@ -592,8 +592,6 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                 }
                 if (ACCOUNT.equals(type)) {
                     msg += "请您及时查看并调整!";
-                } else {
-                    msg += "现已被关停,请您及时查看并调整!";
                 }
             } else {
                 msg += "请您及时查看并调整!";
@@ -664,26 +662,34 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
     private String kuaiShoushutDown(Long accountId, String ids, String type, String userId, String msg) {
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
         Map<String, Object> updateMap = new HashMap<>();
-        if (!Check.isNull(token) && !Check.isNull(ids)) {
-            String[] idSplit = ids.split(",");
-            for (String id : idSplit) {
-                if (CREATIVE.equals(type)) {
-                    updateMap = kuaiShouUpdateService.updateCreativeStatus(token.getAccessToken(), accountId, Long.valueOf(id), NoEn.NO2.valueInt(), userId);
-                    if (!(boolean) updateMap.get("success")) {
-                        msg = msg.replace(id, id + "(F)");
-                    }
-                } else if (UNIT.equals(type)) {
-                    updateMap = kuaiShouUpdateService.updateUnitStatus(token.getAccessToken(), accountId, Long.valueOf(id), NoEn.NO2.valueInt(), userId);
-                    if (!(boolean) updateMap.get("success")) {
-                        msg = msg.replace(id, id + "(F)");
-                    }
-                } else if (PLAN.equals(type)) {
-                    updateMap = kuaiShouUpdateService.updateCampaignStatus(token.getAccessToken(), accountId, Long.valueOf(id), NoEn.NO2.valueInt(), userId);
-                    if (!(boolean) updateMap.get("success")) {
-                        msg = msg.replace(id, id + "(F)");
+        try {
+            if (!Check.isNull(token) && !Check.isNull(ids)) {
+                String[] idSplit = ids.split(",");
+                for (String id : idSplit) {
+                    if (CREATIVE.equals(type)) {
+                        updateMap = kuaiShouUpdateService.updateCreativeStatus(token.getAccessToken(), accountId, Long.valueOf(id), NoEn.NO2.valueInt(), userId);
+                        if (!(boolean) updateMap.get("success")) {
+                            msg = msg.replace(id, id + "(F)");
+                        }
+                    } else if (UNIT.equals(type)) {
+                        updateMap = kuaiShouUpdateService.updateUnitStatus(token.getAccessToken(), accountId, Long.valueOf(id), NoEn.NO2.valueInt(), userId);
+                        if (!(boolean) updateMap.get("success")) {
+                            msg = msg.replace(id, id + "(F)");
+                        }
+                    } else if (PLAN.equals(type)) {
+                        updateMap = kuaiShouUpdateService.updateCampaignStatus(token.getAccessToken(), accountId, Long.valueOf(id), NoEn.NO2.valueInt(), userId);
+                        if (!(boolean) updateMap.get("success")) {
+                            msg = msg.replace(id, id + "(F)");
+                        }
                     }
                 }
+                msg += "现已被关停,请您及时查看并调整!";
+            } else {
+                msg = msg + "(F)获取签证失败!请联系管理员!";
             }
+        } catch (NumberFormatException e) {
+            log.error("快手关停操作异常", e);
+            msg = msg + "(F)操作关停失败!请联系管理员!";
         }
         return msg;
     }
@@ -721,9 +727,11 @@ public class RuleGroupServiceImpl extends ServiceImpl<RuleGroupMapper, RuleGroup
                             }
                         }
                     }
+                    msg += "现已被关停,请您及时查看并调整!";
                 }
             }
         } catch (Exception e) {
+            msg = msg + "(F)操作关停失败!请联系管理员!";
             log.error("头条账户:{},关停{}失败", accountId, type, e);
         }
         return msg;

+ 1 - 1
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/SysUserMapper.xml

@@ -257,7 +257,7 @@ SELECT
     <select id="selectAllDesigner" resultType="cn.com.ctop.common.module.entity.SysUser">
         select user.realname,user.id,role.role_name from sys_user_role userRole left join sys_user user on userRole.user_id = user.id
         left join sys_role role on userRole.role_id = role.id
-            where role.role_code in ('plane','plan','shot','clip')
+            where role.role_code in ('plane','plan','shot','clip','designTeamLeader')
             and user.status = 1
     </select>
 </mapper>

+ 0 - 5
module-job-bytedance/pom.xml

@@ -56,11 +56,6 @@
             <groupId>org.slf4j</groupId>
             <artifactId>jcl-over-slf4j</artifactId>
         </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-media</artifactId>
-            <version>2.0.2</version>
-        </dependency>
 
         <dependency>
             <groupId>cn.com.ctop</groupId>

+ 4 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDancePlanRuleDataJob.java

@@ -2,6 +2,7 @@ package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.service.IRuleDataCreativeService;
 import cn.com.ctop.common.module.service.IRuleDataPlanService;
 import cn.com.ctop.common.module.service.IRuleDataTargetService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
@@ -26,6 +27,8 @@ public class ByteDancePlanRuleDataJob {
     @Autowired
     private IRuleDataPlanService ruleDataPlanService;
     @Autowired
+    private IRuleDataCreativeService ruleDataCreativeService;
+    @Autowired
     private IRuleDataTargetService ruleDataTargetService;
     private ExecutorService executorService = Executors.newFixedThreadPool(10);
     @XxlJob("bytedancePlanRuleLoadJob")
@@ -38,6 +41,7 @@ public class ByteDancePlanRuleDataJob {
             params.put("account_id",token.getAccountId());
             ruleDataPlanService.removeByMap(params);
             ruleDataTargetService.removeByMap(params);
+            ruleDataCreativeService.removeByMap(params);
             reportService.getAdvertiserPlanRuleData(token,date,date, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
         }));
     }

+ 0 - 6
module-job-kuaishou/pom.xml

@@ -58,12 +58,6 @@
         </dependency>
         <dependency>
             <groupId>cn.com.ctop</groupId>
-            <artifactId>module-media</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
             <artifactId>module-alarm</artifactId>
             <version>2.0.2</version>
         </dependency>

+ 25 - 0
module-job-kuaishou/src/main/java/cn/com/ctop/job/kuaishou/handler/KuaishouAiAdsNewMaterialCreativityJob.java

@@ -0,0 +1,25 @@
+package cn.com.ctop.job.kuaishou.handler;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAccountTargetTemplate;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouAccountTargetTemplateService;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouNewCreateCampaign;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+public class KuaishouAiAdsNewMaterialCreativityJob {
+
+    @Autowired
+    IAiKuaishouNewCreateCampaign aiKuaishouNewCreateCampaign;
+    @Autowired
+    private IAiKuaishouAccountTargetTemplateService aiKuaishouAccountTargetTemplateService;
+    @XxlJob("kuaishouAiAdsNewMaterialCreativityJob")
+    public void execute() {
+        List<AiKuaishouAccountTargetTemplate> accountTargetTemplates = aiKuaishouAccountTargetTemplateService.getAllEffectTemplate();
+        if(null==accountTargetTemplates||accountTargetTemplates.isEmpty()){
+            return;
+        }
+        accountTargetTemplates.forEach(targetTemplate -> aiKuaishouNewCreateCampaign.kuaishouAiAdsNewMaterialCreativity(targetTemplate));
+    }
+}

+ 75 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/entity/AiKuaishouAccountTargetTemplate.java

@@ -0,0 +1,75 @@
+package cn.com.ctop.kuaishou.modules.ai.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+import java.util.Date;
+
+/**
+ * 账户自动投放定向模板
+ * @author jeecg-boot
+ * @date   2021-01-07
+ * @version V1.0
+ */
+@Data
+@TableName("ctop_ai_kuaishou_auto_creative_account_info")
+public class AiKuaishouAccountTargetTemplate {
+
+	/**id*/
+	@TableId(type = IdType.AUTO)
+	private Long id;
+	/**账户ID*/
+	private Long accountId;
+	/**营销目标{1应用安装},{2电商下单},{3推广品牌},{4营销线上},{5应用活跃}*/
+	private String marketingGoal;
+	/**请勾选投放应用已上架的应用商店*/
+	private String appStore;
+	/**是否优先从应用商店下载 true false*/
+	private String useAppMarket;
+	/**应用id集*/
+	private String appIds;
+	/**地域*/
+	private String region;
+	/**年龄段:{[]:不限}{18:18-23岁}{24:24-30岁}{31:31-40岁}{41:41-49岁}{50:50岁+*/
+	private String agesRange;
+	/**性别 1:女性, 2:男性, 0:不限*/
+	private Integer gender;
+	/**操作系统 1: Android, 2: iOS, 0:不限*/
+	private Integer platformOs;
+	/**自定义人群 0不限,1:定向,:2:排除,:3同时定向排除*/
+	private String customCrowd;
+	/**定向人群包*/
+	private String population;
+	/**排除人群包*/
+	private String excludePopulation;
+	/**出价类型(优化目标) 2点击数(CPC),10转化数(OCPM)*/
+	private Integer bidType;
+	/**封面点击出价*/
+	private Integer bid;
+	/**转化目标,2:行为数,180:激活数,53:表单数,190: 付费,191:首日ROI 。。。*/
+	private Integer ocpxActionType;
+	/**转化目标出价*/
+	private Integer cpaBid;
+	/**广告位 1:优选广告位;*/
+	private String sceneId;
+	/**下载详情页ID,建站id*/
+	private String siteId;
+	/**第三方开始播放监测链接*/
+	private String impressionUrl;
+	/**第三方点击检测链接*/
+	private String clickTrackUrl;
+	/**第三方点击按钮监测链接*/
+	private String actionbarClickUrl;
+	/**状态*/
+	private Integer status;
+	/**单个视频搭配图片个数*/
+	private Integer imageNumber;
+	/**创建时间*/
+	private Date createTime;
+	/**updateTime*/
+	private Date updateTime;
+}

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyMapCreative.java

@@ -1,12 +1,12 @@
-package org.jeecg.modules.ads.entity;
+package cn.com.ctop.kuaishou.modules.ai.entity;
 
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * 策略创意表
  */

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyMiddle.java

@@ -1,13 +1,13 @@
-package org.jeecg.modules.ads.entity;
+package cn.com.ctop.kuaishou.modules.ai.entity;
 
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * 策略_策略模板中间表
  */

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTargetBase.java

@@ -1,13 +1,13 @@
-package org.jeecg.modules.ads.entity;
+package cn.com.ctop.kuaishou.modules.ai.entity;
 
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * 定向基础表
  */

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTargetDetails.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.entity;
+package cn.com.ctop.kuaishou.modules.ai.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTargetUnion.java

@@ -1,13 +1,13 @@
-package org.jeecg.modules.ads.entity;
+package cn.com.ctop.kuaishou.modules.ai.entity;
 
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * 策略_定向中间表
  */

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/entity/AiKuaishouStrategyTemplate.java

@@ -1,13 +1,13 @@
-package org.jeecg.modules.ads.entity;
+package cn.com.ctop.kuaishou.modules.ai.entity;
 
-import java.util.Date;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * 策略模板表
  */

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaiShouStrategyListPageMapper.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;

+ 14 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/AiKuaishouAccountTargetTemplateMapper.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.kuaishou.modules.ai.mapper;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAccountTargetTemplate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 账户自动投放定向模板
+ * @author: jeecg-boot
+ * @date:   2021-01-07
+ * @cersion: V1.0
+ */
+public interface AiKuaishouAccountTargetTemplateMapper extends BaseMapper<AiKuaishouAccountTargetTemplate> {
+
+}

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyMapCreativeMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMapCreative;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyMapCreative;
 
 /**
  * 策略创意表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyMiddleMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMiddle;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyMiddle;
 
 /**
  * 策略_策略模板中间表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTargetBaseMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetBase;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetBase;
 
 /**
  * 定向基础表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTargetDetailsMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetDetails;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetDetails;
 
 /**
  * 智能投放快手定向策略详细信息

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTargetUnionMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetUnion;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetUnion;
 
 /**
  * 策略_定向中间表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/AiKuaishouStrategyTemplateMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTemplate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTemplate;
 
 /**
  * 策略模板表

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/IAiKuaiShouReportAnalyzeMapper.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.mapper;
+package cn.com.ctop.kuaishou.modules.ai.mapper;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTemplateMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaishouStrategyTemplateMapper">
+<mapper namespace="cn.com.ctop.ctop.mapper.AiKuaishouAccountTargetTemplateMapper">
 
 </mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouReportAnalyzeMapper.xml

@@ -1,6 +1,6 @@
 <?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="org.jeecg.modules.ads.mapper.IAiKuaiShouReportAnalyzeMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.IAiKuaiShouReportAnalyzeMapper">
 
     <select id="queryStrategyByAccountId" resultType="com.alibaba.fastjson.JSONObject">
         SELECT id,
@@ -462,4 +462,4 @@
         t.province
     </select>
 
-</mapper>
+</mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyListPageMapper.xml

@@ -1,6 +1,6 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaiShouStrategyListPageMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaiShouStrategyListPageMapper">
 
     <select id="queryStrategyBy" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
@@ -189,4 +189,4 @@
         GROUP BY t1.unit_id
         order by t1.create_time desc
     </select>
-</mapper>
+</mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyMapCreativeMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaishouStrategyMapCreativeMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyMapCreativeMapper">
 
-</mapper>
+</mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTargetDetailsMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaishouStrategyTargetDetailsMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyMiddleMapper">
 
 </mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTargetBaseMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaishouStrategyTargetBaseMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTargetBaseMapper">
 
-</mapper>
+</mapper>

+ 5 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/mapper/xml/AiKuaishouStrategyTargetDetailsMapper.xml

@@ -0,0 +1,5 @@
+<?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.AiKuaishouStrategyTargetDetailsMapper">
+
+</mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyTargetUnionMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaishouStrategyTargetUnionMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTargetUnionMapper">
 
-</mapper>
+</mapper>

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/mapper/xml/AiKuaishouStrategyMiddleMapper.xml

@@ -1,5 +1,5 @@
 <?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="org.jeecg.modules.ads.mapper.AiKuaishouStrategyMiddleMapper">
+<mapper namespace="cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTemplateMapper">
 
-</mapper>
+</mapper>

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaiShouReportAnalyzeService.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaiShouStrategyListPageService.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;

+ 18 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IAiKuaishouAccountTargetTemplateService.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.kuaishou.modules.ai.service;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAccountTargetTemplate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * @Description: 账户自动投放定向模板
+ * @Author: jeecg-boot
+ * @Date:   2021-01-07
+ * @Version: V1.0
+ */
+public interface IAiKuaishouAccountTargetTemplateService extends IService<AiKuaishouAccountTargetTemplate> {
+
+    List<AiKuaishouAccountTargetTemplate> getAllEffectTemplate();
+
+}

+ 7 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/IAiKuaishouNewCreateCampaign.java

@@ -0,0 +1,7 @@
+package cn.com.ctop.kuaishou.modules.ai.service;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAccountTargetTemplate;
+
+public interface IAiKuaishouNewCreateCampaign {
+    void kuaishouAiAdsNewMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate);
+}

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyMapCreativeService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMapCreative;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyMapCreative;
 
 /**
  * @Description: 策略创意表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyMiddleService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMiddle;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyMiddle;
 
 /**
  * @Description: 策略_策略模板中间表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTemplate;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTemplate;
 
 /**
  * @Description: 智能投放策略信息

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTargetBaseService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetBase;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetBase;
 
 import java.util.List;
 

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTargetDetailsService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetDetails;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetDetails;
 
 /**
  * @Description: 智能投放快手定向策略详细信息

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTargetUnionService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetUnion;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetUnion;
 
 /**
  * @Description: 策略_定向中间表

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiKuaishouStrategyTemplateService.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTemplate;
 import com.baomidou.mybatisplus.extension.service.IService;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTemplate;
 
 /**
  * @Description: 策略模板表

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/IAiStrategyService.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.service;
+package cn.com.ctop.kuaishou.modules.ai.service;
 
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouStrategy;
 

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaiShouReportAnalyzeServiceImpl.java

@@ -1,11 +1,11 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.mapper.IAiKuaiShouReportAnalyzeMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaiShouReportAnalyzeService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import org.jeecg.modules.ads.mapper.IAiKuaiShouReportAnalyzeMapper;
-import org.jeecg.modules.ads.service.IAiKuaiShouReportAnalyzeService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 3 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaiShouStrategyListPageServiceImpl.java

@@ -1,6 +1,8 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
 import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaiShouStrategyListPageMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaiShouStrategyListPageService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
@@ -8,8 +10,6 @@ import com.github.pagehelper.PageInfo;
 import lombok.extern.log4j.Log4j;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
-import org.jeecg.modules.ads.mapper.AiKuaiShouStrategyListPageMapper;
-import org.jeecg.modules.ads.service.IAiKuaiShouStrategyListPageService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 27 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaishouAccountTargetTemplateServiceImpl.java

@@ -0,0 +1,27 @@
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
+
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAccountTargetTemplate;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouAccountTargetTemplateMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouAccountTargetTemplateService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 账户自动投放定向模板
+ * @author jeecg-boot
+ * @date   2021-01-07
+ * @version V1.0
+ */
+@Service
+public class AiKuaishouAccountTargetTemplateServiceImpl extends ServiceImpl<AiKuaishouAccountTargetTemplateMapper, AiKuaishouAccountTargetTemplate> implements IAiKuaishouAccountTargetTemplateService {
+
+    @Override
+    public List<AiKuaishouAccountTargetTemplate> getAllEffectTemplate() {
+        QueryWrapper<AiKuaishouAccountTargetTemplate> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("status",1);
+        return this.list(queryWrapper);
+    }
+}

+ 299 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/ai/service/impl/AiKuaishouNewCreateCampaignServiceImpl.java

@@ -0,0 +1,299 @@
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
+
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.entity.MaterialCutFrame;
+import cn.com.ctop.common.module.entity.MaterialImageInfo;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.service.IMaterialCutFrameService;
+import cn.com.ctop.common.module.service.IMaterialImageInfoService;
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouAccountTargetTemplate;
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMapCreative;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouNewCreateCampaign;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyMapCreativeService;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
+import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouImageGetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouMaterialUploadService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaiShouVideoGetService;
+import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+import org.jeecg.common.util.JsonResourceUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class AiKuaishouNewCreateCampaignServiceImpl implements IAiKuaishouNewCreateCampaign {
+
+    @Autowired
+    private IKuaiShouVideoGetService videoGetService;
+    @Autowired
+    private IKuaishouInterfaceService kuaishouInterfaceService;
+    @Autowired
+    private ICtopOauthTokenService tokenService;
+    @Autowired
+    private IAiKuaishouStrategyMapCreativeService mapCreativeService;
+    @Autowired
+    private IMaterialCutFrameService materialCutFrameService;
+    @Autowired
+    private IMaterialImageInfoService materialImageInfoService;
+    @Autowired
+    private IKuaiShouImageGetService imageGetService;
+    @Autowired
+    private IKuaiShouMaterialUploadService materialUploadService;
+
+    @Override
+    public void kuaishouAiAdsNewMaterialCreativity(AiKuaishouAccountTargetTemplate targetTemplate) {
+        Long accountId = targetTemplate.getAccountId();
+        CtopOauthToken token = tokenService.getOauthTokenByAccountId(accountId.toString());
+        if(null == token){
+            log.info("token获取失败=>accountId:{}",accountId);
+            return;
+        }
+
+        // 2、执行素材的同步数据服务
+        // 2.1 执行 非素造的 视频拉取服务,时间过滤支持 yyyy-MM-dd, 拉取当天凌晨到此刻的数据
+        kuaishouInterfaceService.getVideoList(token, DateUtils.date2Str(),DateUtils.date2Str());
+
+        // 2.2 执行 素造的 视频拉取服务,时间过滤执行 yyyy-MM-dd HH:mm:ss
+        // 时间差,单位为分钟
+        int dimeDiff = 5;
+        Date now = new Date();
+        String startTime = DateUtils.formatDate(new Date(now.getTime() - dimeDiff*60*1000),"yyyy-MM-dd HH:mm:ss");
+        String endTime = DateUtils.formatDate(now,"yyyy-MM-dd HH:mm:ss");
+        kuaishouInterfaceService.getSuZaoList(token.getAccessToken(), token.getAccountId(), 1, startTime, endTime);
+
+
+        // 3、获取5分钟内,ctop_kuaishou_video_get 的视频数据,记为 N,如果有数据则执行下面步骤
+        List<KuaiShouVideoGet> newVideos = videoGetService.getNewVideoBetweenTime(accountId,startTime,endTime);
+        int newVideosCnt = newVideos.size();
+        if (newVideosCnt == 0){
+            log.info("账户:{},{} 到 {} 这段时间没有上新素材",accountId, startTime, endTime);
+            return;
+        }
+
+        //2、判断该账户下当天有没有“上新”计划,没有则创建一个“上新”计划
+        // time_filter_type 传入 "start_date",与 "end_date" 字段,且此字段为1时,按照创建时间进行筛选
+        JSONArray campaignList = kuaishouInterfaceService.getCampaignList(token, new Date(), new Date(),1);
+        boolean isHaveNewCampaign = false;
+        Long newCampaignId = 0L;
+        if (campaignList.size()>0){
+            for(int i = 0;i<campaignList.size();i++){
+                JSONObject jsonObject = campaignList.getJSONObject(i);
+                if (jsonObject.getString("campaign_name").contains("素材上新")){
+                    isHaveNewCampaign = true;
+                    newCampaignId = jsonObject.getLong("campaign_id");
+                    break;
+                }
+            }
+        }
+        // 不存在“上新”计划,则创建一个计划
+        if (!isHaveNewCampaign){
+            Date campaignDate = new Date();
+            String timestamp = DateUtils.formatDate(campaignDate,"yyyyMMddHHmmss");
+            JSONObject campaignParams = new JSONObject();
+            campaignParams.put("advertiser_id",token.getAccountId());
+            String campaignName = "户14-上下滑&信息流" + "-素材上新-"+ "剪辑-低价-低价包邮-活动-年龄18岁以上-单出价-"+ timestamp;
+            campaignParams.put("campaign_name",campaignName);
+            campaignParams.put("type",Integer.parseInt(targetTemplate.getMarketingGoal()));
+            campaignParams.put("day_budget",0L);
+            Map<String, Object> campaignCreateResult = kuaishouInterfaceService.campaignCreate(token.getAccessToken(), token.getAccountId(), campaignParams);
+            Integer code = (Integer) campaignCreateResult.get("code");
+            String message = (String) campaignCreateResult.get("message");
+            if(code != 0 ){
+                log.info("计划创建失败=>message:{}",message);
+                return;
+            }
+            newCampaignId = (Long) campaignCreateResult.get("campaignId");
+        }
+
+        //3、在“上新”计划中新增广告组,一个素材搭配5张封面,组成一个广告组
+        String timestamp = DateUtils.formatDate(new Date(),"yyyyMMddHHmmss");
+        String unitName = "户14-上下滑&信息流" + "-素材上新-"+ "剪辑-低价-低价包邮-活动-年龄18岁以上-单出价-"+ timestamp;
+        int unitCnt = 0;
+        for(KuaiShouVideoGet videoItem: newVideos){
+            unitCnt ++;
+            unitName = unitName + "-" + unitCnt;
+            JSONObject unitParams = createUnitParams(token, newCampaignId, targetTemplate, unitName);
+            Map<String, Object> unitCreateResult = kuaishouInterfaceService.adUnitCreate(token.getAccessToken(), token.getAccountId(), unitParams,1);
+            Integer unitCode = (Integer) unitCreateResult.get("code");
+            String unitMessage = (String) unitCreateResult.get("message");
+            if(unitCode != 0 ){
+                log.info("组创建失败=>accountId:{};message:{}",accountId,unitMessage);
+                continue;
+            }
+            Long unitId = (Long) unitCreateResult.get("unitId");
+
+            // 每个组,搭配5个创意
+            List<MaterialCutFrame> cutFrameList = materialCutFrameService.getListByVideoSignature(videoItem.getSignature());
+            List<MaterialImageInfo> orgFrameList = materialImageInfoService.getListByVideoSignature(videoItem.getSignature());
+            if ((null == cutFrameList||cutFrameList.isEmpty())&&(null == orgFrameList|| orgFrameList.isEmpty())){
+                log.info("未获取到视频封面=>videoSignature:{}",videoItem.getSignature());
+                continue;
+            }
+            JSONObject creativeParams = creativeParams(token, unitId, videoItem, targetTemplate);
+            createCreativeByImage(cutFrameList, orgFrameList,token, creativeParams, newCampaignId, unitId, videoItem,targetTemplate.getImageNumber());
+        }
+    }
+
+
+
+    private JSONObject creativeParams(CtopOauthToken token,Long unitId,KuaiShouVideoGet videoItem,AiKuaishouAccountTargetTemplate targetTemplate){
+        JSONObject creativeParams = new JSONObject();
+        creativeParams.put("advertiser_id",token.getAccountId());
+        creativeParams.put("unit_id",unitId);
+        creativeParams.put("photo_id",videoItem.getPhotoId());
+        creativeParams.put("creative_material_type",videoItem.getMaterialType());
+        creativeParams.put("action_bar_text","下载抢购");
+        creativeParams.put("description","不买亏大了!众多商品低至一元!看看你多花了多少冤枉钱!");
+        // 安卓下载中间页ID
+        JSONArray siteIdArray = JSONArray.parseArray(targetTemplate.getSiteId());
+        if(null == siteIdArray||!siteIdArray.isEmpty()){
+            JSONObject siteObject = siteIdArray.getJSONObject(0);
+            Long appId = siteObject.getLong("appId");
+            Long siteId = siteObject.getLong("siteId");
+            if(null!=siteId){
+                creativeParams.put("site_id",siteId);
+            }
+        }
+        if(null != targetTemplate.getClickTrackUrl()&&!"".equals(targetTemplate.getClickTrackUrl())){
+            creativeParams.put("click_track_url",targetTemplate.getClickTrackUrl());
+        }
+        if(null != targetTemplate.getImpressionUrl()&&!"".equals(targetTemplate.getImpressionUrl())){
+            creativeParams.put("impression_url",targetTemplate.getImpressionUrl());
+        }
+        if(null != targetTemplate.getActionbarClickUrl()&&!"".equals(targetTemplate.getActionbarClickUrl())){
+            creativeParams.put("actionbar_click_url",targetTemplate.getActionbarClickUrl());
+        }
+        return creativeParams;
+    }
+
+
+    private void createCreative(CtopOauthToken token,JSONObject creativeParams,Long campaignId,Long unitId,
+                                int creativeCnt,KuaiShouVideoGet videoGet){
+        creativeParams.put("creative_name","自定义创意_竖版视频_"+creativeCnt);
+        Map<String, Object> creativeCreateResult = kuaishouInterfaceService.creativeCreate
+                (token.getAccessToken(), token.getAccountId(), creativeParams,1);
+        Integer creativeCode = (Integer) creativeCreateResult.get("code");
+        String creativeMessage = (String) creativeCreateResult.get("message");
+        if(creativeCode != 0 ){
+            log.info("创意创建失败=>message:{}",creativeMessage);
+            return;
+        }
+        Long creativeId = (Long) creativeCreateResult.get("creativeId");
+        AiKuaishouStrategyMapCreative mapCreative = new AiKuaishouStrategyMapCreative();
+        mapCreative.setAccountId(token.getAccountId());
+        mapCreative.setCampaignId(campaignId);
+        mapCreative.setUnitId(unitId);
+        mapCreative.setVideoSignature(videoGet.getSignature());
+        mapCreative.setCreativeId(creativeId);
+        mapCreativeService.save(mapCreative);
+    }
+
+
+    private JSONObject createUnitParams(CtopOauthToken token, Long campaignId,  AiKuaishouAccountTargetTemplate targetTemplate,
+                                        String unitName) {
+        // 拼装创建组的入参 json
+        JSONObject unitParams = new JSONObject();
+        unitParams.put("advertiser_id",token.getAccountId());
+        unitParams.put("campaign_id",campaignId);
+        unitParams.put("unit_name", unitName);
+        unitParams.put("bid_type",targetTemplate.getBidType());
+        unitParams.put("ocpx_action_type",targetTemplate.getOcpxActionType());
+
+        if(null!=targetTemplate.getUseAppMarket()&&!"".equals(targetTemplate.getUseAppMarket())){
+            unitParams.put("use_app_market",Integer.parseInt(targetTemplate.getUseAppMarket()));
+        }
+        if(null!=targetTemplate.getAppStore()&&!"".equals(targetTemplate.getAppStore())){
+            unitParams.put("app_store",JSONArray.parseArray(targetTemplate.getAppStore()));
+        }
+
+        // 在本策略中,都是 OCPM 的出价方式
+        unitParams.put("cpa_bid",targetTemplate.getCpaBid());
+        unitParams.put("scene_id",JSONArray.parseArray(targetTemplate.getSceneId()));
+        unitParams.put("unit_type",4);
+
+        // 格式为yyyy-MM-dd,需大于等于当前时间
+        unitParams.put("begin_time",DateUtils.formatDate(new Date()));
+
+        JSONArray appIds = JSONArray.parseArray(targetTemplate.getAppIds());
+        if(null!=appIds&&!appIds.isEmpty()){
+            unitParams.put("app_id",appIds.getLong(0));
+        }
+        unitParams.put("show_mode",2);
+        unitParams.put("speed",1);
+
+        // 设置定向内容
+        JSONObject targetJsonObject = new JSONObject();
+        targetJsonObject.put("region",JSONArray.parseArray(targetTemplate.getRegion()));
+        targetJsonObject.put("ages_range",JSONArray.parseArray(targetTemplate.getAgesRange()));
+        targetJsonObject.put("gender",targetTemplate.getGender());
+        targetJsonObject.put("platform_os",targetTemplate.getPlatformOs());
+        JSONArray population = JSONArray.parseArray(targetTemplate.getPopulation());
+        if(null!=population&&!population.isEmpty()){
+            targetJsonObject.put("population",population);
+        }
+        JSONArray excludePopulation = JSONArray.parseArray(targetTemplate.getExcludePopulation());
+        if(null!=excludePopulation&&!excludePopulation.isEmpty()){
+            targetJsonObject.put("exclude_population",excludePopulation);
+        }
+        unitParams.put("target",targetJsonObject);
+
+        return unitParams;
+    }
+
+
+    private void createCreativeByImage(List<MaterialCutFrame> cutFrameList, List<MaterialImageInfo> orgFrameList,
+                                       CtopOauthToken token, JSONObject creativeParams,
+                                       Long campaignId, Long unitId, KuaiShouVideoGet videoItem,
+                                       int imageNumber){
+        int creativeCnt  = 1;
+        if (null!=orgFrameList&&!orgFrameList.isEmpty()) {
+            for (int i = 0; i < orgFrameList.size(); i++) {
+                String imageCode = orgFrameList.get(i).getCode();
+                String imageUrl = orgFrameList.get(i).getUrl();
+                String imageToken = getImageToken(imageUrl,imageCode,token.getAccountId(),token.getAccessToken());
+                creativeParams.put("image_token",imageToken);
+                createCreative(token, creativeParams, campaignId, unitId, creativeCnt,videoItem);
+                creativeCnt++;
+                if (creativeCnt > imageNumber) {
+                    break;
+                }
+            }
+        }
+
+        if ((null!=cutFrameList&&!cutFrameList.isEmpty()) && (creativeCnt<=15)){
+            for (int i = 0; i < cutFrameList.size(); i++) {
+                String imageCode = cutFrameList.get(i).getSignature();
+                String imageUrl = cutFrameList.get(i).getUrl();
+                String imageToken = getImageToken(imageUrl,imageCode,token.getAccountId(),token.getAccessToken());
+                creativeParams.put("image_token",imageToken);
+                createCreative(token, creativeParams, campaignId, unitId, creativeCnt,videoItem);
+                creativeCnt ++;
+                if (creativeCnt > imageNumber) {
+                    break;
+                }
+            }
+        }
+    }
+
+    private String getImageToken(String imageUrl, String imageCode, Long accountId,String token){
+        // 根据imageUrl 和 imageCode,获取 imageToken (创建创意用)
+        KuaiShouImageGet imageGet = imageGetService.getOneByParams(null,imageCode);
+        if ((null == imageGet) || ("".equals(imageGet.getImageToken()))){
+            // 如果取不到image_token
+            // 则调用上传url的方法 kuauiShouImageUpload(url, signature, accountId, oauthToken.getAccessToken());
+            return materialUploadService.kuauiShouImageUpload(imageUrl,imageCode,accountId,token);
+        }
+
+        return imageGet.getImageToken();
+    }
+
+}

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyMapCreativeServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMapCreative;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyMapCreativeMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyMapCreativeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyMapCreative;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyMapCreativeMapper;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyMapCreativeService;
 import org.springframework.stereotype.Service;
 
 /**

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyMiddleServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyMiddle;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyMiddleMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyMiddleService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyMiddle;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyMiddleMapper;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyMiddleService;
 import org.springframework.stereotype.Service;
 
 /**

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTargetBaseServiceImpl.java

@@ -1,10 +1,10 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetBase;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTargetBaseMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyTargetBaseService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetBase;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyTargetBaseMapper;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyTargetBaseService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTargetDetailsServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetDetails;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTargetDetailsMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyTargetDetailsService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetDetails;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyTargetDetailsMapper;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyTargetDetailsService;
 import org.springframework.stereotype.Service;
 
 /**

+ 4 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTargetUnionServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTargetUnion;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTargetUnionMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyTargetUnionService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTargetUnion;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyTargetUnionMapper;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyTargetUnionService;
 import org.springframework.stereotype.Service;
 
 /**

+ 4 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiKuaishouStrategyTemplateServiceImpl.java

@@ -1,11 +1,10 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
+import cn.com.ctop.kuaishou.modules.ai.entity.AiKuaishouStrategyTemplate;
+import cn.com.ctop.kuaishou.modules.ai.mapper.AiKuaishouStrategyTemplateMapper;
+import cn.com.ctop.kuaishou.modules.ai.service.IAiKuaishouStrategyTemplateService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.ads.entity.AiKuaishouStrategyTemplate;
-import org.jeecg.modules.ads.mapper.AiKuaishouStrategyTemplateMapper;
-import org.jeecg.modules.ads.service.IAiKuaishouStrategyTemplateService;
-import org.jeecg.modules.ctop.vo.QueryParam;
 import org.springframework.stereotype.Service;
 
 /**

+ 13 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ads/service/impl/AiStrategyServiceImpl.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.ads.service.impl;
+package cn.com.ctop.kuaishou.modules.ai.service.impl;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.entity.MaterialCutFrame;
@@ -6,6 +6,8 @@ import cn.com.ctop.common.module.entity.MaterialImageInfo;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.service.IMaterialCutFrameService;
 import cn.com.ctop.common.module.service.IMaterialImageInfoService;
+import cn.com.ctop.kuaishou.modules.ai.entity.*;
+import cn.com.ctop.kuaishou.modules.ai.service.*;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouImageGet;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaiShouVideoGet;
 import cn.com.ctop.kuaishou.modules.batch.entity.KuaishouStrategy;
@@ -17,14 +19,11 @@ import cn.com.ctop.kuaishou.modules.batch.service.IKuaishouInterfaceService;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import org.jeecg.common.util.DateUtils;
-import org.jeecg.modules.ads.entity.*;
-import org.jeecg.modules.ads.service.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -87,8 +86,17 @@ public class AiStrategyServiceImpl implements IAiStrategyService {
         // {'highQualityMaterial':{'days':7, 'num':5},'newMaterialNum':5}
         // TODO 更新该账户下的 ctop_kuaishou_video_get 数据
 
+        // 获取当天零点到现在的非素造的视频
         kuaishouInterfaceService.getVideoList(token,DateUtils.date2Str(),DateUtils.date2Str());
 
+        /*// 获取当天零点到现在的素造视频
+        String startDate = DateUtils.formatDate(new Date(),"yyyy-MM-dd HH:mm:ss");
+        // 时间差,单位为分钟
+        int dimeDiff = 5;
+        Date now = new Date();
+        String endDate = DateUtils.formatDate(new Date(now.getTime() - dimeDiff*60*1000),"yyyy-MM-dd HH:mm:ss");
+        kuaishouInterfaceService.getSuZaoList(token.getAccessToken(), token.getAccountId(), 1, startDate, endDate)));*/
+
         JSONObject MaterialSelectMethod = JSONObject.parseObject(strategyTemplate.getMaterialSelectMethod());
         List<KuaiShouVideoGet> newVideos = new ArrayList<KuaiShouVideoGet>();
         List<KuaiShouVideoGet> highQualityVideos = new ArrayList<KuaiShouVideoGet>();
@@ -172,7 +180,7 @@ public class AiStrategyServiceImpl implements IAiStrategyService {
                                 log.info("未获取到视频封面=>videoSignature:{}",videoItem.getSignature());
                                 continue;
                             }
-                            createCreativeByImage(cutFrameList,orgFrameList,token,creativeParams,campaignId,unitId,strategy,videoItem,15,null);
+                            createCreativeByImage(cutFrameList,orgFrameList,token,creativeParams,campaignId,unitId,strategy,videoItem,3,null);
                         }
                     }
                 }

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

@@ -28,6 +28,8 @@ public interface IKuaiShouVideoGetService extends IService<KuaiShouVideoGet> {
 
     List<KuaiShouVideoGet> getNewVideoDescDate(Long accountId,Integer newVideoCnt);
 
+    List<KuaiShouVideoGet> getNewVideoBetweenTime(Long accountId,String startTime, String endTime);
+
 
 
 

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

@@ -8,6 +8,7 @@ import cn.com.ctop.kuaishou.modules.material.entity.KuaishouResultToken;
 import cn.com.ctop.kuaishou.modules.report.entity.*;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonArray;
 
 import java.text.ParseException;
 import java.util.Date;
@@ -150,6 +151,20 @@ public interface IKuaishouInterfaceService {
      */
     void getCreativeList(CtopOauthToken token, Date startDate, Date endDate);
 
+
+
+    /**
+     * 根据组id,获取创意列表
+     *
+     * @param token
+     * @param unitId
+     * @param startDate
+     * @param endDate
+     * @param timeFilterType
+     */
+    JSONArray getCreativeList(CtopOauthToken token, Long unitId, Date startDate, Date endDate,int timeFilterType);
+
+
     /**
      * 获取视频信息
      *
@@ -343,6 +358,19 @@ public interface IKuaishouInterfaceService {
      */
     void getCampaignList(CtopOauthToken token, Date startDate, Date endDate);
 
+
+
+    /**
+     * 获取计划列表,新增一个参数 按创建时间,还是更新时间进行筛选
+     *
+     * @param token
+     * @param startDate
+     * @param endDate
+     * @param timeFilterType
+     */
+    JSONArray getCampaignList(CtopOauthToken token, Date startDate, Date endDate, int timeFilterType);
+
+
     /**
      * 获取组列表
      *
@@ -353,6 +381,24 @@ public interface IKuaishouInterfaceService {
     void getGroupList(CtopOauthToken token, Date startDate, Date endDate);
 
 
+
+    /**
+     * 获取指定广告计划下的广告组列表
+     *
+     * @param token
+     * @param campaignId
+     * @param startDate
+     * @param endDate
+     * @param time_filter_type
+     */
+    JSONArray getGroupList(CtopOauthToken token, Long campaignId, Date startDate, Date endDate,int time_filter_type);
+
+
+
+
+
+
+
     /**
      * 获取快手图片列表
      *

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

@@ -62,6 +62,7 @@ public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShou
 
         String result = HttpUtils.httpPostRequest(url, param, headers);
         JSONObject resultJson = JSONObject.parseObject(result);
+    //    log.info("快手返回数据:{}",resultJson);
         if (Check.isNull(resultJson)) {
             return;
         }
@@ -82,6 +83,7 @@ public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShou
             detailJson.put("photo_like", detailJson.getInteger("like"));
             detailJson.put("photo_share", detailJson.getInteger("share"));
             detailJson.put("photo_comment", detailJson.getInteger("comment"));
+            detailJson.put("photo_show", detailJson.getInteger("show"));
             KuaiShouReportDailyMaterial material = JSONObject.toJavaObject(detailJson, KuaiShouReportDailyMaterial.class);
             VideoGetvo videoGetvo = dailyMaterialMapper.getVideoGetByPhotoId(material.getPhotoId());
             if (!Check.isNull(videoGetvo)) {
@@ -89,8 +91,10 @@ public class KuaiShouReportDailyMaterialServiceImpl extends ServiceImpl<KuaiShou
                 material.setSignature(videoGetvo.getSignature());
             }
             material.setAccountId(accountId);
+
             addList.add(material);
         }
+  //      log.info("addList:{}",addList);
         dailyMaterialMapper.batchReplace(addList);
         getMaterialReportByAccountIdAndStatDate(accountId, token, startDate, endDate, page + 1);
     }

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

@@ -148,4 +148,18 @@ public class KuaiShouVideoGetServiceImpl extends ServiceImpl<KuaiShouVideoGetMap
         return this.list(queryWrapper);
     }
 
+
+    @Override
+    public List<KuaiShouVideoGet>getNewVideoBetweenTime(Long accountId,String startTime, String endTime){
+        QueryWrapper<KuaiShouVideoGet>queryWrapper = new QueryWrapper<>();
+        if(null!=accountId&&accountId!=0){
+            queryWrapper.eq("account_id",accountId);
+        }
+        if(null != startTime && null != endTime){
+            queryWrapper.le("stat_date",endTime);
+            queryWrapper.gt("stat_date",startTime);
+        }
+        return this.list(queryWrapper);
+    }
+
 }

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

@@ -1122,6 +1122,40 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
     }
 
 
+    public JSONArray getCampaignList(CtopOauthToken token, Date startDate, Date endDate, int timeFilterType) {
+        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.CAMPAIGN_LIST;
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Access-Token", token.getAccessToken());
+        headers.put("Content-Type", " application/json");
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", token.getAccountId());
+        if (startDate != null && endDate != null) {
+            param.put("start_date", DateUtils.formatDate(startDate));
+            param.put("end_date", DateUtils.formatDate(endDate));
+        }
+        param.put("time_filter_type", timeFilterType);
+
+        String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
+        JSONObject resultJson = JSONObject.parseObject(result);
+        if (Check.isNull(resultJson)) {
+            log.error("获取广告计划信息返回结果异常,advertiserId:{}", token.getAccountId());
+            return null;
+        }
+        Integer code = resultJson.getInteger("code");
+        if (null == code || code != 0) {
+            log.error("获取广告计划信息返回结果异常,advertiserId:{},异常信息:{}", token.getAccountId(), resultJson);
+            return null;
+        }
+        JSONObject dataJson = resultJson.getJSONObject("data");
+        JSONArray details = dataJson.getJSONArray("details");
+        if (Check.isNull(details)) {
+            return null;
+        }
+        return details;
+    }
+
+
+
     /**
      * 获取 单条 广告计划数据
      *
@@ -1187,6 +1221,43 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
         kuaiShouCampaignService.replaceBatch(campaigns);
     }
 
+    public JSONArray getGroupList(CtopOauthToken token, Long campaignId, Date startDate,
+                                  Date endDate,int time_filter_type){
+        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.GROUP_LIST;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", token.getAccountId());
+        if (startDate != null && endDate != null) {
+            param.put("start_date", DateUtils.formatDate(startDate));
+            param.put("end_date", DateUtils.formatDate(endDate));
+        }
+
+        param.put("campaign_id",campaignId);
+
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Access-Token", token.getAccessToken());
+        headers.put("Content-Type", "application/json");
+
+        String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
+        JSONObject resultJson = JSONObject.parseObject(result);
+        if (Check.isNull(resultJson)) {
+            log.error("获取广告组接口异常,advertiserId:{}", token.getAccountId());
+            return null;
+        }
+        Integer code = resultJson.getInteger("code");
+        if (null == code || code != 0) {
+            log.error("获取广告组返回结果异常,advertiserId:{},异常信息:{}", token.getAccountId(), resultJson);
+            return null;
+        }
+        JSONArray details = resultJson.getJSONObject("data").getJSONArray("details");
+        if (Check.isNull(details)) {
+            return null;
+        }
+
+        return details;
+    }
+
+
+
     @Override
     public void getGroupList(CtopOauthToken token, Date startDate, Date endDate) {
         getGroupListByPage(token, startDate, endDate, 1);
@@ -1347,6 +1418,46 @@ public class KuaishouInterfaceServiceImpl implements IKuaishouInterfaceService {
     }
 
 
+
+    public JSONArray getCreativeList(CtopOauthToken token, Long unitId, Date startDate, Date endDate,int timeFilterType){
+        Long advertiserId = token.getAccountId();
+        String accessToken = token.getAccessToken();
+
+        String url = PropertiesUtils.getConfig("kuaishou_api_url") + KuaishouInterfaceConstant.CREATIVE_LIST;
+        Map<String, String> headers = new HashMap<>();
+        headers.put("Content-Type", " application/json");
+        headers.put("Access-Token", accessToken);
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", advertiserId);
+        if (startDate != null && endDate != null) {
+            param.put("start_date", DateUtils.formatDate(startDate));
+            param.put("end_date", DateUtils.formatDate(endDate));
+        }
+
+        param.put("unit_id",unitId);
+        param.put("time_filter_type",timeFilterType);
+
+        String result = HttpUtils.kuaiShouhttpPostRequest(url, param.toJSONString(), headers);
+        JSONObject resultJson = JSONObject.parseObject(result);
+        if (Check.isNull(resultJson)) {
+            log.error("获取广告创意返回结果为空,advertiserId:{}", advertiserId);
+            return null;
+        }
+        Integer code = resultJson.getInteger("code");
+        String message = resultJson.getString("message");
+        if (null == code || code != 0) {
+            log.error("获取广告创意返回结果异常,advertiserId:{},message:{}", advertiserId, message);
+            return null;
+        }
+        JSONArray details = resultJson.getJSONObject("data").getJSONArray("details");
+        if (null == details || details.size() <= 0) {
+            return null;
+        }
+        return details;
+    }
+
+
+
     @Override
     public void getCreativeList(CtopOauthToken token, Date startDate, Date endDate) {
         getCreativeListByPage(token.getAccessToken(), token.getAccountId(), startDate, endDate, 1);

+ 1 - 1
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceReportServiceImpl.java

@@ -762,7 +762,7 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
             log.error("返回为空,请求有误:" + JSONObject.toJSONString(data));
             return -2;
         }
-
+        System.out.println(json.toJSONString());
         try {
             Integer code = json.getInteger("code");
             if (code != 0) {