Browse Source

Merge branch 'test'

syh 4 years ago
parent
commit
bf071b2561
47 changed files with 745 additions and 888 deletions
  1. 6 60
      jeecg-boot-module-system/pom.xml
  2. 3 1
      jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java
  3. 0 60
      jeecg-boot-module-system/src/main/java/org/jeecg/config/RuleEngineConfig.java
  4. 1 1
      jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java
  5. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CallbackController.java
  6. 0 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/ToutiaoMaterialsLoadJob.java
  7. 14 3
      jeecg-boot-module-system/src/test/java/org/jeecg/SampleTest.java
  8. 0 49
      jeecg-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java
  9. 12 2
      module-check/pom.xml
  10. 1 1
      module-check/src/main/java/cn/com/ctop/ModuleCheckApplication.java
  11. 4 6
      module-check/src/main/java/cn/com/ctop/check/TestGroovy.groovy
  12. 12 1
      module-check/src/main/java/cn/com/ctop/check/component/basic/AbstractScript.java
  13. 12 2
      module-check/src/main/java/cn/com/ctop/check/component/execute/GroovyScriptExecutor.java
  14. 60 0
      module-check/src/main/java/cn/com/ctop/check/component/execute/ScriptProcessLogExecutor.java
  15. 1 1
      module-check/src/main/java/cn/com/ctop/check/controller/CtopCheckTaskListController.java
  16. 0 18
      module-check/src/main/java/cn/com/ctop/check/script/CheckTokenExecuteStateScript.groovy
  17. 26 1
      module-check/src/main/java/cn/com/ctop/check/script/TestGroovyScript.java
  18. 4 6
      module-check/src/main/java/cn/com/ctop/notice/handle/SendWeChatHandle.java
  19. 0 1
      module-common/src/main/java/cn/com/ctop/common/module/utils/CorpWexinUtils.java
  20. 2 2
      module-job-bytedance/pom.xml
  21. 36 0
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckDataStateJob.java
  22. 36 0
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckExecuteStateJob.java
  23. 2 20
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/job/KuaishouReportAgentJob.java
  24. 1 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/AccountReportMapper.java
  25. 11 0
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/mapper/xml/AccountReportMapper.xml
  26. 2 1
      module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportDailyAgentServiceImpl.java
  27. 6 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/controller/ByteDanceBatchController.java
  28. 8 2
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/controller/ByteDanceCreativeController.java
  29. 2 2
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceCreativeService.java
  30. 350 26
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCreativeServiceImpl.java
  31. 2 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/BytedanceAccountReportMapper.java
  32. 13 0
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceAccountReportMapper.xml
  33. 22 4
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportServiceImpl.java
  34. 66 8
      module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/tool/controller/ByteDanceQueryToolController.java
  35. 2 6
      performance-appraisal/src/main/java/cn/com/ctop/accountvideoquarterinfo/entity/AccountVideoQuarterInfo.java
  36. 0 3
      performance-appraisal/src/main/java/cn/com/ctop/accountvideoquarterinfo/mapper/AccountVideoQuarterInfoMapper.java
  37. 0 10
      performance-appraisal/src/main/java/cn/com/ctop/huananvideoreport/dto/HuananVideoReportDTO.java
  38. 2 6
      performance-appraisal/src/main/java/cn/com/ctop/huananvideoreport/entity/HuananVideoReport.java
  39. 5 6
      performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/entity/PerformanceAccount.java
  40. 0 3
      performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/mapper/PerformanceAccountMapper.java
  41. 0 208
      performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/vue/PerformanceAccountList.vue
  42. 0 170
      performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/vue/modules/PerformanceAccountModal.vue
  43. 0 177
      performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/vue/modules/PerformanceAccountModal__Style#Drawer.vue
  44. 0 3
      performance-appraisal/src/main/java/cn/com/ctop/planeprojectcost/mapper/PlaneProjectCostMapper.java
  45. 3 7
      performance-appraisal/src/main/java/cn/com/ctop/userefficientvideomap/entity/UserEfficientVideoMap.java
  46. 4 6
      performance-appraisal/src/main/java/cn/com/ctop/uservideomap/entity/UserVideoMap.java
  47. 0 3
      performance-appraisal/src/main/java/cn/com/ctop/uservideomap/mapper/UserVideoMapMapper.java

+ 6 - 60
jeecg-boot-module-system/pom.xml

@@ -52,6 +52,12 @@
             <version>2.2.0</version>
         </dependency>
         <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-check</artifactId>
+            <version>2.0.2</version>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
             <groupId>me.zhyd.oauth</groupId>
             <artifactId>JustAuth</artifactId>
             <version>1.15.6</version>
@@ -176,66 +182,6 @@
             <artifactId>pagehelper</artifactId>
             <version>5.1.11</version>
         </dependency>
-
-        <!--drools规则引擎-->
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-core</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-compiler</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-templates</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            <artifactId>kie-api</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            <artifactId>kie-spring</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-
-        <!--drools规则引擎-->
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-core</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-compiler</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-templates</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            <artifactId>kie-api</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.kie</groupId>
-            <artifactId>kie-spring</artifactId>
-            <version>7.6.0.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>com.ctop</groupId>
-            <artifactId>module-check</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
-            <scope>compile</scope>
-        </dependency>
     </dependencies>
 
     <dependencyManagement>

+ 3 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/JeecgApplication.java

@@ -44,7 +44,9 @@ public class JeecgApplication {
                 "----------------------------------------------------------");
     }
 
-    //加载数据字典
+    /**
+     * 加载数据字典
+     */
     @Bean
     public void instanceFiledDic(){
         AccountReportConstants.getInstance().init();

+ 0 - 60
jeecg-boot-module-system/src/main/java/org/jeecg/config/RuleEngineConfig.java

@@ -1,60 +0,0 @@
-package org.jeecg.config;
-
-import org.kie.api.KieBase;
-import org.kie.api.KieServices;
-import org.kie.api.builder.KieBuilder;
-import org.kie.api.builder.KieFileSystem;
-import org.kie.api.builder.KieRepository;
-import org.kie.api.runtime.KieContainer;
-import org.kie.api.runtime.KieSession;
-import org.kie.internal.io.ResourceFactory;
-import org.kie.spring.KModuleBeanFactoryPostProcessor;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
-import org.springframework.core.io.support.ResourcePatternResolver;
-
-import java.io.IOException;
-
-@Configuration
-public class RuleEngineConfig {
-    private static final Logger LOGGER = LoggerFactory.getLogger(RuleEngineConfig.class) ;
-    private static final String RULES_PATH = "drools/";
-    private final KieServices kieServices = KieServices.Factory.get();
-    @Bean
-    public KieFileSystem kieFileSystem() throws IOException {
-        KieFileSystem kieFileSystem = kieServices.newKieFileSystem();
-        ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
-        Resource[] files = resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "*.*");
-        String path = null;
-        for (Resource file : files) {
-            path = RULES_PATH + file.getFilename();
-            LOGGER.info("path="+path);
-            kieFileSystem.write(ResourceFactory.newClassPathResource(path, "UTF-8"));
-        }
-        return kieFileSystem;
-    }
-    @Bean
-    public KieContainer kieContainer() throws IOException {
-        KieRepository kieRepository = kieServices.getRepository();
-        kieRepository.addKieModule(kieRepository::getDefaultReleaseId);
-        KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem());
-        kieBuilder.buildAll();
-        return kieServices.newKieContainer(kieRepository.getDefaultReleaseId());
-    }
-    @Bean
-    public KieBase kieBase() throws IOException {
-        return kieContainer().getKieBase();
-    }
-    @Bean
-    public KieSession kieSession() throws IOException {
-        return kieContainer().newKieSession();
-    }
-    @Bean
-    public KModuleBeanFactoryPostProcessor kiePostProcessor() {
-        return new KModuleBeanFactoryPostProcessor();
-    }
-}

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java

@@ -145,7 +145,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/toutiao/loadSingleData", "anon");
         filterChainDefinitionMap.put("/kuaishou/getReport/historyData", "anon");
         filterChainDefinitionMap.put("/toutiao/advertiser/**", "anon");
-        filterChainDefinitionMap.put("/template/convert/**", "anon");//文件上传接口
+        filterChainDefinitionMap.put("/template/convert/**", "anon");
         filterChainDefinitionMap.put("/upload/**", "anon");
         filterChainDefinitionMap.put("/appium/appiumTask/run", "anon");
 

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/CallbackController.java

@@ -434,5 +434,19 @@ public class CallbackController {
         return returnMap;
     }
 
+    @GetMapping("/kuaishou/agent")
+    public String kuaishouAgent(@RequestParam("auth_code") String authCode, @RequestParam("state") String state) {
+        if (StringUtils.isNotBlank(authCode)) {
+            Map<String, Object> map = this.getKuaishouAgentAccessToken(authCode, state);
+            log.info("返回信息:{}", map.toString());
+            return (String) map.get("desc");
+        }
+        return "代理商授权绑定失败";
+    }
+
+    private Map<String, Object> getKuaishouAgentAccessToken(String authCode, String state) {
+        return null;
+    }
+
 
 }

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

@@ -1,6 +1,5 @@
 package org.jeecg.modules.ctop.job;
 
