zhouzeyu@c-top.com.cn 3 rokov pred
commit
6b82e4462e
100 zmenil súbory, kde vykonal 14312 pridanie a 0 odobranie
  1. 34 0
      .gitignore
  2. 216 0
      job-bytedance/pom.xml
  3. 22 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/BytedanceJobApplication.java
  4. 13 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/config/MybatisPlusConfig.java
  5. 60 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/config/XxlJobConfig.java
  6. 60 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/annotation/Dict.java
  7. 30 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/BytedanceConstant.java
  8. 96 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/CtopAdConstant.java
  9. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/KuaishouConstant.java
  10. 1114 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertiseDailyReport.java
  11. 1122 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertiseHourlyReport.java
  12. 532 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertisePlan.java
  13. 1144 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertisePlanDailyReport.java
  14. 1151 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertisePlanHourlyReport.java
  15. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertiserReportDTO.java
  16. 250 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAgentReportDaily.java
  17. 257 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAgentReportHourly.java
  18. 85 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAudiencePackageGet.java
  19. 88 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCampaignGet.java
  20. 995 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCampaignReportDaily.java
  21. 1003 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCampaignReportHourly.java
  22. 115 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCreativeGet.java
  23. 1012 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCreativeReportDaily.java
  24. 1019 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCreativeReportHourly.java
  25. 99 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceFileImageGet.java
  26. 129 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceFileVideoGet.java
  27. 1121 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceMaterialReportDaily.java
  28. 99 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/OauthToken.java
  29. 108 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/enums/MaterialEnum.java
  30. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertiseDailyMapper.java
  31. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertiseHourlyMapper.java
  32. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertisePlanDailyMapper.java
  33. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertisePlanHourlyMapper.java
  34. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertisePlanMapper.java
  35. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceAgentReportDailyMapper.java
  36. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceAgentReportHourlyMapper.java
  37. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceAudiencePackageGetMapper.java
  38. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCampaignGetMapper.java
  39. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCampaignReportDailyMapper.java
  40. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCampaignReportHourlyMapper.java
  41. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCreativeGetMapper.java
  42. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCreativeReportDailyMapper.java
  43. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCreativeReportHourlyMapper.java
  44. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceFileImageGetMapper.java
  45. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceFileVideoGetMapper.java
  46. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceMaterialReportDailyMapper.java
  47. 48 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/DataMapper.java
  48. 19 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/OauthTokenMapper.java
  49. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceAgentReportDailyMapper.xml
  50. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceAgentReportHourlyMapper.xml
  51. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceAudiencePackageGetMapper.xml
  52. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCampaignGetMapper.xml
  53. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCampaignReportDailyMapper.xml
  54. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCampaignReportHourlyMapper.xml
  55. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCreativeGetMapper.xml
  56. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCreativeReportDailyMapper.xml
  57. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCreativeReportHourlyMapper.xml
  58. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceFileImageGetMapper.xml
  59. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceFileVideoGetMapper.xml
  60. 5 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceMaterialReportDailyMapper.xml
  61. 107 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/DataMapper.xml
  62. 12 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/OauthTokenMapper.xml
  63. 19 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertisePlanService.java
  64. 12 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserDailyService.java
  65. 21 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserDataService.java
  66. 12 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserHourlyService.java
  67. 14 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserPlanDailyService.java
  68. 14 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserPlanHourlyService.java
  69. 14 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceAgentReportDailyService.java
  70. 14 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceAgentReportHourlyService.java
  71. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceAudiencePackageGetService.java
  72. 18 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCampaignGetService.java
  73. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCampaignReportDailyService.java
  74. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCampaignReportHourlyService.java
  75. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCreativeGetService.java
  76. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCreativeReportDailyService.java
  77. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCreativeReportHourlyService.java
  78. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceFileImageGetService.java
  79. 16 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceFileVideoGetService.java
  80. 17 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceMaterialReportDailyService.java
  81. 19 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IOauthTokenService.java
  82. 462 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/ByteDanceAdvertiserDataServiceImpl.java
  83. 20 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceAgentReportDailyServiceImpl.java
  84. 19 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceAgentReportHourlyServiceImpl.java
  85. 107 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceAudiencePackageGetServiceImpl.java
  86. 79 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCampaignGetServiceImpl.java
  87. 91 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCampaignReportDailyServiceImpl.java
  88. 90 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCampaignReportHourlyServiceImpl.java
  89. 77 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCreativeGetServiceImpl.java
  90. 90 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCreativeReportDailyServiceImpl.java
  91. 92 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCreativeReportHourlyServiceImpl.java
  92. 86 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceFileImageGetServiceImpl.java
  93. 82 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceFileVideoGetServiceImpl.java
  94. 99 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceMaterialReportDailyServiceImpl.java
  95. 21 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertiseDailyServiceImpl.java
  96. 20 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertiseHourlyServiceImpl.java
  97. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertisePlanDailyServiceImpl.java
  98. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertisePlanHourlyServiceImpl.java
  99. 15 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertisePlanServiceImpl.java
  100. 0 0
      job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/OauthTokenServiceImpl.java

+ 34 - 0
.gitignore

@@ -0,0 +1,34 @@
+# Created by .ignore support plugin (hsz.mobi)
+### Example user template template
+### Example user template
+
+# IntelliJ project files
+.idea
+**/*.iml
+out
+gen
+### Java template
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+**/target/
+#application.yml

+ 216 - 0
job-bytedance/pom.xml

@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>cn.com.ctop</groupId>
+    <artifactId>job-bytedance</artifactId>
+    <version>2.3.1-SNAPSHOT</version>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.1.3.RELEASE</version>
+        <relativePath/>
+    </parent>
+    <properties>
+        <java.version>1.8</java.version>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <mybatis-plus.version>3.0.6</mybatis-plus.version>
+        <druid.version>1.1.10</druid.version>
+        <commons.version>2.6</commons.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.mybatis.generator</groupId>
+            <artifactId>mybatis-generator-core</artifactId>
+            <version>1.3.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.github.xiaoymin</groupId>
+            <artifactId>swagger-bootstrap-ui</artifactId>
+            <version>1.9.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-aop</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+            <version>2.3.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>${commons.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+            <version>${commons.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+
+        <!-- mybatis-plus -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>${mybatis-plus.version}</version>
+        </dependency>
+        <!-- druid -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>druid-spring-boot-starter</artifactId>
+            <version>${druid.version}</version>
+        </dependency>
+        <!-- 动态数据源 -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>2.5.4</version>
+        </dependency>
+        <!-- junit -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+        <!-- json -->
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.56</version>
+        </dependency>
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus</artifactId>
+            <version>3.3.1.tmp</version>
+        </dependency>
+        <!--mysql-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.47</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>net.sourceforge.jtds</groupId>
+            <artifactId>jtds</artifactId>
+            <version>1.3.1</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+            <version>4.5.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpcore</artifactId>
+            <version>4.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup.retrofit2</groupId>
+            <artifactId>retrofit</artifactId>
+            <version>2.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.11</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>4.5.11</version>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.17</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jeecgframework</groupId>
+            <artifactId>autopoi-web</artifactId>
+            <version>1.0.2</version>
+        </dependency>
+
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.mybatis.generator</groupId>
+                <artifactId>mybatis-generator-maven-plugin</artifactId>
+                <version>1.3.2</version>
+                <configuration>
+                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
+                    <verbose>true</verbose>
+                    <overwrite>true</overwrite>
+                </configuration>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.yml</include>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+                <filtering>false</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.yml</include>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+                <filtering>false</filtering>
+            </resource>
+        </resources>
+    </build>
+
+</project>

+ 22 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/BytedanceJobApplication.java

@@ -0,0 +1,22 @@
+package cn.com.ctop.job.bytedance;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+@Slf4j
+@SpringBootApplication
+@ComponentScan(basePackages = {"cn.com.ctop"})
+@Configuration
+public class BytedanceJobApplication {
+    public static void main(String[] args){
+
+        SpringApplication.run(BytedanceJobApplication.class, args);
+
+        log.info("\n----------------------------------------------------------\n\t" +
+                "job service is running\n\t" +
+                "----------------------------------------------------------");
+    }
+
+}

+ 13 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/config/MybatisPlusConfig.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.job.bytedance.config;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+@MapperScan(value = { "cn.com.ctop.**.mapper*"})
+
+public class MybatisPlusConfig {
+
+
+
+}

+ 60 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/config/XxlJobConfig.java

@@ -0,0 +1,60 @@
+package cn.com.ctop.job.bytedance.config;
+
+import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * xxl-job config
+ *
+ * @author xuxueli 2017-04-28
+ */
+@Configuration
+public class XxlJobConfig {
+  @Value("${xxl.job.admin.addresses}")
+  private String adminAddresses;
+
+  @Value("${xxl.job.executor.appname}")
+  private String appName;
+
+  @Value("${xxl.job.executor.ip}")
+  private String ip;
+
+  @Value("${xxl.job.executor.port}")
+  private int port;
+
+  @Value("${xxl.job.accessToken}")
+  private String accessToken;
+
+  @Value("${xxl.job.executor.logpath}")
+  private String logPath;
+
+  @Value("${xxl.job.executor.logretentiondays}")
+  private int logRetentionDays;
+
+  @Bean
+  public XxlJobSpringExecutor xxlJobExecutor() {
+    XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
+    xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
+    xxlJobSpringExecutor.setAppname(appName);
+    xxlJobSpringExecutor.setIp(ip);
+    xxlJobSpringExecutor.setPort(port);
+    xxlJobSpringExecutor.setAccessToken(accessToken);
+    xxlJobSpringExecutor.setLogPath(logPath);
+    xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
+
+    return xxlJobSpringExecutor;
+  }
+
+  /**
+   * 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
+   *
+   * <p>1、引入依赖: <dependency> <groupId>org.springframework.cloud</groupId>
+   * <artifactId>spring-cloud-commons</artifactId> <version>${version}</version> </dependency>
+   *
+   * <p>2、配置文件,或者容器启动变量 spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
+   *
+   * <p>3、获取IP String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
+   */
+}

+ 60 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/annotation/Dict.java

@@ -0,0 +1,60 @@
+package cn.com.ctop.job.bytedance.data.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ *  类描述:  字典注解
+ * 作    者: dangzhenghui
+ * 日    期: 2019年03月17日-下午9:37:16
+ */
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Dict {
+    /**
+     * 方法描述:  数据code
+     * 作    者: dangzhenghui
+     * 日    期: 2019年03月17日-下午9:37:16
+     *
+     * @return 返回类型: String
+     */
+    String dicCode();
+
+    /**
+     * 方法描述:  数据Text
+     * 作    者: dangzhenghui
+     * 日    期: 2019年03月17日-下午9:37:16
+     *
+     * @return 返回类型: String
+     */
+    String dicText() default "";
+
+    /**
+     * 方法描述: 数据字典表
+     * 作    者: dangzhenghui
+     * 日    期: 2019年03月17日-下午9:37:16
+     *
+     * @return 返回类型: String
+     */
+    String dictTable() default "";
+
+    /**
+     * 方法描述: 数据字典表
+     * 作    者: dangzhenghui
+     * 日    期: 2019年03月17日-下午9:37:16
+     *
+     * @return 返回类型: String
+     */
+    String extendsKey() default "";
+
+    /**
+     * 方法描述: 数据字典表
+     * 作    者: dangzhenghui
+     * 日    期: 2019年03月17日-下午9:37:16
+     *
+     * @return 返回类型: String
+     */
+    String extendsValue() default "";
+}

+ 30 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/BytedanceConstant.java

@@ -0,0 +1,30 @@
+package cn.com.ctop.job.bytedance.data.constant;
+
+public class BytedanceConstant {
+    /**
+     * 报表
+     */
+    public static final String BYTEDANCE_V2_AD_GET = "/2/ad/get/";
+
+    public static final String BYTEDANCE_V2_REPORT_AD_GET = "/2/report/ad/get/";
+
+    public static final String BYTEDANCE_V2_REPORT_advertiser_GET = "/2/report/advertiser/get/";
+
+    public static final String BYTEDANCE_V2_REPORT_AGENT_GET_V2 = "/2/report/agent/get_v2/";
+
+    public static final String BYTEDANCE_V2_AUDIENCE_PACKAGE_GET = "/2/audience_package/get/";
+
+    public static final String BYTEDANCE_V2_CAMPAIGN_GET = "/2/campaign/get/";
+
+    public static final String BYTEDANCE_V2_REPORT_CAMPAIGN_GET = "/2/report/campaign/get/";
+
+    public static final String BYTEDANCE_V2_CREATIVE_GET = "/2/creative/get/";
+
+    public static final String BYTEDANCE_V2_REPORT_CREATIVE_GET = "/2/report/creative/get/";
+
+    public static final String BYTEDANCE_V2_FILE_IMAGE_GET = "/2/file/image/get/";
+
+    public static final String BYTEDANCE_V2_FILE_VIDEO_GET = "/2/file/video/get/";
+
+    public static final String BYTEDANCE_V2_REPORT_INTEGRATED_GET = "/2/report/integrated/get/";
+}

+ 96 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/CtopAdConstant.java

@@ -0,0 +1,96 @@
+package cn.com.ctop.job.bytedance.data.constant;
+
+import java.math.BigDecimal;
+
+/**
+ * 广告相关常量数据
+ */
+public class CtopAdConstant {
+    //头条
+    public static final String PLATFORM_TYPE_BYTEDANCE = "1";
+    public static final  int PLATFORM_TYPE_BYTEDANCE_INT = 1;
+    //快手
+    public static final String PLATFORM_TYPE_KUAISHOU = "2";
+    public static final  int   PLATFORM_TYPE_KUAISHOU_INT = 2;
+    //头条内广
+    public static final String PLATFORM_TYPE_BYTEDANCE_INSIDE = "3";
+    public static final  int PLATFORM_TYPE_BYTEDANCE_INSIDE_INT = 3;
+    //头条内广
+    public static final String PLATFORM_TYPE_KUAISHOU_INSIDE = "4";
+    public static final  int PLATFORM_TYPE_KUAISHOU_INSIDE_INT = 4;
+
+    public static final String PLATFORM_TYPE_PANGOLIN = "5";
+
+    public static final String PLATFORM_TYPE_BYTEDANCE_PY = "bytedance";
+    public static final String PLATFORM_TYPE_KUAISHOU_PY = "kuaishou";
+    public static final String PLATFORM_TYPE_PANGOLIN_PY = "pangolin";
+
+    public static final String BYTEDANCE_REPORT_TYPE_DAILY = "STAT_TIME_GRANULARITY_DAILY";
+    public static final String BYTEDANCE_REPORT_TYPE_HOURLY = "STAT_TIME_GRANULARITY_HOURLY";
+
+    public static final String UREPORT_PREVIEW_URL_PREFIX = "/jeecg-boot/ureport/designer?_u=mysql:";
+
+
+    public static final String CTOP_ORGCODE_NORTH_CHINA_PREFIX = "A01";
+    public static final String CTOP_ORGCODE_EAST_CHINA_PREFIX = "A02";
+
+    public static final String KUAISHOU_LOAD_JOB_TYPE_HISTORY = "history";
+    public static final String KUAISHOU_LOAD_JOB_TYPE_DAILY = "daily";
+
+    public static final String BYTEDANCE_LOAD_JOB_TYPE_ASYNC = "async";
+    public static final String BYTEDANCE_LOAD_JOB_TYPE_DAILY = "daily";
+
+    /**
+     * 销售角色Id
+     */
+    public static final String SYSTEM_SALE_CODE = "75ee837e6f3de29c0e3ed75d4629438e";
+
+    /**
+     * 销售AM角色Id
+     */
+    public static final String SYSTEM_SALE_AM_CODE = "f5a68aa2acf86e842100f0fa4b050d28";
+
+    /**
+     * 头条销售媒体季度任务
+     */
+    public static final BigDecimal BYTEDANCE_MEDIA_TASK_COST = new BigDecimal("150000000");
+    /**
+     * 快手销售媒体季度任务
+     */
+    public static final BigDecimal KUAISHOU_MEDIA_TASK_COST = new BigDecimal("147000000");
+    /**
+     * 头条销售季度个人任务
+     */
+    public static final BigDecimal BYTEDANCE_PERSONAL_TASK_COST = new BigDecimal("2400000");
+    /**
+     * 快手销售季度个人任务
+     */
+    public static final BigDecimal KUAISHOU_PERSONAL_TASK_COST = new BigDecimal("2400000");
+
+    /**
+     * 华北快手销售机构号
+     */
+    public static final String HB_KUAISHOU_SALE_ORG_CODE = "A01A11A01";
+    /**
+     * 华北头条销售机构号
+     */
+    public static final String HB_BYTEDANCE_SALE_ORG_CODE = "A01A11A02";
+
+    public static final String BYTEDANCE_GENDER_TYPE_NONE = "NONE";
+    public static final String BYTEDANCE_GENDER_TYPE_GENDER_MALE = "GENDER_MALE";
+    public static final String BYTEDANCE_GENDER_TYPE_GENDER_FEMALE = "GENDER_FEMALE";
+
+
+    public static final Integer COMMON_STATUS_ENABLED = 1;
+
+    public static final Integer COMMON_STATUS_NOT_ENABLED = 0;
+
+    public static final String COMMON_ORDER_TYPE_ASC = "asc";
+    public static final String COMMON_ORDER_TYPE_DESC = "desc";
+
+    /**
+     * 视频类型
+     */
+    public static final String VIDEO_TYPR_ZR = "真人";
+    public static final String VIDEO_TYPR_ZZ = "制作";
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/KuaishouConstant.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.constant;
+
+public class KuaishouConstant {
+
+    /**
+     * 报表
+     */
+    public static final String ACCOUNT_REPORT = "/rest/openapi/v1/report/account_report";
+    public static final String CAMPAIGN_REPORT = "/rest/openapi/v1/report/campaign_report";
+    public static final String UNIT_REPORT = "/rest/openapi/v1/report/unit_report";
+    public static final String CREATIVE_REPORT = "/rest/openapi/v1/report/creative_report";
+    public static final String PROGRAM_CREATIVE_REPORT = "/rest/openapi/v1/report/program_creative_report";
+    public static final String MATERIAL_REPORT = "/rest/openapi/v1/report/material_report";
+    public static final String SEND_URL = "http://192.168.0.202:8765/webhook/account_report";
+    public static final String VIDEO_LIST = "/rest/openapi/v1/file/ad/video/list";
+
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1114 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertiseDailyReport.java


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1122 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertiseHourlyReport.java


+ 532 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertisePlan.java

@@ -0,0 +1,532 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import cn.com.ctop.job.bytedance.data.annotation.Dict;
+import cn.com.ctop.job.bytedance.data.constant.CtopAdConstant;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 今日头条广告计划信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2019-07-22
+ */
+@Data
+@TableName("bytedance_ad_get")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_ad_get对象", description = "今日头条广告计划信息")
+public class ByteDanceAdvertisePlan {
+    @TableId
+    private Long id;
+
+    @Dict(dicCode = "account_id", dictTable = "ctop_user_allocation", dicText = "auth_name")
+    private String accountId;
+
+    // 计划名称
+    private String name;
+
+    @TableField(exist = false)
+    private Object names;
+
+    @TableField(exist = false)
+    private String landingType;
+
+    @Dict(dicCode = "id", dictTable = "ctop_bytedance_campaign", dicText = "name")
+    private Long campaignId;
+
+    private String operation;
+
+    private String unionVideoType;
+
+    // 上次修改时间戳(用于更新时提交,服务端判断是否基于最新信息修改)
+    private String planModifyTime;
+
+    // 投放范围
+    private String deliveryRange;
+
+    // 计划上次修改时间
+    private String adModifyTime;
+
+    // 计划创建时间
+    private String adCreateTime;
+
+    // 广告预算类型
+    private String budgetMode;
+
+    // 广告预算
+    private BigDecimal budget;
+
+    // 广告计划投放状态
+    private String toutiaoStatus;
+
+    //true:投放中 false:暂停
+    private Boolean planStatus;
+
+    // 广告计划操作状态
+    private String optStatus;
+
+    // 广告投放起始时间
+    private String startTime;
+
+    // 广告投放结束时间
+    private String endTime;
+
+    // 广告出价
+    private BigDecimal bid;
+
+    // 广告出价类型
+    private String pricing;
+
+    // 广告投放时间类型
+    private String scheduleType;
+
+    // 广告投放时段
+    private String scheduleTime;
+
+    // 广告投放速度类型
+    private String flowControlMode;
+
+    // 应用直达链接
+    private String openUrl;
+
+    // 应用下载方式
+    private String downloadType;
+
+    // 应用下载方式
+    private String downloadUrl;
+
+    // 广告落地页链接
+    private String externalUrl;
+
+    // 广告应用下载包名
+    private String toutiaoPackage;
+
+    // 广告应用下载类型
+    private String appType;
+
+    // 广告计划审核不通过原因
+    private String auditRejectReason;
+
+    // ocpc广告转化出价
+    private BigDecimal cpaBid;
+
+    // 深度优化出价
+    private BigDecimal deepCpaBid;
+
+    private String deepBidType;
+
+    private Integer cpaSkipFirstPhrase;
+
+    // 转化类型广告的转化工具id
+    private Long convertId;
+
+    // 过滤已转化用户类型字段
+    private String hideIfConverted;
+
+    // 过滤已安装,当推广目标为安卓应用下载时可填
+    private Integer hideIfExists;
+
+    private String convertedTimeDuration;
+
+
+    // audience
+    private String audience;
+
+    private String modifyTime;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private BigDecimal lubanRoiGoal;
+
+    private BigDecimal roiGoal;
+    /**
+     * 受众公共参数
+     */
+    // 受众性别
+    private String gender;
+    // 受众平台
+    @TableField(exist = false)
+    private Object platform;
+    @TableField(exist = false)
+    private Object retargetingTags;
+    @TableField(exist = false)
+    private Object retargetingTagsExclude;
+    @TableField(exist = false)
+    private Object age;
+    @TableField(exist = false)
+    private Object carrier;
+    @TableField(exist = false)
+    private Object ac;
+    @TableField(exist = false)
+    private Object deviceBrand;
+    @TableField(exist = false)
+    private Object articleCategory;
+    @TableField(exist = false)
+    private Object activateType;
+    @TableField(exist = false)
+    private Object city;
+    @TableField(exist = false)
+    private Object businessIds;
+    @TableField(exist = false)
+    private String locationType;
+    @TableField(exist = false)
+    private Object superiorPopularityType;
+    @TableField(exist = false)
+    private Object flowPackage;
+    @TableField(exist = false)
+    private Object excludeFlowPackage;
+    @TableField(exist = false)
+    private Object deviceType;
+    @TableField(exist = false)
+    private Object autoExtendEnabled;
+    @TableField(exist = false)
+    private Object launchPrice;
+    @TableField(exist = false)
+    private Object interestActionMode;
+    @TableField(exist = false)
+    private Object actionScene;
+    @TableField(exist = false)
+    private Object actionDays;
+    @TableField(exist = false)
+    private Object actionCategories;
+    @TableField(exist = false)
+    private Object actionWords;
+    @TableField(exist = false)
+    private Object interestCategories;
+    @TableField(exist = false)
+    private Object interestWords;
+    @TableField(exist = false)
+    private Object geolocation;
+    @TableField(exist = false)
+    private String externalAction;
+    @TableField(exist = false)
+    private String useOpenUrl;
+
+    public ByteDanceAdvertisePlan(JSONObject dataObject, String accountId) {
+        this.id = dataObject.getLong("id");
+        this.accountId = accountId;
+        String name = dataObject.getString("name");
+        if (null != name && !"".equals(name.trim())) {
+            this.name = name;
+        }
+        JSONObject audience = dataObject.getJSONObject("audience");
+        if (null != audience) {
+            this.audience = audience.toJSONString();
+            JSONArray platform = audience.getJSONArray("platform");
+            if (null != platform && platform.size() > 0) {
+                String plat = "";
+                for (int i = 0; i < platform.size(); i++) {
+                    String platformStr = platform.getString(i);
+                    if ("IOS".equals(platformStr)) {
+                        plat += "ios,";
+                    } else {
+                        plat += "安卓,";
+                    }
+                }
+                this.platform = plat.substring(0, plat.length() - 1);
+            }
+            String gender = audience.getString("gender");
+            if (null != gender) {
+                if (CtopAdConstant.BYTEDANCE_GENDER_TYPE_NONE.equals(gender)) {
+                    this.gender = "不限";
+                } else if (CtopAdConstant.BYTEDANCE_GENDER_TYPE_GENDER_MALE.equals(gender)) {
+                    this.gender = "男";
+                } else {
+                    this.gender = "女";
+                }
+            }
+        }
+        this.createTime = new Date();
+        this.updateTime = new Date();
+        Long advertiserId = dataObject.getLong("advertiser_id");
+
+        if (null != advertiserId) {
+            this.accountId = advertiserId + "";
+        }
+        Long campaignId = dataObject.getLong("campaign_id");
+        if (null != campaignId) {
+            this.campaignId = campaignId;
+        }
+
+        String budgetMode = dataObject.getString("budget_mode");
+        if (null != budgetMode && !"".equals(budgetMode.trim())) {
+            this.budgetMode = budgetMode;
+        }
+        String modifyTime = dataObject.getString("modify_time");
+        if (null != modifyTime && !"".equals(modifyTime.trim())) {
+            this.modifyTime = modifyTime;
+        }
+        String openUrl = dataObject.getString("open_url");
+        if (null != openUrl && !"".equals(openUrl.trim())) {
+            this.openUrl = openUrl;
+        }
+
+        String adCreateTime = dataObject.getString("ad_create_time");
+        if (null != adCreateTime && !"".equals(adCreateTime.trim())) {
+            this.adCreateTime = adCreateTime;
+        }
+
+        String adModifyTime = dataObject.getString("ad_modify_time");
+        if (null != adModifyTime && !"".equals(adModifyTime.trim())) {
+            this.adModifyTime = adModifyTime;
+        }
+
+        String auditRejectReason = dataObject.getString("audit_reject_reason");
+        if (null != auditRejectReason && !"".equals(auditRejectReason.trim())) {
+            this.auditRejectReason = auditRejectReason;
+        }
+
+        String pricing = dataObject.getString("pricing");
+        if (null != pricing && !"".equals(pricing.trim())) {
+            this.pricing = pricing;
+        }
+
+
+        Integer hideIfExists = dataObject.getInteger("hide_if_exists");
+        if (null != hideIfExists) {
+            this.hideIfExists = hideIfExists;
+        }
+
+        String appType = dataObject.getString("app_type");
+        if (null != appType && !"".equals(appType.trim())) {
+            this.appType = appType;
+        }
+
+        String flowControlMode = dataObject.getString("flow_control_mode");
+        if (null != flowControlMode && !"".equals(flowControlMode.trim())) {
+            this.flowControlMode = flowControlMode;
+        }
+
+
+        BigDecimal cpaBid = dataObject.getBigDecimal("cpa_bid");
+        if (null != cpaBid) {
+            this.cpaBid = cpaBid;
+        }
+
+        String startTime = dataObject.getString("start_time");
+        if (null != startTime && !"".equals(startTime.trim())) {
+            this.startTime = startTime;
+        }
+
+        String optStatus = dataObject.getString("opt_status");
+        if (null != optStatus && !"".equals(optStatus.trim())) {
+            this.optStatus = optStatus;
+        }
+
+        String endTime = dataObject.getString("end_time");
+        if (null != endTime && !"".equals(endTime.trim())) {
+            this.endTime = endTime;
+        }
+
+        String status = dataObject.getString("status");
+        if (null != status && !"".equals(status.trim())) {
+            this.toutiaoStatus = status;
+        }
+
+        Long convertId = dataObject.getLong("convert_id");
+        if (null != convertId) {
+            this.convertId = convertId;
+        }
+
+        BigDecimal bid = dataObject.getBigDecimal("bid");
+        if (null != bid) {
+            this.bid = bid;
+        }
+
+        String hideIfConverted = dataObject.getString("hide_if_converted");
+        if (null != hideIfConverted && !"".equals(hideIfConverted.trim())) {
+            this.hideIfConverted = hideIfConverted;
+        }
+
+        String toutiaoPackage = dataObject.getString("package");
+        if (null != toutiaoPackage && !"".equals(toutiaoPackage.trim())) {
+            this.toutiaoPackage = toutiaoPackage;
+        }
+
+        String deliveryRange = dataObject.getString("delivery_range");
+        if (null != deliveryRange && !"".equals(deliveryRange.trim())) {
+            this.deliveryRange = deliveryRange;
+        }
+
+        BigDecimal budget = dataObject.getBigDecimal("budget");
+        if (null != budget) {
+            this.budget = budget;
+        }
+
+        String scheduleType = dataObject.getString("schedule_type");
+        if (null != scheduleType && !"".equals(scheduleType.trim())) {
+            this.scheduleType = scheduleType;
+        }
+
+        String scheduleTime = dataObject.getString("schedule_time");
+        if (null != scheduleTime && !"".equals(scheduleTime.trim())) {
+            this.scheduleTime = scheduleTime;
+        }
+
+        String downloadType = dataObject.getString("download_type");
+        if (null != downloadType && !"".equals(downloadType.trim())) {
+            this.downloadType = downloadType;
+        }
+
+        String downloadUrl = dataObject.getString("download_url");
+        if (null != downloadUrl && !"".equals(downloadUrl.trim())) {
+            this.downloadUrl = downloadUrl;
+        }
+
+        String externalUrl = dataObject.getString("external_url");
+        if (null != externalUrl && !"".equals(externalUrl.trim())) {
+            this.externalUrl = externalUrl;
+        }
+    }
+
+    public ByteDanceAdvertisePlan(String advertiserId, Long adId, JSONObject params) {
+        this.id = adId;
+        this.accountId = advertiserId;
+        String name = params.getString("name");
+        if (null != name && !"".equals(name.trim())) {
+            this.name = name;
+        }
+
+        Long campaignId = params.getLong("campaign_id");
+        if (null != campaignId) {
+            this.campaignId = campaignId;
+        }
+
+        String budgetMode = params.getString("budget_mode");
+        if (null != budgetMode && !"".equals(budgetMode.trim())) {
+            this.budgetMode = budgetMode;
+        }
+
+        String openUrl = params.getString("open_url");
+        if (null != openUrl && !"".equals(openUrl.trim())) {
+            this.openUrl = openUrl;
+        }
+
+        String adCreateTime = params.getString("ad_create_time");
+        if (null != adCreateTime && !"".equals(adCreateTime.trim())) {
+            this.adCreateTime = adCreateTime;
+        }
+
+        String adModifyTime = params.getString("ad_modify_time");
+        if (null != adModifyTime && !"".equals(adModifyTime.trim())) {
+            this.adModifyTime = adModifyTime;
+        }
+
+        String auditRejectReason = params.getString("audit_reject_reason");
+        if (null != auditRejectReason && !"".equals(auditRejectReason.trim())) {
+            this.auditRejectReason = auditRejectReason;
+        }
+
+        String pricing = params.getString("pricing");
+        if (null != pricing && !"".equals(pricing.trim())) {
+            this.pricing = pricing;
+        }
+
+        Integer hideIfExists = params.getInteger("hide_if_exists");
+        if (null != hideIfExists) {
+            this.hideIfExists = hideIfExists;
+        }
+
+        String appType = params.getString("app_type");
+        if (null != appType && !"".equals(appType.trim())) {
+            this.appType = appType;
+        }
+
+        String flowControlMode = params.getString("flow_control_mode");
+        if (null != flowControlMode && !"".equals(flowControlMode.trim())) {
+            this.flowControlMode = flowControlMode;
+        }
+
+        BigDecimal cpaBid = params.getBigDecimal("cpa_bid");
+        if (null != cpaBid) {
+            this.cpaBid = cpaBid;
+        }
+
+        String startTime = params.getString("start_time");
+        if (null != startTime && !"".equals(startTime.trim())) {
+            this.startTime = startTime;
+        }
+
+        String optStatus = params.getString("opt_status");
+        if (null != optStatus && !"".equals(optStatus.trim())) {
+            this.optStatus = optStatus;
+        }
+
+        String endTime = params.getString("end_time");
+        if (null != endTime && !"".equals(endTime.trim())) {
+            this.endTime = endTime;
+        }
+
+        String status = params.getString("status");
+        if (null != status && !"".equals(status.trim())) {
+            this.toutiaoStatus = status;
+        }
+
+        Long convertId = params.getLong("convert_id");
+        if (null != convertId) {
+            this.convertId = convertId;
+        }
+
+        BigDecimal bid = params.getBigDecimal("bid");
+        if (null != bid) {
+            this.bid = bid;
+        }
+
+        String hideIfConverted = params.getString("hide_if_converted");
+        if (null != hideIfConverted && !"".equals(hideIfConverted.trim())) {
+            this.hideIfConverted = hideIfConverted;
+        }
+
+        String toutiaoPackage = params.getString("package");
+        if (null != toutiaoPackage && !"".equals(toutiaoPackage.trim())) {
+            this.toutiaoPackage = toutiaoPackage;
+        }
+
+        String deliveryRange = params.getString("delivery_range");
+        if (null != deliveryRange && !"".equals(deliveryRange.trim())) {
+            this.deliveryRange = deliveryRange;
+        }
+
+        BigDecimal budget = params.getBigDecimal("budget");
+        if (null != budget) {
+            this.budget = budget;
+        }
+
+        String scheduleType = params.getString("schedule_type");
+        if (null != scheduleType && !"".equals(scheduleType.trim())) {
+            this.scheduleType = scheduleType;
+        }
+
+        String scheduleTime = params.getString("schedule_time");
+        if (null != scheduleTime && !"".equals(scheduleTime.trim())) {
+            this.scheduleTime = scheduleTime;
+        }
+
+        String downloadType = params.getString("download_type");
+        if (null != downloadType && !"".equals(downloadType.trim())) {
+            this.downloadType = downloadType;
+        }
+
+        String externalUrl = params.getString("external_url");
+        if (null != externalUrl && !"".equals(externalUrl.trim())) {
+            this.externalUrl = externalUrl;
+        }
+    }
+
+    public ByteDanceAdvertisePlan() {
+    }
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1144 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertisePlanDailyReport.java


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1151 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertisePlanHourlyReport.java


+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/ByteDanceAdvertiserReportDTO.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class ByteDanceAdvertiserReportDTO implements Serializable {
+    private Long advertiserId;
+    private String startDate;
+    private String endDate;
+    private Integer pageSize;
+    private Integer page;
+    private String timeGranularity;
+}

+ 250 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAgentReportDaily.java

@@ -0,0 +1,250 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+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;
+
+
+/**
+ * 代理商日报
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-10-21
+ */
+@Data
+@TableName("bytedance_agent_report_daily")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_agent_report_daily对象", description = "代理商日报")
+public class BytedanceAgentReportDaily {
+
+    /**
+     * 数据日期
+     */
+    @Excel(name = "数据日期            ", width = 15)
+    @ApiModelProperty(value = "数据日期            ")
+    private String statDatetime;
+    /**
+     * 代理商ID
+     */
+    @Excel(name = "代理商ID            ", width = 15)
+    @ApiModelProperty(value = "代理商ID            ")
+    private Long agentId;
+    /**
+     * 代理商名称
+     */
+    @Excel(name = "代理商名称          ", width = 15)
+    @ApiModelProperty(value = "代理商名称          ")
+    private String agentName;
+    /**
+     * 广告主id
+     */
+    @Excel(name = "广告主id            ", width = 15)
+    @ApiModelProperty(value = "广告主id            ")
+    private Long advertiserId;
+    /**
+     * 广告主名称
+     */
+    @Excel(name = "广告主名称          ", width = 15)
+    @ApiModelProperty(value = "广告主名称          ")
+    private String advertiserName;
+    /**
+     * 二级行业
+     */
+    @Excel(name = "二级行业            ", width = 15)
+    @ApiModelProperty(value = "二级行业            ")
+    private String secondIndustry;
+    /**
+     * 一级行业
+     */
+    @Excel(name = "一级行业            ", width = 15)
+    @ApiModelProperty(value = "一级行业            ")
+    private String firstIndustry;
+    /**
+     * 广告主账户类型
+     */
+    @Excel(name = "广告主账户类型      ", width = 15)
+    @ApiModelProperty(value = "广告主账户类型      ")
+    private String accountSource;
+    /**
+     * 广告主账号的过审时间
+     */
+    @Excel(name = "广告主账号的过审时间", width = 15)
+    @ApiModelProperty(value = "广告主账号的过审时间")
+    private String auditPassTime;
+    /**
+     * 广告主的账户状态
+     */
+    @Excel(name = "广告主的账户状态    ", width = 15)
+    @ApiModelProperty(value = "广告主的账户状态    ")
+    private String accountStatus;
+    /**
+     * 广告主所属公司ID
+     */
+    @Excel(name = "广告主所属公司ID    ", width = 15)
+    @ApiModelProperty(value = "广告主所属公司ID    ")
+    private Integer companyId;
+    /**
+     * 广告主所属公司名称
+     */
+    @Excel(name = "广告主所属公司名称  ", width = 15)
+    @ApiModelProperty(value = "广告主所属公司名称  ")
+    private String companyName;
+    /**
+     * 广告主账户的注册时间
+     */
+    @Excel(name = "广告主账户的注册时间", width = 15)
+    @ApiModelProperty(value = "广告主账户的注册时间")
+    private String registerTime;
+    /**
+     * 总消耗
+     */
+    @Excel(name = "总消耗              ", width = 15)
+    @ApiModelProperty(value = "总消耗              ")
+    private java.math.BigDecimal cost;
+    /**
+     * 现金消耗
+     */
+    @Excel(name = "现金消耗            ", width = 15)
+    @ApiModelProperty(value = "现金消耗            ")
+    private java.math.BigDecimal cashCost;
+    /**
+     * 竞价消耗
+     */
+    @Excel(name = "竞价消耗            ", width = 15)
+    @ApiModelProperty(value = "竞价消耗            ")
+    private java.math.BigDecimal bidCost;
+    /**
+     * 品牌消耗
+     */
+    @Excel(name = "品牌消耗            ", width = 15)
+    @ApiModelProperty(value = "品牌消耗            ")
+    private java.math.BigDecimal brandCost;
+    /**
+     * 赠款消耗
+     */
+    @Excel(name = "赠款消耗            ", width = 15)
+    @ApiModelProperty(value = "赠款消耗            ")
+    private java.math.BigDecimal grantsCost;
+    /**
+     * CPC消耗
+     */
+    @Excel(name = "CPC消耗             ", width = 15)
+    @ApiModelProperty(value = "CPC消耗             ")
+    private java.math.BigDecimal cpcCost;
+    /**
+     * CPM消耗
+     */
+    @Excel(name = "CPM消耗             ", width = 15)
+    @ApiModelProperty(value = "CPM消耗             ")
+    private java.math.BigDecimal cpmCost;
+    /**
+     * oCPC消耗
+     */
+    @Excel(name = "oCPC消耗            ", width = 15)
+    @ApiModelProperty(value = "oCPC消耗            ")
+    private java.math.BigDecimal ocpcCost;
+    /**
+     * CPA消耗
+     */
+    @Excel(name = "CPA消耗             ", width = 15)
+    @ApiModelProperty(value = "CPA消耗             ")
+    private java.math.BigDecimal cpaCost;
+    /**
+     * oCPM消耗
+     */
+    @Excel(name = "oCPM消耗            ", width = 15)
+    @ApiModelProperty(value = "oCPM消耗            ")
+    private java.math.BigDecimal ocpmCost;
+    /**
+     * CPV消耗
+     */
+    @Excel(name = "CPV消耗             ", width = 15)
+    @ApiModelProperty(value = "CPV消耗             ")
+    private java.math.BigDecimal cpvCost;
+    /**
+     * CPT消耗
+     */
+    @Excel(name = "CPT消耗             ", width = 15)
+    @ApiModelProperty(value = "CPT消耗             ")
+    private java.math.BigDecimal cptCost;
+    /**
+     * GD消耗
+     */
+    @Excel(name = "GD消耗              ", width = 15)
+    @ApiModelProperty(value = "GD消耗              ")
+    private java.math.BigDecimal gdCost;
+    /**
+     * 展示量
+     */
+    @TableField(value = "`show`")
+    @Excel(name = "展示量              ", width = 15)
+    @ApiModelProperty(value = "展示量              ")
+    private Integer show;
+    /**
+     * 平均千次展示价格
+     */
+    @Excel(name = "平均千次展示价格    ", width = 15)
+    @ApiModelProperty(value = "平均千次展示价格    ")
+    private String cpm;
+    /**
+     * 点击量
+     */
+    @Excel(name = "点击量              ", width = 15)
+    @ApiModelProperty(value = "点击量              ")
+    private Integer click;
+    /**
+     * 点击率
+     */
+    @Excel(name = "点击率              ", width = 15)
+    @ApiModelProperty(value = "点击率              ")
+    private java.math.BigDecimal ctr;
+    /**
+     * 平均点击价格
+     */
+    @Excel(name = "平均点击价格        ", width = 15)
+    @ApiModelProperty(value = "平均点击价格        ")
+    private java.math.BigDecimal cpc;
+    /**
+     * 转账总次数
+     */
+    @Excel(name = "转账总次数          ", width = 15)
+    @ApiModelProperty(value = "转账总次数          ")
+    private Integer transferCount;
+    /**
+     * 今日总消耗
+     */
+    @Excel(name = "今日总消耗          ", width = 15)
+    @ApiModelProperty(value = "今日总消耗          ")
+    private java.math.BigDecimal todayCost;
+    /**
+     * 转账金额
+     */
+    @Excel(name = "转账金额            ", width = 15)
+    @ApiModelProperty(value = "转账金额            ")
+    private java.math.BigDecimal transferAmount;
+    /**
+     * 历史总消耗
+     */
+    @Excel(name = "历史总消耗          ", width = 15)
+    @ApiModelProperty(value = "历史总消耗          ")
+    private java.math.BigDecimal historyCost;
+    /**
+     * 广告主开户天数
+     */
+    @Excel(name = "广告主开户天数      ", width = 15)
+    @ApiModelProperty(value = "广告主开户天数      ")
+    private java.math.BigDecimal registerDays;
+    /**
+     * 首消时间
+     */
+    @Excel(name = "首消时间            ", width = 15)
+    @ApiModelProperty(value = "首消时间            ")
+    private String firstCostTime;
+}

+ 257 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAgentReportHourly.java

@@ -0,0 +1,257 @@
+package cn.com.ctop.job.bytedance.data.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;
+
+/**
+ * 代理商日报
+ * @author jeecg-boot
+ * @date   2021-10-21
+ * @version V1.0
+ */
+@Data
+@TableName("bytedance_agent_report_hourly")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="bytedance_agent_report_hourly对象", description="代理商日报")
+public class BytedanceAgentReportHourly {
+    
+	/**数据日期                         */
+	@Excel(name = "数据日期                         ", width = 15)
+    @ApiModelProperty(value = "数据日期                         ")
+	private String statDatetime;
+	/**hour*/
+	@TableField(value = "`hour`")
+	@Excel(name = "hour", width = 15)
+    @ApiModelProperty(value = "hour")
+	private java.lang.Integer hour;
+	/**代理商 ID                        */
+	@Excel(name = "代理商 ID                        ", width = 15)
+    @ApiModelProperty(value = "代理商 ID                        ")
+	private Long agentId;
+	/**代理商名称                       */
+	@Excel(name = "代理商名称                       ", width = 15)
+    @ApiModelProperty(value = "代理商名称                       ")
+	private java.lang.String agentName;
+	/**广告主ID                         */
+	@Excel(name = "广告主ID                         ", width = 15)
+    @ApiModelProperty(value = "广告主ID                         ")
+	private Long advertiserId;
+	/**广告主名称                       */
+	@Excel(name = "广告主名称                       ", width = 15)
+    @ApiModelProperty(value = "广告主名称                       ")
+	private java.lang.String advertiserName;
+	/**一级行业                         */
+	@Excel(name = "一级行业                         ", width = 15)
+    @ApiModelProperty(value = "一级行业                         ")
+	private java.lang.String firstIndustry;
+	/**二级行业                         */
+	@Excel(name = "二级行业                         ", width = 15)
+    @ApiModelProperty(value = "二级行业                         ")
+	private java.lang.String secondIndustry;
+	/**广告主账号的过审时间             */
+	@Excel(name = "广告主账号的过审时间             ", width = 15)
+    @ApiModelProperty(value = "广告主账号的过审时间             ")
+	private java.lang.String auditPassTime;
+	/**广告主账户状态                   */
+	@Excel(name = "广告主账户状态                   ", width = 15)
+    @ApiModelProperty(value = "广告主账户状态                   ")
+	private java.lang.String accountStatus;
+	/**广告主所属公司ID                 */
+	@Excel(name = "广告主所属公司ID                 ", width = 15)
+    @ApiModelProperty(value = "广告主所属公司ID                 ")
+	private java.lang.Integer companyId;
+	/**广告主所属公司名称               */
+	@Excel(name = "广告主所属公司名称               ", width = 15)
+    @ApiModelProperty(value = "广告主所属公司名称               ")
+	private java.lang.String companyName;
+	/**广告主账户的注册时间             */
+	@Excel(name = "广告主账户的注册时间             ", width = 15)
+    @ApiModelProperty(value = "广告主账户的注册时间             ")
+	private java.lang.String registerTime;
+	/**广告主账户类型                   */
+	@Excel(name = "广告主账户类型                   ", width = 15)
+    @ApiModelProperty(value = "广告主账户类型                   ")
+	private java.lang.String accountSource;
+	/**今日总消耗                       */
+	@Excel(name = "今日总消耗                       ", width = 15)
+    @ApiModelProperty(value = "今日总消耗                       ")
+	private java.math.BigDecimal todayCost;
+	/**昨日总消耗                       */
+	@Excel(name = "昨日总消耗                       ", width = 15)
+    @ApiModelProperty(value = "昨日总消耗                       ")
+	private java.math.BigDecimal yesterdayCost;
+	/**今日查询结束时间                 */
+	@Excel(name = "今日查询结束时间                 ", width = 15)
+    @ApiModelProperty(value = "今日查询结束时间                 ")
+	private java.lang.Integer queryEndTime;
+	/**今日截止x点总消耗                */
+	@Excel(name = "今日截止x点总消耗                ", width = 15)
+    @ApiModelProperty(value = "今日截止x点总消耗                ")
+	private java.math.BigDecimal todayXHourCost;
+	/**昨日截止x点总消耗                */
+	@Excel(name = "昨日截止x点总消耗                ", width = 15)
+    @ApiModelProperty(value = "昨日截止x点总消耗                ")
+	private java.math.BigDecimal yesterdayXHourCost;
+	/**截止x点总消耗升降值              */
+	@Excel(name = "截止x点总消耗升降值              ", width = 15)
+    @ApiModelProperty(value = "截止x点总消耗升降值              ")
+	private java.math.BigDecimal xHourCostDiff;
+	/**今日截止x点转化数                */
+	@Excel(name = "今日截止x点转化数                ", width = 15)
+    @ApiModelProperty(value = "今日截止x点转化数                ")
+	private java.math.BigDecimal todayXHourConvert;
+	/**昨日截止x点转化数                */
+	@Excel(name = "昨日截止x点转化数                ", width = 15)
+    @ApiModelProperty(value = "昨日截止x点转化数                ")
+	private java.math.BigDecimal yesterdayXHourConvert;
+	/**截止x点转化数升降值              */
+	@Excel(name = "截止x点转化数升降值              ", width = 15)
+    @ApiModelProperty(value = "截止x点转化数升降值              ")
+	private java.math.BigDecimal xHourConvertDiff;
+	/**今日截止x点累计转化成本          */
+	@Excel(name = "今日截止x点累计转化成本          ", width = 15)
+    @ApiModelProperty(value = "今日截止x点累计转化成本          ")
+	private java.math.BigDecimal todayXHourCpa;
+	/**昨日截止x点累计转化成本          */
+	@Excel(name = "昨日截止x点累计转化成本          ", width = 15)
+    @ApiModelProperty(value = "昨日截止x点累计转化成本          ")
+	private java.math.BigDecimal yesterdayXHourCpa;
+	/**截止x点累计转化成本升降值        */
+	@Excel(name = "截止x点累计转化成本升降值        ", width = 15)
+    @ApiModelProperty(value = "截止x点累计转化成本升降值        ")
+	private java.math.BigDecimal xHourCpaDiff;
+	/**今日截止x点点击数                */
+	@Excel(name = "今日截止x点点击数                ", width = 15)
+    @ApiModelProperty(value = "今日截止x点点击数                ")
+	private java.lang.Integer todayXHourClick;
+	/**昨日截止x点点击数                */
+	@Excel(name = "昨日截止x点点击数                ", width = 15)
+    @ApiModelProperty(value = "昨日截止x点点击数                ")
+	private java.lang.Integer yesterdayXHourClick;
+	/**截止x点点击数升降值              */
+	@Excel(name = "截止x点点击数升降值              ", width = 15)
+    @ApiModelProperty(value = "截止x点点击数升降值              ")
+	private java.lang.Integer xHourClickDiff;
+	/**今日截止x点累计点击成本          */
+	@Excel(name = "今日截止x点累计点击成本          ", width = 15)
+    @ApiModelProperty(value = "今日截止x点累计点击成本          ")
+	private java.math.BigDecimal todayXHourCpc;
+	/**昨日截止x点累计点击成本          */
+	@Excel(name = "昨日截止x点累计点击成本          ", width = 15)
+    @ApiModelProperty(value = "昨日截止x点累计点击成本          ")
+	private java.math.BigDecimal yesterdayXHourCpc;
+	/**截止x点累计点击成本升降值        */
+	@Excel(name = "截止x点累计点击成本升降值        ", width = 15)
+    @ApiModelProperty(value = "截止x点累计点击成本升降值        ")
+	private java.math.BigDecimal xHourCpcDiff;
+	/**昨日现金消耗                     */
+	@Excel(name = "昨日现金消耗                     ", width = 15)
+    @ApiModelProperty(value = "昨日现金消耗                     ")
+	private java.math.BigDecimal yesterdayCashCost;
+	/**昨日竞价现金消耗                 */
+	@Excel(name = "昨日竞价现金消耗                 ", width = 15)
+    @ApiModelProperty(value = "昨日竞价现金消耗                 ")
+	private java.math.BigDecimal yesterdayBidCashCost;
+	/**昨日品牌现金消耗                 */
+	@Excel(name = "昨日品牌现金消耗                 ", width = 15)
+    @ApiModelProperty(value = "昨日品牌现金消耗                 ")
+	private java.math.BigDecimal yesterdayBrandCashCost;
+	/**昨日赠款消耗                     */
+	@Excel(name = "昨日赠款消耗                     ", width = 15)
+    @ApiModelProperty(value = "昨日赠款消耗                     ")
+	private java.math.BigDecimal yesterdayGrantsCost;
+	/**昨日与前日环比                   */
+	@Excel(name = "昨日与前日环比                   ", width = 15)
+    @ApiModelProperty(value = "昨日与前日环比                   ")
+	private java.math.BigDecimal yesterdayMomCost;
+	/**昨日与前日差值                   */
+	@Excel(name = "昨日与前日差值                   ", width = 15)
+    @ApiModelProperty(value = "昨日与前日差值                   ")
+	private java.math.BigDecimal yesterdayCostDiff;
+	/**历史总消耗                       */
+	@Excel(name = "历史总消耗                       ", width = 15)
+    @ApiModelProperty(value = "历史总消耗                       ")
+	private java.math.BigDecimal historyCost;
+	/**历史现金总消耗                   */
+	@Excel(name = "历史现金总消耗                   ", width = 15)
+    @ApiModelProperty(value = "历史现金总消耗                   ")
+	private java.math.BigDecimal historyCashCost;
+	/**昨日有消耗计划数                 */
+	@Excel(name = "昨日有消耗计划数                 ", width = 15)
+    @ApiModelProperty(value = "昨日有消耗计划数                 ")
+	private java.math.BigDecimal yesterdayAdNumber;
+	/**广告主开户天数                   */
+	@Excel(name = "广告主开户天数                   ", width = 15)
+    @ApiModelProperty(value = "广告主开户天数                   ")
+	private java.math.BigDecimal registerDays;
+	/**首充金额                         */
+	@Excel(name = "首充金额                         ", width = 15)
+    @ApiModelProperty(value = "首充金额                         ")
+	private java.math.BigDecimal firstRechargeAmount;
+	/**首次充值时间                     */
+	@Excel(name = "首次充值时间                     ", width = 15)
+    @ApiModelProperty(value = "首次充值时间                     ")
+	private java.lang.String firstRechargeTime;
+	/**最近续费时间                     */
+	@Excel(name = "最近续费时间                     ", width = 15)
+    @ApiModelProperty(value = "最近续费时间                     ")
+	private java.lang.String lastRenewTime;
+	/**历史续费总金额                   */
+	@Excel(name = "历史续费总金额                   ", width = 15)
+    @ApiModelProperty(value = "历史续费总金额                   ")
+	private java.math.BigDecimal totalRenewAmount;
+	/**历史续费总次数                   */
+	@Excel(name = "历史续费总次数                   ", width = 15)
+    @ApiModelProperty(value = "历史续费总次数                   ")
+	private java.math.BigDecimal totalRenewNumber;
+	/**现金余额                         */
+	@Excel(name = "现金余额                         ", width = 15)
+    @ApiModelProperty(value = "现金余额                         ")
+	private java.math.BigDecimal cashBalance;
+	/**赠款余额                         */
+	@Excel(name = "赠款余额                         ", width = 15)
+    @ApiModelProperty(value = "赠款余额                         ")
+	private java.math.BigDecimal rantBalance;
+	/**最近转账时间                     */
+	@Excel(name = "最近转账时间                     ", width = 15)
+    @ApiModelProperty(value = "最近转账时间                     ")
+	private java.lang.String lastRechargeTime;
+	/**最近转账金额                     */
+	@Excel(name = "最近转账金额                     ", width = 15)
+    @ApiModelProperty(value = "最近转账金额                     ")
+	private java.math.BigDecimal lastRenewAmount;
+	/**最近三个有消耗日广告主日均消耗   */
+	@TableField(value = "arpu_3cd")
+	@Excel(name = "最近三个有消耗日广告主日均消耗   ", width = 15)
+    @ApiModelProperty(value = "最近三个有消耗日广告主日均消耗   ")
+	private java.math.BigDecimal arpu3cd;
+	/**总余额                           */
+	@Excel(name = "总余额                           ", width = 15)
+    @ApiModelProperty(value = "总余额                           ")
+	private java.math.BigDecimal totalBalance;
+	/**总可用余额                       */
+	@Excel(name = "总可用余额                       ", width = 15)
+    @ApiModelProperty(value = "总可用余额                       ")
+	private java.math.BigDecimal validBalance;
+	/**业务线                           */
+	@Excel(name = "业务线                           ", width = 15)
+    @ApiModelProperty(value = "业务线                           ")
+	private java.lang.String customerType;
+	/**首消时间                         */
+	@Excel(name = "首消时间                         ", width = 15)
+    @ApiModelProperty(value = "首消时间                         ")
+	private java.lang.String firstCostTime;
+}

+ 85 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceAudiencePackageGet.java

@@ -0,0 +1,85 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+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;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-10-21
+ */
+@Data
+@TableName("bytedance_audience_package_get")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_audience_package_get对象", description = "获取定向包")
+public class BytedanceAudiencePackageGet {
+
+    /**
+     * 广告主ID
+     */
+    @Excel(name = "广告主ID      ", width = 15)
+    @ApiModelProperty(value = "广告主ID      ")
+    private Long advertiserId;
+    /**
+     * 定向包id
+     */
+    @Excel(name = "定向包id      ", width = 15)
+    @ApiModelProperty(value = "定向包id      ")
+    private Long audiencePackageId;
+    /**
+     * 定向包名称
+     */
+    @Excel(name = "定向包名称    ", width = 15)
+    @ApiModelProperty(value = "定向包名称    ")
+    private java.lang.String name;
+    /**
+     * 定向包描述
+     */
+    @Excel(name = "定向包描述    ", width = 15)
+    @ApiModelProperty(value = "定向包描述    ")
+    private java.lang.String description;
+    /**
+     * 定向包推广类型
+     */
+    @Excel(name = "定向包推广类型", width = 15)
+    @ApiModelProperty(value = "定向包推广类型")
+    private java.lang.String landingType;
+    /**
+     * 过滤已转化用户
+     */
+    @Excel(name = "过滤已转化用户", width = 15)
+    @ApiModelProperty(value = "过滤已转化用户")
+    private java.lang.String hideIfConverted;
+    /**
+     * 过滤时间范围
+     */
+    @Excel(name = "过滤时间范围  ", width = 15)
+    @ApiModelProperty(value = "过滤时间范围  ")
+    private java.lang.String convertedTimeDuration;
+    /**
+     * 广告投放范围
+     */
+    @Excel(name = "广告投放范围  ", width = 15)
+    @ApiModelProperty(value = "广告投放范围  ")
+    private java.lang.String deliveryRange;
+    /**
+     * 已安装用户
+     */
+    @Excel(name = "已安装用户    ", width = 15)
+    @ApiModelProperty(value = "已安装用户    ")
+    private java.lang.Integer hideIfExists;
+    /**
+     * 自定内容
+     */
+    @Excel(name = "自定内容      ", width = 15)
+    @ApiModelProperty(value = "自定内容      ")
+    private java.lang.String audience;
+}

+ 88 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCampaignGet.java

@@ -0,0 +1,88 @@
+package cn.com.ctop.job.bytedance.data.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;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * @date   2021-10-21
+ * @version V1.0
+ */
+@Data
+@TableName("bytedance_campaign_get")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="bytedance_campaign_get对象", description="获取定向包")
+public class BytedanceCampaignGet {
+    
+	/**广告主id*/
+	@TableField(value = "advertiser_id")
+	@Excel(name = "广告主id", width = 15)
+    @ApiModelProperty(value = "广告主id")
+	private Long advertiserId;
+
+	/**广告组id*/
+	@TableField(value = "campaign_id")
+	@Excel(name = "广告组id", width = 15)
+    @ApiModelProperty(value = "广告组id")
+	private Long campaignId;
+
+	/**广告组名称*/
+	@TableField(value = "campaign_name")
+	@Excel(name = "广告组名称", width = 15)
+    @ApiModelProperty(value = "广告组名称")
+	private java.lang.String campaignName;
+	/**广告组预算*/
+	@Excel(name = "广告组预算", width = 15)
+    @ApiModelProperty(value = "广告组预算")
+	private java.lang.Integer budget;
+	/**广告组预算类型*/
+	@Excel(name = "广告组预算类型", width = 15)
+    @ApiModelProperty(value = "广告组预算类型")
+	private java.lang.String budgetMode;
+	/**广告组时间戳*/
+	@Excel(name = "广告组时间戳", width = 15)
+    @ApiModelProperty(value = "广告组时间戳")
+	private java.lang.String modifyTime;
+	/**广告组状态*/
+	@Excel(name = "广告组状态", width = 15)
+    @ApiModelProperty(value = "广告组状态")
+	private java.lang.String status;
+	/**广告组创建时间*/
+	@Excel(name = "广告组创建时间", width = 15)
+    @ApiModelProperty(value = "广告组创建时间")
+	private java.lang.String campaignCreateTime;
+	/**广告组修改时间*/
+	@Excel(name = "广告组修改时间", width = 15)
+    @ApiModelProperty(value = "广告组修改时间")
+	private java.lang.String campaignModifyTime;
+	/**营销目的*/
+	@Excel(name = "营销目的", width = 15)
+    @ApiModelProperty(value = "营销目的")
+	private java.lang.String marketingPurpose;
+	/**广告组商品类型*/
+	@Excel(name = "广告组商品类型", width = 15)
+    @ApiModelProperty(value = "广告组商品类型")
+	private java.lang.String deliveryRelatedNum;
+	/**投放类型*/
+	@Excel(name = "投放类型", width = 15)
+    @ApiModelProperty(value = "投放类型")
+	private java.lang.String deliveryMode;
+	/**landingType*/
+	@Excel(name = "landingType", width = 15)
+    @ApiModelProperty(value = "landingType")
+	private java.lang.String landingType;
+}

+ 995 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCampaignReportDaily.java

@@ -0,0 +1,995 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+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;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-10-21
+ */
+@Data
+@TableName("bytedance_campaign_report_daily")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_campaign_report_daily对象", description = "获取定向包")
+public class BytedanceCampaignReportDaily {
+
+    /**
+     * 广告主ID
+     */
+    @Excel(name = "广告主ID", width = 15)
+    @ApiModelProperty(value = "广告主ID")
+    private Long advertiserId;
+    /**
+     * 广告组id
+     */
+    @Excel(name = "广告组id", width = 15)
+    @ApiModelProperty(value = "广告组id")
+    private Long campaignId;
+    /**
+     * 广告组name
+     */
+    @Excel(name = "广告组name", width = 15)
+    @ApiModelProperty(value = "广告组name")
+    private java.lang.String campaignName;
+    /**
+     * 数据起始时间
+     */
+    @Excel(name = "数据起始时间", width = 15)
+    @ApiModelProperty(value = "数据起始时间")
+    private String statDatetime;
+    /**
+     * 展现数据-总花费
+     */
+    @Excel(name = "展现数据-总花费                                                       ", width = 15)
+    @ApiModelProperty(value = "展现数据-总花费                                                       ")
+    private java.math.BigDecimal cost;
+    /**
+     * 展现数据-展示数
+     */
+    @TableField(value = "`show`")
+    @Excel(name = "展现数据-展示数                                                       ", width = 15)
+    @ApiModelProperty(value = "展现数据-展示数                                                       ")
+    private java.lang.Integer show;
+    /**
+     * 展现数据-平均千次展现费用
+     */
+    @Excel(name = "展现数据-平均千次展现费用                                             ", width = 15)
+    @ApiModelProperty(value = "展现数据-平均千次展现费用                                             ")
+    private java.math.BigDecimal avgShowCost;
+    /**
+     * 展现数据-点击数
+     */
+    @Excel(name = "展现数据-点击数                                                       ", width = 15)
+    @ApiModelProperty(value = "展现数据-点击数                                                       ")
+    private java.lang.Integer click;
+    /**
+     * 展现数据-平均点击单价
+     */
+    @Excel(name = "展现数据-平均点击单价                                                 ", width = 15)
+    @ApiModelProperty(value = "展现数据-平均点击单价                                                 ")
+    private java.math.BigDecimal avgClickCost;
+    /**
+     * 展现数据-点击率
+     */
+    @Excel(name = "展现数据-点击率                                                       ", width = 15)
+    @ApiModelProperty(value = "展现数据-点击率                                                       ")
+    private java.math.BigDecimal ctr;
+    /**
+     * 转化数据-转化数
+     */
+    @TableField(value = "`convert`")
+    @Excel(name = "转化数据-转化数                                                       ", width = 15)
+    @ApiModelProperty(value = "转化数据-转化数                                                       ")
+    private java.lang.Integer convert;
+    /**
+     * 转化数据-转化成本
+     */
+    @Excel(name = "转化数据-转化成本                                                     ", width = 15)
+    @ApiModelProperty(value = "转化数据-转化成本                                                     ")
+    private java.math.BigDecimal convertCost;
+    /**
+     * 转化数据-转化率
+     */
+    @Excel(name = "转化数据-转化率                                                       ", width = 15)
+    @ApiModelProperty(value = "转化数据-转化率                                                       ")
+    private java.math.BigDecimal convertRate;
+    /**
+     * 转化数据-深度转化数
+     */
+    @Excel(name = "转化数据-深度转化数                                                   ", width = 15)
+    @ApiModelProperty(value = "转化数据-深度转化数                                                   ")
+    private java.lang.Integer deepConvert;
+    /**
+     * 转化数据-深度转化成本
+     */
+    @Excel(name = "转化数据-深度转化成本                                                 ", width = 15)
+    @ApiModelProperty(value = "转化数据-深度转化成本                                                 ")
+    private java.math.BigDecimal deepConvertCost;
+    /**
+     * 转化数据-深度转化率
+     */
+    @Excel(name = "转化数据-深度转化率                                                   ", width = 15)
+    @ApiModelProperty(value = "转化数据-深度转化率                                                   ")
+    private java.math.BigDecimal deepConvertRate;
+    /**
+     * 转化数据(计费时间)-转化数(计费时间)
+     */
+    @Excel(name = "转化数据(计费时间)-转化数(计费时间)                               ", width = 15)
+    @ApiModelProperty(value = "转化数据(计费时间)-转化数(计费时间)                               ")
+    private java.lang.Integer attributionConvert;
+    /**
+     * 转化数据(计费时间)-转化成本(计费时间)
+     */
+    @Excel(name = "转化数据(计费时间)-转化成本(计费时间)                             ", width = 15)
+    @ApiModelProperty(value = "转化数据(计费时间)-转化成本(计费时间)                             ")
+    private java.math.BigDecimal attributionConvertCost;
+    /**
+     * 转化数据(计费时间)-深度转化数(计费时间)
+     */
+    @Excel(name = "转化数据(计费时间)-深度转化数(计费时间)                           ", width = 15)
+    @ApiModelProperty(value = "转化数据(计费时间)-深度转化数(计费时间)                           ")
+    private java.lang.Integer attributionDeepConvert;
+    /**
+     * 转化数据(计费时间)-深度转化成本(计费时间)
+     */
+    @Excel(name = "转化数据(计费时间)-深度转化成本(计费时间)                         ", width = 15)
+    @ApiModelProperty(value = "转化数据(计费时间)-深度转化成本(计费时间)                         ")
+    private java.math.BigDecimal attributionDeepConvertCost;
+    /**
+     * 应用下载广告数据-安卓下载开始数
+     */
+    @Excel(name = "应用下载广告数据-安卓下载开始数                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓下载开始数                                       ")
+    private java.lang.Integer downloadStart;
+    /**
+     * 应用下载广告数据-安卓下载开始成本
+     */
+    @Excel(name = "应用下载广告数据-安卓下载开始成本                                     ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓下载开始成本                                     ")
+    private java.math.BigDecimal downloadStartCost;
+    /**
+     * 应用下载广告数据-安卓下载开始率
+     */
+    @Excel(name = "应用下载广告数据-安卓下载开始率                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓下载开始率                                       ")
+    private java.math.BigDecimal downloadStartRate;
+    /**
+     * 应用下载广告数据-安卓下载完成数
+     */
+    @Excel(name = "应用下载广告数据-安卓下载完成数                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓下载完成数                                       ")
+    private java.lang.Integer downloadFinish;
+    /**
+     * 应用下载广告数据-安卓下载完成成本
+     */
+    @Excel(name = "应用下载广告数据-安卓下载完成成本                                     ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓下载完成成本                                     ")
+    private java.math.BigDecimal downloadFinishCost;
+    /**
+     * 应用下载广告数据-安卓下载完成率
+     */
+    @Excel(name = "应用下载广告数据-安卓下载完成率                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓下载完成率                                       ")
+    private java.math.BigDecimal downloadFinishRate;
+    /**
+     * 应用下载广告数据-点击安装数
+     */
+    @Excel(name = "应用下载广告数据-点击安装数                                           ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-点击安装数                                           ")
+    private java.lang.Integer clickInstall;
+    /**
+     * 应用下载广告数据-安卓安装完成数
+     */
+    @Excel(name = "应用下载广告数据-安卓安装完成数                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓安装完成数                                       ")
+    private java.lang.Integer installFinish;
+    /**
+     * 应用下载广告数据-安卓安装完成成本
+     */
+    @Excel(name = "应用下载广告数据-安卓安装完成成本                                     ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓安装完成成本                                     ")
+    private java.math.BigDecimal installFinishCost;
+    /**
+     * 应用下载广告数据-安卓安装完成率
+     */
+    @Excel(name = "应用下载广告数据-安卓安装完成率                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-安卓安装完成率                                       ")
+    private java.math.BigDecimal installFinishRate;
+    /**
+     * 应用下载广告数据-激活数
+     */
+    @Excel(name = "应用下载广告数据-激活数                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-激活数                                               ")
+    private java.lang.Integer active;
+    /**
+     * 应用下载广告数据-激活成本
+     */
+    @Excel(name = "应用下载广告数据-激活成本                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-激活成本                                             ")
+    private java.math.BigDecimal activeCost;
+    /**
+     * 应用下载广告数据-激活率
+     */
+    @Excel(name = "应用下载广告数据-激活率                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-激活率                                               ")
+    private java.math.BigDecimal activeRate;
+    /**
+     * 应用下载广告数据-注册数
+     */
+    @Excel(name = "应用下载广告数据-注册数                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-注册数                                               ")
+    private java.math.BigDecimal register;
+    /**
+     * 应用下载广告数据-注册成本
+     */
+    @Excel(name = "应用下载广告数据-注册成本                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-注册成本                                             ")
+    private java.math.BigDecimal activeRegisterCost;
+    /**
+     * 应用下载广告数据-注册率
+     */
+    @Excel(name = "应用下载广告数据-注册率                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-注册率                                               ")
+    private java.lang.Float activeRegisterRate;
+    /**
+     * 应用下载广告数据-次留(未对回)
+     */
+    @Excel(name = "应用下载广告数据-次留(未对回)                                       ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-次留(未对回)                                       ")
+    private java.lang.Integer nextDayOpen;
+    /**
+     * 应用下载广告数据-次留成本(未对回)
+     */
+    @Excel(name = "应用下载广告数据-次留成本(未对回)                                   ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-次留成本(未对回)                                   ")
+    private java.math.BigDecimal nextDayOpenCost;
+    /**
+     * 应用下载广告数据-次留率(未对回)
+     */
+    @Excel(name = "应用下载广告数据-次留率(未对回)                                     ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-次留率(未对回)                                     ")
+    private java.math.BigDecimal nextDayOpenRate;
+    /**
+     * 应用下载广告数据-次留数
+     */
+    @Excel(name = "应用下载广告数据-次留数                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-次留数                                               ")
+    private java.lang.Integer attributionNextDayOpenCnt;
+    /**
+     * 应用下载广告数据-次留成本
+     */
+    @Excel(name = "应用下载广告数据-次留成本                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-次留成本                                             ")
+    private java.math.BigDecimal attributionNextDayOpenCost;
+    /**
+     * 应用下载广告数据-次留率
+     */
+    @Excel(name = "应用下载广告数据-次留率                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-次留率                                               ")
+    private java.math.BigDecimal attributionNextDayOpenRate;
+    /**
+     * 应用下载广告数据-关键行为数
+     */
+    @Excel(name = "应用下载广告数据-关键行为数                                           ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-关键行为数                                           ")
+    private java.lang.Integer gameAddiction;
+    /**
+     * 应用下载广告数据-关键行为成本
+     */
+    @Excel(name = "应用下载广告数据-关键行为成本                                         ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-关键行为成本                                         ")
+    private java.math.BigDecimal gameAddictionCost;
+    /**
+     * 应用下载广告数据-关键行为率
+     */
+    @Excel(name = "应用下载广告数据-关键行为率                                           ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-关键行为率                                           ")
+    private java.math.BigDecimal gameAddictionRate;
+    /**
+     * 应用下载广告数据-首次付费次数
+     */
+    @Excel(name = "应用下载广告数据-首次付费次数                                         ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-首次付费次数                                         ")
+    private java.lang.Integer payCount;
+    /**
+     * 应用下载广告数据-首次付费成本
+     */
+    @Excel(name = "应用下载广告数据-首次付费成本                                         ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-首次付费成本                                         ")
+    private java.math.BigDecimal activePayCost;
+    /**
+     * 应用下载广告数据-首次付费率
+     */
+    @Excel(name = "应用下载广告数据-首次付费率                                           ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-首次付费率                                           ")
+    private java.math.BigDecimal activePayRate;
+    /**
+     * 应用下载广告数据-完件数
+     */
+    @Excel(name = "应用下载广告数据-完件数                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-完件数                                               ")
+    private java.lang.Integer loanCompletion;
+    /**
+     * 应用下载广告数据-完件成本
+     */
+    @Excel(name = "应用下载广告数据-完件成本                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-完件成本                                             ")
+    private java.math.BigDecimal loanCompletionCost;
+    /**
+     * 应用下载广告数据-完件率
+     */
+    @Excel(name = "应用下载广告数据-完件率                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-完件率                                               ")
+    private java.math.BigDecimal loanCompletionRate;
+    /**
+     * 应用下载广告数据-预授信数
+     */
+    @Excel(name = "应用下载广告数据-预授信数                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-预授信数                                             ")
+    private java.lang.Integer preLoanCredit;
+    /**
+     * 应用下载广告数据-预授信成本
+     */
+    @Excel(name = "应用下载广告数据-预授信成本                                           ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-预授信成本                                           ")
+    private java.math.BigDecimal preLoanCreditCost;
+    /**
+     * 应用下载广告数据-授信数
+     */
+    @Excel(name = "应用下载广告数据-授信数                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-授信数                                               ")
+    private java.lang.Integer loanCredit;
+    /**
+     * 应用下载广告数据-授信成本
+     */
+    @Excel(name = "应用下载广告数据-授信成本                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-授信成本                                             ")
+    private java.math.BigDecimal loanCreditCost;
+    /**
+     * 应用下载广告数据-授信率
+     */
+    @Excel(name = "应用下载广告数据-授信率                                               ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-授信率                                               ")
+    private java.math.BigDecimal loanCreditRate;
+    /**
+     * 应用下载广告数据-APP内访问
+     */
+    @Excel(name = "应用下载广告数据-APP内访问                                            ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-APP内访问                                            ")
+    private java.lang.Integer inAppUv;
+    /**
+     * 应用下载广告数据-APP内访问详情页
+     */
+    @Excel(name = "应用下载广告数据-APP内访问详情页                                      ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-APP内访问详情页                                      ")
+    private java.lang.Integer inAppDetailUv;
+    /**
+     * 应用下载广告数据-APP内加入购物车
+     */
+    @Excel(name = "应用下载广告数据-APP内加入购物车                                      ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-APP内加入购物车                                      ")
+    private java.lang.Integer inAppCart;
+    /**
+     * 应用下载广告数据-APP内付费
+     */
+    @Excel(name = "应用下载广告数据-APP内付费                                            ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-APP内付费                                            ")
+    private java.lang.Integer inAppPay;
+    /**
+     * 应用下载广告数据-APP内下单
+     */
+    @Excel(name = "应用下载广告数据-APP内下单                                            ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-APP内下单                                            ")
+    private java.lang.Integer inAppOrder;
+    /**
+     * 应用下载广告数据-7日付费次数(激活时间)
+     */
+	@TableField(value = "attribution_game_pay_7d_count")
+    @Excel(name = "应用下载广告数据-7日付费次数(激活时间)                              ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-7日付费次数(激活时间)                              ")
+    private java.lang.Integer attributionGamePay7dCount;
+    /**
+     * 应用下载广告数据-7日付费成本(激活时间)
+     */
+	@TableField(value = "attribution_game_pay_7d_cost")
+    @Excel(name = "应用下载广告数据-7日付费成本(激活时间)                              ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-7日付费成本(激活时间)                              ")
+    private java.math.BigDecimal attributionGamePay7dCost;
+    /**
+     * 应用下载广告数据-7日人均付费次数(激活时间)
+     */
+	@TableField(value = "attribution_active_pay_7d_per_count")
+    @Excel(name = "应用下载广告数据-7日人均付费次数(激活时间)                          ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-7日人均付费次数(激活时间)                          ")
+    private java.lang.Integer attributionActivePay7dPerCount;
+    /**
+     * 应用下载广告数据-付费成本
+     */
+    @Excel(name = "应用下载广告数据-付费成本                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-付费成本                                             ")
+    private java.math.BigDecimal gamePayCost;
+    /**
+     * 应用下载广告数据-付费次数
+     */
+    @Excel(name = "应用下载广告数据-付费次数                                             ", width = 15)
+    @ApiModelProperty(value = "应用下载广告数据-付费次数                                             ")
+    private java.lang.Integer gamePayCount;
+    /**
+     * 落地页转化数据-点击电话按钮
+     */
+    @Excel(name = "落地页转化数据-点击电话按钮                                           ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-点击电话按钮                                           ")
+    private java.lang.Integer phone;
+    /**
+     * 落地页转化数据-表单提交
+     */
+    @Excel(name = "落地页转化数据-表单提交                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-表单提交                                               ")
+    private java.lang.Integer form;
+    /**
+     * 落地页转化数据-地图搜索
+     */
+    @Excel(name = "落地页转化数据-地图搜索                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-地图搜索                                               ")
+    private java.lang.Integer mapSearch;
+    /**
+     * 落地页转化数据-按钮button
+     */
+    @Excel(name = "落地页转化数据-按钮button                                             ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-按钮button                                             ")
+    private java.lang.Integer button;
+    /**
+     * 落地页转化数据-关键页面浏览
+     */
+    @TableField(value = "`view`")
+    @Excel(name = "落地页转化数据-关键页面浏览                                           ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-关键页面浏览                                           ")
+    private java.lang.Integer view;
+    /**
+     * 落地页转化数据-下载开始
+     */
+    @Excel(name = "落地页转化数据-下载开始                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-下载开始                                               ")
+    private java.lang.Integer download;
+    /**
+     * 落地页转化数据-QQ咨询
+     */
+    @Excel(name = "落地页转化数据-QQ咨询                                                 ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-QQ咨询                                                 ")
+    private java.lang.Integer qq;
+    /**
+     * 落地页转化数据-抽奖
+     */
+    @Excel(name = "落地页转化数据-抽奖                                                   ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-抽奖                                                   ")
+    private java.lang.Integer lottery;
+    /**
+     * 落地页转化数据-投票
+     */
+    @Excel(name = "落地页转化数据-投票                                                   ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-投票                                                   ")
+    private java.lang.Integer vote;
+    /**
+     * 落地页转化数据-短信咨询
+     */
+    @Excel(name = "落地页转化数据-短信咨询                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-短信咨询                                               ")
+    private java.lang.Integer message;
+    /**
+     * 落地页转化数据-页面跳转
+     */
+    @Excel(name = "落地页转化数据-页面跳转                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-页面跳转                                               ")
+    private java.lang.Integer redirect;
+    /**
+     * 落地页转化数据-商品购买
+     */
+    @Excel(name = "落地页转化数据-商品购买                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-商品购买                                               ")
+    private java.lang.Integer shopping;
+    /**
+     * 落地页转化数据-在线咨询
+     */
+    @Excel(name = "落地页转化数据-在线咨询                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-在线咨询                                               ")
+    private java.lang.Integer consult;
+    /**
+     * 落地页转化数据-微信复制
+     */
+    @Excel(name = "落地页转化数据-微信复制                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-微信复制                                               ")
+    private java.lang.Integer wechat;
+    /**
+     * 落地页转化数据-智能电话-确认拨打
+     */
+    @Excel(name = "落地页转化数据-智能电话-确认拨打                                      ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-智能电话-确认拨打                                      ")
+    private java.lang.Integer phoneConfirm;
+    /**
+     * 落地页转化数据-智能电话-确认接通
+     */
+    @Excel(name = "落地页转化数据-智能电话-确认接通                                      ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-智能电话-确认接通                                      ")
+    private java.lang.Integer phoneConnect;
+    /**
+     * 落地页转化数据-有效咨询
+     */
+    @Excel(name = "落地页转化数据-有效咨询                                               ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-有效咨询                                               ")
+    private java.lang.Integer consultEffective;
+    /**
+     * 落地页转化数据-建站卡券领取
+     */
+    @Excel(name = "落地页转化数据-建站卡券领取                                           ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-建站卡券领取                                           ")
+    private java.lang.Integer coupon;
+    /**
+     * 落地页转化数据-卡券页领取
+     */
+    @Excel(name = "落地页转化数据-卡券页领取                                             ", width = 15)
+    @ApiModelProperty(value = "落地页转化数据-卡券页领取                                             ")
+    private java.lang.Integer couponSinglePage;
+    /**
+     * 落地页及门店数据-调起店铺
+     */
+    @Excel(name = "落地页及门店数据-调起店铺                                             ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-调起店铺                                             ")
+    private java.lang.Integer redirectToShop;
+    /**
+     * 落地页及门店数据-店铺收藏
+     */
+    @Excel(name = "落地页及门店数据-店铺收藏                                             ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-店铺收藏                                             ")
+    private java.lang.Integer poiCollect;
+    /**
+     * 落地页及门店数据-查看店铺地址
+     */
+    @Excel(name = "落地页及门店数据-查看店铺地址                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-查看店铺地址                                         ")
+    private java.lang.Integer poiAddressClick;
+    /**
+     * 落地页及门店数据-鲁班订单量
+     */
+    @Excel(name = "落地页及门店数据-鲁班订单量                                           ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-鲁班订单量                                           ")
+    private java.lang.Integer lubanOrderCnt;
+    /**
+     * 落地页及门店数据-鲁班订单金额
+     */
+    @Excel(name = "落地页及门店数据-鲁班订单金额                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-鲁班订单金额                                         ")
+    private java.math.BigDecimal lubanOrderStatAmount;
+    /**
+     * 落地页及门店数据-鲁班ROI
+     */
+    @Excel(name = "落地页及门店数据-鲁班ROI                                              ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-鲁班ROI                                              ")
+    private java.math.BigDecimal lubanOrderRoi;
+    /**
+     * 落地页及门店数据-直播间观看数
+     */
+    @Excel(name = "落地页及门店数据-直播间观看数                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间观看数                                         ")
+    private java.lang.Integer lubanLiveEnterCnt;
+    /**
+     * 落地页及门店数据-直播间超过1分钟观看数
+     */
+    @Excel(name = "落地页及门店数据-直播间超过1分钟观看数                                ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间超过1分钟观看数                                ")
+    private java.lang.Integer liveWatchOneMinuteCount;
+    /**
+     * 落地页及门店数据-直播间关注数
+     */
+    @Excel(name = "落地页及门店数据-直播间关注数                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间关注数                                         ")
+    private java.lang.Integer lubanLiveFollowCnt;
+    /**
+     * 落地页及门店数据-直播间加入粉丝团
+     */
+    @Excel(name = "落地页及门店数据-直播间加入粉丝团                                     ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间加入粉丝团                                     ")
+    private java.lang.Integer liveFansClubJoinCnt;
+    /**
+     * 落地页及门店数据-直播间评论数
+     */
+    @Excel(name = "落地页及门店数据-直播间评论数                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间评论数                                         ")
+    private java.lang.Integer lubanLiveCommentCnt;
+    /**
+     * 落地页及门店数据-直播间分享数
+     */
+    @Excel(name = "落地页及门店数据-直播间分享数                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间分享数                                         ")
+    private java.lang.Integer lubanLiveShareCnt;
+    /**
+     * 落地页及门店数据-直播间打赏次数
+     */
+    @Excel(name = "落地页及门店数据-直播间打赏次数                                       ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间打赏次数                                       ")
+    private java.lang.Integer lubanLiveGiftCnt;
+    /**
+     * 落地页及门店数据-直播间礼物总金额
+     */
+    @Excel(name = "落地页及门店数据-直播间礼物总金额                                     ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间礼物总金额                                     ")
+    private java.math.BigDecimal lubanLiveGiftAmount;
+    /**
+     * 落地页及门店数据-直播间查看购物车数
+     */
+    @Excel(name = "落地页及门店数据-直播间查看购物车数                                   ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间查看购物车数                                   ")
+    private java.lang.Integer lubanLiveSlidecartClickCnt;
+    /**
+     * 落地页及门店数据-直播间点击商品数
+     */
+    @Excel(name = "落地页及门店数据-直播间点击商品数                                     ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间点击商品数                                     ")
+    private java.lang.Integer lubanLiveClickProductCnt;
+    /**
+     * 落地页及门店数据-直播间订单量
+     */
+    @Excel(name = "落地页及门店数据-直播间订单量                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间订单量                                         ")
+    private java.lang.Integer lubanLivePayOrderCount;
+    /**
+     * 落地页及门店数据-直播间订单金额
+     */
+    @Excel(name = "落地页及门店数据-直播间订单金额                                       ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间订单金额                                       ")
+    private java.math.BigDecimal lubanLivePayOrderStatCost;
+    /**
+     * 落地页及门店数据-直播间组件点击数。用户点击小风车+卡片组件的总次数
+     */
+    @Excel(name = "落地页及门店数据-直播间组件点击数。用户点击小风车+卡片组件的总次数    ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间组件点击数。用户点击小风车+卡片组件的总次数    ")
+    private java.lang.Integer liveComponentClickCount;
+    /**
+     * 落地页及门店数据-直播间组件点击成本。总花费/组件点击数
+     */
+    @Excel(name = "落地页及门店数据-直播间组件点击成本。总花费/组件点击数                ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间组件点击成本。总花费/组件点击数                ")
+    private java.math.BigDecimal liveComponentClickCost;
+    /**
+     * 落地页及门店数据-直播间组件点击率。组件点击数/组件曝光数
+     */
+    @Excel(name = "落地页及门店数据-直播间组件点击率。组件点击数/组件曝光数              ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-直播间组件点击率。组件点击数/组件曝光数              ")
+    private java.math.BigDecimal liveComponentClickRate;
+    /**
+     * 落地页及门店数据-微信内注册数
+     */
+    @Excel(name = "落地页及门店数据-微信内注册数                                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内注册数                                         ")
+    private java.lang.Integer wechatLoginCount;
+    /**
+     * 落地页及门店数据-微信内注册数(计费时间)
+     */
+    @TableField(value = "attribution_wechat_login_30d_count")
+    @Excel(name = "落地页及门店数据-微信内注册数(计费时间)                               ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内注册数(计费时间)                               ")
+    private java.lang.Integer attributionWechatLogin30dCount;
+    /**
+     * 落地页及门店数据-微信内注册成本
+     */
+    @Excel(name = "落地页及门店数据-微信内注册成本                                       ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内注册成本                                       ")
+    private java.math.BigDecimal wechatLoginCost;
+    /**
+     * 落地页及门店数据-微信内注册成本(计费时间)
+     */
+    @TableField(value = "attribution_wechat_login_30d_cost")
+    @Excel(name = "落地页及门店数据-微信内注册成本(计费时间)                             ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内注册成本(计费时间)                             ")
+    private java.math.BigDecimal attributionWechatLogin30dCost;
+    /**
+     * 落地页及门店数据-微信内首次付费数
+     */
+    @Excel(name = "落地页及门店数据-微信内首次付费数                                     ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费数                                     ")
+    private java.lang.Integer wechatFirstPayCount;
+    /**
+     * 落地页及门店数据-微信内首次付费数(计费时间)
+     */
+    @TableField(value = "attribution_wechat_first_pay_30d_count")
+    @Excel(name = "落地页及门店数据-微信内首次付费数(计费时间)                           ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费数(计费时间)                           ")
+    private java.lang.Integer attributionWechatFirstPay30dCount;
+    /**
+     * 落地页及门店数据-微信内首次付费成本
+     */
+    @Excel(name = "落地页及门店数据-微信内首次付费成本                                   ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费成本                                   ")
+    private java.math.BigDecimal wechatFirstPayCost;
+    /**
+     * 落地页及门店数据-微信内首次付费成本(计费时间)
+     */
+    @TableField(value = "attribution_wechat_first_pay_30d_cost")
+    @Excel(name = "落地页及门店数据-微信内首次付费成本(计费时间)                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费成本(计费时间)                         ")
+    private java.math.BigDecimal attributionWechatFirstPay30dCost;
+    /**
+     * 落地页及门店数据-微信内首次付费率
+     */
+    @Excel(name = "落地页及门店数据-微信内首次付费率                                     ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费率                                     ")
+    private java.math.BigDecimal wechatFirstPayRate;
+    /**
+     * 落地页及门店数据-微信内首次付费率(计费时间)
+     */
+    @TableField(value = "attribution_wechat_first_pay_30d_rate")
+    @Excel(name = "落地页及门店数据-微信内首次付费率(计费时间)                           ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费率(计费时间)                           ")
+    private java.math.BigDecimal attributionWechatFirstPay30dRate;
+    /**
+     * 落地页及门店数据-微信内首次付费金额
+     */
+    @Excel(name = "落地页及门店数据-微信内首次付费金额                                   ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费金额                                   ")
+    private java.math.BigDecimal wechatPayAmount;
+    /**
+     * 落地页及门店数据-微信内首次付费金额(计费时间)
+     */
+    @TableField(value = "attribution_wechat_pay_30d_amount")
+    @Excel(name = "落地页及门店数据-微信内首次付费金额(计费时间)                         ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费金额(计费时间)                         ")
+    private java.math.BigDecimal attributionWechatPay30dAmount;
+    /**
+     * 落地页及门店数据-微信内首次付费ROI
+     */
+    @TableField(value = "attribution_wechat_pay_30d_roi")
+    @Excel(name = "落地页及门店数据-微信内首次付费ROI                                    ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-微信内首次付费ROI                                    ")
+    private java.math.BigDecimal attributionWechatPay30dRoi;
+    /**
+     * 落地页及门店数据-智能电话-有效接通
+     */
+    @Excel(name = "落地页及门店数据-智能电话-有效接通                                    ", width = 15)
+    @ApiModelProperty(value = "落地页及门店数据-智能电话-有效接通                                    ")
+    private java.lang.Integer phoneEffective;
+    /**
+     * 视频数据-播放数
+     */
+    @Excel(name = "视频数据-播放数                                                       ", width = 15)
+    @ApiModelProperty(value = "视频数据-播放数                                                       ")
+    private java.lang.Integer totalPlay;
+    /**
+     * 视频数据-有效播放数
+     */
+    @Excel(name = "视频数据-有效播放数                                                   ", width = 15)
+    @ApiModelProperty(value = "视频数据-有效播放数                                                   ")
+    private java.lang.Integer validPlay;
+    /**
+     * 视频数据-有效播放成本
+     */
+    @Excel(name = "视频数据-有效播放成本                                                 ", width = 15)
+    @ApiModelProperty(value = "视频数据-有效播放成本                                                 ")
+    private java.math.BigDecimal validPlayCost;
+    /**
+     * 视频数据-有效播放率
+     */
+    @Excel(name = "视频数据-有效播放率                                                   ", width = 15)
+    @ApiModelProperty(value = "视频数据-有效播放率                                                   ")
+    private java.math.BigDecimal validPlayRate;
+    /**
+     * 视频数据-25%进度播放数
+     */
+    @TableField(value = "play_25_feed_break")
+    @Excel(name = "视频数据-25%进度播放数                                                ", width = 15)
+    @ApiModelProperty(value = "视频数据-25%进度播放数                                                ")
+    private java.lang.Integer play25FeedBreak;
+    /**
+     * 视频数据-50%进度播放数
+     */
+	@TableField(value = "play_50_feed_break")
+    @Excel(name = "视频数据-50%进度播放数                                                ", width = 15)
+    @ApiModelProperty(value = "视频数据-50%进度播放数                                                ")
+    private java.lang.Integer play50FeedBreak;
+    /**
+     * 视频数据-75%进度播放数
+     */
+	@TableField(value = "play_75_feed_break")
+    @Excel(name = "视频数据-75%进度播放数                                                ", width = 15)
+    @ApiModelProperty(value = "视频数据-75%进度播放数                                                ")
+    private java.lang.Integer play75FeedBreak;
+    /**
+     * 视频数据-99%进度播放数
+     */
+	@TableField(value = "play_100_feed_break")
+    @Excel(name = "视频数据-99%进度播放数                                                ", width = 15)
+    @ApiModelProperty(value = "视频数据-99%进度播放数                                                ")
+    private java.lang.Integer play100FeedBreak;
+    /**
+     * 视频数据-平均单次播放时长,单位:秒
+     */
+    @Excel(name = "视频数据-平均单次播放时长,单位:秒                                   ", width = 15)
+    @ApiModelProperty(value = "视频数据-平均单次播放时长,单位:秒                                   ")
+    private java.math.BigDecimal averagePlayTimePerPlay;
+    /**
+     * 视频数据-播完率
+     */
+    @Excel(name = "视频数据-播完率                                                       ", width = 15)
+    @ApiModelProperty(value = "视频数据-播完率                                                       ")
+    private java.math.BigDecimal playOverRate;
+    /**
+     * 视频数据-WiFi播放占比
+     */
+    @Excel(name = "视频数据-WiFi播放占比                                                 ", width = 15)
+    @ApiModelProperty(value = "视频数据-WiFi播放占比                                                 ")
+    private java.math.BigDecimal wifiPlayRate;
+    /**
+     * 视频数据-WiFi播放量
+     */
+    @Excel(name = "视频数据-WiFi播放量                                                   ", width = 15)
+    @ApiModelProperty(value = "视频数据-WiFi播放量                                                   ")
+    private java.lang.Integer wifiPlay;
+    /**
+     * 视频数据-播放时长,单位ms
+     */
+    @Excel(name = "视频数据-播放时长,单位ms                                             ", width = 15)
+    @ApiModelProperty(value = "视频数据-播放时长,单位ms                                             ")
+    private java.lang.Integer playDurationSum;
+    /**
+     * 附加创意-附加创意电话按钮点击
+     */
+    @Excel(name = "附加创意-附加创意电话按钮点击                                         ", width = 15)
+    @ApiModelProperty(value = "附加创意-附加创意电话按钮点击                                         ")
+    private java.lang.Integer advancedCreativePhoneClick;
+    /**
+     * 附加创意-附加创意在线咨询点击
+     */
+    @Excel(name = "附加创意-附加创意在线咨询点击                                         ", width = 15)
+    @ApiModelProperty(value = "附加创意-附加创意在线咨询点击                                         ")
+    private java.lang.Integer advancedCreativeCounselClick;
+    /**
+     * 附加创意-附加创意表单按钮点击
+     */
+    @Excel(name = "附加创意-附加创意表单按钮点击                                         ", width = 15)
+    @ApiModelProperty(value = "附加创意-附加创意表单按钮点击                                         ")
+    private java.lang.Integer advancedCreativeFormClick;
+    /**
+     * 附加创意-附加创意卡券领取
+     */
+    @Excel(name = "附加创意-附加创意卡券领取                                             ", width = 15)
+    @ApiModelProperty(value = "附加创意-附加创意卡券领取                                             ")
+    private java.lang.Integer advancedCreativeCouponAddition;
+    /**
+     * 附加创意-附加创意表单提交
+     */
+    @Excel(name = "附加创意-附加创意表单提交                                             ", width = 15)
+    @ApiModelProperty(value = "附加创意-附加创意表单提交                                             ")
+    private java.lang.Integer advancedCreativeFormSubmit;
+    /**
+     * 视频数据3秒卡片展现
+     */
+    @Excel(name = "视频数据3秒卡片展现                                                   ", width = 15)
+    @ApiModelProperty(value = "视频数据3秒卡片展现                                                   ")
+    private java.lang.Integer cardShow;
+    /**
+     * 互动数据-分享数
+     */
+    @TableField(value = "`share`")
+    @Excel(name = "互动数据-分享数                                                       ", width = 15)
+    @ApiModelProperty(value = "互动数据-分享数                                                       ")
+    private java.lang.Integer share;
+    /**
+     * 互动数据-评论数
+     */
+	@TableField(value = "`comment`")
+    @Excel(name = "互动数据-评论数                                                       ", width = 15)
+    @ApiModelProperty(value = "互动数据-评论数                                                       ")
+    private java.lang.Integer comment;
+    /**
+     * 互动数据-点赞数
+     */
+	@TableField(value = "`like`")
+    @Excel(name = "互动数据-点赞数                                                       ", width = 15)
+    @ApiModelProperty(value = "互动数据-点赞数                                                       ")
+    private java.lang.Integer like;
+    /**
+     * 互动数据-新增关注数
+     */
+	@TableField(value = "`follow`")
+    @Excel(name = "互动数据-新增关注数                                                   ", width = 15)
+    @ApiModelProperty(value = "互动数据-新增关注数                                                   ")
+    private java.lang.Integer follow;
+    /**
+     * 互动数据-主页访问量
+     */
+    @Excel(name = "互动数据-主页访问量                                                   ", width = 15)
+    @ApiModelProperty(value = "互动数据-主页访问量                                                   ")
+    private java.lang.Integer homeVisited;
+    /**
+     * 互动数据-挑战赛查看数
+     */
+    @Excel(name = "互动数据-挑战赛查看数                                                 ", width = 15)
+    @ApiModelProperty(value = "互动数据-挑战赛查看数                                                 ")
+    private java.lang.Integer iesChallengeClick;
+    /**
+     * 互动数据-音乐查看数
+     */
+    @Excel(name = "互动数据-音乐查看数                                                   ", width = 15)
+    @ApiModelProperty(value = "互动数据-音乐查看数                                                   ")
+    private java.lang.Integer iesMusicClick;
+    /**
+     * 互动数据-POI点击数
+     */
+    @Excel(name = "互动数据-POI点击数                                                    ", width = 15)
+    @ApiModelProperty(value = "互动数据-POI点击数                                                    ")
+    private java.lang.Integer locationClick;
+    /**
+     * 互动数据-私信数
+     */
+    @Excel(name = "互动数据-私信数                                                       ", width = 15)
+    @ApiModelProperty(value = "互动数据-私信数                                                       ")
+    private java.lang.Integer messageAction;
+    /**
+     * 互动数据-推广页访问量
+     */
+    @Excel(name = "互动数据-推广页访问量                                                 ", width = 15)
+    @ApiModelProperty(value = "互动数据-推广页访问量                                                 ")
+    private java.lang.Integer clickLandingPage;
+    /**
+     * 互动数据-主页商品橱窗访问量
+     */
+    @Excel(name = "互动数据-主页商品橱窗访问量                                           ", width = 15)
+    @ApiModelProperty(value = "互动数据-主页商品橱窗访问量                                           ")
+    private java.lang.Integer clickShopwindow;
+    /**
+     * 互动数据-主页内落地页访问量(主页官网访问量)
+     */
+    @Excel(name = "互动数据-主页内落地页访问量(主页官网访问量)                         ", width = 15)
+    @ApiModelProperty(value = "互动数据-主页内落地页访问量(主页官网访问量)                         ")
+    private java.lang.Integer clickWebsite;
+    /**
+     * 互动数据-主页下载链接点击量
+     */
+    @Excel(name = "互动数据-主页下载链接点击量                                           ", width = 15)
+    @ApiModelProperty(value = "互动数据-主页下载链接点击量                                           ")
+    private java.lang.Integer clickDownload;
+    /**
+     * 互动数据-主页内电话拨打点击量
+     */
+    @Excel(name = "互动数据-主页内电话拨打点击量                                         ", width = 15)
+    @ApiModelProperty(value = "互动数据-主页内电话拨打点击量                                         ")
+    private java.lang.Integer clickCallDy;
+    /**
+     * 提交身份认证数-出行行业司机在应用内提交身份认证的次数
+     */
+    @Excel(name = "提交身份认证数-出行行业司机在应用内提交身份认证的次数                 ", width = 15)
+    @ApiModelProperty(value = "提交身份认证数-出行行业司机在应用内提交身份认证的次数                 ")
+    private java.lang.Integer submitCertificationCount;
+    /**
+     * 通过身份认证数-出行行业司机在应用内成功通过身份认证的次数
+     */
+    @Excel(name = "通过身份认证数-出行行业司机在应用内成功通过身份认证的次数             ", width = 15)
+    @ApiModelProperty(value = "通过身份认证数-出行行业司机在应用内成功通过身份认证的次数             ")
+    private java.lang.Integer approvalCount;
+    /**
+     * 乘客首次下单数-出行行业乘客在应用内首次成功下单的数量
+     */
+    @Excel(name = "乘客首次下单数-出行行业乘客在应用内首次成功下单的数量                 ", width = 15)
+    @ApiModelProperty(value = "乘客首次下单数-出行行业乘客在应用内首次成功下单的数量                 ")
+    private java.lang.Integer firstRentalOrderCount;
+    /**
+     * 司机首次完单数-出行行业司机在应用内首次成功完成订单的数量
+     */
+    @Excel(name = "司机首次完单数-出行行业司机在应用内首次成功完成订单的数量             ", width = 15)
+    @ApiModelProperty(value = "司机首次完单数-出行行业司机在应用内首次成功完成订单的数量             ")
+    private java.lang.Integer firstOrderCount;
+    /**
+     * 乘客首次支付数-出行行业乘客在应用内首次成功支付订单的数量
+     */
+    @Excel(name = "乘客首次支付数-出行行业乘客在应用内首次成功支付订单的数量             ", width = 15)
+    @ApiModelProperty(value = "乘客首次支付数-出行行业乘客在应用内首次成功支付订单的数量             ")
+    private java.lang.Integer commuteFirstPayCount;
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1003 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCampaignReportHourly.java


+ 115 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCreativeGet.java

@@ -0,0 +1,115 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+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;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-10-22
+ */
+@Data
+@TableName("bytedance_creative_get")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_creative_get对象", description = "获取定向包")
+public class BytedanceCreativeGet {
+
+    /**
+     * 创意ID
+     */
+    @Excel(name = "创意ID              ", width = 15)
+    @ApiModelProperty(value = "创意ID              ")
+    private Long creativeId;
+    /**
+     * 广告计划ID
+     */
+    @Excel(name = "广告计划ID          ", width = 15)
+    @ApiModelProperty(value = "广告计划ID          ")
+    private Long adId;
+    /**
+     * 广告主ID
+     */
+    @Excel(name = "广告主ID            ", width = 15)
+    @ApiModelProperty(value = "广告主ID            ")
+    private Long advertiserId;
+    /**
+     * 创意素材标题
+     */
+    @Excel(name = "创意素材标题        ", width = 15)
+    @ApiModelProperty(value = "创意素材标题        ")
+    private java.lang.String title;
+    /**
+     * 动态词包列表
+     */
+    @Excel(name = "动态词包列表        ", width = 15)
+    @ApiModelProperty(value = "动态词包列表        ")
+    private java.lang.String creativeWordIds;
+    /**
+     * 创意素材状态
+     */
+    @Excel(name = "创意素材状态        ", width = 15)
+    @ApiModelProperty(value = "创意素材状态        ")
+    private java.lang.String status;
+    /**
+     * 创意素材操作状态
+     */
+    @Excel(name = "创意素材操作状态    ", width = 15)
+    @ApiModelProperty(value = "创意素材操作状态    ")
+    private java.lang.String optStatus;
+    /**
+     * 创意素材类型
+     */
+    @Excel(name = "创意素材类型        ", width = 15)
+    @ApiModelProperty(value = "创意素材类型        ")
+    private java.lang.String imageMode;
+    /**
+     * 图片素材,图片ID列表
+     */
+    @Excel(name = "图片素材,图片ID列表", width = 15)
+    @ApiModelProperty(value = "图片素材,图片ID列表")
+    private java.lang.String imageIds;
+    /**
+     * 视频素材,封面图片ID
+     */
+    @Excel(name = "视频素材,封面图片ID", width = 15)
+    @ApiModelProperty(value = "视频素材,封面图片ID")
+    private java.lang.String imageId;
+    /**
+     * 视频素材,视频ID
+     */
+    @Excel(name = "视频素材,视频ID    ", width = 15)
+    @ApiModelProperty(value = "视频素材,视频ID    ")
+    private java.lang.String videoId;
+    /**
+     * 第三方ID
+     */
+    @Excel(name = "第三方ID            ", width = 15)
+    @ApiModelProperty(value = "第三方ID            ")
+    private java.lang.String thirdPartyId;
+    /**
+     * 素材信息列表
+     */
+    @Excel(name = "素材信息列表        ", width = 15)
+    @ApiModelProperty(value = "素材信息列表        ")
+    private java.lang.String metarials;
+    /**
+     * 广告创意创建时间
+     */
+    @Excel(name = "广告创意创建时间    ", width = 15)
+    @ApiModelProperty(value = "广告创意创建时间    ")
+    private java.lang.String creativeCreateTime;
+    /**
+     * 广告创意更新时间
+     */
+    @Excel(name = "广告创意更新时间    ", width = 15)
+    @ApiModelProperty(value = "广告创意更新时间    ")
+    private java.lang.String creativeModifyTime;
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1012 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCreativeReportDaily.java


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1019 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceCreativeReportHourly.java


+ 99 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceFileImageGet.java

@@ -0,0 +1,99 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+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;
+
+/**
+ * 头条图片素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-10-22
+ */
+@Data
+@TableName("bytedance_file_image_get")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_file_image_get对象", description = "头条图片素材")
+public class BytedanceFileImageGet {
+
+    /**
+     * 广告主ID
+     */
+    @Excel(name = "广告主ID      ", width = 15)
+    @ApiModelProperty(value = "广告主ID      ")
+    private Long advertiserId;
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 素材id
+     */
+    @Excel(name = "素材id        ", width = 15)
+    @ApiModelProperty(value = "素材id        ")
+    private Long materialId;
+    /**
+     * 图片大小
+     */
+    @Excel(name = "图片大小      ", width = 15)
+    @ApiModelProperty(value = "图片大小      ")
+    private java.lang.Integer size;
+    /**
+     * 图片宽度
+     */
+    @Excel(name = "图片宽度      ", width = 15)
+    @ApiModelProperty(value = "图片宽度      ")
+    private java.lang.Integer width;
+    /**
+     * 图片高度
+     */
+    @Excel(name = "图片高度      ", width = 15)
+    @ApiModelProperty(value = "图片高度      ")
+    private java.lang.Integer height;
+    /**
+     * url
+     */
+    @Excel(name = "url", width = 15)
+    @ApiModelProperty(value = "url")
+    private java.lang.String url;
+    /**
+     * 图片格式
+     */
+    @Excel(name = "图片格式      ", width = 15)
+    @ApiModelProperty(value = "图片格式      ")
+    private java.lang.String format;
+    /**
+     * 图片md5
+     */
+    @Excel(name = "图片md5       ", width = 15)
+    @ApiModelProperty(value = "图片md5       ")
+    private java.lang.String signature;
+    /**
+     * 素材的上传时间
+     */
+    @Excel(name = "素材的上传时间", width = 15)
+    @ApiModelProperty(value = "素材的上传时间")
+    private java.lang.String createTime;
+    /**
+     * 素材的文件名
+     */
+    @Excel(name = "素材的文件名  ", width = 15)
+    @ApiModelProperty(value = "素材的文件名  ")
+    private java.lang.String filename;
+    /**
+     * imageUrl
+     */
+    @Excel(name = "imageUrl", width = 15)
+    @ApiModelProperty(value = "imageUrl")
+    private java.lang.String imageUrl;
+}

+ 129 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceFileVideoGet.java

@@ -0,0 +1,129 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+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;
+
+/**
+ * 头条-视频素材
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-10-22
+ */
+@Data
+@TableName("bytedance_file_video_get")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "bytedance_file_video_get对象", description = "头条-视频素材")
+public class BytedanceFileVideoGet {
+
+    /**
+     * 广告主ID
+     */
+    @Excel(name = "广告主ID       ", width = 15)
+    @ApiModelProperty(value = "广告主ID       ")
+    private Long advertiserId;
+    /**
+     * id
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "id")
+    private String id;
+    /**
+     * 视频大小
+     */
+    @Excel(name = "视频大小       ", width = 15)
+    @ApiModelProperty(value = "视频大小       ")
+    private java.lang.Integer size;
+    /**
+     * 视频宽度
+     */
+    @Excel(name = "视频宽度       ", width = 15)
+    @ApiModelProperty(value = "视频宽度       ")
+    private java.lang.Integer width;
+    /**
+     * 视频高度
+     */
+    @Excel(name = "视频高度       ", width = 15)
+    @ApiModelProperty(value = "视频高度       ")
+    private java.lang.Integer height;
+    /**
+     * 视频地址
+     */
+    @Excel(name = "视频地址       ", width = 15)
+    @ApiModelProperty(value = "视频地址       ")
+    private java.lang.String url;
+    /**
+     * 视频格式
+     */
+    @Excel(name = "视频格式       ", width = 15)
+    @ApiModelProperty(value = "视频格式       ")
+    private java.lang.String format;
+    /**
+     * 视频md5值
+     */
+    @Excel(name = "视频md5值      ", width = 15)
+    @ApiModelProperty(value = "视频md5值      ")
+    private java.lang.String signature;
+    /**
+     * 视频首帧截图
+     */
+    @Excel(name = "视频首帧截图   ", width = 15)
+    @ApiModelProperty(value = "视频首帧截图   ")
+    private java.lang.String posterUrl;
+    /**
+     * 码率
+     */
+    @Excel(name = "码率           ", width = 15)
+    @ApiModelProperty(value = "码率           ")
+    private java.lang.Integer bitRate;
+    /**
+     * 视频时长
+     */
+    @Excel(name = "视频时长       ", width = 15)
+    @ApiModelProperty(value = "视频时长       ")
+    private java.lang.Integer duration;
+    /**
+     * 素材id
+     */
+    @Excel(name = "素材id         ", width = 15)
+    @ApiModelProperty(value = "素材id         ")
+    private String materialId;
+    /**
+     * 素材来源
+     */
+    @Excel(name = "素材来源       ", width = 15)
+    @ApiModelProperty(value = "素材来源       ")
+    private java.lang.String source;
+    /**
+     * 素材的上传时间
+     */
+    @Excel(name = "素材的上传时间 ", width = 15)
+    @ApiModelProperty(value = "素材的上传时间 ")
+    private java.lang.String createTime;
+    /**
+     * filename
+     */
+    @Excel(name = "filename", width = 15)
+    @ApiModelProperty(value = "filename")
+    private java.lang.String filename;
+    /**
+     * 视频标签
+     */
+    @Excel(name = "视频标签       ", width = 15)
+    @ApiModelProperty(value = "视频标签       ")
+    private java.lang.String labels;
+    /**
+     * videoUrl
+     */
+    @Excel(name = "videoUrl", width = 15)
+    @ApiModelProperty(value = "videoUrl")
+    private java.lang.String videoUrl;
+}

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 1121 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceMaterialReportDaily.java


+ 99 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/OauthToken.java

@@ -0,0 +1,99 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+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 org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * token信息
+ *
+ * @author jeecg-boot
+ * @version V1.0
+ * @date 2021-09-07
+ */
+@Data
+@TableName("ctop_oauth_token")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value = "ctop_oauth_token对象", description = "token信息")
+public class OauthToken {
+
+    /**
+     * 主键ID
+     */
+    @TableId(type = IdType.UUID)
+    @ApiModelProperty(value = "主键ID")
+    private String id;
+    /**
+     * 媒体ID(外部广告平台类型,快手/头条/抖音等)
+     */
+    @ApiModelProperty(value = "媒体ID(外部广告平台类型,快手/头条/抖音等)")
+    private String mediaId;
+    /**
+     * 广告主ID(自己平台用户内部id)
+     */
+    @ApiModelProperty(value = "广告主ID(自己平台用户内部id)")
+    private String advertiserId;
+    /**
+     * 广告账户ID(相当于头条返回的access_token数据中的advertiser_id)
+     */
+    @ApiModelProperty(value = "广告账户ID(相当于头条返回的access_token数据中的advertiser_id)")
+    private Long accountId;
+    /**
+     * 访问令牌
+     */
+    @ApiModelProperty(value = "访问令牌")
+    private String accessToken;
+    /**
+     * 访问令牌有效期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "访问令牌有效期")
+    private Date accessTokenExpiresIn;
+    /**
+     * 刷新令牌
+     */
+    @ApiModelProperty(value = "刷新令牌")
+    private String refreshToken;
+    /**
+     * 刷新令牌有效期
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "刷新令牌有效期")
+    private Date refreshTokenExpiresIn;
+    /**
+     * 代理商类型 0:三方代理商 1:本代理商
+     */
+    @ApiModelProperty(value = "代理商类型 0:三方代理商 1:本代理商")
+    private Integer agentType;
+    /**
+     * appid
+     */
+    @ApiModelProperty(value = "appid")
+    private Integer appId;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 修改时间
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+}

+ 108 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/enums/MaterialEnum.java

@@ -0,0 +1,108 @@
+package cn.com.ctop.job.bytedance.data.enums;
+
+/**
+ * 素材类型
+ */
+public enum MaterialEnum {
+
+
+    VerticalVideoSmall(1, 720, 1280),
+    VerticalVideo787Small(1, 787, 1280),
+    VerticalVideo846Small(1, 846, 1536),
+    VerticalVideo1080mall(1, 1080, 2200),
+    VerticalVideoBig(1, 1080, 1920),
+    VerticalVideo360(1, 360, 640),
+    VerticalVideo362(1, 362, 640),
+    VerticalVideo368(1, 368, 490),
+    VerticalVideo363(1, 363, 640),
+    VerticalVideo438(1, 438, 640),
+    VerticalVideo480(1, 480, 640),
+    VerticalVideo525(1, 525, 640),
+    VerticalVideo540(1, 540, 960),
+    VerticalVideo544(1, 544, 726),
+    VerticalVideo590(1, 590, 1280),
+    VerticalVideo694(1, 694, 1236),
+    VerticalVideo704(1, 704, 1252),
+    VerticalVideo710(1, 710, 1264),
+    VerticalVideo714(1, 714, 1270),
+    VerticalVideo716(1, 716, 1276),
+    VerticalVideo718(1, 718, 1278),
+    VerticalVideo719(1, 719, 1170),
+    VerticalVideo720(1, 720, 960),
+    VerticalVideo750(1, 750, 1334),
+    VerticalVideo787(1, 787, 1280),
+    VerticalVideo864(1, 864, 1536),
+    VerticalVideo1088(1, 1088, 1920),
+    VerticalVideo1181(1, 1181, 1920),
+    VerticalVideo1216(1, 1216, 2160),
+    VerticalVideo1296(1, 1296, 2304),
+    VerticalVideo1440(1, 1440, 2560),
+    VerticalVideo2160(1, 2160, 3840),
+    HorizontalVideoSmall(2, 1280, 720),
+    HorizontalVideoBig(2, 1920, 1080),
+    HorizontalVideo640(2, 640, 368),
+    HorizontalVideo1281(2, 1281, 720),
+    HorizontalVideo1400(2, 1400, 720),
+    HorizontalVideo1700(2, 1700, 1080),
+    HorizontalVideo1902(2, 1902, 1080),
+    HorizontalVideo1920(2, 1920, 1080),
+    BianlitieImageBig(4, 540, 540),
+    BianLitieImageSmall(4, 450, 450);
+
+    private Integer type;
+    private Integer width;
+    private Integer height;
+
+
+    private MaterialEnum(Integer type, Integer width, Integer height) {
+        this.type = type;
+        this.width = width;
+        this.height = height;
+    }
+
+    public static Integer getTypeBySize(Integer widthStr, Integer heightStr) {
+        for (MaterialEnum material : MaterialEnum.values()) {
+            Integer width = material.getWidth();
+            Integer height = material.getHeight();
+            if (widthStr.equals(width) && heightStr.equals(height)) {
+                return material.getType();
+            }
+        }
+
+        return 1;
+    }
+
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    public Integer getWidth() {
+        return width;
+    }
+
+    public void setWidth(Integer width) {
+        this.width = width;
+    }
+
+    public Integer getHeight() {
+        return height;
+    }
+
+    public void setHeight(Integer height) {
+        this.height = height;
+    }
+
+    @Override
+    public String toString() {
+        return "MaterialEnum{" +
+                "type=" + type +
+                ", width=" + width +
+                ", height=" + height +
+                '}';
+    }
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertiseDailyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseDailyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Description: 今日头条广告主信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Mapper
+public interface ByteDanceAdvertiseDailyMapper extends BaseMapper<ByteDanceAdvertiseDailyReport> {
+
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertiseHourlyMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseHourlyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条广告主计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceAdvertiseHourlyMapper extends BaseMapper<ByteDanceAdvertiseHourlyReport> {
+
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertisePlanDailyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanDailyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Mapper
+public interface ByteDanceAdvertisePlanDailyMapper extends BaseMapper<ByteDanceAdvertisePlanDailyReport> {
+
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertisePlanHourlyMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanHourlyReport;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceAdvertisePlanHourlyMapper extends BaseMapper<ByteDanceAdvertisePlanHourlyReport> {
+
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/ByteDanceAdvertisePlanMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlan;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface ByteDanceAdvertisePlanMapper extends BaseMapper<ByteDanceAdvertisePlan> {
+
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceAgentReportDailyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportDaily;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 代理商日报
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface BytedanceAgentReportDailyMapper extends BaseMapper<BytedanceAgentReportDaily> {
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceAgentReportHourlyMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportHourly;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 代理商日报
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface BytedanceAgentReportHourlyMapper extends BaseMapper<BytedanceAgentReportHourly> {
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceAudiencePackageGetMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAudiencePackageGet;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface BytedanceAudiencePackageGetMapper extends BaseMapper<BytedanceAudiencePackageGet> {
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCampaignGetMapper.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignGet;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface BytedanceCampaignGetMapper extends BaseMapper<BytedanceCampaignGet> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCampaignReportDailyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportDaily;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface BytedanceCampaignReportDailyMapper extends BaseMapper<BytedanceCampaignReportDaily> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCampaignReportHourlyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportHourly;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface BytedanceCampaignReportHourlyMapper extends BaseMapper<BytedanceCampaignReportHourly> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCreativeGetMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeGet;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface BytedanceCreativeGetMapper extends BaseMapper<BytedanceCreativeGet> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCreativeReportDailyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportDaily;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface BytedanceCreativeReportDailyMapper extends BaseMapper<BytedanceCreativeReportDaily> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceCreativeReportHourlyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportHourly;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface BytedanceCreativeReportHourlyMapper extends BaseMapper<BytedanceCreativeReportHourly> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceFileImageGetMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceFileImageGet;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 头条图片素材
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface BytedanceFileImageGetMapper extends BaseMapper<BytedanceFileImageGet> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceFileVideoGetMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 头条-视频素材
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface BytedanceFileVideoGetMapper extends BaseMapper<BytedanceFileVideoGet> {
+
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceMaterialReportDailyMapper.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialReportDaily;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * 图片与视频素材日报
+ * @author jeecg-boot
+ * 2021-10-25
+ * @version V1.0
+ */
+public interface BytedanceMaterialReportDailyMapper extends BaseMapper<BytedanceMaterialReportDaily> {
+
+}

+ 48 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/DataMapper.java

@@ -0,0 +1,48 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Mapper
+public interface DataMapper {
+
+    ByteDanceAdvertisePlanDailyReport getByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId, @Param("adId") Long adId, @Param("statDatetime") Integer statDatetime);
+
+    ByteDanceAdvertisePlanHourlyReport getHourlyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId, @Param("adId") Long adId, @Param("statDatetime") Integer statDatetime, @Param("hour") Integer hour);
+
+    ByteDanceAdvertiseDailyReport getAdvertiseDailyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("statDatetime") Integer statDatetime);
+
+    ByteDanceAdvertiseHourlyReport getAdvertiseHourlyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("statDatetime") Integer statDatetime, @Param("hour") Integer hour);
+
+    BytedanceAgentReportDaily getAgentDailyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("agentId") Long agentId, @Param("statDatetime") Integer statDatetime);
+
+    BytedanceAgentReportHourly getAgentHourlyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("agentId") Long agentId, @Param("statDatetime") String statDatetime, @Param("hour") Integer hour);
+
+    BytedanceAudiencePackageGet getAudiencePackageByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("audiencePackageId") Long audiencePackageId);
+
+    BytedanceCampaignGet getCampaignByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId);
+
+    BytedanceCampaignReportDaily getCampaignDailyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId, @Param("statDatetime") String statDatetime);
+
+    BytedanceCampaignReportHourly getCampaignHourlyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId, @Param("statDatetime") String statDatetime, @Param("hour") Integer hour);
+
+
+    BytedanceCreativeGet getCreativeByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("adId") Long adId, @Param("creativeId") Long creativeId);
+
+    BytedanceCreativeReportDaily getCreativeDailyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId, @Param("adId") Long adId, @Param("creativeId") Long creativeId, @Param("statDatetime") String statDatetime);
+
+    BytedanceCreativeReportHourly getCreativeHourlyByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("campaignId") Long campaignId, @Param("adId") Long adId, @Param("creativeId") Long creativeId, @Param("statDatetime") String statDatetime, @Param("hour") int hour);
+
+    BytedanceFileImageGet getFileImageGetByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("id") String id);
+
+    BytedanceFileVideoGet getFileVideoGetByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("id") String id);
+
+    BytedanceMaterialReportDaily getMaterialReportByPrimaryKey(@Param("advertiserId") Long advertiserId, @Param("materialId") Long materialId, @Param("imageMode") String imageMode, @Param("inventory") String inventory, @Param("statDatetime") String statDatetime);
+}