-
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
@@ -22,7 +21,6 @@ public class ToutiaoMaterialsLoadJob implements Job {
     private ICtopOauthTokenService tokenService;
     @Autowired
     private IBytedanceReportService bytedanceReportService;
-
     static ExecutorService executorService = Executors.newFixedThreadPool(8);
 
     @Override

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

@@ -2,9 +2,10 @@ package org.jeecg;
 
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCampaignService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
-import cn.com.ctop.toutiao.modules.report.service.IReportService;
+import org.jeecg.common.util.DateUtils;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,6 +13,8 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.Date;
+
 @RunWith(SpringRunner.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles("wps")
@@ -19,11 +22,11 @@ public class SampleTest {
     @Autowired
     private ICtopOauthTokenService oauthTokenService;
     @Autowired
-    private IReportService reportService;
-	@Autowired
     private IByteDanceCreativeService creativeService;
 	@Autowired
     private IByteDanceCampaignService campaignService;
+    @Autowired
+    private IKuaishouReportDailyAgentService kuaishouReportDailyAgentService;
 
     @Test
     public void loadBytedanceCreativeData() {
@@ -36,4 +39,12 @@ public class SampleTest {
         CtopOauthToken token = oauthTokenService.getTokenByAccountId(1673731621920840L);
        campaignService.getAdvertiserCampaign(token,null,null);
     }
+
+    @Test
+    public void loadKuaishouAgentData(){
+        for(int i=0;i<30;i++){
+            String currentDate = DateUtils.formatDate(DateUtils.addDay(new Date(),-i));
+            kuaishouReportDailyAgentService.getReport(currentDate,DateUtils.getNowDate("yyyy-MM-dd"));
+        }
+    }
 }

+ 0 - 49
jeecg-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java

@@ -1,49 +0,0 @@
-package org.jeecg;
-
-import cn.hutool.json.JSONObject;
-import org.jeecg.common.util.security.SecurityTools;
-import org.jeecg.common.util.security.entity.*;
-import org.junit.Test;
-
-public class SecurityToolsTest {
-    @Test
-    public void Test(){
-        MyKeyPair mkeyPair = SecurityTools.generateKeyPair();
-
-        JSONObject msg = new JSONObject();
-        msg.put("name", "党政辉");
-        msg.put("age", 50);
-        JSONObject identity = new JSONObject();
-        identity.put("type", "01");
-        identity.put("no", "210882165896524512");
-        msg.put("identity", identity);
-
-        // 签名加密部分
-        SecuritySignReq signReq = new SecuritySignReq();
-        // data为要加密的报文字符串
-        signReq.setData(msg.toString());
-        // 为rsa私钥
-        signReq.setPrikey(mkeyPair.getPriKey());
-        // 调用签名方法
-        SecuritySignResp sign = SecurityTools.sign(signReq);
-        // 打印出来加密数据
-        // signData为签名数据
-        // data为aes加密数据
-        // asekey为ras加密过的aeskey
-        System.out.println(new JSONObject(sign).toStringPretty());
-
-        // 验签解密部分
-        SecurityReq req = new SecurityReq();
-        //对方传过来的数据一一对应
-        req.setAesKey(sign.getAesKey());
-        req.setData(sign.getData());
-        req.setSignData(sign.getSignData());
-        //我们的公钥
-        req.setPubKey(mkeyPair.getPubKey());
-        //验签方法调用
-        SecurityResp securityResp = SecurityTools.valid(req);
-        //解密报文data为解密报文
-        //sucess 为验签成功失败标志 true代码验签成功,false代表失败
-        System.out.println(new JSONObject(securityResp).toStringPretty());
-    }
-}

+ 12 - 2
module-check/pom.xml

@@ -7,9 +7,9 @@
         <groupId>org.jeecgframework.boot</groupId>
         <version>2.0.2</version>
     </parent>
-    <groupId>com.ctop</groupId>
+    <groupId>cn.com.ctop</groupId>
     <artifactId>module-check</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>2.0.2</version>
     <name>module-check</name>
     <description>Data Check Jar</description>
 
@@ -29,6 +29,16 @@
             <artifactId>module-common</artifactId>
             <version>2.0.2</version>
         </dependency>
+        <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-kuaishou</artifactId>
+            <version>2.0.2</version>
+        </dependency>
+        <dependency>
+            <groupId>cn.com.ctop</groupId>
+            <artifactId>module-toutiao</artifactId>
+            <version>2.0.2</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 1
module-check/src/main/java/cn/com/ctop/ModuleCheckApplication.java

@@ -10,4 +10,4 @@ public class ModuleCheckApplication {
         SpringApplication.run(ModuleCheckApplication.class, args);
     }
 
-}
+}

+ 4 - 6
module-check/src/main/java/cn/com/ctop/check/TestGroovy.groovy

@@ -2,19 +2,17 @@ package cn.com.ctop.check
 
 import cn.com.ctop.check.component.basic.AbstractScript
 import cn.com.ctop.common.module.service.IRefreshTokenService
-import cn.com.ctop.common.module.service.impl.RefreshTokenServiceImpl
 import org.jeecg.common.api.vo.Result
 
 class TestGroovy extends AbstractScript {
 
-   private IRefreshTokenService refreshTokenService;
+   private IRefreshTokenService refreshTokenService
 
     @Override
     Result<Object> exec() {
-        refreshTokenService=applicationContext.getBean(RefreshTokenServiceImpl.class)
-        println("开始执行Groovy脚本")
-        refreshTokenService.byteDanceRefresh();
+        println("开始执行脚本")
+        sendWeChatHandle.SendWeChatByMail("bijiequan@c-top.com.cn","执行成功")
         println("执行完成")
         return Result.ok("666")
     }
-}
+}

+ 12 - 1
module-check/src/main/java/cn/com/ctop/check/component/basic/AbstractScript.java

@@ -1,9 +1,12 @@
 package cn.com.ctop.check.component.basic;
 
 import cn.com.ctop.check.entity.CtopCheckTaskList;