+ 19 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/OauthTokenMapper.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.job.bytedance.data.mapper;
+
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * token信息
+ *
+ * @author jeecg-boot 2021-09-07
+ * @version V1.0
+ */
+public interface OauthTokenMapper extends BaseMapper<OauthToken> {
+  String getByAccountId(@Param("accountId") Long accountId);
+
+    List<Long> getAgentByTouTiao();
+}

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceAgentReportDailyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceAgentReportDailyMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceAgentReportHourlyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceAgentReportHourlyMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceAudiencePackageGetMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceAudiencePackageGetMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCampaignGetMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceCampaignGetMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCampaignReportDailyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceCampaignReportDailyMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCampaignReportHourlyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceCampaignReportHourlyMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCreativeGetMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceCreativeGetMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCreativeReportDailyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceCreativeReportDailyMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceCreativeReportHourlyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceCreativeReportHourlyMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceFileImageGetMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceFileImageGetMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceFileVideoGetMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceFileVideoGetMapper">
+
+</mapper>

+ 5 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceMaterialReportDailyMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.BytedanceMaterialReportDailyMapper">
+
+</mapper>

+ 107 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/DataMapper.xml

@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.DataMapper">
+
+    <select id="getByPrimaryKey" resultType="cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanDailyReport">
+        select advertiser_id as 'advertiserId' from bytedance_ad_report_daily where
+        advertiser_id=#{advertiserId} and campaign_id=#{campaignId} and ad_id=#{adId} and stat_datetime=#{statDatetime}
+   </select>
+
+    <select id="getHourlyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanHourlyReport">
+        select advertiser_id as 'advertiserId' from bytedance_ad_report_hourly t where
+        t.advertiser_id=#{advertiserId} and t.campaign_id=#{campaignId} and t.ad_id=#{adId} and t.stat_datetime=#{statDatetime} and  t.hour=#{hour}
+   </select>
+
+    <select id="getAdvertiseDailyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseDailyReport">
+        select advertiser_id as 'advertiserId' from bytedance_advertiser_report_daily where
+        advertiser_id=#{advertiserId}  and stat_datetime=#{statDatetime}
+   </select>
+
+    <select id="getAdvertiseHourlyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseHourlyReport">
+        select advertiser_id as 'advertiserId' from bytedance_advertiser_report_hourly t where
+        t.advertiser_id=#{advertiserId} and t.stat_datetime=#{statDatetime} and  t.hour=#{hour}
+   </select>
+
+    <select id="getAgentDailyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportDaily">
+        select advertiser_id as 'advertiserId' from bytedance_agent_report_daily where
+        advertiser_id=#{advertiserId}  and agent_id=#{agentId} and stat_datetime=#{statDatetime}
+   </select>
+
+    <select id="getAgentHourlyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportHourly">
+        select advertiser_id as 'advertiserId' from bytedance_agent_report_hourly t where
+        t.advertiser_id=#{advertiserId} and agent_id=#{agentId} and stat_datetime=#{statDatetime} and `hour`=#{hour}
+   </select>
+
+    <select id="getAudiencePackageByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceAudiencePackageGet">
+        select advertiser_id as 'advertiserId' from bytedance_audience_package_get t where
+        t.advertiser_id=#{advertiserId} and audience_package_id=#{audiencePackageId}
+   </select>
+
+    <select id="getCampaignByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignGet">
+        select advertiser_id as 'advertiserId' from bytedance_campaign_get t where
+        t.advertiser_id=#{advertiserId} and campaign_id=#{campaignId}
+   </select>
+
+    <select id="getCampaignDailyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportDaily">
+        select advertiser_id as 'advertiserId' from bytedance_campaign_report_daily t where
+        t.advertiser_id=#{advertiserId} and campaign_id=#{campaignId} and stat_datetime=#{statDatetime}
+   </select>
+
+    <select id="getCampaignHourlyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportHourly">
+        select advertiser_id as 'advertiserId' from bytedance_campaign_report_hourly t where
+        t.advertiser_id=#{advertiserId} and campaign_id=#{campaignId} and stat_datetime=#{statDatetime} and `hour`=#{hour}
+   </select>
+
+    <select id="getCreativeByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeGet">
+        select advertiser_id as 'advertiserId' from bytedance_creative_get t where
+        t.advertiser_id=#{advertiserId} and ad_id=#{adId} and creative_id=#{creativeId}
+   </select>
+
+    <select id="getCreativeDailyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportDaily">
+        select advertiser_id as 'advertiserId' from bytedance_creative_report_daily t where
+        t.advertiser_id=#{advertiserId} and campaign_id =#{campaignId}
+         and ad_id=#{adId}  and creative_id=#{creativeId} and stat_datetime=#{statDatetime}
+
+   </select>
+
+    <select id="getCreativeHourlyByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportHourly">
+        select advertiser_id as 'advertiserId' from bytedance_creative_report_hourly t where
+         t.advertiser_id=#{advertiserId} and campaign_id =#{campaignId}
+         and ad_id=#{adId}  and creative_id=#{creativeId} and stat_datetime=#{statDatetime}
+         and `hour`=#{hour}
+   </select>
+
+    <select id="getFileImageGetByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceFileImageGet">
+        select advertiser_id as 'advertiserId' from bytedance_file_image_get t where
+         t.advertiser_id=#{advertiserId} and id =#{id}
+   </select>
+
+    <select id="getFileVideoGetByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet">
+        select advertiser_id as 'advertiserId' from bytedance_file_video_get t where
+         t.advertiser_id=#{advertiserId} and id =#{id}
+
+   </select>
+
+    <select id="getMaterialReportByPrimaryKey"
+            resultType="cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialReportDaily">
+        select advertiser_id as 'advertiserId' from bytedance_material_report_daily t where
+         t.advertiser_id=#{advertiserId} and material_id =#{materialId} and image_mode =#{imageMode}
+         and inventory =#{inventory} and stat_datetime =#{statDatetime}
+
+   </select>
+
+</mapper>