-import cn.com.ctop.notice.handle.SendWeChatHandle;
+import cn.com.ctop.notice.handler.SendWeChatHandle;
 import org.springframework.context.ApplicationContext;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 public abstract class AbstractScript implements BaseScript{
 
     protected ApplicationContext applicationContext;
@@ -12,6 +15,7 @@ public abstract class AbstractScript implements BaseScript{
 
     protected SendWeChatHandle sendWeChatHandle;
 
+    protected String todayDate;
 
     public ApplicationContext getApplicationContext() {
         return applicationContext;
@@ -34,4 +38,11 @@ public abstract class AbstractScript implements BaseScript{
     public void setSendWeChatHandle(SendWeChatHandle sendWeChatHandle) {
         this.sendWeChatHandle = sendWeChatHandle;
     }
+
+
+    public String getTodayDate() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        return format.format(new Date());
+    }
+
 }

+ 12 - 2
module-check/src/main/java/cn/com/ctop/check/component/execute/GroovyScriptExecutor.java

@@ -2,8 +2,9 @@ package cn.com.ctop.check.component.execute;
 
 import cn.com.ctop.check.component.basic.AbstractScript;
 import cn.com.ctop.check.entity.CtopCheckTaskList;
+import cn.com.ctop.check.service.ICtopCheckTaskExecuteLogService;
 import cn.com.ctop.check.service.ICtopCheckTaskListService;
-import cn.com.ctop.notice.handle.SendWeChatHandle;
+import cn.com.ctop.notice.handler.SendWeChatHandle;
 import groovy.lang.GroovyClassLoader;
 import groovy.lang.GroovyCodeSource;
 import lombok.extern.slf4j.Slf4j;
@@ -29,6 +30,8 @@ public class GroovyScriptExecutor {
 
     private final ApplicationContext applicationContext;
 
+    private final ScriptProcessLogExecutor scriptProcessLogExecutor;
+
     private final ICtopCheckTaskListService checkTaskListService;
 
     private final SendWeChatHandle  sendWeChatHandle;
@@ -36,8 +39,10 @@ public class GroovyScriptExecutor {
     private final GroovyClassLoader classLoader;
 
     @Autowired
-    public GroovyScriptExecutor(ApplicationContext applicationContext,ICtopCheckTaskListService checkTaskListService,SendWeChatHandle  sendWeChatHandle) {
+    public GroovyScriptExecutor(ApplicationContext applicationContext,ScriptProcessLogExecutor scriptProcessLogExecutor,
+                                ICtopCheckTaskListService checkTaskListService,SendWeChatHandle  sendWeChatHandle) {
         this.applicationContext=applicationContext;
+        this.scriptProcessLogExecutor=scriptProcessLogExecutor;
         this.checkTaskListService = checkTaskListService;
         this.sendWeChatHandle=sendWeChatHandle;
         this.classLoader = new GroovyClassLoader();
@@ -66,6 +71,7 @@ public class GroovyScriptExecutor {
         GroovyCodeSource groovyCodeSource = getGroovyCodeSource(taskList);
         Result<Object> response = null;
         try {
+            long start=System.currentTimeMillis();
             Class scriptClass = this.classLoader.parseClass(groovyCodeSource);
             Object instance = scriptClass.newInstance();
             if (instance instanceof AbstractScript) {
@@ -75,10 +81,14 @@ public class GroovyScriptExecutor {
                 scriptInstance.setCtopCheckTaskList(taskList);
                 response = scriptInstance.exec();
             } else {
+                scriptProcessLogExecutor.insertLogExecute(taskList,0L,0L,false,false);
                 log.error("script script should extends Abstractscript.");
                 response=Result.error("script script should extends Abstractscript.");
             }
+            long end=System.currentTimeMillis();
+            scriptProcessLogExecutor.insertLogExecute(taskList,start,end);
         } catch (InstantiationException | IllegalAccessException | CompilationFailedException e) {
+            scriptProcessLogExecutor.insertLogExecute(taskList,0L,0L,false,false);
             log.error("Error execute check task script. ", e);
             response=Result.error("Error execute check task script. "+e.getMessage());
         }

+ 60 - 0
module-check/src/main/java/cn/com/ctop/check/component/execute/ScriptProcessLogExecutor.java

@@ -0,0 +1,60 @@
+package cn.com.ctop.check.component.execute;
+
+import cn.com.ctop.check.entity.CtopCheckTaskExecuteLog;
+import cn.com.ctop.check.entity.CtopCheckTaskList;
+import cn.com.ctop.check.service.ICtopCheckTaskExecuteLogService;
+import cn.com.ctop.notice.handler.SendWeChatHandle;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * Created by JQ.bi on 2020.8.18
+ */
+@Component
+public class ScriptProcessLogExecutor {
+
+    private final ICtopCheckTaskExecuteLogService checkTaskExecuteLogService;
+
+    private final SendWeChatHandle sendWeChatHandle;
+
+    @Autowired
+    public ScriptProcessLogExecutor(ICtopCheckTaskExecuteLogService checkTaskExecuteLogService, SendWeChatHandle sendWeChatHandle) {
+        this.checkTaskExecuteLogService = checkTaskExecuteLogService;
+        this.sendWeChatHandle = sendWeChatHandle;
+    }
+
+     void insertLogExecute(CtopCheckTaskList checkTaskList, Long startDate, Long endDate) {
+        boolean save = this.insertLog(checkTaskList.getId(), startDate, endDate, true, true);
+        if (!save) {
+            sendWeChat(checkTaskList.getMail());
+        }
+    }
+
+     void insertLogExecute(CtopCheckTaskList checkTaskList, Long startDate, Long endDate, boolean exeState) {
+        boolean save = this.insertLog(checkTaskList.getId(), startDate, endDate, exeState, true);
+        if (!save) {
+            sendWeChat(checkTaskList.getMail());
+        }
+    }
+
+     void insertLogExecute(CtopCheckTaskList checkTaskList, Long startDate, Long endDate, boolean exeState, boolean notify) {
+        boolean save = this.insertLog(checkTaskList.getId(), startDate, endDate, exeState, notify);
+        if (!save) {
+            sendWeChat(checkTaskList.getMail());
+        }
+    }
+
+    private boolean insertLog(int taskId, Long startDate, Long endDate, boolean exeState, boolean notify) {
+        CtopCheckTaskExecuteLog ctopCheckTaskExecuteLog = new CtopCheckTaskExecuteLog();
+        ctopCheckTaskExecuteLog.setCheckTaskId(taskId);
+        ctopCheckTaskExecuteLog.setStartDate(startDate);
+        ctopCheckTaskExecuteLog.setEndDate(endDate);
+        ctopCheckTaskExecuteLog.setExeResult(exeState);
+        ctopCheckTaskExecuteLog.setNotifyState(notify);
+        return checkTaskExecuteLogService.save(ctopCheckTaskExecuteLog);
+    }
+
+    private void sendWeChat(String mail) {
+        sendWeChatHandle.SendWeChatByMail(mail, "检查数据服务日志处理失败");
+    }
+}

+ 1 - 1
module-check/src/main/java/cn/com/ctop/check/controller/CtopCheckTaskListController.java

@@ -20,7 +20,7 @@ import javax.servlet.http.HttpServletRequest;
 @Slf4j
 @RestController
 @RequestMapping("/ctop/checkTaskList")
-public class CtopCheckTaskListController {
+public class  CtopCheckTaskListController {
 
     @Autowired
     private ICtopCheckTaskListService ctopCheckTaskListService;

+ 0 - 18
module-check/src/main/java/cn/com/ctop/check/script/CheckTokenExecuteStateScript.groovy

@@ -1,18 +0,0 @@
-package cn.com.ctop.check.script
-
-import cn.com.ctop.check.component.basic.AbstractScript
-import cn.com.ctop.common.module.service.ICtopOauthTokenService
-import cn.com.ctop.common.module.service.impl.CtopOauthTokenServiceImpl
-import org.jeecg.common.api.vo.Result
-
-class CheckTokenExecuteStateScript extends AbstractScript{
-
-    private ICtopOauthTokenService ctopOauthTokenService
-
-    @Override
-    Result<Object> exec() {
-        ctopOauthTokenService=applicationContext.getBean(CtopOauthTokenServiceImpl.class)
-
-        return null
-    }
-}

+ 26 - 1
module-check/src/main/java/cn/com/ctop/check/script/TestGroovyScript.java

@@ -2,12 +2,28 @@ package cn.com.ctop.check.script;
 
 import cn.com.ctop.check.component.execute.GroovyScriptExecutor;
 import cn.com.ctop.check.service.ICtopCheckTaskListService;
+import cn.com.ctop.common.module.entity.CtopOauthToken;
+import cn.com.ctop.common.module.entity.UserAllocation;
+import cn.com.ctop.common.module.service.ICtopOauthTokenService;
+import cn.com.ctop.common.module.service.IUserAllocationService;
+import cn.com.ctop.kuaishou.modules.report.mapper.AccountReportMapper;
+import cn.com.ctop.toutiao.modules.report.mapper.BytedanceAccountReportMapper;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.checkerframework.checker.units.qual.A;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.SystemDateConstant;
+import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
 @RestController
 @RequestMapping("/rest/script")
 public class TestGroovyScript {
@@ -16,11 +32,20 @@ public class TestGroovyScript {
     ICtopCheckTaskListService checkTaskListService;
 
     @Autowired
+    ICtopOauthTokenService ctopOauthTokenService;
+
+    @Autowired
     GroovyScriptExecutor groovyScriptExecutor;
+    @Autowired
+    private IUserAllocationService userAllocationService;
+    @Autowired
+    private BytedanceAccountReportMapper byteDanceAccountReportMapper;
+    @Autowired
+    private AccountReportMapper ksAccountReportMapper;
 
     @GetMapping("/test")
     public Result testGroovy(){
-        groovyScriptExecutor.execute(1,"TestGroovy");
+         groovyScriptExecutor.execute(1,"CheckTokenExecuteStateScript");
         return Result.ok();
     }
 }

+ 4 - 6
module-check/src/main/java/cn/com/ctop/notice/handle/SendWeChatHandle.java

@@ -1,7 +1,7 @@
-package cn.com.ctop.notice.handle;
+package cn.com.ctop.notice.handler;
 
 import cn.com.ctop.common.module.mapper.MailLogMapper;
-import cn.com.ctop.common.module.service.ISendMessageService;
+import cn.com.ctop.common.module.utils.CorpWexinUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -12,18 +12,16 @@ public class SendWeChatHandle {
 
     @Autowired
     MailLogMapper mailLogMapper;
-    @Autowired
-    ISendMessageService sendMessageService;
 
     public boolean SendWeChatByMail(String mail,String message){
         boolean result=true;
         String weChatId=mailLogMapper.getWeChatByMail(mail);
         if(weChatId.isEmpty()){
-            log.error("mail's wechat not found. mail =%s", mail);
+            log.error(String.format("mail's WeChat not found. mail =%s", mail));
             //TODO 通知管理员添加邮箱
             result=false;
         }else{
-            sendMessageService.sendMessage(weChatId,message);
+            CorpWexinUtils.sendMessageByWeChatId(weChatId,message);
         }
         return result;
     }

+ 0 - 1
module-common/src/main/java/cn/com/ctop/common/module/utils/CorpWexinUtils.java

@@ -55,7 +55,6 @@ public class CorpWexinUtils {
         if (wxCpService == null) {
             initService();
         }
-
         if (!Check.isNull(weChatId)) {
             WxCpMessage message = new WxCpMessage();
             message.setMsgType("text");

+ 2 - 2
module-job-bytedance/pom.xml

@@ -142,9 +142,9 @@
             <version>2.0.2</version>
         </dependency>
         <dependency>
-            <groupId>com.ctop</groupId>
+            <groupId>cn.com.ctop</groupId>
             <artifactId>module-check</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
+            <version>2.0.2</version>
             <scope>compile</scope>
         </dependency>
     </dependencies>

+ 36 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckDataStateJob.java

@@ -0,0 +1,36 @@
+package cn.com.ctop.job.bytedance.handler;
+
+import cn.com.ctop.check.component.execute.GroovyScriptExecutor;
+import cn.com.ctop.check.entity.CtopCheckTaskList;
+import cn.com.ctop.check.service.ICtopCheckTaskListService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class CheckDataStateJob {
+
+    @Autowired
+    private GroovyScriptExecutor groovyScriptExecutor;
+
+    @Autowired
+    private ICtopCheckTaskListService checkTaskListService;
+
+    private final String jobName="checkDataStateJob";
+
+    /**
+     * 检查任务执行结果
+     */
+    @XxlJob(jobName)
+    public ReturnT<String> execute() throws Exception {
+        //查询需要检查的任务列表
+        List<CtopCheckTaskList> ctopCheckTaskList= checkTaskListService.queryExecuteList(jobName);
+        if(!ctopCheckTaskList.isEmpty()){
+            ctopCheckTaskList.forEach(it-> groovyScriptExecutor.execute(it));
+        }
+        return ReturnT.SUCCESS;
+    }
+}

+ 36 - 0
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckExecuteStateJob.java

@@ -0,0 +1,36 @@
+package cn.com.ctop.job.bytedance.handler;
+
+import cn.com.ctop.check.component.execute.GroovyScriptExecutor;
+import cn.com.ctop.check.entity.CtopCheckTaskList;
+import cn.com.ctop.check.service.ICtopCheckTaskListService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class CheckExecuteStateJob {
+
+    @Autowired
+    private GroovyScriptExecutor groovyScriptExecutor;
+
+    @Autowired
+    private ICtopCheckTaskListService checkTaskListService;
+
+    private final String jobName="checkExecuteStateJob";
+
+    /**
+     * 检查任务执行结果
+     */
+    @XxlJob(jobName)
+    public ReturnT<String> execute() throws Exception {
+        //查询需要检查的任务列表
+        List<CtopCheckTaskList> ctopCheckTaskList= checkTaskListService.queryExecuteList(jobName);
+        if(!ctopCheckTaskList.isEmpty()){
+            ctopCheckTaskList.forEach(it-> groovyScriptExecutor.execute(it));
+        }
+        return ReturnT.SUCCESS;
+    }
+}

+ 2 - 20
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/job/KuaishouReportAgentJob.java

@@ -1,28 +1,13 @@
 package cn.com.ctop.kuaishou.modules.report.job;
-import cn.com.ctop.common.module.utils.HttpUtils2;
-import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyAgent;
+
 import cn.com.ctop.kuaishou.modules.report.service.IKuaishouReportDailyAgentService;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.http.client.CookieStore;
-import org.apache.http.impl.client.BasicCookieStore;
-import org.apache.http.impl.cookie.BasicClientCookie;
 import org.jeecg.common.util.DateUtils;
-import org.openqa.selenium.By;
-import org.openqa.selenium.Cookie;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.chrome.ChromeDriver;
-import org.openqa.selenium.chrome.ChromeOptions;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 
-import java.math.BigDecimal;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.Date;
 
 public class KuaishouReportAgentJob implements Job {
 
@@ -32,8 +17,5 @@ public class KuaishouReportAgentJob implements Job {
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
         String currentDate = DateUtils.formatDate(DateUtils.addDay(new Date(),-1));
         kuaishouReportDailyAgentService.getReport(currentDate,DateUtils.getNowDate("yyyy-MM-dd"));
-
-//        kuaishouReportDailyAgentService.getReport("2019-12-12","2020-03-05");
-
     }
 }

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

@@ -33,6 +33,7 @@ public interface AccountReportMapper {
      */
     JSONObject selectDayReport(@Param("date") String date, @Param("accountIds") JSONArray accountIds);
 
+    JSONObject selectDayReportByAccount(@Param("date") String date, @Param("accountId") Long accountId);
 
     /**
      * 查询明细

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

@@ -262,6 +262,17 @@
         </foreach>
     </select>
 
+    <select id="selectDayReportByAccount" resultType="com.alibaba.fastjson.JSONObject">
+        select
+        sum(charge) cost,
+        sum(photo_show) photoShow,
+        sum(photo_click) photoClick,
+        sum(aclick) aclick
+        from
+        ctop_kuaishou_report_daily_account
+        where stat_date = #{date}
+        and account_id = #{accountId}
+    </select>
 
     <select id="selectByDate" resultType="com.alibaba.fastjson.JSONObject">
         select

+ 2 - 1
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/report/service/impl/KuaishouReportDailyAgentServiceImpl.java

@@ -80,7 +80,7 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
             accountElement.sendKeys("17718376864");
             Thread.sleep(3000L);
             WebElement passwordElement = webDriver.findElement(By.xpath("//div[@class='password ']/input[@type='password']"));
-            passwordElement.sendKeys("hcstbaoliang567");
+            passwordElement.sendKeys("yehcbost85567");
             WebElement loginElement = webDriver.findElement(By.xpath("//div[@class='foot']"));
             Thread.sleep(3000L);
             //点击登录
@@ -191,6 +191,7 @@ public class KuaishouReportDailyAgentServiceImpl extends ServiceImpl<KuaishouRep
                 String listUrl = "https://agent.e.kuaishou.com/rest/dsp/agent/account/data/list";
                 String postData = "{\"agentId\":403756224,\"startDate\":\"" + currentDate + "\",\"endDate\":\"" + currentDate + "\",\"isAscending\":false,\"pageInfo\":{\"pageSize\":19,\"currentPage\":1,\"totalCount\":999999}}";
                 String result = HttpUtils2.httpPostRequestTest(listUrl, postData, headerMap);
+                System.out.println(result);
                 ObjectMapper mapper = new ObjectMapper();
                 JsonNode resultNode = mapper.readTree(result);
                 Integer code = resultNode.get("result").intValue();

+ 6 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/batch/controller/ByteDanceBatchController.java

@@ -48,6 +48,12 @@ public class ByteDanceBatchController {
         return fileInfoService.getCreativeWords(accountId);
     }
 
+    /**
+     * 行动号召按钮
+     * @param accountId
+     * @param landType
+     * @return
+     */
     @GetMapping("action/text")
     public Map<String,Object>getActionText(Long accountId,String landType){
         return fileInfoService.getActionText(accountId,landType);

+ 8 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/controller/ByteDanceCreativeController.java

@@ -6,6 +6,7 @@ import cn.com.ctop.common.module.utils.StatusCode;
 import cn.com.ctop.common.module.utils.StringUtils;
 import cn.com.ctop.toutiao.modules.material.entity.ByteDanceCreative;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -152,9 +153,9 @@ public class ByteDanceCreativeController {
     }
 
     @PostMapping("/detail")
-    public Map<String,Object>creativeDetail(@RequestParam(name = "adId",required = true,defaultValue = "0") Long adId,
+    public Map<String,Object>creativeDetail(@RequestParam(name = "planId",required = true,defaultValue = "0") Long planId,
                                             @RequestParam(name = "accountId",required = true,defaultValue = "0") Long accountId){
-        return byteDanceCreativeService.getCreativeDetail(accountId,adId);
+        return byteDanceCreativeService.getCreativeDetail(accountId,planId);
     }
 
     /**
@@ -216,4 +217,9 @@ public class ByteDanceCreativeController {
         }
         return result;
     }
+
+    @PostMapping("/updateCreative")
+    public Map<String,Object>updateCreative(@RequestBody JSONObject data){
+        return byteDanceCreativeService.updateCreative(data);
+    }
 }

+ 2 - 2
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/IByteDanceCreativeService.java

@@ -24,9 +24,9 @@ public interface IByteDanceCreativeService extends IService<ByteDanceCreative> {
 
     void replaceBatch(List<ByteDanceCreative> creatives);
 
-    Map<String, Object> getCreativeDetail(Long accountId, Long adId);
+    Map<String, Object> getCreativeDetail(Long accountId, Long planId);
 
-    Map<String,Object> updateCreative(Long accountId, JSONObject data);
+    Map<String,Object> updateCreative(JSONObject data);
 
     Map<String,Object> getCreativeRejectReason(Long accountId, Long creativeId);
 

+ 350 - 26
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/material/service/impl/ByteDanceCreativeServiceImpl.java

@@ -190,6 +190,9 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             resultMap.put("message", "广告计划("+adId+"):"+message);
             return resultMap;
         }
+        Thread thread = new Thread(()->getAdvertiserCreative(token, null, null));
+        thread.start();
+
         resultMap.put("success", true);
         resultMap.put("code", 0);
         resultMap.put("message", "广告计划("+adId+"):"+"创意创建成功");
@@ -200,9 +203,9 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
      * @return
      */
     @Override
-    public Map<String, Object> getCreativeDetail(Long accountId, Long adId){
+    public Map<String, Object> getCreativeDetail(Long accountId, Long planId){
         Map<String,Object>resultMap = new HashMap<>();
-        if(null == adId||adId == 0||null == accountId||accountId == 0){
+        if(null == planId||planId == 0||null == accountId||accountId == 0){
             ResultMapUtils.setResultMap(resultMap,StatusCode.COMMON_PARAM_ERROR);
             return resultMap;
         }
@@ -211,7 +214,7 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             ResultMapUtils.setResultMap(resultMap,StatusCode.BYTEDANCE_PLAN_DATA_NOT_EXIST);
             return resultMap;
         }
-        ByteDanceAdvertisePlan plan = byteDanceAdvertisePlanService.getById(adId);
+        ByteDanceAdvertisePlan plan = byteDanceAdvertisePlanService.getById(planId);
         if(null == plan||plan.getOptStatus().equals("AD_STATUS_DELETE")){
             ResultMapUtils.setResultMap(resultMap,StatusCode.BYTEDANCE_ACCOUNT_DATA_NOT_EXIST);
             return resultMap;
@@ -222,11 +225,27 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         // 请求参数
         JSONObject data = new JSONObject();
         data.put("advertiser_id", token.getAccountId());
-        data.put("ad_id",adId);
+        data.put("ad_id",planId);
         JSONObject result = HttpUtils.bytedanceGetRequest(token.getAccessToken(),url,data);
+        System.out.println(result);
         Integer code = result.getInteger("code");
         String message = result.getString("message");
-        if (null == code || code != 0) {
+        if (null ==  code) {
+            log.info("广告创意获取详情失败,accountId:{},message:{}", accountId, message);
+            resultMap.put("success", false);
+            resultMap.put("code", -1);
+            resultMap.put("message", message);
+            return resultMap;
+        }
+        if(code == 40001){
+            //尚未创建创意
+            resultMap.put("success", true);
+            resultMap.put("code", 0);
+            result.put("data","");
+            resultMap.put("message", message);
+            return resultMap;
+        }
+        if(code!=0){
             log.info("广告创意获取详情失败,accountId:{},message:{}", accountId, message);
             resultMap.put("success", false);
             resultMap.put("code", -1);
@@ -241,34 +260,332 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
 
     private JSONObject formatData(JSONObject getData) {
         JSONObject data = new JSONObject();
+        Long advertiserId = getData.getLong("advertiser_id");
+        if(null!=advertiserId&&advertiserId!=0){
+            data.put("advertiserId",advertiserId);
+        }
+        Long adId = getData.getLong("ad_id");
+        if(null!=adId&&adId!=0){
+            data.put("adId",adId);
+        }
+        String modifyTime = getData.getString("modify_time");
+        if(null!=modifyTime&&!modifyTime.trim().equals("")){
+            data.put("modifyTime",modifyTime);
+        }
+        String trackUrl = getData.getString("track_url");
+        if(null!=trackUrl&&!trackUrl.trim().equals("")){
+            data.put("trackUrl",trackUrl);
+        }
+        String actionTrackUrl = getData.getString("action_track_url");
+        if(null!=actionTrackUrl&&!actionTrackUrl.trim().equals("")){
+            data.put("actionTrackUrl",actionTrackUrl);
+        }
+        String videoPlayEffectiveTrackUrl = getData.getString("video_play_effective_track_url");
+        if(null!=videoPlayEffectiveTrackUrl&&!videoPlayEffectiveTrackUrl.trim().equals("")){
+            data.put("video_play_effective_track_url",videoPlayEffectiveTrackUrl);
+        }
+        String videoPlayDoneTrackUrl = getData.getString("video_play_done_track_url");
+        if(null!=videoPlayDoneTrackUrl&&!videoPlayDoneTrackUrl.trim().equals("")){
+            data.put("video_play_done_track_url",videoPlayDoneTrackUrl);
+        }
+        String videoPlayTrackUrl = getData.getString("video_play_track_url");
+        if(null!=videoPlayTrackUrl&&!videoPlayTrackUrl.trim().equals("")){
+            data.put("videoPlayTrackUrl",videoPlayTrackUrl);
+        }
+        Integer isCommentDisable = getData.getInteger("is_comment_disable");
+        if(null!=isCommentDisable){
+            data.put("isCommentDisable",isCommentDisable);
+        }
+        Integer closeVideoDetail = getData.getInteger("close_video_detail");
+        if(null!=closeVideoDetail){
+            data.put("closeVideoDetail",closeVideoDetail);
+        }
+        String creativeDisplayMode = getData.getString("creative_display_mode");
+        if(null!=creativeDisplayMode&&!creativeDisplayMode.trim().equals("")){
+            data.put("creativeDisplayMode",creativeDisplayMode);
+        }
+        Long smartInventory = getData.getLong("smart_inventory");
+        if(null!=smartInventory&&smartInventory!=0){
+            data.put("smartInventory",smartInventory);
+        }
+        String sceneInventory = getData.getString("scene_inventory");
+        if(null!=sceneInventory&&!sceneInventory.trim().equals("")){
+            data.put("sceneInventory",sceneInventory);
+        }
+        Long generateDerivedAd = getData.getLong("generate_derived_ad");
+        if(null!=generateDerivedAd&&generateDerivedAd!=0){
+            data.put("generateDerivedAd",generateDerivedAd);
+        }
+        JSONArray inventoryType = getData.getJSONArray("inventory_type");
+        if(null!=inventoryType&&!inventoryType.isEmpty()){
+            data.put("inventoryType",inventoryType);
+        }
+        String source = getData.getString("source");
+        if(null!=source&&!source.trim().equals("")){
+            data.put("source",source);
+        }
+        String appName = getData.getString("app_name");
+        if(null!=appName&&!appName.trim().equals("")){
+            data.put("appName",appName);
+        }
+        String webUrl = getData.getString("web_url");
+        if(null!=webUrl&&!webUrl.trim().equals("")){
+            data.put("webUrl",webUrl);
+        }
+        JSONArray adKeywords = getData.getJSONArray("ad_keywords");
+        if(null!=adKeywords&&!adKeywords.isEmpty()){
+            data.put("adKeywords",adKeywords);
+        }
+        Long thirdIndustryId = getData.getLong("third_industry_id");
+        if(null!=thirdIndustryId&&thirdIndustryId!=0){
+            data.put("thirdIndustryId",thirdIndustryId);
+        }
+        String advancedCreativeType = getData.getString("advanced_creative_type");
+        if(null!=advancedCreativeType&&!advancedCreativeType.trim().equals("")){
+            data.put("advancedCreativeType",advancedCreativeType);
+        }
+        String advancedCreativeTitle = getData.getString("advanced_creative_title");
+        if(null!=advancedCreativeTitle&&!advancedCreativeTitle.trim().equals("")){
+            data.put("advancedCreativeTitle",advancedCreativeTitle);
+        }
+        String phoneNumber = getData.getString("phone_number");
+        if(null!=phoneNumber&&!phoneNumber.trim().equals("")){
+            data.put("phoneNumber",phoneNumber);
+        }
+        String buttonText = getData.getString("button_text");
+        if(null!=buttonText&&!buttonText.trim().equals("")){
+            data.put("buttonText",buttonText);
+        }
+        String actionText = getData.getString("action_text");
+        if(null!=actionText&&!actionText.trim().equals("")){
+            data.put("actionText",actionText);
+        }
+        String formUrl = getData.getString("form_url");
+        if(null!=formUrl&&!formUrl.trim().equals("")){
+            data.put("formUrl",formUrl);
+        }
+        String creativeMaterialMode = getData.getString("creative_material_mode");
+        if(null!=creativeMaterialMode&&!creativeMaterialMode.trim().equals("")){
+            data.put("creativeMaterialMode",creativeMaterialMode);
+        }
+        String iesCoreUserId = getData.getString("ies_core_user_id");
+        if(null!=iesCoreUserId&&!iesCoreUserId.trim().equals("")){
+            data.put("iesCoreUserId",iesCoreUserId);
+        }
+        Long isFeedAndFavSee = getData.getLong("is_feed_and_fav_see");
+        if(null!=isFeedAndFavSee){
+            data.put("isFeedAndFavSee",isFeedAndFavSee);
+        }
+        JSONArray commerceCards = getData.getJSONArray("commerce_cards");
+        if(null!=commerceCards&&!commerceCards.isEmpty()){
+            data.put("commerceCards",commerceCards);
+        }
+        String playableUrl = getData.getString("playable_url");
+        if(null!=playableUrl&&!playableUrl.trim().equals("")){
+            data.put("playableUrl",playableUrl);
+        }
+        Long proceduralPackageId = getData.getLong("procedural_package_id");
+        if(null!=proceduralPackageId&&proceduralPackageId!=0){
+            data.put("proceduralPackageId",proceduralPackageId);
+        }
+        Long proceduralPackageVersion = getData.getLong("procedural_package_version");
+        if(null!=proceduralPackageVersion&&proceduralPackageVersion!=0){
+            data.put("proceduralPackageVersion",proceduralPackageVersion);
+        }
+        Long isPresentedVideo = getData.getLong("is_presented_video");
+        if(null!=isPresentedVideo){
+            data.put("isPresentedVideo",isPresentedVideo);
+        }
+        String subTitle = getData.getString("sub_title");
+        if(null!=subTitle&&!subTitle.trim().equals("")){
+            data.put("subTitle",subTitle);
+        }
+        Long creativeAutoGenerateSwitch = getData.getLong("creative_auto_generate_switch");
+        if(null!=creativeAutoGenerateSwitch){
+            data.put("creativeAutoGenerateSwitch",creativeAutoGenerateSwitch);
+        }
+        String trackUrlSendType = getData.getString("track_url_send_type");
+        if(null!=trackUrlSendType&&!trackUrlSendType.trim().equals("")){
+            data.put("trackUrlSendType",trackUrlSendType);
+        }
+        JSONArray subLinkIdList = getData.getJSONArray("sub_link_id_list");
+        if(null!=subLinkIdList&&!subLinkIdList.isEmpty()){
+            data.put("subLinkIdList",subLinkIdList);
+        }
+        JSONArray titleList = getData.getJSONArray("title_list");
+        if(null!=titleList&&!titleList.isEmpty()){
+            JSONArray titleArray = new JSONArray();
+            for (int i=0;i<titleList.size();i++){
+                JSONObject title = titleList.getJSONObject(i);
+                JSONArray creativeWordIds = title.getJSONArray("creative_word_ids");
+                JSONArray dpaDictIds = title.getJSONArray("dpa_dict_ids");
+                title.remove("creative_word_ids");
+                title.remove("dpa_dict_ids");
+                title.put("creativeWordIds",creativeWordIds);
+                title.put("dpaDictIds",dpaDictIds);
+                titleArray.add(title);
+            }
+            data.put("titleList",titleArray);
+        }
+        JSONArray imageList = getData.getJSONArray("image_list");
+        if(null!=imageList&&!imageList.isEmpty()){
+            JSONArray imageArray = new JSONArray();
+            for (int i=0;i<imageList.size();i++){
+                JSONObject getImage = imageList.getJSONObject(i);
+                JSONObject setImage = new JSONObject();
+                String imageMode = getImage.getString("image_mode");
+                setImage.put("imageMode",imageMode);
+                String imageId = getImage.getString("image_id");
+                if(null!=imageId&&!imageId.trim().equals("")){
+                    setImage.put("imageId",imageId);
+                    setImage.put("imageUrl","https://sf6-ttcdn-tos.pstatp.com/obj/mosaic-legacy/"+imageId);
+                }
+                String videoId = getImage.getString("video_id");
+                if(null!=videoId&&!videoId.trim().equals("")){
+                    setImage.put("videoId",videoId);
+                    setImage.put("videoUrl","https://aweme.snssdk.com/aweme/v1/playwm/?video_id="+videoId+"&line=0");
+                }
+                JSONArray imageIds = getImage.getJSONArray("image_ids");
+                if(null!=imageIds&&!imageIds.isEmpty()){
+                    setImage.put("imageIds",imageIds);
+                }
+                String templateId = getImage.getString("template_id");
+                if(null!=templateId&&!templateId.trim().equals("")){
+                    setImage.put("templateId",templateId);
+                }
+                imageArray.add(setImage);
+            }
+            data.put("imageList",imageArray);
+        }
+        JSONArray creativeList = getData.getJSONArray("creatives");
+        if(null!=creativeList&&!creativeList.isEmpty()){
+            JSONArray creativeArray = new JSONArray();
+            for (int i=0;i<creativeList.size();i++){
+                JSONObject getCreative = creativeList.getJSONObject(i);
+                JSONObject setCreative = new JSONObject();
+                String creative_id = getCreative.getString("creative_id");
+                if(null!=creative_id&&!creative_id.trim().equals("")){
+                    setCreative.put("creative_id",creative_id);
+                }
+                String title = getCreative.getString("title");
+                if(null!=title&&!title.trim().equals("")){
+                    setCreative.put("title",title);
+                }
+                JSONArray creativeWordIds = getCreative.getJSONArray("creative_word_ids");
+                if(null!=creativeWordIds&&!creativeWordIds.isEmpty()){
+                    setCreative.put("creativeWordIds",creativeWordIds);
+                }
+                JSONArray dpaDictIds = getCreative.getJSONArray("dpa_dict_ids");
+                if(null!=dpaDictIds&&!dpaDictIds.isEmpty()){
+                    setCreative.put("dpaDictIds",dpaDictIds);
+                }
+                String imageMode = getCreative.getString("image_mode");
+                if(null!=imageMode&&!imageMode.trim().equals("")){
+                    setCreative.put("imageMode",imageMode);
+                }
+                JSONArray imageIds = getCreative.getJSONArray("imageIds");
+                if(null!=imageIds&&!imageIds.isEmpty()){
+                    setCreative.put("imageIds",imageIds);
+                }
+                String imageId = getCreative.getString("image_id");
+                if(null!=imageId&&!imageId.trim().equals("")){
+                    setCreative.put("imageId",imageId);
+                    setCreative.put("imageUrl","https://sf6-ttcdn-tos.pstatp.com/obj/mosaic-legacy/"+imageId);
+                }
+                String videoId = getCreative.getString("video_id");
+                if(null!=videoId&&!videoId.trim().equals("")){
+                    setCreative.put("videoId",videoId);
+                    setCreative.put("videoUrl","https://aweme.snssdk.com/aweme/v1/playwm/?video_id="+videoId+"&line=0");
+                }
+                String thirdPartyId = getCreative.getString("third_party_id");
+                if(null!=thirdPartyId&&!thirdPartyId.trim().equals("")){
+                    setCreative.put("thirdPartyId",thirdPartyId);
+                }
+                Long derivePosterCid = getCreative.getLong("derive_poster_cid");
+                if(null!=derivePosterCid){
+                    setCreative.put("derivePosterCid",derivePosterCid);
+                }
+                Integer templateId = getCreative.getInteger("template_id");
+                if(null!=templateId){
+                    setCreative.put("templateId",templateId);
+                }
+                String templateImageId = getCreative.getString("template_image_id");
+                if(null!=templateImageId&&!templateImageId.trim().equals("")){
+                    setCreative.put("templateImageId",templateImageId);
+                }
+                Long dpaTemplate = getCreative.getLong("dpa_template");
+                if(null!=dpaTemplate){
+                    setCreative.put("dpaTemplate",dpaTemplate);
+                }
+                String dpaVideoTemplateType = getCreative.getString("dpa_video_template_type");
+                if(null!=dpaVideoTemplateType&&!dpaVideoTemplateType.trim().equals("")){
+                    setCreative.put("dpaVideoTemplateType",dpaVideoTemplateType);
+                }
+                JSONArray dpaVideoTaskIds = getCreative.getJSONArray("dpa_video_task_ids");
+                if(null!=dpaVideoTaskIds&&!dpaVideoTaskIds.isEmpty()){
+                    setCreative.put("dpaVideoTaskIds",dpaVideoTaskIds);
+                }
+                creativeArray.add(setCreative);
+            }
+            data.put("creatives",creativeArray);
+        }
+
         return data;
     }
 
     /**
-     * TODO 后续需要拼接参数
-     * @param accountId
      * @param data
      * @return
      */
     @Override
-    public Map<String,Object> updateCreative(Long accountId,JSONObject data){
-        Map<String,Object>resultMap = new HashMap<>();
+    public Map<String,Object> updateCreative(JSONObject data){
+        log.info(data.toJSONString());
+        Map<String,Object>result = new HashMap<>();
+        Long accountId = data.getLong("accountId");
         CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
+        if(null == token){
+            ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        JSONArray planIdArray = data.getJSONArray("adIds");
+        if(null == planIdArray||planIdArray.isEmpty()){
+            ResultMapUtils.setResultMap(result,StatusCode.COMMON_PARAM_ERROR);
+            return result;
+        }
+        data.remove("adIds");
+        data.put("adId",planIdArray.getLong(0));
+        JSONObject detail = (JSONObject) this.getCreativeDetail(accountId,planIdArray.getLong(0)).get("data");
+        String modifyTime = detail.getString("modifyTime");
+        data.put("modifyTime",modifyTime);
+        JSONObject params = initParams(data);
+        JSONArray array = new JSONArray();
+        Map<String,Object> getData = updateCreative(token,params,planIdArray.getLong(0));
+        array.add(getData);
+        result.put("data",array);
+        ResultMapUtils.setResultMap(result, StatusCode.COMMON_SUCCESS);
+        return result;
+    }
+
+    public Map<String,Object>updateCreative(CtopOauthToken token,JSONObject params,Long adId){
+        Map<String, Object> result = new HashMap<>();
         // 请求地址
         String url = PropertiesUtils.getValue("bytedance_config", "bytedance_api_url") + PropertiesUtils.getValue("bytedance_config", "bytedance_v2_creative_update");
-        JSONObject result = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,data);
-        Integer code = result.getInteger("code");
-        String message = result.getString("message");
+        JSONObject dataObject = HttpUtils.bytedancePostRequest(token.getAccessToken(),url,params);
+        Integer code = dataObject.getInteger("code");
+        String message = dataObject.getString("message");
         if (null == code || code != 0) {
-            log.info("广告创意更新失败,accountId:{},message:{}", accountId, message);
-            resultMap.put("success", false);
-            resultMap.put("code", -1);
-            resultMap.put("message", message);
-            return resultMap;
+            log.info("广告创意更新失败,accountId:{},message:{}", token.getAccountId(), message);
+            result.put("success", false);
+            result.put("code", -1);
+            result.put("message", message);
+            return result;
         }
-        resultMap.put("data",result.getJSONObject("data"));
-        ResultMapUtils.setResultMap(resultMap, StatusCode.COMMON_SUCCESS);
-        return resultMap;
+        Thread thread = new Thread(()->getAdvertiserCreative(token,null, DateUtils.formatDate()));
+        thread.start();
+        result.put("success", true);
+        result.put("code", 0);
+        result.put("message", "广告计划("+adId+"):"+"创意更新成功");
+        return result;
     }
 
     @Override
@@ -320,7 +637,8 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
             Map<String,Object> getData = creativeCreate(accountId+"",planIds.getLong(i),params);
             array.add(getData);
         }
-        getAdvertiserCreative(token,null, DateUtils.formatDate());
+        Thread thread = new Thread(()->getAdvertiserCreative(token,null, DateUtils.formatDate()));
+        thread.start();
         result.put("data",array);
         ResultMapUtils.setResultMap(result,StatusCode.COMMON_SUCCESS);
         return result;
@@ -331,6 +649,12 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
         JSONObject params = new JSONObject();
         String creativeWay = data.getString("creativeWay");
         params.put("advertiser_id",data.getLong("accountId"));
+        Long adId = data.getLong("adId");
+        if(null!=adId&&adId!=0){
+            params.put("ad_id",adId);
+        }
+        String modifyTime = data.getString("modifyTime");
+        params.put("modify_time",modifyTime);
         //###############公共参数开始################################
         //优选广告位
         Integer smartInventory = data.getInteger("smartInventory");
@@ -560,11 +884,11 @@ public class ByteDanceCreativeServiceImpl extends ServiceImpl<ByteDanceCreativeM
                     if(null!=dpaDictIds&&!dpaDictIds.isEmpty()){
                         creativeObject.put("dpa_dict_ids",dpaDictIds);
                     }
-                    String text = creativeObject.getString("text");
-                    creativeObject.remove("text");
-                    if(null!=text&&!"".equals(text.trim())){
-                        creativeObject.put("title",text);
-                    }
+//                    String text = creativeObject.getString("title");
+//                    creativeObject.remove("text");
+//                    if(null!=text&&!"".equals(text.trim())){
+//                        creativeObject.put("title",text);
+//                    }
                     Integer derivePosterCid = creativeObject.getInteger("derivePosterCid");
                     creativeObject.remove("derivePosterCid");
                     if(null!=derivePosterCid&&derivePosterCid!=0){

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

@@ -12,6 +12,8 @@ public interface BytedanceAccountReportMapper {
     //今日汇总数据
     JSONObject queryTodaySumReportBy(@Param("statDate") String statDate,@Param("accountIds")  JSONArray accountIds);
 
+    JSONObject queryTodayReportByAccount(@Param("statDate") String statDate,@Param("accountId")  Long accountId);
+
     //根据小时区间查询今日汇总数据
     List<JSONObject> queryTodaySumByHourGroupAccount(@Param("filed") String filed,@Param("statDate") String statDate,@Param("hour") int hour,@Param("accountIds") JSONArray accountIds, String target, String order);
 

+ 13 - 0
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/mapper/xml/BytedanceAccountReportMapper.xml

@@ -20,6 +20,19 @@
         </foreach>
     </select>
 
+    <select id="queryTodayReportByAccount" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        ROUND(sum(cost),2) cost,
+        sum(show_num) showNum,
+        sum(click) click,
+        sum(convert_num) as convertNum
+        FROM
+        ctop_bytedance_report_advertiser_daily
+        WHERE
+        stat_datetime = #{statDate} '00:00:00'
+        AND advertiser_id= #{accountId}
+    </select>
+
     <select id="queryTodaySumByHourGroupAccount" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
           t2.account_id as accountId,

+ 22 - 4
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/report/service/impl/BytedanceAccountReportServiceImpl.java

@@ -35,6 +35,8 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
     @Autowired
     BytedanceAccountReportMapper bytedanceAccountReportMapper;
 
+    private static final BigDecimal zero=BigDecimal.ZERO;
+
     @Override
     public Map<String, Object> getSumDataBy(String mediaId, BigDecimal discount, JSONArray accounts, String startDate, String endDate) {
         Map<String, Object> result = new HashMap<>();
@@ -47,7 +49,7 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
             }
             before = bytedanceAccountReportMapper.queryTodaySumByHour(DateUtils.getAnotherDay(SystemDateConstant.yyyy_MM_dd, startDate, -1), after.getInteger("maxHour"), accounts);
             if(before==null){
-                return result;
+                before = after;
             }
         } else {
             after = bytedanceAccountReportMapper.querySumByStartEndDate(endDate, startDate, accounts);
@@ -67,9 +69,12 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
         if (startDate.equals(endDate)) {
             List<JSONObject> after = bytedanceAccountReportMapper.queryTodayDetailReportBy(filedAll, startDate, accounts);
             List<JSONObject> before = bytedanceAccountReportMapper.queryTodayDetailReportBy(filedAll, DateUtils.getAnotherDay(SystemDateConstant.yyyy_MM_dd, startDate, -1), accounts);
-            if(after==null||before==null){
+            if(after.size()==0){
                 return result;
             }
+            if(before.size()==0){
+                before=nullDataHandle();
+            }
             List<JSONObject> afterDis = this.countDiscountCost(mediaId, discount, after);
             List<JSONObject> beforeDis = this.countDiscountCost(mediaId, discount, before);
             result = LinkUtils.getCompareDate(beforeDis, afterDis, "statHour");
@@ -182,7 +187,7 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
             if (k.equals("accountId") || k.equals("authName") || v.toString().contains("%")) {
                 jsonObject.put(k, "-");
             } else {
-                jsonObject.put(k, LinkUtils.countLink(after.getBigDecimal(k), before.getBigDecimal(k)));
+                jsonObject.put(k, LinkUtils.countLink(after.getBigDecimal(k)==null?zero:after.getBigDecimal(k), before.getBigDecimal(k)==null?zero:before.getBigDecimal(k)));
             }
         });
         return jsonObject;
@@ -241,5 +246,18 @@ public class BytedanceAccountReportServiceImpl implements IBytedanceAccountRepor
         return new PageInfo<>(bytedanceAccountReportMapper.getBytedanceAccountInfoByProjectId(startDate,endDate,projectId,accountIds,yn));
     }
 
-
+    private List<JSONObject> nullDataHandle(){
+        List<JSONObject> objectList= new ArrayList<>();
+        JSONObject jsonObject;
+        for(int i=0;i<24;i++){
+            jsonObject=new JSONObject();
+            jsonObject.put("cost",0);
+            jsonObject.put("showNum",0);
+            jsonObject.put("click",0);
+            jsonObject.put("convertNum",0);
+            jsonObject.put("statHour",i);
+            objectList.add(jsonObject);
+        }
+        return objectList;
+    }
 }

+ 66 - 8
module-toutiao/src/main/java/cn/com/ctop/toutiao/modules/tool/controller/ByteDanceQueryToolController.java

@@ -10,6 +10,8 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -29,8 +31,8 @@ public class ByteDanceQueryToolController {
      */
     @PostMapping(value="/queryConvert")
     public Result<Map<String,Object>> queryConvertResult(Long accountId, String landingType, String appType,
-                                                                String downloadType,String externalUrl,String toutiaoPackage,
-                                                                String downloadUrl){
+                                                         String downloadType,String externalUrl,String toutiaoPackage,
+                                                         String downloadUrl){
 
         Result<Map<String,Object>> result=new Result<>();
         Map<String, Object> convertQueryMap = byteDanceConvertToolService.queryAdConvert(ctopOauthTokenService.getTokenByAccountId(accountId), accountId,
@@ -38,17 +40,51 @@ public class ByteDanceQueryToolController {
         if(!convertQueryMap.get("code").equals(0)){
             result.error500("查询转化目标结果失败");
         }else{
-            ((List)((JSONObject)convertQueryMap.get("data")).get("list")).forEach(it->{
-                if(((Map)it).get("convert_type")!=null){
-                    ((Map)it).put("name",getName(((Map)it).get("convert_type").toString()));
-                }
-            });
             result.setSuccess(true);
-            result.setResult(convertQueryMap);
+            result.setResult(ConvertResultHandle((List)((JSONObject)convertQueryMap.get("data")).get("list")));
         }
         return result;
     }
 
+    private Map<String,Object> ConvertResultHandle(List convertResult){
+        Map<String,Object> resultMap=new HashMap<>();
+        if(convertResult.isEmpty()){
+            resultMap.put("data",convertResult);
+        }else{
+            List resultList=new ArrayList();
+            convertResult.forEach(it->{
+                if(((JSONObject)it).get("external_actions")!=null){
+                    JSONObject jsonObject=(JSONObject)it;
+                    Map<String,Object> temp=new HashMap<>();
+                    temp.put("convert_type",jsonObject.get("convert_type"));
+                    temp.put("name",getName((jsonObject.getString("convert_type"))));
+                    if(jsonObject.getJSONArray("external_actions")!=null){
+                        List actionList=new ArrayList();
+                        jsonObject.getJSONArray("external_actions").forEach(action->{
+                            Map<String,Object> actionMap=new HashMap<>();
+                            actionMap.put("external_action",((JSONObject)action).getString("external_action"));
+                            if(((JSONObject)action).get("convert_id")==null){
+                                actionMap.put("convertId",getConvertIdByExternalAction(((JSONObject)action).getString("external_action")));
+                            }else {
+                                actionMap.put("convertId",(((JSONObject)action).get("convert_id")));
+                            }
+                            if(((JSONObject)action).get("deep_external_actions")!=null){
+                                actionMap.put("deep_external_action",((JSONObject)((JSONObject)action).getJSONArray("deep_external_actions").get(0)).getString("deep_external_action"));
+                            }else{
+                                actionMap.put("deep_external_action",null);
+                            }
+                            actionMap.put("external_name",((JSONObject)action).get("external_name"));
+                            actionList.add(actionMap);
+                        });
+                        temp.put("external_actions",actionList);
+                    }
+                    resultList.add(temp);
+                }
+                resultMap.put("data",resultList);
+            });
+        }
+        return resultMap;
+    }
     private String getName(String convertType){
         String convertName="";
         switch (convertType) {
@@ -88,4 +124,26 @@ public class ByteDanceQueryToolController {
         }
         return convertName;
     }
+
+    private int getConvertIdByExternalAction(String externalAction){
+        int result=0;
+        switch (externalAction) {
+            case "AD_CONVERT_TYPE_DOWNLOAD_FINISH":
+                result = 4;
+                break;
+            case "AD_CONVERT_TYPE_BUTTON":
+                result = 5;
+                break;
+            case "AD_CONVERT_TYPE_DOWNLOAD_START":
+                result = 9;
+                break;
+            case "AD_CONVERT_TYPE_INSTALL_FINISH":
+                result = 15;
+                break;
+            case "AD_CONVERT_TYPE_REDIRECT":
+                result = 95;
+                break;
+        }
+        return result;
+    }
 }

+ 2 - 6
performance-appraisal/src/main/java/cn/com/ctop/accountvideoquarterinfo/entity/AccountVideoQuarterInfo.java

@@ -1,21 +1,17 @@
 package cn.com.ctop.accountvideoquarterinfo.entity;
 
-import java.io.Serializable;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
+import java.util.Date;
+
 /**
  * 绩效明细_账户下所有视频的季度消耗数据
  *

+ 0 - 3
performance-appraisal/src/main/java/cn/com/ctop/accountvideoquarterinfo/mapper/AccountVideoQuarterInfoMapper.java

@@ -1,8 +1,5 @@
 package cn.com.ctop.accountvideoquarterinfo.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
 import cn.com.ctop.accountvideoquarterinfo.entity.AccountVideoQuarterInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 

+ 0 - 10
performance-appraisal/src/main/java/cn/com/ctop/huananvideoreport/dto/HuananVideoReportDTO.java

@@ -1,16 +1,6 @@
 package cn.com.ctop.huananvideoreport.dto;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-import org.jeecgframework.poi.excel.annotation.Excel;
-
-import java.util.Date;
 
 /**
  * 华南视频报表类

+ 2 - 6
performance-appraisal/src/main/java/cn/com/ctop/huananvideoreport/entity/HuananVideoReport.java

@@ -1,21 +1,17 @@
 package cn.com.ctop.huananvideoreport.entity;
 
-import java.io.Serializable;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
+import java.util.Date;
+
 /**
  * 华南视频报表类
  *

+ 5 - 6
performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/entity/PerformanceAccount.java

@@ -1,20 +1,19 @@
 package cn.com.ctop.performanceaccount.entity;
 
-import java.io.Serializable;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 运营明细表

+ 0 - 3
performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/mapper/PerformanceAccountMapper.java

@@ -1,8 +1,5 @@
 package cn.com.ctop.performanceaccount.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
 import cn.com.ctop.performanceaccount.entity.PerformanceAccount;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 

+ 0 - 208
performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/vue/PerformanceAccountList.vue

@@ -1,208 +0,0 @@
-<template>
-    <a-card :bordered="false">
-
-        <!-- 查询区域 -->
-        <div class="table-page-search-wrapper">
-            <a-form layout="inline">
-                <a-row :gutter="24">
-
-                    <a-col :md="6" :sm="8">
-                        <a-form-item label="账户id">
-                            <a-input placeholder="请输入账户id" v-model="queryParam.accountId"></a-input>
-                        </a-form-item>
-                    </a-col>
-                    <a-col :md="6" :sm="8">
-                        <a-form-item label="账户期间消耗">
-                            <a-input placeholder="请输入账户期间消耗" v-model="queryParam.cost"></a-input>
-                        </a-form-item>
-                    </a-col>
-                    <template v-if="toggleSearchStatus">
-                        <a-col :md="6" :sm="8">
-                            <a-form-item label="年">
-                                <a-input placeholder="请输入年" v-model="queryParam.year"></a-input>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :md="6" :sm="8">
-                            <a-form-item label="1头条2快手">
-                                <a-input placeholder="请输入1头条2快手" v-model="queryParam.mediaType"></a-input>
-                            </a-form-item>
-                        </a-col>
-                        <a-col :md="6" :sm="8">
-                            <a-form-item label="季度">
-                                <a-input placeholder="请输入季度" v-model="queryParam.quarter"></a-input>
-                            </a-form-item>
-                        </a-col>
-                    </template>
-                    <a-col :md="6" :sm="8">
-            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
-              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
-              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
-              <a @click="handleToggleSearch" style="margin-left: 8px">
-                {{ toggleSearchStatus ? '收起' : '展开' }}
-                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
-              </a>
-            </span>
-                    </a-col>
-
-                </a-row>
-            </a-form>
-        </div>
-
-        <!-- 操作按钮区域 -->
-        <div class="table-operator">
-            <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-            <a-button type="primary" icon="download" @click="handleExportXls('运营明细表')">导出</a-button>
-            <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
-                      :action="importExcelUrl" @change="handleImportExcel">
-                <a-button type="primary" icon="import">导入</a-button>
-            </a-upload>
-            <a-dropdown v-if="selectedRowKeys.length > 0">
-                <a-menu slot="overlay">
-                    <a-menu-item key="1" @click="batchDel">
-                        <a-icon type="delete"/>
-                        删除
-                    </a-menu-item>
-                </a-menu>
-                <a-button style="margin-left: 8px"> 批量操作
-                    <a-icon type="down"/>
-                </a-button>
-            </a-dropdown>
-        </div>
-
-        <!-- table区域-begin -->
-        <div>
-            <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
-                <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{
-                selectedRowKeys.length }}</a>项
-                <a style="margin-left: 24px" @click="onClearSelected">清空</a>
-            </div>
-
-            <a-table
-                    ref="table"
-                    size="middle"
-                    bordered
-                    rowKey="id"
-                    :columns="columns"
-                    :dataSource="dataSource"
-                    :pagination="ipagination"
-                    :loading="loading"
-                    :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-                    @change="handleTableChange">
-
-        <span slot="action" slot-scope="text, record">
-          <a @click="handleEdit(record)">编辑</a>
-
-          <a-divider type="vertical"/>
-          <a-dropdown>
-            <a class="ant-dropdown-link">更多 <a-icon type="down"/></a>
-            <a-menu slot="overlay">
-              <a-menu-item>
-                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
-                  <a>删除</a>
-                </a-popconfirm>
-              </a-menu-item>
-            </a-menu>
-          </a-dropdown>
-        </span>
-
-            </a-table>
-        </div>
-        <!-- table区域-end -->
-
-        <!-- 表单区域 -->
-        <performanceAccount-modal ref="modalForm" @ok="modalFormOk"></performanceAccount-modal>
-    </a-card>
-</template>
-
-<script>
-    import PerformanceAccountModal from './modules/PerformanceAccountModal'
-    import {JeecgListMixin} from '@/mixins/JeecgListMixin'
-
-    export default {
-        name: "PerformanceAccountList",
-        mixins: [JeecgListMixin],
-        components: {
-            PerformanceAccountModal
-        },
-        data() {
-            return {
-                description: '运营明细表管理页面',
-                // 表头
-                columns: [
-                    {
-                        title: '#',
-                        dataIndex: '',
-                        key: 'rowIndex',
-                        width: 60,
-                        align: "center",
-                        customRender: function (t, r, index) {
-                            return parseInt(index) + 1;
-                        }
-                    },
-                    {
-                        title: '账户id',
-                        align: "center",
-                        dataIndex: 'accountId'
-                    },
-                    {
-                        title: '账户期间消耗',
-                        align: "center",
-                        dataIndex: 'cost'
-                    },
-                    {
-                        title: '年',
-                        align: "center",
-                        dataIndex: 'year'
-                    },
-                    {
-                        title: '1头条2快手',
-                        align: "center",
-                        dataIndex: 'mediaType'
-                    },
-                    {
-                        title: '季度',
-                        align: "center",
-                        dataIndex: 'quarter'
-                    },
-                    {
-                        title: '账户所属人',
-                        align: "center",
-                        dataIndex: 'userId'
-                    },
-                    {
-                        title: '账户消耗计算开始时间',
-                        align: "center",
-                        dataIndex: 'startDate'
-                    },
-                    {
-                        title: '账户消耗计算结束时间',
-                        align: "center",
-                        dataIndex: 'endDate'
-                    },
-                    {
-                        title: '操作',
-                        dataIndex: 'action',
-                        align: "center",
-                        scopedSlots: {customRender: 'action'},
-                    }
-                ],
-                url: {
-                    list: "/performanceaccount/performanceAccount/list",
-                    delete: "/performanceaccount/performanceAccount/delete",
-                    deleteBatch: "/performanceaccount/performanceAccount/deleteBatch",
-                    exportXlsUrl: "performanceaccount/performanceAccount/exportXls",
-                    importExcelUrl: "performanceaccount/performanceAccount/importExcel",
-                },
-            }
-        },
-        computed: {
-            importExcelUrl: function () {
-                return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
-            }
-        },
-        methods: {}
-    }
-</script>
-<style scoped>
-    @import '~@assets/less/common.less'
-</style>

+ 0 - 170
performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/vue/modules/PerformanceAccountModal.vue

@@ -1,170 +0,0 @@
-<template>
-    <a-modal
-            :title="title"
-            :width="800"
-            :visible="visible"
-            :confirmLoading="confirmLoading"
-            @ok="handleOk"
-            @cancel="handleCancel"
-            cancelText="关闭">
-
-        <a-spin :spinning="confirmLoading">
-            <a-form :form="form">
-
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户id">
-                    <a-input placeholder="请输入账户id" v-decorator="['accountId', validatorRules.accountId ]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户期间消耗">
-                    <a-input-number v-decorator="[ 'cost', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="年">
-                    <a-input-number v-decorator="[ 'year', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="1头条2快手">
-                    <a-input-number v-decorator="[ 'mediaType', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="季度">
-                    <a-input-number v-decorator="[ 'quarter', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户所属人">
-                    <a-input placeholder="请输入账户所属人" v-decorator="['userId', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户消耗计算开始时间">
-                    <a-date-picker v-decorator="[ 'startDate', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户消耗计算结束时间">
-                    <a-date-picker v-decorator="[ 'endDate', {}]"/>
-                </a-form-item>
-
-            </a-form>
-        </a-spin>
-    </a-modal>
-</template>
-
-<script>
-    import {httpAction} from '@/api/manage'
-    import pick from 'lodash.pick'
-    import moment from "moment"
-
-    export default {
-        name: "PerformanceAccountModal",
-        data() {
-            return {
-                title: "操作",
-                visible: false,
-                model: {},
-                labelCol: {
-                    xs: {span: 24},
-                    sm: {span: 5},
-                },
-                wrapperCol: {
-                    xs: {span: 24},
-                    sm: {span: 16},
-                },
-
-                confirmLoading: false,
-                form: this.$form.createForm(this),
-                validatorRules: {
-                    accountId: {rules: [{required: true, message: '请输入账户id!'}]},
-                },
-                url: {
-                    add: "/performanceaccount/performanceAccount/add",
-                    edit: "/performanceaccount/performanceAccount/edit",
-                },
-            }
-        },
-        created() {
-        },
-        methods: {
-            add() {
-                this.edit({});
-            },
-            edit(record) {
-                this.form.resetFields();
-                this.model = Object.assign({}, record);
-                this.visible = true;
-                this.$nextTick(() => {
-                    this.form.setFieldsValue(pick(this.model, 'accountId', 'cost', 'year', 'mediaType', 'quarter', 'userId'))
-                    //时间格式化
-                    this.form.setFieldsValue({startDate: this.model.startDate ? moment(this.model.startDate) : null})
-                    this.form.setFieldsValue({endDate: this.model.endDate ? moment(this.model.endDate) : null})
-                });
-
-            },
-            close() {
-                this.$emit('close');
-                this.visible = false;
-            },
-            handleOk() {
-                const that = this;
-                // 触发表单验证
-                this.form.validateFields((err, values) => {
-                    if (!err) {
-                        that.confirmLoading = true;
-                        let httpurl = '';
-                        let method = '';
-                        if (!this.model.id) {
-                            httpurl += this.url.add;
-                            method = 'post';
-                        } else {
-                            httpurl += this.url.edit;
-                            method = 'put';
-                        }
-                        let formData = Object.assign(this.model, values);
-                        //时间格式化
-                        formData.startDate = formData.startDate ? formData.startDate.format() : null;
-                        formData.endDate = formData.endDate ? formData.endDate.format() : null;
-
-                        console.log(formData)
-                        httpAction(httpurl, formData, method).then((res) => {
-                            if (res.success) {
-                                that.$message.success(res.message);
-                                that.$emit('ok');
-                            } else {
-                                that.$message.warning(res.message);
-                            }
-                        }).finally(() => {
-                            that.confirmLoading = false;
-                            that.close();
-                        })
-
-
-                    }
-                })
-            },
-            handleCancel() {
-                this.close()
-            },
-
-
-        }
-    }
-</script>
-
-<style lang="less" scoped>
-
-</style>

+ 0 - 177
performance-appraisal/src/main/java/cn/com/ctop/performanceaccount/vue/modules/PerformanceAccountModal__Style#Drawer.vue

@@ -1,177 +0,0 @@
-<template>
-    <a-drawer
-            :title="title"
-            :width="800"
-            placement="right"
-            :closable="false"
-            @close="close"
-            :visible="visible"
-    >
-
-        <a-spin :spinning="confirmLoading">
-            <a-form :form="form">
-
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户id">
-                    <a-input placeholder="请输入账户id" v-decorator="['accountId', validatorRules.accountId ]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户期间消耗">
-                    <a-input-number v-decorator="[ 'cost', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="年">
-                    <a-input-number v-decorator="[ 'year', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="1头条2快手">
-                    <a-input-number v-decorator="[ 'mediaType', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="季度">
-                    <a-input-number v-decorator="[ 'quarter', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户所属人">
-                    <a-input placeholder="请输入账户所属人" v-decorator="['userId', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户消耗计算开始时间">
-                    <a-date-picker v-decorator="[ 'startDate', {}]"/>
-                </a-form-item>
-                <a-form-item
-                        :labelCol="labelCol"
-                        :wrapperCol="wrapperCol"
-                        label="账户消耗计算结束时间">
-                    <a-date-picker v-decorator="[ 'endDate', {}]"/>
-                </a-form-item>
-
-            </a-form>
-        </a-spin>
-        <a-button type="primary" @click="handleOk">确定</a-button>
-        <a-button type="primary" @click="handleCancel">取消</a-button>
-    </a-drawer>
-</template>
-
-<script>
-    import {httpAction} from '@/api/manage'
-    import pick from 'lodash.pick'
-    import moment from "moment"
-
-    export default {
-        name: "PerformanceAccountModal",
-        data() {
-            return {
-                title: "操作",
-                visible: false,
-                model: {},
-                labelCol: {
-                    xs: {span: 24},
-                    sm: {span: 5},
-                },
-                wrapperCol: {
-                    xs: {span: 24},
-                    sm: {span: 16},
-                },
-
-                confirmLoading: false,
-                form: this.$form.createForm(this),
-                validatorRules: {
-                    accountId: {rules: [{required: true, message: '请输入账户id!'}]},
-                },
-                url: {
-                    add: "/performanceaccount/performanceAccount/add",
-                    edit: "/performanceaccount/performanceAccount/edit",
-                },
-            }
-        },
-        created() {
-        },
-        methods: {
-            add() {
-                this.edit({});
-            },
-            edit(record) {
-                this.form.resetFields();
-                this.model = Object.assign({}, record);
-                this.visible = true;
-                this.$nextTick(() => {
-                    this.form.setFieldsValue(pick(this.model, 'accountId', 'cost', 'year', 'mediaType', 'quarter', 'userId'))
-                    //时间格式化
-                    this.form.setFieldsValue({startDate: this.model.startDate ? moment(this.model.startDate) : null})
-                    this.form.setFieldsValue({endDate: this.model.endDate ? moment(this.model.endDate) : null})
-                });
-
-            },
-            close() {
-                this.$emit('close');
-                this.visible = false;
-            },
-            handleOk() {
-                const that = this;
-                // 触发表单验证
-                this.form.validateFields((err, values) => {
-                    if (!err) {
-                        that.confirmLoading = true;
-                        let httpurl = '';
-                        let method = '';
-                        if (!this.model.id) {
-                            httpurl += this.url.add;
-                            method = 'post';
-                        } else {
-                            httpurl += this.url.edit;
-                            method = 'put';
-                        }
-                        let formData = Object.assign(this.model, values);
-                        //时间格式化
-                        formData.startDate = formData.startDate ? formData.startDate.format() : null;
-                        formData.endDate = formData.endDate ? formData.endDate.format() : null;
-
-                        console.log(formData)
-                        httpAction(httpurl, formData, method).then((res) => {
-                            if (res.success) {
-                                that.$message.success(res.message);
-                                that.$emit('ok');
-                            } else {
-                                that.$message.warning(res.message);
-                            }
-                        }).finally(() => {
-                            that.confirmLoading = false;
-                            that.close();
-                        })
-
-
-                    }
-                })
-            },
-            handleCancel() {
-                this.close()
-            },
-
-
-        }
-    }
-</script>
-
-<style lang="less" scoped>
-    /** Button按钮间距 */
-    .ant-btn {
-        margin-left: 30px;
-        margin-bottom: 30px;
-        float: right;
-    }
-</style>

+ 0 - 3
performance-appraisal/src/main/java/cn/com/ctop/planeprojectcost/mapper/PlaneProjectCostMapper.java

@@ -1,8 +1,5 @@
 package cn.com.ctop.planeprojectcost.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
 import cn.com.ctop.planeprojectcost.entity.PlaneProjectCost;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 

+ 3 - 7
performance-appraisal/src/main/java/cn/com/ctop/userefficientvideomap/entity/UserEfficientVideoMap.java

@@ -1,22 +1,18 @@
 package cn.com.ctop.userefficientvideomap.entity;
 
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 
+import java.math.BigDecimal;
+import java.util.Date;
+
 /**
  * 有效视频与角色对应表
  *

+ 4 - 6
performance-appraisal/src/main/java/cn/com/ctop/uservideomap/entity/UserVideoMap.java

@@ -1,20 +1,18 @@
 package cn.com.ctop.uservideomap.entity;
 
-import java.io.Serializable;
-import java.util.Date;
-
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * 视频和设计师对应关系表

+ 0 - 3
performance-appraisal/src/main/java/cn/com/ctop/uservideomap/mapper/UserVideoMapMapper.java

@@ -1,8 +1,5 @@
 package cn.com.ctop.uservideomap.mapper;
 
-import java.util.List;
-
-import org.apache.ibatis.annotations.Param;
 import cn.com.ctop.uservideomap.entity.UserVideoMap;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;