+ 12 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/OauthTokenMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.job.bytedance.data.mapper.OauthTokenMapper">
+
+    <select id="getByAccountId" resultType="java.lang.String">
+       SELECT access_token  from  `jeecg-boot`.ctop_oauth_token WHERE account_id = #{accountId}
+    </select>
+
+    <select id="getAgentByTouTiao" resultType="Long">
+       SELECT agent_id  from  `jeecg-boot`.ctop_cwjs_agent_info WHERE status = 0 and enabled=0
+    </select>
+</mapper>

+ 19 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertisePlanService.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlan;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Date;
+
+/**
+ * @Description: 今日头条广告计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+public interface IByteDanceAdvertisePlanService extends IService<ByteDanceAdvertisePlan> {
+
+
+
+}

+ 12 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserDailyService.java

@@ -0,0 +1,12 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseDailyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author jeecg-boot
+ */
+public interface IByteDanceAdvertiserDailyService extends IService<ByteDanceAdvertiseDailyReport> {
+
+
+}

+ 21 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserDataService.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @author jeecg-boot
+ */
+public interface IByteDanceAdvertiserDataService  {
+
+
+    Map<String, Object> getAdvertiserPlan(OauthToken token, String ids, String date, String updateDate);
+
+    void getAdvertiserPlanReport(OauthToken token, String startDate, String endDate, String bytedanceReportTypePL);
+
+    void getAdvertiserReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily);
+
+    void getAgentReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily);
+}

+ 12 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserHourlyService.java

@@ -0,0 +1,12 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseHourlyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author jeecg-boot
+ */
+public interface IByteDanceAdvertiserHourlyService extends IService<ByteDanceAdvertiseHourlyReport> {
+
+
+}

+ 14 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserPlanDailyService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanDailyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author jeecg-boot
+ */
+public interface IByteDanceAdvertiserPlanDailyService extends IService<ByteDanceAdvertisePlanDailyReport> {
+
+
+
+
+}

+ 14 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IByteDanceAdvertiserPlanHourlyService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanHourlyReport;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @author jeecg-boot
+ */
+public interface IByteDanceAdvertiserPlanHourlyService extends IService<ByteDanceAdvertisePlanHourlyReport> {
+
+
+
+
+}

+ 14 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceAgentReportDailyService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportDaily;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 代理商日报
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface IBytedanceAgentReportDailyService extends IService<BytedanceAgentReportDaily> {
+
+}

+ 14 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceAgentReportHourlyService.java

@@ -0,0 +1,14 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportHourly;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 代理商日报
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface IBytedanceAgentReportHourlyService extends IService<BytedanceAgentReportHourly> {
+
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceAudiencePackageGetService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAudiencePackageGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface IBytedanceAudiencePackageGetService extends IService<BytedanceAudiencePackageGet> {
+    void getAudiencePackageGetReport(OauthToken token);
+}

+ 18 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCampaignGetService.java

@@ -0,0 +1,18 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface IBytedanceCampaignGetService extends IService<BytedanceCampaignGet> {
+
+    void getCampaignData(OauthToken oauthToken, int pageNumber, int PageSize);
+
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCampaignReportDailyService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportDaily;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface IBytedanceCampaignReportDailyService extends IService<BytedanceCampaignReportDaily> {
+    public void getCampaignDailyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily, int pageNumber, int pageSize);
+
+    }

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCampaignReportHourlyService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportHourly;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+public interface IBytedanceCampaignReportHourlyService extends IService<BytedanceCampaignReportHourly> {
+    public void getCampaignHourlyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily, int pageNumber, int pageSize);
+
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCreativeGetService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface IBytedanceCreativeGetService extends IService<BytedanceCreativeGet> {
+
+    void getCreativeData(OauthToken oauthToken, int page, int pageSize);
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCreativeReportDailyService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportDaily;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface IBytedanceCreativeReportDailyService extends IService<BytedanceCreativeReportDaily> {
+
+    void getCreativeDailyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily, int i, int i1);
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceCreativeReportHourlyService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportHourly;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 获取定向包
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface IBytedanceCreativeReportHourlyService extends IService<BytedanceCreativeReportHourly> {
+
+    void getCampaignHourlyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeHourly, int i, int i1);
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceFileImageGetService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceFileImageGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 头条图片素材
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface IBytedanceFileImageGetService extends IService<BytedanceFileImageGet> {
+
+    void getFileImageData(OauthToken oauthToken, int i, int i1);
+}

+ 16 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceFileVideoGetService.java

@@ -0,0 +1,16 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 头条-视频素材
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+public interface IBytedanceFileVideoGetService extends IService<BytedanceFileVideoGet> {
+
+    void getFileVideoData(OauthToken oauthToken, int i, int i1);
+}

+ 17 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceMaterialReportDailyService.java

@@ -0,0 +1,17 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialReportDaily;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * 图片与视频素材日报
+ *
+ * @author jeecg-boot
+ * 2021-10-25
+ * @version V1.0
+ */
+public interface IBytedanceMaterialReportDailyService extends IService<BytedanceMaterialReportDaily> {
+
+    void bytedanceDailyMaterialReportJob(OauthToken oauthToken, String yesterda, String yesterda1, int i, int i1);
+}

+ 19 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IOauthTokenService.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.job.bytedance.data.service;
+
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * token信息
+ *
+ * @author jeecg-boot 2021-09-07
+ * @version V1.0
+ */
+public interface IOauthTokenService extends IService<OauthToken> {
+
+  String getByAccountId(Long accountId);
+
+  List<Long> getAgentByTouTiao();
+}

+ 462 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/ByteDanceAdvertiserDataServiceImpl.java

@@ -0,0 +1,462 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.constant.CtopAdConstant;
+import cn.com.ctop.job.bytedance.data.entity.*;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.*;
+import cn.com.ctop.job.bytedance.data.utils.DateUtils;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.PropertyNamingStrategy;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.xxl.job.core.context.XxlJobHelper;
+import lombok.extern.slf4j.Slf4j;
+import lombok.var;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Primary;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @author zzy
+ */
+@Slf4j
+@Service
+@Primary
+public class ByteDanceAdvertiserDataServiceImpl implements IByteDanceAdvertiserDataService {
+
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+
+    private String urlPath = "http://192.168.0.202:8765/webhook/bytedance_account_report";
+
+
+    @Autowired
+    private IByteDanceAdvertisePlanService advertisePlanService;
+
+    @Autowired
+    private IByteDanceAdvertiserPlanDailyService planDailyService;
+
+    @Autowired
+    private IByteDanceAdvertiserPlanHourlyService planHourlyService;
+
+    @Autowired
+    private IByteDanceAdvertiserDailyService advertiserDailyService;
+
+    @Autowired
+    private IByteDanceAdvertiserHourlyService advertiserHourlyService;
+
+    @Autowired
+    private IBytedanceAgentReportDailyService agentDailyService;
+
+    @Autowired
+    private IBytedanceAgentReportHourlyService agentHourlyService;
+
+    @Autowired
+    DataMapper dataMapper;
+
+
+    public void getAd(OauthToken token, int pageNum, String ids, String date, String updateDate) {
+        JSONArray getIds = null;
+        if (null != ids && !"".equals(ids)) {
+            String[] idString = ids.split(",");
+            if (idString.length > 0) {
+                for (int i = 0; i < idString.length; i++) {
+                    Long getId = Long.parseLong(idString[i]);
+                    getIds.add(getId);
+                }
+            }
+        }
+
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_AD_GET;
+        // 请求参数
+        Map<String, Object> filtering = new HashMap<>();
+        if (null != getIds && getIds.size() > 0) {
+            filtering.put("ids", getIds);
+        }
+        if (null != date && !"".equals(date)) {
+            filtering.put("ad_create_time", date);
+        }
+        if (null != updateDate && !"".equals(updateDate)) {
+            filtering.put("ad_modify_time", updateDate);
+        }
+
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", token.getAccountId());
+        param.put("page", pageNum);
+        param.put("page_size", 100);
+        param.put("filtering", filtering);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(token.getAccessToken(), url, param);
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告计划信息接口异常==》accountId:{},message:{}", token.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            ByteDanceAdvertisePlan advertisePlan = new ByteDanceAdvertisePlan(dataObject, String.valueOf(token.getAccountId()));
+            BigDecimal deepCpabid = dataObject.getBigDecimal("deep_cpabid");
+            if (null != deepCpabid) {
+                advertisePlan.setDeepCpaBid(deepCpabid);
+            }
+            advertisePlanService.saveOrUpdate(advertisePlan);
+        }
+        getAd(token, pageNum + 1, ids, date, updateDate);
+    }
+
+    @Override
+    public Map<String, Object> getAdvertiserPlan(OauthToken token, String ids, String date, String updateDate) {
+        getAd(token, 1, ids, date, updateDate);
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("code", 0);
+        resultMap.put("message", "获取广告计划信息成功");
+        return resultMap;
+    }
+
+    /**
+     * ------------------------------------------------------------------获取广告计划
+     */
+    @Override
+    public void getAdvertiserPlanReport(OauthToken token, String startDate, String endDate, String bytedanceReportTypePl) {
+
+        var conditions = getReportDTO(token, startDate, endDate, bytedanceReportTypePl);
+        getPlanReportByPage(token, conditions, 1);
+    }
+
+    private ByteDanceAdvertiserReportDTO getReportDTO(OauthToken token, String startDate, String endDate, String bytedanceReportTypePl) {
+        var conditions = new ByteDanceAdvertiserReportDTO();
+        conditions.setAdvertiserId(token.getAccountId());
+        conditions.setStartDate(startDate);
+        conditions.setEndDate(endDate);
+        conditions.setPageSize(1000);
+        conditions.setTimeGranularity(bytedanceReportTypePl);
+        return conditions;
+    }
+
+    private void getPlanReportByPage(OauthToken token, ByteDanceAdvertiserReportDTO conditions, int page) {
+        SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
+        conditions.setPage(page);
+        var config = new SerializeConfig();
+        config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
+        var jsonObject = JSONObject.parseObject(JSON.toJSONString(conditions, config));
+
+        JSONObject getObject = getAdStat(token, jsonObject);
+        if (null == getObject) {
+            log.error("广告计划报表数据获取异常=》account:{};message:{}", token.getAccountId(), "返回数据异常");
+            return;
+        }
+        Integer code = getObject.getInteger("code");
+        var message = getObject.getString("message");
+        if (null == code || code != 0) {
+            log.error("广告计划报表数据获取异常=》account:{};message:{}", token.getAccountId(), message);
+            return;
+        }
+        var dataArray = getObject.getJSONObject("data").getJSONArray("list");
+        if (null == dataArray || dataArray.size() <= 0) {
+            return;
+        }
+        List<ByteDanceAdvertisePlanHourlyReport> hourlyReports = new ArrayList<>();
+        List<ByteDanceAdvertisePlanDailyReport> dailyReports = new ArrayList<>();
+        for (var i = 0; i < dataArray.size(); i++) {
+            var data = dataArray.getJSONObject(i);
+            if (null != conditions.getTimeGranularity() && CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY.equals(conditions.getTimeGranularity())) {
+                //时报
+                ByteDanceAdvertisePlanHourlyReport hourlyReport = JSONObject.parseObject(data.toJSONString(), ByteDanceAdvertisePlanHourlyReport.class);
+                hourlyReport.setAdvertiserId(conditions.getAdvertiserId());
+                String hour = hourlyReport.getStatDatetime().substring(11, 13);
+                hourlyReport.setStatDatetime(conditions.getStartDate().replace("-", ""));
+                hourlyReport.setHour(Integer.parseInt(hour));
+
+                ByteDanceAdvertisePlanHourlyReport hourlyByPrimaryKey = dataMapper.getHourlyByPrimaryKey(hourlyReport.getAdvertiserId(), hourlyReport.getCampaignId(), hourlyReport.getAdId(), Integer.parseInt(hourlyReport.getStatDatetime()), hourlyReport.getHour());
+                if (hourlyByPrimaryKey != null && hourlyByPrimaryKey.getAdvertiserId() != null) {
+                    UpdateWrapper<ByteDanceAdvertisePlanHourlyReport> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", hourlyReport.getAdvertiserId())
+                            .eq("campaign_id", hourlyReport.getCampaignId())
+                            .eq("ad_id", hourlyReport.getAdId())
+                            .eq("hour", hourlyReport.getHour())
+                            .eq("stat_datetime", hourlyReport.getStatDatetime());
+                    planHourlyService.update(hourlyReport, updateWrapper);
+                } else {
+                    planHourlyService.save(hourlyReport);
+                }
+            } else {
+                //日报
+                if (data != null) {
+                    ByteDanceAdvertisePlanDailyReport dailyReport = JSONObject.parseObject(data.toJSONString(), ByteDanceAdvertisePlanDailyReport.class);
+                    dailyReport.setAdvertiserId(conditions.getAdvertiserId());
+                    dailyReport.setStatDatetime(conditions.getStartDate().replace("-", ""));
+                    ByteDanceAdvertisePlanDailyReport byPrimaryKey = dataMapper.getByPrimaryKey(dailyReport.getAdvertiserId(), dailyReport.getCampaignId(), dailyReport.getAdId(), Integer.parseInt(dailyReport.getStatDatetime()));
+                    if (byPrimaryKey != null && byPrimaryKey.getAdvertiserId() != null) {
+                        UpdateWrapper<ByteDanceAdvertisePlanDailyReport> updateWrapper = new UpdateWrapper<>();
+                        updateWrapper.eq("advertiser_id", dailyReport.getAdvertiserId())
+                                .eq("campaign_id", dailyReport.getCampaignId())
+                                .eq("ad_id", dailyReport.getAdId())
+                                .eq("stat_datetime", dailyReport.getStatDatetime());
+                        planDailyService.update(dailyReport, updateWrapper);
+                    } else {
+                        planDailyService.save(dailyReport);
+                    }
+
+
+                }
+            }
+        }
+
+        page++;
+        int totalPage = getObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getPlanReportByPage(token, conditions, page);
+        }
+    }
+
+    /**
+     * 获取广告计划报表信息
+     *
+     * @param token
+     * @param conditions
+     * @return
+     */
+    private JSONObject getAdStat(OauthToken token, JSONObject conditions) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_AD_GET;
+        JSONArray groupBy = new JSONArray();
+        groupBy.add("STAT_GROUP_BY_FIELD_ID");
+        groupBy.add("STAT_GROUP_BY_FIELD_STAT_TIME");
+
+        JSONObject status = new JSONObject();
+        status.put("status", "AD_STATUS_ALL");
+
+        conditions.put("filtering", status);
+        conditions.put("group_by", groupBy);
+        return HttpUtils.bytedanceGetRequest(token.getAccessToken(), url, conditions);
+    }
+
+
+    /**
+     * -------------------------------------------------------------------------获取广告主
+     */
+    @Override
+    public void getAdvertiserReport(OauthToken token, String startDate, String endDate, String bytedanceReportTypePl) {
+        var conditions = getReportDTO(token, startDate, endDate, bytedanceReportTypePl);
+        getAdvertiserReportByPage(token, conditions, 1);
+    }
+
+    /**
+     * 获取广告主
+     */
+    private void getAdvertiserReportByPage(OauthToken token, ByteDanceAdvertiserReportDTO conditions, Integer page) {
+        conditions.setPage(page);
+        SerializeConfig config = new SerializeConfig();
+        config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
+        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(conditions, config));
+        JSONObject getObject = getAdvertiserStat(token, jsonObject);
+        if (null == getObject) {
+            XxlJobHelper.log("头条广告主数据获取异常");
+            return;
+        }
+        Integer code = getObject.getInteger("code");
+        String message = getObject.getString("message");
+        if (null == code || code != 0) {
+            XxlJobHelper.log("头条广告主数据获取异常:{}", message);
+            return;
+        }
+        JSONArray dataArray = getObject.getJSONObject("data").getJSONArray("list");
+        if (null == dataArray || dataArray.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < dataArray.size(); i++) {
+            JSONObject data = dataArray.getJSONObject(i);
+            if (null != conditions.getTimeGranularity() && conditions.getTimeGranularity().equals(CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY)) {
+                //时报
+                ByteDanceAdvertiseHourlyReport hourlyReport = JSONObject.parseObject(data.toJSONString(), ByteDanceAdvertiseHourlyReport.class);
+                hourlyReport.setAdvertiserId(conditions.getAdvertiserId());
+                String hour = hourlyReport.getStatDatetime().substring(11, 13);
+                hourlyReport.setStatDatetime(conditions.getStartDate().replace("-", ""));
+                hourlyReport.setHour(Integer.parseInt(hour));
+
+                ByteDanceAdvertiseHourlyReport hourlyByPrimaryKey = dataMapper.getAdvertiseHourlyByPrimaryKey(hourlyReport.getAdvertiserId(), Integer.parseInt(hourlyReport.getStatDatetime()), hourlyReport.getHour());
+                if (hourlyByPrimaryKey != null && hourlyByPrimaryKey.getAdvertiserId() != null) {
+                    UpdateWrapper<ByteDanceAdvertiseHourlyReport> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", hourlyReport.getAdvertiserId())
+                            .eq("hour", hourlyReport.getHour())
+                            .eq("stat_datetime", hourlyReport.getStatDatetime());
+                    advertiserHourlyService.update(hourlyReport, updateWrapper);
+                } else {
+                    advertiserHourlyService.save(hourlyReport);
+                }
+            } else {
+                //日报
+                ByteDanceAdvertiseDailyReport dailyReport = JSONObject.parseObject(data.toJSONString(), ByteDanceAdvertiseDailyReport.class);
+                dailyReport.setAdvertiserId(conditions.getAdvertiserId());
+                dailyReport.setStatDatetime(conditions.getStartDate().replace("-", ""));
+
+                ByteDanceAdvertiseDailyReport byPrimaryKey = dataMapper.getAdvertiseDailyByPrimaryKey(dailyReport.getAdvertiserId(), Integer.parseInt(dailyReport.getStatDatetime()));
+                if (byPrimaryKey != null && byPrimaryKey.getAdvertiserId() != null) {
+                    UpdateWrapper<ByteDanceAdvertiseDailyReport> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", dailyReport.getAdvertiserId())
+                            .eq("stat_datetime", dailyReport.getStatDatetime());
+
+                    advertiserDailyService.update(dailyReport, updateWrapper);
+                } else {
+                    advertiserDailyService.save(dailyReport);
+                }
+            }
+        }
+        page++;
+        int totalPage = getObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getAdvertiserReportByPage(token, conditions, page);
+        } else {
+            JSONObject param = new JSONObject();
+            param.put("advertiser_id", token.getAccountId());
+            param.put("start_date", conditions.getStartDate().replace("-", ""));
+            param.put("end_date", conditions.getEndDate().replace("-", ""));
+            if (null != conditions.getTimeGranularity() && conditions.getTimeGranularity().equals(CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY)) {
+                param.put("date_type", "hourly");
+            } else {
+                param.put("date_type", "daily");
+            }
+
+            String s = HttpUtils.httpPostRequest(urlPath, param, null);
+            log.info("调用接口成功");
+        }
+
+    }
+
+    /**
+     * 获取广告主报表信息
+     *
+     * @param token
+     * @param conditions
+     * @return
+     */
+    public JSONObject getAdvertiserStat(OauthToken token, JSONObject conditions) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_advertiser_GET;
+        JSONArray groupBy = new JSONArray();
+        groupBy.add("STAT_GROUP_BY_FIELD_ID");
+        groupBy.add("STAT_GROUP_BY_FIELD_STAT_TIME");
+        conditions.put("group_by", groupBy);
+        return HttpUtils.bytedanceGetRequest(token.getAccessToken(), url, conditions);
+    }
+
+
+    /**
+     * -------------------------------------------------------------------------获取代理商
+     */
+    @Override
+    public void getAgentReport(OauthToken token, String startDate, String endDate, String bytedanceReportTypePl) {
+        JSONObject jsonObject = new JSONObject();
+        if (CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY.equals(bytedanceReportTypePl)) {
+            //日报
+            jsonObject.put("agent_id", token.getAccountId());
+            jsonObject.put("start_date", startDate);
+            jsonObject.put("end_date", endDate);
+            jsonObject.put("page_size", 1000);
+            jsonObject.put("timeGranularity", bytedanceReportTypePl);
+        } else {
+            //时报
+            jsonObject.put("agent_id", token.getAccountId());
+            jsonObject.put("page_size", 1000);
+            jsonObject.put("timeGranularity", bytedanceReportTypePl);
+        }
+
+        getAgentReportByPage(token, jsonObject, 1);
+    }
+
+    /**
+     * 获取代理商
+     */
+    private void getAgentReportByPage(OauthToken token, JSONObject conditions, Integer page) {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");
+        String hour = simpleDateFormat.format(new Date());
+        String nowDate = DateUtils.getNowDate("yyyyMMdd");
+        conditions.put("page", page);
+        SerializeConfig config = new SerializeConfig();
+        config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
+        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(conditions, config));
+        JSONObject getObject = getAgentStat(token, jsonObject);
+        if (null == getObject) {
+            XxlJobHelper.log("头条代理商数据获取异常");
+            return;
+        }
+        Integer code = getObject.getInteger("code");
+        String message = getObject.getString("message");
+        if (null == code || code != 0) {
+            XxlJobHelper.log("头条代理商数据获取异常:{}", message);
+            return;
+        }
+        JSONArray dataArray = getObject.getJSONObject("data").getJSONArray("list");
+        if (null == dataArray || dataArray.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < dataArray.size(); i++) {
+            JSONObject data = dataArray.getJSONObject(i);
+            if (null != conditions.get("timeGranularity") && conditions.get("timeGranularity").equals(CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY)) {
+                //时报
+                BytedanceAgentReportHourly hourlyReport = JSONObject.parseObject(data.toJSONString(), BytedanceAgentReportHourly.class);
+                hourlyReport.setStatDatetime(nowDate);
+                hourlyReport.setHour(Integer.parseInt(hour));
+                BytedanceAgentReportHourly hourlyByPrimaryKey = dataMapper.getAgentHourlyByPrimaryKey(hourlyReport.getAdvertiserId(), hourlyReport.getAgentId(), hourlyReport.getStatDatetime(), hourlyReport.getHour());
+                if (hourlyByPrimaryKey != null && hourlyByPrimaryKey.getAdvertiserId() != null) {
+                    UpdateWrapper<BytedanceAgentReportHourly> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", hourlyReport.getAdvertiserId())
+                            .eq("agent_id", hourlyReport.getAgentId())
+                            .eq("hour", hourlyReport.getHour())
+                            .eq("stat_datetime", hourlyReport.getStatDatetime());
+                    agentHourlyService.update(hourlyReport, updateWrapper);
+                } else {
+                    agentHourlyService.save(hourlyReport);
+                }
+            } else {
+                //日报
+                BytedanceAgentReportDaily dailyReport = JSONObject.parseObject(data.toJSONString(), BytedanceAgentReportDaily.class);
+                dailyReport.setStatDatetime(((String) conditions.get("start_date")).replace("-", ""));
+                BytedanceAgentReportDaily byPrimaryKey = dataMapper.getAgentDailyByPrimaryKey(dailyReport.getAdvertiserId(), dailyReport.getAgentId(), Integer.parseInt(dailyReport.getStatDatetime()));
+                if (byPrimaryKey != null && byPrimaryKey.getAdvertiserId() != null) {
+                    UpdateWrapper<BytedanceAgentReportDaily> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", dailyReport.getAdvertiserId())
+                            .eq("agent_id", dailyReport.getAgentId())
+                            .eq("stat_datetime", dailyReport.getStatDatetime());
+                    agentDailyService.update(dailyReport, updateWrapper);
+                } else {
+                    agentDailyService.save(dailyReport);
+                }
+            }
+        }
+        page++;
+        int totalPage = getObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getAgentReportByPage(token, conditions, page);
+        }
+    }
+
+    /**
+     * 获取获取代理商报表信息
+     *
+     * @param token
+     * @param conditions
+     * @return
+     */
+    public JSONObject getAgentStat(OauthToken token, JSONObject conditions) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_AGENT_GET_V2;
+        return HttpUtils.bytedanceGetRequest(token.getAccessToken(), url, conditions);
+    }
+
+}

+ 20 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceAgentReportDailyServiceImpl.java

@@ -0,0 +1,20 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportDaily;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceAgentReportDailyMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceAgentReportDailyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 代理商日报
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+@Service
+public class BytedanceAgentReportDailyServiceImpl extends ServiceImpl<BytedanceAgentReportDailyMapper, BytedanceAgentReportDaily> implements IBytedanceAgentReportDailyService {
+
+}

+ 19 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceAgentReportHourlyServiceImpl.java

@@ -0,0 +1,19 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAgentReportHourly;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceAgentReportHourlyMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceAgentReportHourlyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * 代理商日报
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+@Service
+public class BytedanceAgentReportHourlyServiceImpl extends ServiceImpl<BytedanceAgentReportHourlyMapper, BytedanceAgentReportHourly> implements IBytedanceAgentReportHourlyService {
+
+}

+ 107 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceAudiencePackageGetServiceImpl.java

@@ -0,0 +1,107 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceAudiencePackageGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceAudiencePackageGetMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceAudiencePackageGetService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.PropertyNamingStrategy;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xxl.job.core.context.XxlJobHelper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+@Service
+public class BytedanceAudiencePackageGetServiceImpl extends ServiceImpl<BytedanceAudiencePackageGetMapper, BytedanceAudiencePackageGet> implements IBytedanceAudiencePackageGetService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+
+    @Autowired
+    DataMapper dataMapper;
+
+
+
+    /**
+     * -------------------------------------------------------------------------获取定向包
+     */
+    @Override
+    public void getAudiencePackageGetReport(OauthToken token) {
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("advertiser_id", token.getAccountId());
+        jsonObject.put("page_size", 100);
+        getAudiencePackageGetReportByPage(token, jsonObject, 1);
+    }
+
+    /**
+     * 获取定向包
+     */
+    private void getAudiencePackageGetReportByPage(OauthToken token, JSONObject conditions, Integer page) {
+        conditions.put("page", page);
+        SerializeConfig config = new SerializeConfig();
+        config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
+        JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(conditions, config));
+        JSONObject getObject = getAudiencePackageGetStat(token, jsonObject);
+        if (null == getObject) {
+            XxlJobHelper.log("头条代理商数据获取异常");
+            return;
+        }
+        Integer code = getObject.getInteger("code");
+        String message = getObject.getString("message");
+        if (null == code || code != 0) {
+            XxlJobHelper.log("头条代理商数据获取异常:{}", message);
+            return;
+        }
+        JSONArray dataArray = getObject.getJSONObject("data").getJSONArray("audience_packages");
+        if (null == dataArray || dataArray.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < dataArray.size(); i++) {
+            JSONObject data = dataArray.getJSONObject(i);
+            BytedanceAudiencePackageGet report = JSONObject.parseObject(data.toJSONString(), BytedanceAudiencePackageGet.class);
+            BytedanceAudiencePackageGet audiencePackageByPrimaryKey = dataMapper.getAudiencePackageByPrimaryKey(report.getAdvertiserId(), report.getAudiencePackageId());
+            if (audiencePackageByPrimaryKey != null && audiencePackageByPrimaryKey.getAdvertiserId() != null) {
+                UpdateWrapper<BytedanceAudiencePackageGet> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                        .eq("audience_package_id", report.getAudiencePackageId());
+                this.update(report, updateWrapper);
+            } else {
+                this.save(report);
+            }
+        }
+        page++;
+        int totalPage = getObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getAudiencePackageGetReportByPage(token, conditions, page);
+        }
+    }
+
+    /**
+     * 获取定向包报表信息
+     *
+     * @param token
+     * @param conditions
+     * @return
+     */
+    public JSONObject getAudiencePackageGetStat(OauthToken token, JSONObject conditions) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_AUDIENCE_PACKAGE_GET;
+        return HttpUtils.bytedanceGetRequest(token.getAccessToken(), url, conditions);
+    }
+
+}

+ 79 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCampaignGetServiceImpl.java

@@ -0,0 +1,79 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceCampaignGetMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceCampaignGetService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceCampaignGetServiceImpl extends ServiceImpl<BytedanceCampaignGetMapper, BytedanceCampaignGet> implements IBytedanceCampaignGetService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getCampaignData(OauthToken oauthToken, int pageNumber, int pageSize) {
+
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_CAMPAIGN_GET;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("page", pageNumber);
+        param.put("page_size", pageSize);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告组接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            BytedanceCampaignGet report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceCampaignGet.class);
+            report.setAdvertiserId(oauthToken.getAccountId());
+            report.setCampaignId((Long) dataObject.get("id"));
+            report.setCampaignName((String) dataObject.get("name"));
+            BytedanceCampaignGet campaignByPrimaryKey = dataMapper.getCampaignByPrimaryKey(report.getAdvertiserId(), report.getCampaignId());
+            if (campaignByPrimaryKey != null && campaignByPrimaryKey.getAdvertiserId() != null) {
+                UpdateWrapper<BytedanceCampaignGet> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                        .eq("campaign_id", report.getCampaignId());
+                this.update(report, updateWrapper);
+            } else {
+                this.save(report);
+            }
+
+        }
+        pageNumber++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (pageNumber <= totalPage) {
+            getCampaignData(oauthToken, pageNumber, 1000);
+        }
+    }
+
+}

+ 91 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCampaignReportDailyServiceImpl.java

@@ -0,0 +1,91 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportDaily;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceCampaignReportDailyMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceCampaignReportDailyService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceCampaignReportDailyServiceImpl extends ServiceImpl<BytedanceCampaignReportDailyMapper, BytedanceCampaignReportDaily> implements IBytedanceCampaignReportDailyService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getCampaignDailyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily, int pageNumber, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_CAMPAIGN_GET;
+        ;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("start_date", yesterda);
+        param.put("end_date", yesterda1);
+        param.put("time_granularity", bytedanceReportTypeDaily);
+        param.put("page", pageNumber);
+        param.put("page_size", pageSize);
+        JSONArray groupBy = new JSONArray();
+        groupBy.add("STAT_GROUP_BY_FIELD_ID");
+        groupBy.add("STAT_GROUP_BY_FIELD_STAT_TIME");
+        param.put("group_by", groupBy);
+
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告组接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            //时报
+            BytedanceCampaignReportDaily report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceCampaignReportDaily.class);
+            if (report.getCampaignId() != null) {
+                report.setAdvertiserId(oauthToken.getAccountId());
+                report.setStatDatetime(yesterda.replace("-", ""));
+                BytedanceCampaignReportDaily campaignDailyByPrimaryKey = dataMapper.getCampaignDailyByPrimaryKey(report.getAdvertiserId(), report.getCampaignId(), report.getStatDatetime());
+                if (campaignDailyByPrimaryKey != null && campaignDailyByPrimaryKey.getAdvertiserId() != null) {
+                    UpdateWrapper<BytedanceCampaignReportDaily> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                            .eq("campaign_id", report.getCampaignId());
+                    this.update(report, updateWrapper);
+                } else {
+                    this.save(report);
+                }
+            }
+
+
+        }
+        pageNumber++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (pageNumber <= totalPage) {
+            getCampaignDailyReport(oauthToken, yesterda, yesterda1, bytedanceReportTypeDaily, pageNumber, 1000);
+        }
+
+    }
+
+}

+ 90 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCampaignReportHourlyServiceImpl.java

@@ -0,0 +1,90 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCampaignReportHourly;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceCampaignReportHourlyMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceCampaignReportHourlyService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-21
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceCampaignReportHourlyServiceImpl extends ServiceImpl<BytedanceCampaignReportHourlyMapper, BytedanceCampaignReportHourly> implements IBytedanceCampaignReportHourlyService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getCampaignHourlyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily, int pageNumber, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_CAMPAIGN_GET;
+        ;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("start_date", yesterda);
+        param.put("end_date", yesterda1);
+        param.put("time_granularity", bytedanceReportTypeDaily);
+        param.put("page", pageNumber);
+        param.put("page_size", pageSize);
+        JSONArray groupBy = new JSONArray();
+        groupBy.add("STAT_GROUP_BY_FIELD_ID");
+        groupBy.add("STAT_GROUP_BY_FIELD_STAT_TIME");
+        param.put("group_by", groupBy);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告组接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            //时报
+            BytedanceCampaignReportHourly report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceCampaignReportHourly.class);
+            report.setAdvertiserId(oauthToken.getAccountId());
+            String hour = report.getStatDatetime().substring(11, 13);
+            report.setStatDatetime(yesterda.replace("-", ""));
+            report.setHour(Integer.parseInt(hour));
+            report.setStatDatetime(yesterda.replace("-", ""));
+            BytedanceCampaignReportHourly campaignHourlyByPrimaryKey = dataMapper.getCampaignHourlyByPrimaryKey(report.getAdvertiserId(), report.getCampaignId(), report.getStatDatetime(), report.getHour());
+            if (campaignHourlyByPrimaryKey != null && campaignHourlyByPrimaryKey.getAdvertiserId() != null) {
+                UpdateWrapper<BytedanceCampaignReportHourly> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                        .eq("campaign_id", report.getCampaignId());
+                this.update(report, updateWrapper);
+            } else {
+                this.save(report);
+            }
+
+        }
+        pageNumber++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (pageNumber <= totalPage) {
+            getCampaignHourlyReport(oauthToken, yesterda, yesterda1, bytedanceReportTypeDaily, pageNumber, 1000);
+        }
+
+    }
+
+}

+ 77 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCreativeGetServiceImpl.java

@@ -0,0 +1,77 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceCreativeGetMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceCreativeGetService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 创意信息
+ *
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceCreativeGetServiceImpl extends ServiceImpl<BytedanceCreativeGetMapper, BytedanceCreativeGet> implements IBytedanceCreativeGetService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getCreativeData(OauthToken oauthToken, int page, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_CREATIVE_GET;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("page", page);
+        param.put("page_size", pageSize);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取创意接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            BytedanceCreativeGet report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceCreativeGet.class);
+
+            BytedanceCreativeGet bytedanceCreativeGet = dataMapper.getCreativeByPrimaryKey(report.getAdvertiserId(), report.getAdId(), report.getCreativeId());
+            if (bytedanceCreativeGet != null && bytedanceCreativeGet.getAdvertiserId() != null) {
+                UpdateWrapper<BytedanceCreativeGet> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                        .eq("ad_id", report.getAdId())
+                        .eq("creative_id", report.getCreativeId());
+                this.update(report, updateWrapper);
+            } else {
+                this.save(report);
+            }
+
+        }
+        page++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getCreativeData(oauthToken, page, 1000);
+        }
+
+    }
+}

+ 90 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCreativeReportDailyServiceImpl.java

@@ -0,0 +1,90 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportDaily;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceCreativeReportDailyMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceCreativeReportDailyService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceCreativeReportDailyServiceImpl extends ServiceImpl<BytedanceCreativeReportDailyMapper, BytedanceCreativeReportDaily> implements IBytedanceCreativeReportDailyService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getCreativeDailyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeDaily, int pageNumber, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_CREATIVE_GET;
+        ;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("start_date", yesterda);
+        param.put("end_date", yesterda1);
+        param.put("time_granularity", bytedanceReportTypeDaily);
+        param.put("page", pageNumber);
+        param.put("page_size", pageSize);
+        JSONArray groupBy = new JSONArray();
+        groupBy.add("STAT_GROUP_BY_FIELD_ID");
+        groupBy.add("STAT_GROUP_BY_FIELD_STAT_TIME");
+        param.put("group_by", groupBy);
+
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告计划接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            //时报
+            BytedanceCreativeReportDaily report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceCreativeReportDaily.class);
+
+            report.setAdvertiserId(oauthToken.getAccountId());
+            report.setStatDatetime(yesterda.replace("-", ""));
+            BytedanceCreativeReportDaily creativeReportDaily = dataMapper.getCreativeDailyByPrimaryKey(report.getAdvertiserId(), report.getCampaignId(), report.getAdId(), report.getCreativeId(), report.getStatDatetime());
+            if (creativeReportDaily != null && creativeReportDaily.getAdvertiserId() != null) {
+                UpdateWrapper<BytedanceCreativeReportDaily> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                        .eq("campaign_id", report.getCampaignId())
+                        .eq("ad_id", report.getAdId())
+                        .eq("creative_id", report.getCreativeId())
+                        .eq("stat_datetime", report.getCampaignId());
+                this.update(report, updateWrapper);
+            } else {
+                this.save(report);
+            }
+
+        }
+        pageNumber++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (pageNumber <= totalPage) {
+            getCreativeDailyReport(oauthToken, yesterda, yesterda1, bytedanceReportTypeDaily, pageNumber, 1000);
+        }
+    }
+}

+ 92 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceCreativeReportHourlyServiceImpl.java

@@ -0,0 +1,92 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceCreativeReportHourly;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceCreativeReportHourlyMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceCreativeReportHourlyService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 获取定向包
+ *
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceCreativeReportHourlyServiceImpl extends ServiceImpl<BytedanceCreativeReportHourlyMapper, BytedanceCreativeReportHourly> implements IBytedanceCreativeReportHourlyService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getCampaignHourlyReport(OauthToken oauthToken, String yesterda, String yesterda1, String bytedanceReportTypeHourly, int pageNumber, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_CREATIVE_GET;
+        ;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("start_date", yesterda);
+        param.put("end_date", yesterda1);
+        param.put("time_granularity", bytedanceReportTypeHourly);
+        param.put("page", pageNumber);
+        param.put("page_size", pageSize);
+        JSONArray groupBy = new JSONArray();
+        groupBy.add("STAT_GROUP_BY_FIELD_ID");
+        groupBy.add("STAT_GROUP_BY_FIELD_STAT_TIME");
+        param.put("group_by", groupBy);
+
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取广告计划接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            //时报
+            BytedanceCreativeReportHourly report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceCreativeReportHourly.class);
+            String hour = report.getStatDatetime().substring(11, 13);
+            report.setHour(Integer.parseInt(hour));
+            report.setAdvertiserId(oauthToken.getAccountId());
+            report.setStatDatetime(yesterda.replace("-", ""));
+            BytedanceCreativeReportHourly creativeReportHourly = dataMapper.getCreativeHourlyByPrimaryKey(report.getAdvertiserId(), report.getCampaignId(), report.getAdId(), report.getCreativeId(), report.getStatDatetime(), report.getHour());
+            if (creativeReportHourly != null && creativeReportHourly.getAdvertiserId() != null) {
+                UpdateWrapper<BytedanceCreativeReportHourly> updateWrapper = new UpdateWrapper<>();
+                updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                        .eq("campaign_id", report.getCampaignId())
+                        .eq("ad_id", report.getAdId())
+                        .eq("creative_id", report.getCreativeId())
+                        .eq("hour", report.getHour())
+                        .eq("stat_datetime", report.getCampaignId());
+                this.update(report, updateWrapper);
+            } else {
+                this.save(report);
+            }
+
+        }
+        pageNumber++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (pageNumber <= totalPage) {
+            getCampaignHourlyReport(oauthToken, yesterda, yesterda1, bytedanceReportTypeHourly, pageNumber, 1000);
+        }
+    }
+}

+ 86 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceFileImageGetServiceImpl.java

@@ -0,0 +1,86 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceFileImageGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceFileImageGetMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceFileImageGetService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 头条图片素材
+ *
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceFileImageGetServiceImpl extends ServiceImpl<BytedanceFileImageGetMapper, BytedanceFileImageGet> implements IBytedanceFileImageGetService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getFileImageData(OauthToken oauthToken, int page, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_FILE_IMAGE_GET;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("page", page);
+        param.put("page_size", pageSize);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取图片素材接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            try {
+                BytedanceFileImageGet report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceFileImageGet.class);
+                report.setAdvertiserId(oauthToken.getAccountId());
+                if(null!=report.getId()&&report.getId().contains("web")){
+                    report.setImageUrl("https://sf6-ttcdn-tos.pstatp.com/obj/"+report.getId()) ;
+                }else{
+                    report.setImageUrl("https://sf6-ttcdn-tos.pstatp.com/obj/mosaic-legacy/"+report.getId()) ;
+                }
+                BytedanceFileImageGet bytedanceCreativeGet = dataMapper.getFileImageGetByPrimaryKey(report.getAdvertiserId(), report.getId());
+                if (bytedanceCreativeGet != null && bytedanceCreativeGet.getAdvertiserId() != null) {
+                    UpdateWrapper<BytedanceFileImageGet> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                            .eq("id", report.getId());
+                    this.update(report, updateWrapper);
+                } else {
+                    this.save(report);
+                }
+            }catch (Exception e){
+                log.info("错误:{}",e.toString());
+            }
+
+
+
+        }
+        page++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getFileImageData(oauthToken, page, 100);
+        }
+    }
+}

+ 82 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceFileVideoGetServiceImpl.java

@@ -0,0 +1,82 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceFileVideoGetMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceFileVideoGetService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 头条-视频素材
+ *
+ * @author jeecg-boot
+ * 2021-10-22
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceFileVideoGetServiceImpl extends ServiceImpl<BytedanceFileVideoGetMapper, BytedanceFileVideoGet> implements IBytedanceFileVideoGetService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void getFileVideoData(OauthToken oauthToken, int page, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_FILE_VIDEO_GET;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("page", page);
+        param.put("page_size", pageSize);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取视频素材接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+          try {
+              BytedanceFileVideoGet report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceFileVideoGet.class);
+              report.setAdvertiserId(oauthToken.getAccountId());
+
+              BytedanceFileVideoGet bytedanceCreativeGet = dataMapper.getFileVideoGetByPrimaryKey(report.getAdvertiserId(), report.getId());
+
+              report.setVideoUrl("https://aweme.snssdk.com/aweme/v1/playwm/?video_id=" + report.getId() + "&line=0");
+              if (bytedanceCreativeGet != null && bytedanceCreativeGet.getAdvertiserId() != null) {
+                  UpdateWrapper<BytedanceFileVideoGet> updateWrapper = new UpdateWrapper<>();
+                  updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                          .eq("id", report.getId());
+                  this.update(report, updateWrapper);
+              }  else {
+                  this.save(report);
+              }
+          }catch (Exception e){
+              log.info("错误:{}",e.toString());
+          }
+
+        }
+        page++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            getFileVideoData(oauthToken, page, 100);
+        }
+    }
+}

+ 99 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceMaterialReportDailyServiceImpl.java

@@ -0,0 +1,99 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialReportDaily;
+import cn.com.ctop.job.bytedance.data.entity.OauthToken;
+import cn.com.ctop.job.bytedance.data.mapper.BytedanceMaterialReportDailyMapper;
+import cn.com.ctop.job.bytedance.data.mapper.DataMapper;
+import cn.com.ctop.job.bytedance.data.service.IBytedanceMaterialReportDailyService;
+import cn.com.ctop.job.bytedance.data.utils.HttpUtils;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * 图片与视频素材日报
+ *
+ * @author jeecg-boot
+ * 2021-10-25
+ * @version V1.0
+ */
+@Service
+@Slf4j
+public class BytedanceMaterialReportDailyServiceImpl extends ServiceImpl<BytedanceMaterialReportDailyMapper, BytedanceMaterialReportDaily> implements IBytedanceMaterialReportDailyService {
+    @Value("${api.bytedance.api-prefix}")
+    private String bytedanceApiUrl;
+    @Autowired
+    DataMapper dataMapper;
+
+    @Override
+    public void bytedanceDailyMaterialReportJob(OauthToken oauthToken, String yesterda, String yesterda1, int page, int pageSize) {
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_REPORT_INTEGRATED_GET;
+        JSONObject param = new JSONObject();
+        param.put("advertiser_id", oauthToken.getAccountId());
+        param.put("start_date", yesterda1);
+        param.put("end_date", yesterda1);
+        param.put("page", page);
+        param.put("page_size", pageSize);
+        param.put("group_by", new String[]{"STAT_GROUP_BY_MATERIAL_ID", "STAT_GROUP_BY_INVENTORY", "STAT_GROUP_BY_IMAGE_MODE", "STAT_GROUP_BY_TIME_DAY"});
+
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取素材日报接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
+            return;
+        }
+        JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
+        if (null == data || data.isEmpty()) {
+            return;
+        }
+
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject dataObject = data.getJSONObject(i);
+            JSONObject dimensions = data.getJSONObject(i).getJSONObject("dimensions");
+            JSONObject metrics = data.getJSONObject(i).getJSONObject("metrics");
+
+            try {
+                BytedanceMaterialReportDaily report = JSONObject.parseObject(metrics.toJSONString(), BytedanceMaterialReportDaily.class);
+                report.setAdvertiserId(oauthToken.getAccountId());
+                report.setMaterialId((Long) dimensions.get("material_id"));
+                report.setImageMode((String) dimensions.get("image_mode"));
+                report.setInventory((String) dimensions.get("inventory"));
+                report.setStatDatetime(yesterda.replace("-", ""));
+                report.setSubmitCertificationCount(dataObject.get("submit_certification_count")==null?null:Integer.parseInt((String) dataObject.get("submit_certification_count")));
+                report.setApprovalCount(dataObject.get("approval_count")==null?null:Integer.parseInt((String) dataObject.get("approval_count")));
+                report.setFirstOrderCount(dataObject.get("first_order_count")==null?null:Integer.parseInt((String) dataObject.get("first_order_count")));
+                report.setFirstRentalOrderCount(dataObject.get("first_rental_order_count")==null?null:Integer.parseInt((String) dataObject.get("first_rental_order_count")));
+                report.setCommuteFirstPayCount(dataObject.get("commute_first_pay_count")==null?null:Integer.parseInt((String) dataObject.get("commute_first_pay_count")));
+                BytedanceMaterialReportDaily materialReport = dataMapper.getMaterialReportByPrimaryKey(report.getAdvertiserId(), report.getMaterialId(), report.getImageMode(), report.getInventory(), report.getStatDatetime());
+                if (materialReport != null && materialReport.getAdvertiserId() != null) {
+                    UpdateWrapper<BytedanceMaterialReportDaily> updateWrapper = new UpdateWrapper<>();
+                    updateWrapper.eq("advertiser_id", report.getAdvertiserId())
+                            .eq("material_id", report.getMaterialId())
+                            .eq("image_mode", report.getImageMode())
+                            .eq("inventory", report.getInventory())
+                            .eq("stat_datetime", report.getStatDatetime());
+                    this.update(report, updateWrapper);
+                } else {
+                    this.save(report);
+                }
+            } catch (Exception e) {
+                log.info("错误:{}", e.toString());
+            }
+
+
+        }
+        page++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
+        if (page <= totalPage) {
+            bytedanceDailyMaterialReportJob(oauthToken, yesterda, yesterda1, page, 1000);
+        }
+    }
+}

+ 21 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertiseDailyServiceImpl.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseDailyReport;
+import cn.com.ctop.job.bytedance.data.mapper.ByteDanceAdvertiseDailyMapper;
+import cn.com.ctop.job.bytedance.data.service.IByteDanceAdvertiserDailyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Description: 今日头条广告主计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Service
+public class IByteDanceAdvertiseDailyServiceImpl extends ServiceImpl<ByteDanceAdvertiseDailyMapper, ByteDanceAdvertiseDailyReport> implements IByteDanceAdvertiserDailyService {
+
+
+}

+ 20 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertiseHourlyServiceImpl.java

@@ -0,0 +1,20 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertiseHourlyReport;
+import cn.com.ctop.job.bytedance.data.mapper.ByteDanceAdvertiseHourlyMapper;
+import cn.com.ctop.job.bytedance.data.service.IByteDanceAdvertiserHourlyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+/**
+ * @Description: 今日头条广告主计划信息
+ * @Author: jeecg-boot
+ * @Date: 2019-07-22
+ * @Version: V1.0
+ */
+@Slf4j
+@Service
+public class IByteDanceAdvertiseHourlyServiceImpl extends ServiceImpl<ByteDanceAdvertiseHourlyMapper, ByteDanceAdvertiseHourlyReport> implements IByteDanceAdvertiserHourlyService {
+
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertisePlanDailyServiceImpl.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanDailyReport;
+import cn.com.ctop.job.bytedance.data.mapper.ByteDanceAdvertisePlanDailyMapper;
+import cn.com.ctop.job.bytedance.data.service.IByteDanceAdvertiserPlanDailyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class IByteDanceAdvertisePlanDailyServiceImpl extends ServiceImpl<ByteDanceAdvertisePlanDailyMapper, ByteDanceAdvertisePlanDailyReport> implements IByteDanceAdvertiserPlanDailyService {
+
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertisePlanHourlyServiceImpl.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlanHourlyReport;
+import cn.com.ctop.job.bytedance.data.mapper.ByteDanceAdvertisePlanHourlyMapper;
+import cn.com.ctop.job.bytedance.data.service.IByteDanceAdvertiserPlanHourlyService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class IByteDanceAdvertisePlanHourlyServiceImpl extends ServiceImpl<ByteDanceAdvertisePlanHourlyMapper, ByteDanceAdvertisePlanHourlyReport> implements IByteDanceAdvertiserPlanHourlyService {
+
+
+}

+ 15 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/IByteDanceAdvertisePlanServiceImpl.java

@@ -0,0 +1,15 @@
+package cn.com.ctop.job.bytedance.data.service.impl;
+
+import cn.com.ctop.job.bytedance.data.entity.ByteDanceAdvertisePlan;
+import cn.com.ctop.job.bytedance.data.mapper.ByteDanceAdvertisePlanMapper;
+import cn.com.ctop.job.bytedance.data.service.IByteDanceAdvertisePlanService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class IByteDanceAdvertisePlanServiceImpl extends ServiceImpl<ByteDanceAdvertisePlanMapper, ByteDanceAdvertisePlan> implements IByteDanceAdvertisePlanService {
+
+
+}

+ 0 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/OauthTokenServiceImpl.java


Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov