Przeglądaj źródła

删除无用代码,修改xxl-job工具类更新

syh 4 lat temu
rodzic
commit
207d84fb97
100 zmienionych plików z 2000 dodań i 1677 usunięć
  1. 0 123
      module-callback/pom.xml
  2. 0 23
      module-callback/src/main/java/cn/com/ctop/callback/StartApplication.java
  3. 0 29
      module-callback/src/main/java/cn/com/ctop/callback/config/XxlMqConf.java
  4. 0 28
      module-callback/src/main/java/cn/com/ctop/callback/controller/CallbackController.java
  5. 0 13
      module-callback/src/main/resources/application-dev.yml
  6. 0 13
      module-callback/src/main/resources/application-prod.yml
  7. 0 13
      module-callback/src/main/resources/application-test.yml
  8. 0 7
      module-callback/src/main/resources/application.yml
  9. 0 29
      module-callback/src/main/resources/logback-dev.xml
  10. 0 29
      module-callback/src/main/resources/logback-prod.xml
  11. 0 29
      module-callback/src/main/resources/logback-test.xml
  12. 0 20
      module-callback/src/test/java/org/jeecgframework/boot/AppTest.java
  13. 5 7
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/CtopOauthTokenServiceImpl.java
  14. 4 4
      module-common/src/main/java/cn/com/ctop/common/module/service/impl/RefreshTokenServiceImpl.java
  15. 4 0
      module-common/src/main/java/com/xxl/job/core/biz/AdminBiz.java
  16. 12 16
      module-common/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java
  17. 5 3
      module-common/src/main/java/com/xxl/job/core/biz/client/AdminBizClient.java
  18. 56 0
      module-common/src/main/java/com/xxl/job/core/biz/client/ExecutorBizClient.java
  19. 25 27
      module-common/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java
  20. 19 8
      module-common/src/main/java/com/xxl/job/core/biz/model/HandleCallbackParam.java
  21. 28 0
      module-common/src/main/java/com/xxl/job/core/biz/model/IdleBeatParam.java
  22. 28 0
      module-common/src/main/java/com/xxl/job/core/biz/model/KillParam.java
  23. 47 0
      module-common/src/main/java/com/xxl/job/core/biz/model/LogParam.java
  24. 2 0
      module-common/src/main/java/com/xxl/job/core/biz/model/LogResult.java
  25. 122 0
      module-common/src/main/java/com/xxl/job/core/context/XxlJobContext.java
  26. 255 0
      module-common/src/main/java/com/xxl/job/core/context/XxlJobHelper.java
  27. 1 1
      module-common/src/main/java/com/xxl/job/core/enums/ExecutorBlockStrategyEnum.java
  28. 52 87
      module-common/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java
  29. 121 0
      module-common/src/main/java/com/xxl/job/core/executor/impl/XxlJobSimpleExecutor.java
  30. 83 62
      module-common/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java
  31. 6 17
      module-common/src/main/java/com/xxl/job/core/handler/IJobHandler.java
  32. 24 20
      module-common/src/main/java/com/xxl/job/core/handler/annotation/JobHandler.java
  33. 4 5
      module-common/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java
  34. 6 8
      module-common/src/main/java/com/xxl/job/core/handler/impl/MethodJobHandler.java
  35. 14 13
      module-common/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java
  36. 3 7
      module-common/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java
  37. 0 84
      module-common/src/main/java/com/xxl/job/core/log/XxlJobLogger.java
  38. 266 0
      module-common/src/main/java/com/xxl/job/core/server/EmbedServer.java
  39. 14 10
      module-common/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java
  40. 63 31
      module-common/src/main/java/com/xxl/job/core/thread/JobThread.java
  41. 23 7
      module-common/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java
  42. 8 0
      module-common/src/main/java/com/xxl/job/core/util/DateUtil.java
  43. 3 1
      module-common/src/main/java/com/xxl/job/core/util/FileUtil.java
  44. 88 0
      module-common/src/main/java/com/xxl/job/core/util/GsonTool.java
  45. 203 0
      module-common/src/main/java/com/xxl/job/core/util/IpUtil.java
  46. 73 0
      module-common/src/main/java/com/xxl/job/core/util/JdkSerializeTool.java
  47. 70 0
      module-common/src/main/java/com/xxl/job/core/util/NetUtil.java
  48. 5 66
      module-common/src/main/java/com/xxl/job/core/util/ScriptUtil.java
  49. 46 46
      module-common/src/main/java/com/xxl/job/core/util/ShardingUtil.java
  50. 24 0
      module-common/src/main/java/com/xxl/job/core/util/ThrowableUtil.java
  51. 17 25
      module-common/src/main/java/com/xxl/job/core/util/XxlJobRemotingUtil.java
  52. 0 5
      module-job-bytedance/pom.xml
  53. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/config/XxlJobConfig.java
  54. 1 2
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/AlarmRuleJob.java
  55. 0 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceCheckAccountLandingPageJob.java
  56. 3 5
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceCheckAccountMonitoringLinkJob.java
  57. 5 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceCleanMaterialJob.java
  58. 7 8
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceHourlyAccountWarningLoadJob.java
  59. 3 15
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDancePlanRuleDataJob.java
  60. 2 4
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceRefreshTokenJob.java
  61. 4 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceVideoReportJob.java
  62. 1 2
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAccountBidJob.java
  63. 8 11
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertiserDailyReportLoadJob.java
  64. 7 9
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertiserHourlyReportLoadJob.java
  65. 3 5
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertisingDataLoadJob.java
  66. 8 9
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCampaignDailyReportLoadJob.java
  67. 7 8
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCampaignHourlyReportLoadJob.java
  68. 5 8
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCreativeDailyReportLoadJob.java
  69. 7 9
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCreativeHourlyReportLoadJob.java
  70. 9 10
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyMaterialReportJob.java
  71. 7 11
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyMaterialReportRetryJob.java
  72. 0 85
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyPlayableReportHistoryJob.java
  73. 10 13
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyPlayableReportJob.java
  74. 5 9
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyPlayableReportRetryJob.java
  75. 0 24
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceEffectVideoJob.java
  76. 7 8
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceFlowFundJob.java
  77. 3 5
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMaterialsLoadJob.java
  78. 4 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMonitoringLinksCheckJob.java
  79. 0 57
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceOperationRecordJob.java
  80. 5 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanDailyReportLoadJob.java
  81. 6 8
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanHourlyReportLoadJob.java
  82. 3 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanLoadJob.java
  83. 3 5
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanRealTimeLoadJob.java
  84. 0 46
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceRuleDataJobDistribute.java
  85. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceSameDayCreativeLoadJob.java
  86. 3 5
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceTodayPlaneLoadJob.java
  87. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceVideoDailyReportLoadJob.java
  88. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceVideoInfoLoadJob.java
  89. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceVideoReportCleanJob.java
  90. 7 11
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceYesterdayAdvertiserHourlyLoadJob.java
  91. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckDataStateJob.java
  92. 1 3
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckExecuteStateJob.java
  93. 5 14
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/RuleDataAccountCleanJob.java
  94. 7 9
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/SendDailyUReportJob.java
  95. 4 6
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/WechatApproveAttendanceJob.java
  96. 5 7
      module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/WechatAttendanceJob.java
  97. 0 236
      module-job-distribute/pom.xml
  98. 0 13
      module-job-distribute/src/main/java/cn/com/ctop/module/job/distribute/ModuleJobDistributeApplication.java
  99. 0 27
      module-job-distribute/src/main/java/cn/com/ctop/module/job/distribute/config/AutoPoiConfig.java
  100. 0 0
      module-job-distribute/src/main/java/cn/com/ctop/module/job/distribute/config/BrowseLogHandelInterceptor.java

+ 0 - 123
module-callback/pom.xml

@@ -1,123 +0,0 @@
-<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>module-callback</artifactId>
-  <version>2.0.2</version>
-  <parent>
-    <groupId>org.jeecgframework.boot</groupId>
-    <artifactId>jeecg-boot-parent</artifactId>
-    <version>2.0.2</version>
-  </parent>
-  <name>module-callback</name>
-  <!-- FIXME change it to the project's website -->
-  <url>http://www.example.com</url>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.7</maven.compiler.source>
-    <maven.compiler.target>1.7</maven.compiler.target>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>cn.com.ctop</groupId>
-      <artifactId>module-common</artifactId>
-      <version>2.0.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>jcl-over-slf4j</artifactId>
-      <version>1.7.25</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <version>1.7.25</version>
-    </dependency>
-    <dependency>
-      <groupId>org.jeecgframework.boot</groupId>
-      <artifactId>jeecg-boot-base-common</artifactId>
-      <version>2.0.2</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>jcl-over-slf4j</artifactId>
-      <version>1.7.25</version>
-    </dependency>
-    <dependency>
-      <groupId>com.xuxueli</groupId>
-      <artifactId>xxl-mq-client</artifactId>
-      <version>1.2.2</version>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.mybatis.generator</groupId>
-        <artifactId>mybatis-generator-maven-plugin</artifactId>
-        <version>1.3.6</version>
-        <configuration>
-          <!-- 是否覆盖,true表示会替换生成的JAVA文件,false则不覆盖 -->
-          <overwrite>true</overwrite>
-        </configuration>
-        <dependencies>
-          <!--mysql驱动包-->
-          <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>5.1.45</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-      </plugin>
-    </plugins>
-    <resources>
-      <!-- 解决MyBatis配置文件引入问题 -->
-      <resource>
-        <directory>src/main/java</directory>
-        <includes>
-          <include>**/*.properties</include>
-          <include>**/*.xml</include>
-        </includes>
-        <!-- 是否替换资源中的属性-->
-        <filtering>true</filtering>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-        <filtering>true</filtering>
-      </resource>
-    </resources>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>dev</id>
-      <properties>
-        <!-- 环境标识,需要与配置文件的名称相对应 -->
-        <activatedProperties>dev</activatedProperties>
-      </properties>
-      <activation>
-        <!-- 默认环境 -->
-        <activeByDefault>true</activeByDefault>
-      </activation>
-    </profile>
-    <profile>
-      <id>test</id>
-      <properties>
-        <activatedProperties>test</activatedProperties>
-      </properties>
-    </profile>
-    <profile>
-      <id>prod</id>
-      <properties>
-        <activatedProperties>prod</activatedProperties>
-      </properties>
-    </profile>
-  </profiles>
-</project>

+ 0 - 23
module-callback/src/main/java/cn/com/ctop/callback/StartApplication.java

@@ -1,23 +0,0 @@
-package cn.com.ctop.callback;
-import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
-import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfiguration;
-import org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration;
-import org.apache.shiro.spring.boot.autoconfigure.ShiroBeanAutoConfiguration;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-
-
-@Slf4j
-@SpringBootApplication(exclude = {DynamicDataSourceAutoConfiguration.class,DruidDataSourceAutoConfigure.class,DataSourceAutoConfiguration.class,ShiroAnnotationProcessorAutoConfiguration.class, ShiroAutoConfiguration.class, ShiroBeanAutoConfiguration.class})
-@ComponentScan(basePackages = {"cn.com.ctop.callback"})
-@Configuration
-public class StartApplication {
-    public static void main(String[] args){
-        SpringApplication.run(StartApplication.class, args);
-    }
-}

+ 0 - 29
module-callback/src/main/java/cn/com/ctop/callback/config/XxlMqConf.java

@@ -1,29 +0,0 @@
-package cn.com.ctop.callback.config;
-
-import com.xxl.mq.client.factory.impl.XxlMqSpringClientFactory;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.stereotype.Component;
-
-@Component
-public class XxlMqConf {
-
-    // ---------------------- param ----------------------
-
-    @Value("${xxl.mq.admin.address}")
-    private String adminAddress;
-    @Value("${xxl.mq.accessToken}")
-    private String accessToken;
-
-
-    @Bean
-    public XxlMqSpringClientFactory getXxlMqConsumer(){
-
-        XxlMqSpringClientFactory xxlMqSpringClientFactory = new XxlMqSpringClientFactory();
-        xxlMqSpringClientFactory.setAdminAddress(adminAddress);
-        xxlMqSpringClientFactory.setAccessToken(accessToken);
-
-        return xxlMqSpringClientFactory;
-    }
-
-}

+ 0 - 28
module-callback/src/main/java/cn/com/ctop/callback/controller/CallbackController.java

@@ -1,28 +0,0 @@
-package cn.com.ctop.callback.controller;
-
-import com.xxl.mq.client.message.XxlMqMessage;
-import com.xxl.mq.client.producer.XxlMqProducer;
-import org.jeecg.common.api.vo.Result;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-@Controller
-@RequestMapping("/")
-public class CallbackController {
-    @RequestMapping("/{group}/{topic}")
-    @ResponseBody
-    public Result<String> callbackMethod(HttpServletRequest request,
-                                         HttpServletResponse response,
-                                         @PathVariable(name = "group") String group,
-                                         @PathVariable(name = "topic") String topic){
-        Result<String> result = new Result<>();
-        XxlMqProducer.produce(new XxlMqMessage(group+"_"+topic, request.getQueryString()));
-        result.success("success");
-        return result;
-    }
-}

+ 0 - 13
module-callback/src/main/resources/application-dev.yml

@@ -1,13 +0,0 @@
-server:
-  port: 8801
-  servlet:
-    context-path: /
-xxl:
-  mq:
-    accessToken:
-    admin:
-      address: http://129.28.150.229:8808/xxl-mq-admin
-logging:
-  level:
-    root: info
-  config: classpath:logback-dev.xml

+ 0 - 13
module-callback/src/main/resources/application-prod.yml

@@ -1,13 +0,0 @@
-server:
-  port: 8801
-  servlet:
-    context-path: /
-xxl:
-  mq:
-    accessToken:
-    admin:
-      address: http://129.28.150.229:8808/xxl-mq-admin
-logging:
-  level:
-    root: info
-  config: classpath:logback-prod.xml

+ 0 - 13
module-callback/src/main/resources/application-test.yml

@@ -1,13 +0,0 @@
-server:
-  port: 8801
-  servlet:
-    context-path: /
-xxl:
-  mq:
-    accessToken:
-    admin:
-      address: http://129.28.150.229:8808/xxl-mq-admin
-logging:
-  level:
-    root: info
-  config: classpath:logback-test.xml

+ 0 - 7
module-callback/src/main/resources/application.yml

@@ -1,7 +0,0 @@
-server:
-  port: 8801
-xxl:
-  mq:
-    accessToken:
-    admin:
-      address: http://129.28.150.229:8808/xxl-mq-admin

+ 0 - 29
module-callback/src/main/resources/logback-dev.xml

@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration debug="false" scan="true" scanPeriod="1 seconds">
-
-    <contextName>logback</contextName>
-    <property name="log.path" value="/data/applogs/xxl-mq/xxl-mq-samples-springboot.log"/>
-
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
-        </rollingPolicy>
-        <encoder>
-            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
-            </pattern>
-        </encoder>
-    </appender>
-
-    <root level="info">
-        <appender-ref ref="console"/>
-        <appender-ref ref="file"/>
-    </root>
-
-</configuration>

+ 0 - 29
module-callback/src/main/resources/logback-prod.xml

@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration debug="false" scan="true" scanPeriod="1 seconds">
-
-    <contextName>logback</contextName>
-    <property name="log.path" value="/data/applogs/xxl-mq/xxl-mq-samples-springboot.log"/>
-
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
-        </rollingPolicy>
-        <encoder>
-            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
-            </pattern>
-        </encoder>
-    </appender>
-
-    <root level="info">
-        <appender-ref ref="console"/>
-        <appender-ref ref="file"/>
-    </root>
-
-</configuration>

+ 0 - 29
module-callback/src/main/resources/logback-test.xml

@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration debug="false" scan="true" scanPeriod="1 seconds">
-
-    <contextName>logback</contextName>
-    <property name="log.path" value="/data/applogs/xxl-mq/xxl-mq-samples-springboot.log"/>
-
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
-        </encoder>
-    </appender>
-
-    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
-        </rollingPolicy>
-        <encoder>
-            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
-            </pattern>
-        </encoder>
-    </appender>
-
-    <root level="info">
-        <appender-ref ref="console"/>
-        <appender-ref ref="file"/>
-    </root>
-
-</configuration>

+ 0 - 20
module-callback/src/test/java/org/jeecgframework/boot/AppTest.java

@@ -1,20 +0,0 @@
-package org.jeecgframework.boot;
-
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-/**
- * Unit test for simple App.
- */
-public class AppTest 
-{
-    /**
-     * Rigorous Test :-)
-     */
-    @Test
-    public void shouldAnswerWithTrue()
-    {
-        assertTrue( true );
-    }
-}

+ 5 - 7
module-common/src/main/java/cn/com/ctop/common/module/service/impl/CtopOauthTokenServiceImpl.java

@@ -11,7 +11,7 @@ import cn.com.ctop.common.module.utils.PropertiesUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xxl.job.core.log.XxlJobLogger;
+import com.xxl.job.core.context.XxlJobHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -65,9 +65,9 @@ public class CtopOauthTokenServiceImpl extends ServiceImpl<CtopOauthTokenMapper,
         param.put("refresh_token", token.getRefreshToken());
         String result = HttpUtils.httpPostRequest(url, param, new HashMap<>());
         System.err.println(JSONObject.parseObject(result));
-        XxlJobLogger.log("头条刷新token;accountId:{},返回信息:{}", token.getAccountId(), result);
+        XxlJobHelper.log("头条刷新token;accountId:{},返回信息:{}", token.getAccountId(), result);
         if (null == result || "".equals(result.trim()) || "null".equalsIgnoreCase(result)) {
-            XxlJobLogger.log("头条刷新token失败;accountId:{},返回信息:{}", token.getAccountId(), result);
+            XxlJobHelper.log("头条刷新token失败;accountId:{},返回信息:{}", token.getAccountId(), result);
             resultMap.put("message", "token刷新失败");
             resultMap.put("token", token);
             resultMap.put("code", 0);
@@ -91,12 +91,12 @@ public class CtopOauthTokenServiceImpl extends ServiceImpl<CtopOauthTokenMapper,
             queryWrapper.eq("media_id", 1);
             int i = ctopOauthTokenMapper.update(updateRefreshToken, queryWrapper);
             if (i > 0) {
-                XxlJobLogger.log("头条刷新token成功:accountId:{}", token.getAccountId());
+                XxlJobHelper.log("头条刷新token成功:accountId:{}", token.getAccountId());
             }
             resultMap.put("message", "token刷新成功");
             resultMap.put("code", 0);
         } else {
-            XxlJobLogger.log("头条刷新token失败;accountId:{},返回信息:{}", token.getAccountId(), message);
+            XxlJobHelper.log("头条刷新token失败;accountId:{},返回信息:{}", token.getAccountId(), message);
             resultMap.put("message", message);
             resultMap.put("token", token);
             resultMap.put("code", 0);
@@ -299,6 +299,4 @@ public class CtopOauthTokenServiceImpl extends ServiceImpl<CtopOauthTokenMapper,
         calendar.add(Calendar.SECOND, seconds);
         return calendar.getTime();
     }
-
-
 }

+ 4 - 4
module-common/src/main/java/cn/com/ctop/common/module/service/impl/RefreshTokenServiceImpl.java

@@ -9,7 +9,7 @@ import cn.com.ctop.common.module.service.IRefreshTokenService;
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.xxl.job.core.log.XxlJobLogger;
+import com.xxl.job.core.context.XxlJobHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,14 +36,14 @@ public class RefreshTokenServiceImpl implements IRefreshTokenService {
         List<CtopOauthToken> oauthTokens = oauthTokenMapper.selectKuaiShouTokens(CtopAdConstant.PLATFORM_TYPE_KUAISHOU);
         if (!Check.isNull(oauthTokens)) {
             for (CtopOauthToken oauthToken : oauthTokens) {
-                XxlJobLogger.log("刷新token,accountId:{}", oauthToken.getAccountId());
+                XxlJobHelper.log("刷新token,accountId:{}", oauthToken.getAccountId());
                 //快手
                 if (CtopAdConstant.PLATFORM_TYPE_KUAISHOU.equals(oauthToken.getMediaId().trim())) {
                     oauthTokenService.getKuaiShouRefreshToken(oauthToken.getAccountId(), oauthToken.getAccessToken(), oauthToken.getRefreshToken(), oauthToken.getAgentType());
                 }
             }
         } else {
-            XxlJobLogger.log("----------------------刷新token获取数据返回结果为空----------------------------------");
+            XxlJobHelper.log("----------------------刷新token获取数据返回结果为空----------------------------------");
         }
     }
 
@@ -59,7 +59,7 @@ public class RefreshTokenServiceImpl implements IRefreshTokenService {
         } else {
             CtopOauthToken token = oauthTokenMapper.selectByAccountId(Long.parseLong(accountId));
             if (token == null) {
-                XxlJobLogger.log("未获取到账户数据,accountId:{}", accountId);
+                XxlJobHelper.log("未获取到账户数据,accountId:{}", accountId);
                 return;
             }
             oauthTokenService.getByteDanceAccessToken(token);

+ 4 - 0
module-common/src/main/java/com/xxl/job/core/biz/AdminBiz.java

@@ -41,4 +41,8 @@ public interface AdminBiz {
      */
     public ReturnT<String> registryRemove(RegistryParam registryParam);
 
+
+    // ---------------------- biz (custome) ----------------------
+    // group、job ... manage
+
 }

+ 12 - 16
module-common/src/main/java/com/xxl/job/core/biz/ExecutorBiz.java

@@ -1,8 +1,6 @@
 package com.xxl.job.core.biz;
 
-import com.xxl.job.core.biz.model.LogResult;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.biz.model.*;
 
 /**
  * Created by xuxueli on 17/3/1.
@@ -18,32 +16,30 @@ public interface ExecutorBiz {
     /**
      * idle beat
      *
-     * @param jobId
+     * @param idleBeatParam
      * @return
      */
-    public ReturnT<String> idleBeat(int jobId);
+    public ReturnT<String> idleBeat(IdleBeatParam idleBeatParam);
 
     /**
-     * kill
-     * @param jobId
+     * run
+     * @param triggerParam
      * @return
      */
-    public ReturnT<String> kill(int jobId);
+    public ReturnT<String> run(TriggerParam triggerParam);
 
     /**
-     * log
-     * @param logDateTim
-     * @param logId
-     * @param fromLineNum
+     * kill
+     * @param killParam
      * @return
      */
-    public ReturnT<LogResult> log(long logDateTim, long logId, int fromLineNum);
+    public ReturnT<String> kill(KillParam killParam);
 
     /**
-     * run
-     * @param triggerParam
+     * log
+     * @param logParam
      * @return
      */
-    public ReturnT<String> run(TriggerParam triggerParam);
+    public ReturnT<LogResult> log(LogParam logParam);
 
 }

+ 5 - 3
module-common/src/main/java/com/xxl/job/core/biz/client/AdminBizClient.java

@@ -29,20 +29,22 @@ public class AdminBizClient implements AdminBiz {
 
     private String addressUrl ;
     private String accessToken;
+    private int timeout = 3;
 
 
     @Override
     public ReturnT<String> callback(List<HandleCallbackParam> callbackParamList) {
-        return XxlJobRemotingUtil.postBody(addressUrl+"api/callback", accessToken, callbackParamList, 3);
+        return XxlJobRemotingUtil.postBody(addressUrl+"api/callback", accessToken, timeout, callbackParamList, String.class);
     }
 
     @Override
     public ReturnT<String> registry(RegistryParam registryParam) {
-        return XxlJobRemotingUtil.postBody(addressUrl + "api/registry", accessToken, registryParam, 3);
+        return XxlJobRemotingUtil.postBody(addressUrl + "api/registry", accessToken, timeout, registryParam, String.class);
     }
 
     @Override
     public ReturnT<String> registryRemove(RegistryParam registryParam) {
-        return XxlJobRemotingUtil.postBody(addressUrl + "api/registryRemove", accessToken, registryParam, 3);
+        return XxlJobRemotingUtil.postBody(addressUrl + "api/registryRemove", accessToken, timeout, registryParam, String.class);
     }
+
 }

+ 56 - 0
module-common/src/main/java/com/xxl/job/core/biz/client/ExecutorBizClient.java

@@ -0,0 +1,56 @@
+package com.xxl.job.core.biz.client;
+
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.model.*;
+import com.xxl.job.core.util.XxlJobRemotingUtil;
+
+/**
+ * admin api test
+ *
+ * @author xuxueli 2017-07-28 22:14:52
+ */
+public class ExecutorBizClient implements ExecutorBiz {
+
+    public ExecutorBizClient() {
+    }
+    public ExecutorBizClient(String addressUrl, String accessToken) {
+        this.addressUrl = addressUrl;
+        this.accessToken = accessToken;
+
+        // valid
+        if (!this.addressUrl.endsWith("/")) {
+            this.addressUrl = this.addressUrl + "/";
+        }
+    }
+
+    private String addressUrl ;
+    private String accessToken;
+    private int timeout = 3;
+
+
+    @Override
+    public ReturnT<String> beat() {
+        return XxlJobRemotingUtil.postBody(addressUrl+"beat", accessToken, timeout, "", String.class);
+    }
+
+    @Override
+    public ReturnT<String> idleBeat(IdleBeatParam idleBeatParam){
+        return XxlJobRemotingUtil.postBody(addressUrl+"idleBeat", accessToken, timeout, idleBeatParam, String.class);
+    }
+
+    @Override
+    public ReturnT<String> run(TriggerParam triggerParam) {
+        return XxlJobRemotingUtil.postBody(addressUrl + "run", accessToken, timeout, triggerParam, String.class);
+    }
+
+    @Override
+    public ReturnT<String> kill(KillParam killParam) {
+        return XxlJobRemotingUtil.postBody(addressUrl + "kill", accessToken, timeout, killParam, String.class);
+    }
+
+    @Override
+    public ReturnT<LogResult> log(LogParam logParam) {
+        return XxlJobRemotingUtil.postBody(addressUrl + "log", accessToken, timeout, logParam, LogResult.class);
+    }
+
+}

+ 25 - 27
module-common/src/main/java/com/xxl/job/core/biz/impl/ExecutorBizImpl.java

@@ -1,9 +1,7 @@
 package com.xxl.job.core.biz.impl;
 
 import com.xxl.job.core.biz.ExecutorBiz;
-import com.xxl.job.core.biz.model.LogResult;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.biz.model.*;
 import com.xxl.job.core.enums.ExecutorBlockStrategyEnum;
 import com.xxl.job.core.executor.XxlJobExecutor;
 import com.xxl.job.core.glue.GlueFactory;
@@ -30,11 +28,11 @@ public class ExecutorBizImpl implements ExecutorBiz {
     }
 
     @Override
-    public ReturnT<String> idleBeat(int jobId) {
+    public ReturnT<String> idleBeat(IdleBeatParam idleBeatParam) {
 
         // isRunningOrHasQueue
         boolean isRunningOrHasQueue = false;
-        JobThread jobThread = XxlJobExecutor.loadJobThread(jobId);
+        JobThread jobThread = XxlJobExecutor.loadJobThread(idleBeatParam.getJobId());
         if (jobThread != null && jobThread.isRunningOrHasQueue()) {
             isRunningOrHasQueue = true;
         }
@@ -46,27 +44,6 @@ public class ExecutorBizImpl implements ExecutorBiz {
     }
 
     @Override
-    public ReturnT<String> kill(int jobId) {
-        // kill handlerThread, and create new one
-        JobThread jobThread = XxlJobExecutor.loadJobThread(jobId);
-        if (jobThread != null) {
-            XxlJobExecutor.removeJobThread(jobId, "scheduling center kill job.");
-            return ReturnT.SUCCESS;
-        }
-
-        return new ReturnT<String>(ReturnT.SUCCESS_CODE, "job thread already killed.");
-    }
-
-    @Override
-    public ReturnT<LogResult> log(long logDateTim, long logId, int fromLineNum) {
-        // log filename: logPath/yyyy-MM-dd/9999.log
-        String logFileName = XxlJobFileAppender.makeLogFileName(new Date(logDateTim), logId);
-
-        LogResult logResult = XxlJobFileAppender.readLog(logFileName, fromLineNum);
-        return new ReturnT<LogResult>(logResult);
-    }
-
-    @Override
     public ReturnT<String> run(TriggerParam triggerParam) {
         // load old:jobHandler + jobThread
         JobThread jobThread = XxlJobExecutor.loadJobThread(triggerParam.getJobId());
@@ -147,7 +124,7 @@ public class ExecutorBizImpl implements ExecutorBiz {
             if (ExecutorBlockStrategyEnum.DISCARD_LATER == blockStrategy) {
                 // discard when running
                 if (jobThread.isRunningOrHasQueue()) {
-                    return new ReturnT<String>(ReturnT.FAIL_CODE, "block strategy effect:"+ExecutorBlockStrategyEnum.DISCARD_LATER.getTitle());
+                    return new ReturnT<String>(ReturnT.FAIL_CODE, "block strategy effect:"+ ExecutorBlockStrategyEnum.DISCARD_LATER.getTitle());
                 }
             } else if (ExecutorBlockStrategyEnum.COVER_EARLY == blockStrategy) {
                 // kill running jobThread
@@ -171,4 +148,25 @@ public class ExecutorBizImpl implements ExecutorBiz {
         return pushResult;
     }
 
+    @Override
+    public ReturnT<String> kill(KillParam killParam) {
+        // kill handlerThread, and create new one
+        JobThread jobThread = XxlJobExecutor.loadJobThread(killParam.getJobId());
+        if (jobThread != null) {
+            XxlJobExecutor.removeJobThread(killParam.getJobId(), "scheduling center kill job.");
+            return ReturnT.SUCCESS;
+        }
+
+        return new ReturnT<String>(ReturnT.SUCCESS_CODE, "job thread already killed.");
+    }
+
+    @Override
+    public ReturnT<LogResult> log(LogParam logParam) {
+        // log filename: logPath/yyyy-MM-dd/9999.log
+        String logFileName = XxlJobFileAppender.makeLogFileName(new Date(logParam.getLogDateTim()), logParam.getLogId());
+
+        LogResult logResult = XxlJobFileAppender.readLog(logFileName, logParam.getFromLineNum());
+        return new ReturnT<LogResult>(logResult);
+    }
+
 }

+ 19 - 8
module-common/src/main/java/com/xxl/job/core/biz/model/HandleCallbackParam.java

@@ -11,13 +11,15 @@ public class HandleCallbackParam implements Serializable {
     private long logId;
     private long logDateTim;
 
-    private ReturnT<String> executeResult;
+    private int handleCode;
+    private String handleMsg;
 
     public HandleCallbackParam(){}
-    public HandleCallbackParam(long logId, long logDateTim, ReturnT<String> executeResult) {
+    public HandleCallbackParam(long logId, long logDateTim, int handleCode, String handleMsg) {
         this.logId = logId;
         this.logDateTim = logDateTim;
-        this.executeResult = executeResult;
+        this.handleCode = handleCode;
+        this.handleMsg = handleMsg;
     }
 
     public long getLogId() {
@@ -36,12 +38,20 @@ public class HandleCallbackParam implements Serializable {
         this.logDateTim = logDateTim;
     }
 
-    public ReturnT<String> getExecuteResult() {
-        return executeResult;
+    public int getHandleCode() {
+        return handleCode;
     }
 
-    public void setExecuteResult(ReturnT<String> executeResult) {
-        this.executeResult = executeResult;
+    public void setHandleCode(int handleCode) {
+        this.handleCode = handleCode;
+    }
+
+    public String getHandleMsg() {
+        return handleMsg;
+    }
+
+    public void setHandleMsg(String handleMsg) {
+        this.handleMsg = handleMsg;
     }
 
     @Override
@@ -49,7 +59,8 @@ public class HandleCallbackParam implements Serializable {
         return "HandleCallbackParam{" +
                 "logId=" + logId +
                 ", logDateTim=" + logDateTim +
-                ", executeResult=" + executeResult +
+                ", handleCode=" + handleCode +
+                ", handleMsg='" + handleMsg + '\'' +
                 '}';
     }
 

+ 28 - 0
module-common/src/main/java/com/xxl/job/core/biz/model/IdleBeatParam.java

@@ -0,0 +1,28 @@
+package com.xxl.job.core.biz.model;
+
+import java.io.Serializable;
+
+/**
+ * @author xuxueli 2020-04-11 22:27
+ */
+public class IdleBeatParam implements Serializable {
+    private static final long serialVersionUID = 42L;
+
+    public IdleBeatParam() {
+    }
+    public IdleBeatParam(int jobId) {
+        this.jobId = jobId;
+    }
+
+    private int jobId;
+
+
+    public int getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(int jobId) {
+        this.jobId = jobId;
+    }
+
+}

+ 28 - 0
module-common/src/main/java/com/xxl/job/core/biz/model/KillParam.java

@@ -0,0 +1,28 @@
+package com.xxl.job.core.biz.model;
+
+import java.io.Serializable;
+
+/**
+ * @author xuxueli 2020-04-11 22:27
+ */
+public class KillParam implements Serializable {
+    private static final long serialVersionUID = 42L;
+
+    public KillParam() {
+    }
+    public KillParam(int jobId) {
+        this.jobId = jobId;
+    }
+
+    private int jobId;
+
+
+    public int getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(int jobId) {
+        this.jobId = jobId;
+    }
+
+}

+ 47 - 0
module-common/src/main/java/com/xxl/job/core/biz/model/LogParam.java

@@ -0,0 +1,47 @@
+package com.xxl.job.core.biz.model;
+
+import java.io.Serializable;
+
+/**
+ * @author xuxueli 2020-04-11 22:27
+ */
+public class LogParam implements Serializable {
+    private static final long serialVersionUID = 42L;
+
+    public LogParam() {
+    }
+    public LogParam(long logDateTim, long logId, int fromLineNum) {
+        this.logDateTim = logDateTim;
+        this.logId = logId;
+        this.fromLineNum = fromLineNum;
+    }
+
+    private long logDateTim;
+    private long logId;
+    private int fromLineNum;
+
+    public long getLogDateTim() {
+        return logDateTim;
+    }
+
+    public void setLogDateTim(long logDateTim) {
+        this.logDateTim = logDateTim;
+    }
+
+    public long getLogId() {
+        return logId;
+    }
+
+    public void setLogId(long logId) {
+        this.logId = logId;
+    }
+
+    public int getFromLineNum() {
+        return fromLineNum;
+    }
+
+    public void setFromLineNum(int fromLineNum) {
+        this.fromLineNum = fromLineNum;
+    }
+
+}

+ 2 - 0
module-common/src/main/java/com/xxl/job/core/biz/model/LogResult.java

@@ -8,6 +8,8 @@ import java.io.Serializable;
 public class LogResult implements Serializable {
     private static final long serialVersionUID = 42L;
 
+    public LogResult() {
+    }
     public LogResult(int fromLineNum, int toLineNum, String logContent, boolean isEnd) {
         this.fromLineNum = fromLineNum;
         this.toLineNum = toLineNum;

+ 122 - 0
module-common/src/main/java/com/xxl/job/core/context/XxlJobContext.java

@@ -0,0 +1,122 @@
+package com.xxl.job.core.context;
+
+/**
+ * xxl-job context
+ *
+ * @author xuxueli 2020-05-21
+ * [Dear hj]
+ */
+public class XxlJobContext {
+
+    public static final int HANDLE_COCE_SUCCESS = 200;
+    public static final int HANDLE_COCE_FAIL = 500;
+    public static final int HANDLE_COCE_TIMEOUT = 502;
+
+    // ---------------------- base info ----------------------
+
+    /**
+     * job id
+     */
+    private final long jobId;
+
+    /**
+     * job param
+     */
+    private final String jobParam;
+
+    // ---------------------- for log ----------------------
+
+    /**
+     * job log filename
+     */
+    private final String jobLogFileName;
+
+    // ---------------------- for shard ----------------------
+
+    /**
+     * shard index
+     */
+    private final int shardIndex;
+
+    /**
+     * shard total
+     */
+    private final int shardTotal;
+
+    // ---------------------- for handle ----------------------
+
+    /**
+     * handleCode:The result status of job execution
+     *
+     *      200 : success
+     *      500 : fail
+     *      502 : timeout
+     *
+     */
+    private int handleCode;
+
+    /**
+     * handleMsg:The simple log msg of job execution
+     */
+    private String handleMsg;
+
+
+    public XxlJobContext(long jobId, String jobParam, String jobLogFileName, int shardIndex, int shardTotal) {
+        this.jobId = jobId;
+        this.jobParam = jobParam;
+        this.jobLogFileName = jobLogFileName;
+        this.shardIndex = shardIndex;
+        this.shardTotal = shardTotal;
+
+        this.handleCode = HANDLE_COCE_SUCCESS;  // default success
+    }
+
+    public long getJobId() {
+        return jobId;
+    }
+
+    public String getJobParam() {
+        return jobParam;
+    }
+
+    public String getJobLogFileName() {
+        return jobLogFileName;
+    }
+
+    public int getShardIndex() {
+        return shardIndex;
+    }
+
+    public int getShardTotal() {
+        return shardTotal;
+    }
+
+    public void setHandleCode(int handleCode) {
+        this.handleCode = handleCode;
+    }
+
+    public int getHandleCode() {
+        return handleCode;
+    }
+
+    public void setHandleMsg(String handleMsg) {
+        this.handleMsg = handleMsg;
+    }
+
+    public String getHandleMsg() {
+        return handleMsg;
+    }
+
+    // ---------------------- tool ----------------------
+
+    private static InheritableThreadLocal<XxlJobContext> contextHolder = new InheritableThreadLocal<XxlJobContext>(); // support for child thread of job handler)
+
+    public static void setXxlJobContext(XxlJobContext xxlJobContext){
+        contextHolder.set(xxlJobContext);
+    }
+
+    public static XxlJobContext getXxlJobContext(){
+        return contextHolder.get();
+    }
+
+}

+ 255 - 0
module-common/src/main/java/com/xxl/job/core/context/XxlJobHelper.java

@@ -0,0 +1,255 @@
+package com.xxl.job.core.context;
+
+import com.xxl.job.core.log.XxlJobFileAppender;
+import com.xxl.job.core.util.DateUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.helpers.FormattingTuple;
+import org.slf4j.helpers.MessageFormatter;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+
+/**
+ * helper for xxl-job
+ *
+ * @author xuxueli 2020-11-05
+ */
+public class XxlJobHelper {
+
+    // ---------------------- base info ----------------------
+
+    /**
+     * current JobId
+     *
+     * @return
+     */
+    public static long getJobId() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return -1;
+        }
+
+        return xxlJobContext.getJobId();
+    }
+
+    /**
+     * current JobParam
+     *
+     * @return
+     */
+    public static String getJobParam() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return null;
+        }
+
+        return xxlJobContext.getJobParam();
+    }
+
+    // ---------------------- for log ----------------------
+
+    /**
+     * current JobLogFileName
+     *
+     * @return
+     */
+    public static String getJobLogFileName() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return null;
+        }
+
+        return xxlJobContext.getJobLogFileName();
+    }
+
+    // ---------------------- for shard ----------------------
+
+    /**
+     * current ShardIndex
+     *
+     * @return
+     */
+    public static int getShardIndex() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return -1;
+        }
+
+        return xxlJobContext.getShardIndex();
+    }
+
+    /**
+     * current ShardTotal
+     *
+     * @return
+     */
+    public static int getShardTotal() {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return -1;
+        }
+
+        return xxlJobContext.getShardTotal();
+    }
+
+    // ---------------------- tool for log ----------------------
+
+    private static Logger logger = LoggerFactory.getLogger("xxl-job logger");
+
+    /**
+     * append log with pattern
+     *
+     * @param appendLogPattern  like "aaa {} bbb {} ccc"
+     * @param appendLogArguments    like "111, true"
+     */
+    public static boolean log(String appendLogPattern, Object ... appendLogArguments) {
+
+        FormattingTuple ft = MessageFormatter.arrayFormat(appendLogPattern, appendLogArguments);
+        String appendLog = ft.getMessage();
+
+        /*appendLog = appendLogPattern;
+        if (appendLogArguments!=null && appendLogArguments.length>0) {
+            appendLog = MessageFormat.format(appendLogPattern, appendLogArguments);
+        }*/
+
+        StackTraceElement callInfo = new Throwable().getStackTrace()[1];
+        return logDetail(callInfo, appendLog);
+    }
+
+    /**
+     * append exception stack
+     *
+     * @param e
+     */
+    public static boolean log(Throwable e) {
+
+        StringWriter stringWriter = new StringWriter();
+        e.printStackTrace(new PrintWriter(stringWriter));
+        String appendLog = stringWriter.toString();
+
+        StackTraceElement callInfo = new Throwable().getStackTrace()[1];
+        return logDetail(callInfo, appendLog);
+    }
+
+    /**
+     * append log
+     *
+     * @param callInfo
+     * @param appendLog
+     */
+    private static boolean logDetail(StackTraceElement callInfo, String appendLog) {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return false;
+        }
+
+        /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
+        StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
+        StackTraceElement callInfo = stackTraceElements[1];*/
+
+        StringBuffer stringBuffer = new StringBuffer();
+        stringBuffer.append(DateUtil.formatDateTime(new Date())).append(" ")
+                .append("["+ callInfo.getClassName() + "#" + callInfo.getMethodName() +"]").append("-")
+                .append("["+ callInfo.getLineNumber() +"]").append("-")
+                .append("["+ Thread.currentThread().getName() +"]").append(" ")
+                .append(appendLog!=null?appendLog:"");
+        String formatAppendLog = stringBuffer.toString();
+
+        // appendlog
+        String logFileName = xxlJobContext.getJobLogFileName();
+
+        if (logFileName!=null && logFileName.trim().length()>0) {
+            XxlJobFileAppender.appendLog(logFileName, formatAppendLog);
+            return true;
+        } else {
+            logger.info(">>>>>>>>>>> {}", formatAppendLog);
+            return false;
+        }
+    }
+
+    // ---------------------- tool for handleResult ----------------------
+
+    /**
+     * handle success
+     *
+     * @return
+     */
+    public static boolean handleSuccess(){
+        return handleResult(XxlJobContext.HANDLE_COCE_SUCCESS, null);
+    }
+
+    /**
+     * handle success with log msg
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleSuccess(String handleMsg) {
+        return handleResult(XxlJobContext.HANDLE_COCE_SUCCESS, handleMsg);
+    }
+
+    /**
+     * handle fail
+     *
+     * @return
+     */
+    public static boolean handleFail(){
+        return handleResult(XxlJobContext.HANDLE_COCE_FAIL, null);
+    }
+
+    /**
+     * handle fail with log msg
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleFail(String handleMsg) {
+        return handleResult(XxlJobContext.HANDLE_COCE_FAIL, handleMsg);
+    }
+
+    /**
+     * handle timeout
+     *
+     * @return
+     */
+    public static boolean handleTimeout(){
+        return handleResult(XxlJobContext.HANDLE_COCE_TIMEOUT, null);
+    }
+
+    /**
+     * handle timeout with log msg
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleTimeout(String handleMsg){
+        return handleResult(XxlJobContext.HANDLE_COCE_TIMEOUT, handleMsg);
+    }
+
+    /**
+     * @param handleCode
+     *
+     *      200 : success
+     *      500 : fail
+     *      502 : timeout
+     *
+     * @param handleMsg
+     * @return
+     */
+    public static boolean handleResult(int handleCode, String handleMsg) {
+        XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
+        if (xxlJobContext == null) {
+            return false;
+        }
+
+        xxlJobContext.setHandleCode(handleCode);
+        if (handleMsg != null) {
+            xxlJobContext.setHandleMsg(handleMsg);
+        }
+        return true;
+    }
+
+
+}

+ 1 - 1
module-common/src/main/java/com/xxl/job/core/enums/ExecutorBlockStrategyEnum.java

@@ -24,7 +24,7 @@ public enum ExecutorBlockStrategyEnum {
 
     public static ExecutorBlockStrategyEnum match(String name, ExecutorBlockStrategyEnum defaultItem) {
         if (name != null) {
-            for (ExecutorBlockStrategyEnum item:ExecutorBlockStrategyEnum.values()) {
+            for (ExecutorBlockStrategyEnum item: ExecutorBlockStrategyEnum.values()) {
                 if (item.name().equals(name)) {
                     return item;
                 }

+ 52 - 87
module-common/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java

@@ -1,26 +1,21 @@
 package com.xxl.job.core.executor;
 
 import com.xxl.job.core.biz.AdminBiz;
-import com.xxl.job.core.biz.ExecutorBiz;
 import com.xxl.job.core.biz.client.AdminBizClient;
-import com.xxl.job.core.biz.impl.ExecutorBizImpl;
 import com.xxl.job.core.handler.IJobHandler;
 import com.xxl.job.core.log.XxlJobFileAppender;
-import com.xxl.job.core.thread.ExecutorRegistryThread;
+import com.xxl.job.core.server.EmbedServer;
 import com.xxl.job.core.thread.JobLogFileCleanThread;
 import com.xxl.job.core.thread.JobThread;
 import com.xxl.job.core.thread.TriggerCallbackThread;
-import com.xxl.rpc.registry.ServiceRegistry;
-import com.xxl.rpc.remoting.net.impl.netty_http.server.NettyHttpServer;
-import com.xxl.rpc.remoting.provider.XxlRpcProviderFactory;
-import com.xxl.rpc.serialize.Serializer;
-import com.xxl.rpc.serialize.impl.HessianSerializer;
-import com.xxl.rpc.util.IpUtil;
-import com.xxl.rpc.util.NetUtil;
+import com.xxl.job.core.util.IpUtil;
+import com.xxl.job.core.util.NetUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 
@@ -32,18 +27,25 @@ public class XxlJobExecutor  {
 
     // ---------------------- param ----------------------
     private String adminAddresses;
-    private String appName;
+    private String accessToken;
+    private String appname;
+    private String address;
     private String ip;
     private int port;
-    private String accessToken;
     private String logPath;
     private int logRetentionDays;
 
     public void setAdminAddresses(String adminAddresses) {
         this.adminAddresses = adminAddresses;
     }
-    public void setAppName(String appName) {
-        this.appName = appName;
+    public void setAccessToken(String accessToken) {
+        this.accessToken = accessToken;
+    }
+    public void setAppname(String appname) {
+        this.appname = appname;
+    }
+    public void setAddress(String address) {
+        this.address = address;
     }
     public void setIp(String ip) {
         this.ip = ip;
@@ -51,9 +53,6 @@ public class XxlJobExecutor  {
     public void setPort(int port) {
         this.port = port;
     }
-    public void setAccessToken(String accessToken) {
-        this.accessToken = accessToken;
-    }
     public void setLogPath(String logPath) {
         this.logPath = logPath;
     }
@@ -79,18 +78,24 @@ public class XxlJobExecutor  {
         TriggerCallbackThread.getInstance().start();
 
         // init executor-server
-        port = port>0?port: NetUtil.findAvailablePort(9999);
-        ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp();
-        initRpcProvider(ip, port, appName, accessToken);
+        initEmbedServer(address, ip, port, appname, accessToken);
     }
     public void destroy(){
         // destory executor-server
-        stopRpcProvider();
+        stopEmbedServer();
 
         // destory jobThreadRepository
         if (jobThreadRepository.size() > 0) {
             for (Map.Entry<Integer, JobThread> item: jobThreadRepository.entrySet()) {
-                removeJobThread(item.getKey(), "web container destroy and kill the job.");
+                JobThread oldJobThread = removeJobThread(item.getKey(), "web container destroy and kill the job.");
+                // wait for job thread push result to callback queue
+                if (oldJobThread != null) {
+                    try {
+                        oldJobThread.join();
+                    } catch (InterruptedException e) {
+                        logger.error(">>>>>>>>>>> xxl-job, JobThread destroy(join) error, jobId:{}", item.getKey(), e);
+                    }
+                }
             }
             jobThreadRepository.clear();
         }
@@ -108,7 +113,6 @@ public class XxlJobExecutor  {
 
     // ---------------------- admin-client (rpc invoker) ----------------------
     private static List<AdminBiz> adminBizList;
-    private static Serializer serializer = new HessianSerializer();
     private void initAdminBizList(String adminAddresses, String accessToken) throws Exception {
         if (adminAddresses!=null && adminAddresses.trim().length()>0) {
             for (String address: adminAddresses.trim().split(",")) {
@@ -127,78 +131,36 @@ public class XxlJobExecutor  {
     public static List<AdminBiz> getAdminBizList(){
         return adminBizList;
     }
-    public static Serializer getSerializer() {
-        return serializer;
-    }
-
 
     // ---------------------- executor-server (rpc provider) ----------------------
-    private XxlRpcProviderFactory xxlRpcProviderFactory = null;
-
-    private void initRpcProvider(String ip, int port, String appName, String accessToken) throws Exception {
-
-        // init, provider factory
-        String address = IpUtil.getIpPort(ip, port);
-        Map<String, String> serviceRegistryParam = new HashMap<String, String>();
-        serviceRegistryParam.put("appName", appName);
-        serviceRegistryParam.put("address", address);
-
-        xxlRpcProviderFactory = new XxlRpcProviderFactory();
-
-        xxlRpcProviderFactory.setServer(NettyHttpServer.class);
-        xxlRpcProviderFactory.setSerializer(HessianSerializer.class);
-        xxlRpcProviderFactory.setCorePoolSize(20);
-        xxlRpcProviderFactory.setMaxPoolSize(200);
-        xxlRpcProviderFactory.setIp(ip);
-        xxlRpcProviderFactory.setPort(port);
-        xxlRpcProviderFactory.setAccessToken(accessToken);
-        xxlRpcProviderFactory.setServiceRegistry(ExecutorServiceRegistry.class);
-        xxlRpcProviderFactory.setServiceRegistryParam(serviceRegistryParam);
+    private EmbedServer embedServer = null;
 
-        // add services
-        xxlRpcProviderFactory.addService(ExecutorBiz.class.getName(), null, new ExecutorBizImpl());
+    private void initEmbedServer(String address, String ip, int port, String appname, String accessToken) throws Exception {
 
-        // start
-        xxlRpcProviderFactory.start();
-
-    }
-
-    public static class ExecutorServiceRegistry extends ServiceRegistry {
+        // fill ip port
+        port = port>0?port: NetUtil.findAvailablePort(9999);
+        ip = (ip!=null&&ip.trim().length()>0)?ip: IpUtil.getIp();
 
-        @Override
-        public void start(Map<String, String> param) {
-            // start registry
-            ExecutorRegistryThread.getInstance().start(param.get("appName"), param.get("address"));
-        }
-        @Override
-        public void stop() {
-            // stop registry
-            ExecutorRegistryThread.getInstance().toStop();
+        // generate address
+        if (address==null || address.trim().length()==0) {
+            String ip_port_address = IpUtil.getIpPort(ip, port);   // registry-address:default use address to registry , otherwise use ip:port if address is null
+            address = "http://{ip_port}/".replace("{ip_port}", ip_port_address);
         }
 
-        @Override
-        public boolean registry(Set<String> keys, String value) {
-            return false;
-        }
-        @Override
-        public boolean remove(Set<String> keys, String value) {
-            return false;
-        }
-        @Override
-        public Map<String, TreeSet<String>> discovery(Set<String> keys) {
-            return null;
-        }
-        @Override
-        public TreeSet<String> discovery(String key) {
-            return null;
+        // accessToken
+        if (accessToken==null || accessToken.trim().length()==0) {
+            logger.warn(">>>>>>>>>>> xxl-job accessToken is empty. To ensure system security, please set the accessToken.");
         }
 
+        // start
+        embedServer = new EmbedServer();
+        embedServer.start(address, port, appname, accessToken);
     }
 
-    private void stopRpcProvider() {
+    private void stopEmbedServer() {
         // stop provider factory
         try {
-            xxlRpcProviderFactory.stop();
+            embedServer.stop();
         } catch (Exception e) {
             logger.error(e.getMessage(), e);
         }
@@ -207,13 +169,13 @@ public class XxlJobExecutor  {
 
     // ---------------------- job handler repository ----------------------
     private static ConcurrentMap<String, IJobHandler> jobHandlerRepository = new ConcurrentHashMap<String, IJobHandler>();
+    public static IJobHandler loadJobHandler(String name){
+        return jobHandlerRepository.get(name);
+    }
     public static IJobHandler registJobHandler(String name, IJobHandler jobHandler){
         logger.info(">>>>>>>>>>> xxl-job register jobhandler success, name:{}, jobHandler:{}", name, jobHandler);
         return jobHandlerRepository.put(name, jobHandler);
     }
-    public static IJobHandler loadJobHandler(String name){
-        return jobHandlerRepository.get(name);
-    }
 
 
     // ---------------------- job thread repository ----------------------
@@ -231,12 +193,15 @@ public class XxlJobExecutor  {
 
         return newJobThread;
     }
-    public static void removeJobThread(int jobId, String removeOldReason){
+    public static JobThread removeJobThread(int jobId, String removeOldReason){
         JobThread oldJobThread = jobThreadRepository.remove(jobId);
         if (oldJobThread != null) {
             oldJobThread.toStop(removeOldReason);
             oldJobThread.interrupt();
+
+            return oldJobThread;
         }
+        return null;
     }
     public static JobThread loadJobThread(int jobId){
         JobThread jobThread = jobThreadRepository.get(jobId);

+ 121 - 0
module-common/src/main/java/com/xxl/job/core/executor/impl/XxlJobSimpleExecutor.java

@@ -0,0 +1,121 @@
+package com.xxl.job.core.executor.impl;
+
+import com.xxl.job.core.executor.XxlJobExecutor;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.handler.impl.MethodJobHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * xxl-job executor (for frameless)
+ *
+ * @author xuxueli 2020-11-05
+ */
+public class XxlJobSimpleExecutor extends XxlJobExecutor {
+    private static final Logger logger = LoggerFactory.getLogger(XxlJobSimpleExecutor.class);
+
+
+    private List<Object> xxlJobBeanList = new ArrayList<>();
+    public List<Object> getXxlJobBeanList() {
+        return xxlJobBeanList;
+    }
+    public void setXxlJobBeanList(List<Object> xxlJobBeanList) {
+        this.xxlJobBeanList = xxlJobBeanList;
+    }
+
+
+    public void start() {
+
+        // init JobHandler Repository (for method)
+        initJobHandlerMethodRepository(xxlJobBeanList);
+
+        // super start
+        try {
+            super.start();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public void destroy() {
+        super.destroy();
+    }
+
+
+    private void initJobHandlerMethodRepository(List<Object> xxlJobBeanList) {
+        if (xxlJobBeanList==null || xxlJobBeanList.size()==0) {
+            return;
+        }
+
+        // init job handler from method
+        for (Object bean: xxlJobBeanList) {
+            // method
+            Method[] methods = bean.getClass().getDeclaredMethods();
+            if (methods==null || methods.length==0) {
+                continue;
+            }
+            for (Method executeMethod : methods) {
+
+                // anno
+                XxlJob xxlJob = executeMethod.getAnnotation(XxlJob.class);
+                if (xxlJob == null) {
+                    continue;
+                }
+
+                String name = xxlJob.value();
+                if (name.trim().length() == 0) {
+                    throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + bean.getClass() + "#" + executeMethod.getName() + "] .");
+                }
+                if (loadJobHandler(name) != null) {
+                    throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts.");
+                }
+
+                // execute method
+                /*if (!(method.getParameterTypes().length == 1 && method.getParameterTypes()[0].isAssignableFrom(String.class))) {
+                    throw new RuntimeException("xxl-job method-jobhandler param-classtype invalid, for[" + bean.getClass() + "#" + method.getName() + "] , " +
+                            "The correct method format like \" public ReturnT<String> execute(String param) \" .");
+                }
+                if (!method.getReturnType().isAssignableFrom(ReturnT.class)) {
+                    throw new RuntimeException("xxl-job method-jobhandler return-classtype invalid, for[" + bean.getClass() + "#" + method.getName() + "] , " +
+                            "The correct method format like \" public ReturnT<String> execute(String param) \" .");
+                }*/
+
+                executeMethod.setAccessible(true);
+
+                // init and destory
+                Method initMethod = null;
+                Method destroyMethod = null;
+
+                if (xxlJob.init().trim().length() > 0) {
+                    try {
+                        initMethod = bean.getClass().getDeclaredMethod(xxlJob.init());
+                        initMethod.setAccessible(true);
+                    } catch (NoSuchMethodException e) {
+                        throw new RuntimeException("xxl-job method-jobhandler initMethod invalid, for[" + bean.getClass() + "#" + executeMethod.getName() + "] .");
+                    }
+                }
+                if (xxlJob.destroy().trim().length() > 0) {
+                    try {
+                        destroyMethod = bean.getClass().getDeclaredMethod(xxlJob.destroy());
+                        destroyMethod.setAccessible(true);
+                    } catch (NoSuchMethodException e) {
+                        throw new RuntimeException("xxl-job method-jobhandler destroyMethod invalid, for[" + bean.getClass() + "#" + executeMethod.getName() + "] .");
+                    }
+                }
+
+                // registry jobhandler
+                registJobHandler(name, new MethodJobHandler(bean, executeMethod, initMethod, destroyMethod));
+
+
+            }
+
+        }
+
+    }
+
+}

+ 83 - 62
module-common/src/main/java/com/xxl/job/core/executor/impl/XxlJobSpringExecutor.java

@@ -1,36 +1,38 @@
 package com.xxl.job.core.executor.impl;
 
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.executor.XxlJobExecutor;
 import com.xxl.job.core.glue.GlueFactory;
-import com.xxl.job.core.handler.IJobHandler;
-import com.xxl.job.core.handler.annotation.JobHandler;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import com.xxl.job.core.handler.impl.MethodJobHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeansException;
 import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.SmartInitializingSingleton;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
-import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.core.MethodIntrospector;
+import org.springframework.core.annotation.AnnotatedElementUtils;
 
 import java.lang.reflect.Method;
 import java.util.Map;
 
+
 /**
  * xxl-job executor (for spring)
  *
  * @author xuxueli 2018-11-01 09:24:52
  */
-public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware, InitializingBean, DisposableBean {
+public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware, SmartInitializingSingleton, DisposableBean {
+    private static final Logger logger = LoggerFactory.getLogger(XxlJobSpringExecutor.class);
 
 
     // start
     @Override
-    public void afterPropertiesSet() throws Exception {
+    public void afterSingletonsInstantiated() {
 
         // init JobHandler Repository
-        initJobHandlerRepository(applicationContext);
+        /*initJobHandlerRepository(applicationContext);*/
 
         // init JobHandler Repository (for method)
         initJobHandlerMethodRepository(applicationContext);
@@ -39,7 +41,11 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
         GlueFactory.refreshInstance(1);
 
         // super start
-        super.start();
+        try {
+            super.start();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     // destroy
@@ -49,7 +55,7 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
     }
 
 
-    private void initJobHandlerRepository(ApplicationContext applicationContext) {
+    /*private void initJobHandlerRepository(ApplicationContext applicationContext) {
         if (applicationContext == null) {
             return;
         }
@@ -69,68 +75,83 @@ public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationC
                 }
             }
         }
-    }
+    }*/
 
     private void initJobHandlerMethodRepository(ApplicationContext applicationContext) {
         if (applicationContext == null) {
             return;
         }
-
         // init job handler from method
-        String[] beanDefinitionNames = applicationContext.getBeanDefinitionNames();
-        if (beanDefinitionNames!=null && beanDefinitionNames.length>0) {
-            for (String beanDefinitionName : beanDefinitionNames) {
-                Object bean = applicationContext.getBean(beanDefinitionName);
-                Method[] methods = bean.getClass().getDeclaredMethods();
-                for (Method method: methods) {
-                    XxlJob xxlJob = AnnotationUtils.findAnnotation(method, XxlJob.class);
-                    if (xxlJob != null) {
-
-                        // name
-                        String name = xxlJob.value();
-                        if (name.trim().length() == 0) {
-                            throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + bean.getClass() + "#"+ method.getName() +"] .");
-                        }
-                        if (loadJobHandler(name) != null) {
-                            throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts.");
-                        }
-
-                        // execute method
-                        if (!(method.getParameterTypes()!=null && method.getParameterTypes().length==1 && method.getParameterTypes()[0].isAssignableFrom(String.class))) {
-                            throw new RuntimeException("xxl-job method-jobhandler param-classtype invalid, for[" + bean.getClass() + "#"+ method.getName() +"] , " +
-                                    "The correct method format like \" public ReturnT<String> execute(String param) \" .");
-                        }
-                        if (!method.getReturnType().isAssignableFrom(ReturnT.class)) {
-                            throw new RuntimeException("xxl-job method-jobhandler return-classtype invalid, for[" + bean.getClass() + "#"+ method.getName() +"] , " +
-                                    "The correct method format like \" public ReturnT<String> execute(String param) \" .");
-                        }
-                        method.setAccessible(true);
-
-                        // init and destory
-                        Method initMethod = null;
-                        Method destroyMethod = null;
-
-                        if(xxlJob.init().trim().length() > 0) {
-                            try {
-                                initMethod = bean.getClass().getDeclaredMethod(xxlJob.init());
-                                initMethod.setAccessible(true);
-                            } catch (NoSuchMethodException e) {
-                                throw new RuntimeException("xxl-job method-jobhandler initMethod invalid, for[" + bean.getClass() + "#"+ method.getName() +"] .");
+        String[] beanDefinitionNames = applicationContext.getBeanNamesForType(Object.class, false, true);
+        for (String beanDefinitionName : beanDefinitionNames) {
+            Object bean = applicationContext.getBean(beanDefinitionName);
+
+            Map<Method, XxlJob> annotatedMethods = null;   // referred to :org.springframework.context.event.EventListenerMethodProcessor.processBean
+            try {
+                annotatedMethods = MethodIntrospector.selectMethods(bean.getClass(),
+                        new MethodIntrospector.MetadataLookup<XxlJob>() {
+                            @Override
+                            public XxlJob inspect(Method method) {
+                                return AnnotatedElementUtils.findMergedAnnotation(method, XxlJob.class);
                             }
-                        }
-                        if(xxlJob.destroy().trim().length() > 0) {
-                            try {
-                                destroyMethod = bean.getClass().getDeclaredMethod(xxlJob.destroy());
-                                destroyMethod.setAccessible(true);
-                            } catch (NoSuchMethodException e) {
-                                throw new RuntimeException("xxl-job method-jobhandler destroyMethod invalid, for[" + bean.getClass() + "#"+ method.getName() +"] .");
-                            }
-                        }
+                        });
+            } catch (Throwable ex) {
+                logger.error("xxl-job method-jobhandler resolve error for bean[" + beanDefinitionName + "].", ex);
+            }
+            if (annotatedMethods==null || annotatedMethods.isEmpty()) {
+                continue;
+            }
+
+            for (Map.Entry<Method, XxlJob> methodXxlJobEntry : annotatedMethods.entrySet()) {
+                Method executeMethod = methodXxlJobEntry.getKey();
+                XxlJob xxlJob = methodXxlJobEntry.getValue();
+                if (xxlJob == null) {
+                    continue;
+                }
+
+                String name = xxlJob.value();
+                if (name.trim().length() == 0) {
+                    throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + bean.getClass() + "#" + executeMethod.getName() + "] .");
+                }
+                if (loadJobHandler(name) != null) {
+                    throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts.");
+                }
 
-                        // registry jobhandler
-                        registJobHandler(name, new MethodJobHandler(bean, method, initMethod, destroyMethod));
+                // execute method
+                /*if (!(method.getParameterTypes().length == 1 && method.getParameterTypes()[0].isAssignableFrom(String.class))) {
+                    throw new RuntimeException("xxl-job method-jobhandler param-classtype invalid, for[" + bean.getClass() + "#" + method.getName() + "] , " +
+                            "The correct method format like \" public ReturnT<String> execute(String param) \" .");
+                }
+                if (!method.getReturnType().isAssignableFrom(ReturnT.class)) {
+                    throw new RuntimeException("xxl-job method-jobhandler return-classtype invalid, for[" + bean.getClass() + "#" + method.getName() + "] , " +
+                            "The correct method format like \" public ReturnT<String> execute(String param) \" .");
+                }*/
+
+                executeMethod.setAccessible(true);
+
+                // init and destory
+                Method initMethod = null;
+                Method destroyMethod = null;
+
+                if (xxlJob.init().trim().length() > 0) {
+                    try {
+                        initMethod = bean.getClass().getDeclaredMethod(xxlJob.init());
+                        initMethod.setAccessible(true);
+                    } catch (NoSuchMethodException e) {
+                        throw new RuntimeException("xxl-job method-jobhandler initMethod invalid, for[" + bean.getClass() + "#" + executeMethod.getName() + "] .");
+                    }
+                }
+                if (xxlJob.destroy().trim().length() > 0) {
+                    try {
+                        destroyMethod = bean.getClass().getDeclaredMethod(xxlJob.destroy());
+                        destroyMethod.setAccessible(true);
+                    } catch (NoSuchMethodException e) {
+                        throw new RuntimeException("xxl-job method-jobhandler destroyMethod invalid, for[" + bean.getClass() + "#" + executeMethod.getName() + "] .");
                     }
                 }
+
+                // registry jobhandler
+                registJobHandler(name, new MethodJobHandler(bean, executeMethod, initMethod, destroyMethod));
             }
         }
 

+ 6 - 17
module-common/src/main/java/com/xxl/job/core/handler/IJobHandler.java

@@ -1,9 +1,5 @@
 package com.xxl.job.core.handler;
 
-import com.xxl.job.core.biz.model.ReturnT;
-
-import java.lang.reflect.InvocationTargetException;
-
 /**
  * job handler
  *
@@ -12,28 +8,21 @@ import java.lang.reflect.InvocationTargetException;
 public abstract class IJobHandler {
 
 
-	/** success */
-	public static final ReturnT<String> SUCCESS = new ReturnT<String>(200, null);
-	/** fail */
-	public static final ReturnT<String> FAIL = new ReturnT<String>(500, null);
-	/** fail timeout */
-	public static final ReturnT<String> FAIL_TIMEOUT = new ReturnT<String>(502, null);
-
-
 	/**
 	 * execute handler, invoked when executor receives a scheduling request
 	 *
-	 * @param param
-	 * @return
 	 * @throws Exception
 	 */
-	public abstract ReturnT<String> execute(String param) throws Exception;
+	public abstract void execute() throws Exception;
+
 
+	/*@Deprecated
+	public abstract ReturnT<String> execute(String param) throws Exception;*/
 
 	/**
 	 * init handler, invoked when JobThread init
 	 */
-	public void init() throws InvocationTargetException, IllegalAccessException {
+	public void init() throws Exception {
 		// do something
 	}
 
@@ -41,7 +30,7 @@ public abstract class IJobHandler {
 	/**
 	 * destroy handler, invoked when JobThread destroy
 	 */
-	public void destroy() throws InvocationTargetException, IllegalAccessException {
+	public void destroy() throws Exception {
 		// do something
 	}
 

+ 24 - 20
module-common/src/main/java/com/xxl/job/core/handler/annotation/JobHandler.java

@@ -1,20 +1,24 @@
-package com.xxl.job.core.handler.annotation;
-
-import java.lang.annotation.*;
-
-/**
- * annotation for job handler
- *
- * will be replaced by {@link XxlJob}
- *
- * @author 2016-5-17 21:06:49
- */
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Inherited
-@Deprecated
-public @interface JobHandler {
-
-    String value();
-
-}
+package com.xxl.job.core.handler.annotation;//package com.xxl.job.core.handler.annotation;
+//
+//import java.lang.annotation.ElementType;
+//import java.lang.annotation.Inherited;
+//import java.lang.annotation.Retention;
+//import java.lang.annotation.RetentionPolicy;
+//import java.lang.annotation.Target;
+//
+///**
+// * annotation for job handler
+// *
+// * will be replaced by {@link com.xxl.job.core.handler.annotation.XxlJob}
+// *
+// * @author 2016-5-17 21:06:49
+// */
+//@Target({ElementType.TYPE})
+//@Retention(RetentionPolicy.RUNTIME)
+//@Inherited
+//@Deprecated
+//public @interface JobHandler {
+//
+//    String value();
+//
+//}

+ 4 - 5
module-common/src/main/java/com/xxl/job/core/handler/impl/GlueJobHandler.java

@@ -1,8 +1,7 @@
 package com.xxl.job.core.handler.impl;
 
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.IJobHandler;
-import com.xxl.job.core.log.XxlJobLogger;
 
 /**
  * glue job handler
@@ -22,9 +21,9 @@ public class GlueJobHandler extends IJobHandler {
 	}
 
 	@Override
-	public ReturnT<String> execute(String param) throws Exception {
-		XxlJobLogger.log("----------- glue.version:"+ glueUpdatetime +" -----------");
-		return jobHandler.execute(param);
+	public void execute() throws Exception {
+		XxlJobHelper.log("----------- glue.version:"+ glueUpdatetime +" -----------");
+		jobHandler.execute();
 	}
 
 }

+ 6 - 8
module-common/src/main/java/com/xxl/job/core/handler/impl/MethodJobHandler.java

@@ -1,9 +1,7 @@
 package com.xxl.job.core.handler.impl;
 
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.IJobHandler;
 
-import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
 /**
@@ -20,24 +18,24 @@ public class MethodJobHandler extends IJobHandler {
         this.target = target;
         this.method = method;
 
-        this.initMethod =initMethod;
-        this.destroyMethod =destroyMethod;
+        this.initMethod = initMethod;
+        this.destroyMethod = destroyMethod;
     }
 
     @Override
-    public ReturnT<String> execute(String param) throws Exception {
-        return (ReturnT<String>) method.invoke(target, new Object[]{param});
+    public void execute() throws Exception {
+        method.invoke(target);
     }
 
     @Override
-    public void init() throws InvocationTargetException, IllegalAccessException {
+    public void init() throws Exception {
         if(initMethod != null) {
             initMethod.invoke(target);
         }
     }
 
     @Override
-    public void destroy() throws InvocationTargetException, IllegalAccessException {
+    public void destroy() throws Exception {
         if(destroyMethod != null) {
             destroyMethod.invoke(target);
         }

+ 14 - 13
module-common/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java

@@ -1,12 +1,11 @@
 package com.xxl.job.core.handler.impl;
 
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobContext;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.glue.GlueTypeEnum;
 import com.xxl.job.core.handler.IJobHandler;
 import com.xxl.job.core.log.XxlJobFileAppender;
-import com.xxl.job.core.log.XxlJobLogger;
 import com.xxl.job.core.util.ScriptUtil;
-import com.xxl.job.core.util.ShardingUtil;
 
 import java.io.File;
 
@@ -46,10 +45,11 @@ public class ScriptJobHandler extends IJobHandler {
     }
 
     @Override
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
 
         if (!glueType.isScript()) {
-            return new ReturnT<String>(IJobHandler.FAIL.getCode(), "glueType[" + glueType + "] invalid.");
+            XxlJobHelper.handleFail("glueType["+ glueType +"] invalid.");
+            return;
         }
 
         // cmd
@@ -68,23 +68,24 @@ public class ScriptJobHandler extends IJobHandler {
         }
 
         // log file
-        String logFileName = XxlJobFileAppender.contextHolder.get();
+        String logFileName = XxlJobContext.getXxlJobContext().getJobLogFileName();
 
         // script params:0=param、1=分片序号、2=分片总数
-        ShardingUtil.ShardingVO shardingVO = ShardingUtil.getShardingVo();
         String[] scriptParams = new String[3];
-        scriptParams[0] = param;
-        scriptParams[1] = String.valueOf(shardingVO.getIndex());
-        scriptParams[2] = String.valueOf(shardingVO.getTotal());
+        scriptParams[0] = XxlJobHelper.getJobParam();
+        scriptParams[1] = String.valueOf(XxlJobContext.getXxlJobContext().getShardIndex());
+        scriptParams[2] = String.valueOf(XxlJobContext.getXxlJobContext().getShardTotal());
 
         // invoke
-        XxlJobLogger.log("----------- script file:"+ scriptFileName +" -----------");
+        XxlJobHelper.log("----------- script file:"+ scriptFileName +" -----------");
         int exitValue = ScriptUtil.execToFile(cmd, scriptFileName, logFileName, scriptParams);
 
         if (exitValue == 0) {
-            return IJobHandler.SUCCESS;
+            XxlJobHelper.handleSuccess();
+            return;
         } else {
-            return new ReturnT<String>(IJobHandler.FAIL.getCode(), "script exit value(" + exitValue + ") is failed");
+            XxlJobHelper.handleFail("script exit value("+exitValue+") is failed");
+            return ;
         }
 
     }

+ 3 - 7
module-common/src/main/java/com/xxl/job/core/log/XxlJobFileAppender.java

@@ -14,11 +14,6 @@ import java.util.Date;
  */
 public class XxlJobFileAppender {
 	private static Logger logger = LoggerFactory.getLogger(XxlJobFileAppender.class);
-	
-	// for JobThread (support log for child thread of job handler)
-	//public static ThreadLocal<String> contextHolder = new ThreadLocal<String>();
-	public static final InheritableThreadLocal<String> contextHolder = new InheritableThreadLocal<String>();
-
 
 	/**
 	 * log base path
@@ -60,6 +55,7 @@ public class XxlJobFileAppender {
 	public static String getGlueSrcPath() {
 		return glueSrcPath;
 	}
+	public static final InheritableThreadLocal<String> contextHolder = new InheritableThreadLocal<String>();
 
 	/**
 	 * log filename, like "logPath/yyyy-MM-dd/9999.log"
@@ -113,7 +109,7 @@ public class XxlJobFileAppender {
 			appendLog = "";
 		}
 		appendLog += "\r\n";
-		
+
 		// append file content
 		FileOutputStream fos = null;
 		try {
@@ -131,7 +127,7 @@ public class XxlJobFileAppender {
 				}
 			}
 		}
-		
+
 	}
 
 	/**

+ 0 - 84
module-common/src/main/java/com/xxl/job/core/log/XxlJobLogger.java

@@ -1,84 +0,0 @@
-package com.xxl.job.core.log;
-
-import com.xxl.job.core.util.DateUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.helpers.FormattingTuple;
-import org.slf4j.helpers.MessageFormatter;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.Date;
-
-/**
- * Created by xuxueli on 17/4/28.
- */
-public class XxlJobLogger {
-    private static Logger logger = LoggerFactory.getLogger("xxl-job logger");
-
-    /**
-     * append log
-     *
-     * @param callInfo
-     * @param appendLog
-     */
-    private static void logDetail(StackTraceElement callInfo, String appendLog) {
-
-
-        /*// "yyyy-MM-dd HH:mm:ss [ClassName]-[MethodName]-[LineNumber]-[ThreadName] log";
-        StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
-        StackTraceElement callInfo = stackTraceElements[1];*/
-
-        StringBuffer stringBuffer = new StringBuffer();
-        stringBuffer.append(DateUtil.formatDateTime(new Date())).append(" ")
-            .append("["+ callInfo.getClassName() + "#" + callInfo.getMethodName() +"]").append("-")
-            .append("["+ callInfo.getLineNumber() +"]").append("-")
-            .append("["+ Thread.currentThread().getName() +"]").append(" ")
-            .append(appendLog!=null?appendLog:"");
-        String formatAppendLog = stringBuffer.toString();
-
-        // appendlog
-        String logFileName = XxlJobFileAppender.contextHolder.get();
-        if (logFileName!=null && logFileName.trim().length()>0) {
-            XxlJobFileAppender.appendLog(logFileName, formatAppendLog);
-        } else {
-            logger.info(">>>>>>>>>>> {}", formatAppendLog);
-        }
-    }
-
-    /**
-     * append log with pattern
-     *
-     * @param appendLogPattern  like "aaa {} bbb {} ccc"
-     * @param appendLogArguments    like "111, true"
-     */
-    public static void log(String appendLogPattern, Object ... appendLogArguments) {
-
-    	FormattingTuple ft = MessageFormatter.arrayFormat(appendLogPattern, appendLogArguments);
-        String appendLog = ft.getMessage();
-
-        /*appendLog = appendLogPattern;
-        if (appendLogArguments!=null && appendLogArguments.length>0) {
-            appendLog = MessageFormat.format(appendLogPattern, appendLogArguments);
-        }*/
-
-        StackTraceElement callInfo = new Throwable().getStackTrace()[1];
-        logDetail(callInfo, appendLog);
-    }
-
-    /**
-     * append exception stack
-     *
-     * @param e
-     */
-    public static void log(Throwable e) {
-
-        StringWriter stringWriter = new StringWriter();
-        e.printStackTrace(new PrintWriter(stringWriter));
-        String appendLog = stringWriter.toString();
-
-        StackTraceElement callInfo = new Throwable().getStackTrace()[1];
-        logDetail(callInfo, appendLog);
-    }
-
-}

+ 266 - 0
module-common/src/main/java/com/xxl/job/core/server/EmbedServer.java

@@ -0,0 +1,266 @@
+package com.xxl.job.core.server;
+
+import com.xxl.job.core.biz.ExecutorBiz;
+import com.xxl.job.core.biz.impl.ExecutorBizImpl;
+import com.xxl.job.core.biz.model.*;
+import com.xxl.job.core.thread.ExecutorRegistryThread;
+import com.xxl.job.core.util.GsonTool;
+import com.xxl.job.core.util.ThrowableUtil;
+import com.xxl.job.core.util.XxlJobRemotingUtil;
+import io.netty.bootstrap.ServerBootstrap;
+import io.netty.buffer.Unpooled;
+import io.netty.channel.*;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioServerSocketChannel;
+import io.netty.handler.codec.http.*;
+import io.netty.handler.timeout.IdleStateEvent;
+import io.netty.handler.timeout.IdleStateHandler;
+import io.netty.util.CharsetUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.*;
+
+/**
+ * Copy from : https://github.com/xuxueli/xxl-rpc
+ *
+ * @author xuxueli 2020-04-11 21:25
+ */
+public class EmbedServer {
+    private static final Logger logger = LoggerFactory.getLogger(EmbedServer.class);
+
+    private ExecutorBiz executorBiz;
+    private Thread thread;
+
+    public void start(final String address, final int port, final String appname, final String accessToken) {
+        executorBiz = new ExecutorBizImpl();
+        thread = new Thread(new Runnable() {
+
+            @Override
+            public void run() {
+
+                // param
+                EventLoopGroup bossGroup = new NioEventLoopGroup();
+                EventLoopGroup workerGroup = new NioEventLoopGroup();
+                ThreadPoolExecutor bizThreadPool = new ThreadPoolExecutor(
+                        0,
+                        200,
+                        60L,
+                        TimeUnit.SECONDS,
+                        new LinkedBlockingQueue<Runnable>(2000),
+                        new ThreadFactory() {
+                            @Override
+                            public Thread newThread(Runnable r) {
+                                return new Thread(r, "xxl-rpc, EmbedServer bizThreadPool-" + r.hashCode());
+                            }
+                        },
+                        new RejectedExecutionHandler() {
+                            @Override
+                            public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
+                                throw new RuntimeException("xxl-job, EmbedServer bizThreadPool is EXHAUSTED!");
+                            }
+                        });
+
+
+                try {
+                    // start server
+                    ServerBootstrap bootstrap = new ServerBootstrap();
+                    bootstrap.group(bossGroup, workerGroup)
+                            .channel(NioServerSocketChannel.class)
+                            .childHandler(new ChannelInitializer<SocketChannel>() {
+                                @Override
+                                public void initChannel(SocketChannel channel) throws Exception {
+                                    channel.pipeline()
+                                            .addLast(new IdleStateHandler(0, 0, 30 * 3, TimeUnit.SECONDS))  // beat 3N, close if idle
+                                            .addLast(new HttpServerCodec())
+                                            .addLast(new HttpObjectAggregator(5 * 1024 * 1024))  // merge request & reponse to FULL
+                                            .addLast(new EmbedHttpServerHandler(executorBiz, accessToken, bizThreadPool));
+                                }
+                            })
+                            .childOption(ChannelOption.SO_KEEPALIVE, true);
+
+                    // bind
+                    ChannelFuture future = bootstrap.bind(port).sync();
+
+                    logger.info(">>>>>>>>>>> xxl-job remoting server start success, nettype = {}, port = {}", EmbedServer.class, port);
+
+                    // start registry
+                    startRegistry(appname, address);
+
+                    // wait util stop
+                    future.channel().closeFuture().sync();
+
+                } catch (InterruptedException e) {
+                    if (e instanceof InterruptedException) {
+                        logger.info(">>>>>>>>>>> xxl-job remoting server stop.");
+                    } else {
+                        logger.error(">>>>>>>>>>> xxl-job remoting server error.", e);
+                    }
+                } finally {
+                    // stop
+                    try {
+                        workerGroup.shutdownGracefully();
+                        bossGroup.shutdownGracefully();
+                    } catch (Exception e) {
+                        logger.error(e.getMessage(), e);
+                    }
+                }
+
+            }
+
+        });
+        thread.setDaemon(true);	// daemon, service jvm, user thread leave >>> daemon leave >>> jvm leave
+        thread.start();
+    }
+
+    public void stop() throws Exception {
+        // destroy server thread
+        if (thread!=null && thread.isAlive()) {
+            thread.interrupt();
+        }
+
+        // stop registry
+        stopRegistry();
+        logger.info(">>>>>>>>>>> xxl-job remoting server destroy success.");
+    }
+
+
+    // ---------------------- registry ----------------------
+
+    /**
+     * netty_http
+     *
+     * Copy from : https://github.com/xuxueli/xxl-rpc
+     *
+     * @author xuxueli 2015-11-24 22:25:15
+     */
+    public static class EmbedHttpServerHandler extends SimpleChannelInboundHandler<FullHttpRequest> {
+        private static final Logger logger = LoggerFactory.getLogger(EmbedHttpServerHandler.class);
+
+        private ExecutorBiz executorBiz;
+        private String accessToken;
+        private ThreadPoolExecutor bizThreadPool;
+        public EmbedHttpServerHandler(ExecutorBiz executorBiz, String accessToken, ThreadPoolExecutor bizThreadPool) {
+            this.executorBiz = executorBiz;
+            this.accessToken = accessToken;
+            this.bizThreadPool = bizThreadPool;
+        }
+
+        @Override
+        protected void channelRead0(final ChannelHandlerContext ctx, FullHttpRequest msg) throws Exception {
+
+            // request parse
+            //final byte[] requestBytes = ByteBufUtil.getBytes(msg.content());    // byteBuf.toString(io.netty.util.CharsetUtil.UTF_8);
+            String requestData = msg.content().toString(CharsetUtil.UTF_8);
+            String uri = msg.uri();
+            HttpMethod httpMethod = msg.method();
+            boolean keepAlive = HttpUtil.isKeepAlive(msg);
+            String accessTokenReq = msg.headers().get(XxlJobRemotingUtil.XXL_JOB_ACCESS_TOKEN);
+
+            // invoke
+            bizThreadPool.execute(new Runnable() {
+                @Override
+                public void run() {
+                    // do invoke
+                    Object responseObj = process(httpMethod, uri, requestData, accessTokenReq);
+
+                    // to json
+                    String responseJson = GsonTool.toJson(responseObj);
+
+                    // write response
+                    writeResponse(ctx, keepAlive, responseJson);
+                }
+            });
+        }
+
+        private Object process(HttpMethod httpMethod, String uri, String requestData, String accessTokenReq) {
+
+            // valid
+            if (HttpMethod.POST != httpMethod) {
+                return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, HttpMethod not support.");
+            }
+            if (uri==null || uri.trim().length()==0) {
+                return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, uri-mapping empty.");
+            }
+            if (accessToken!=null
+                    && accessToken.trim().length()>0
+                    && !accessToken.equals(accessTokenReq)) {
+                return new ReturnT<String>(ReturnT.FAIL_CODE, "The access token is wrong.");
+            }
+
+            // services mapping
+            try {
+                if ("/beat".equals(uri)) {
+                    return executorBiz.beat();
+                } else if ("/idleBeat".equals(uri)) {
+                    IdleBeatParam idleBeatParam = GsonTool.fromJson(requestData, IdleBeatParam.class);
+                    return executorBiz.idleBeat(idleBeatParam);
+                } else if ("/run".equals(uri)) {
+                    TriggerParam triggerParam = GsonTool.fromJson(requestData, TriggerParam.class);
+                    return executorBiz.run(triggerParam);
+                } else if ("/kill".equals(uri)) {
+                    KillParam killParam = GsonTool.fromJson(requestData, KillParam.class);
+                    return executorBiz.kill(killParam);
+                } else if ("/log".equals(uri)) {
+                    LogParam logParam = GsonTool.fromJson(requestData, LogParam.class);
+                    return executorBiz.log(logParam);
+                } else {
+                    return new ReturnT<String>(ReturnT.FAIL_CODE, "invalid request, uri-mapping("+ uri +") not found.");
+                }
+            } catch (Exception e) {
+                logger.error(e.getMessage(), e);
+                return new ReturnT<String>(ReturnT.FAIL_CODE, "request error:" + ThrowableUtil.toString(e));
+            }
+        }
+
+        /**
+         * write response
+         */
+        private void writeResponse(ChannelHandlerContext ctx, boolean keepAlive, String responseJson) {
+            // write response
+            FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, Unpooled.copiedBuffer(responseJson, CharsetUtil.UTF_8));   //  Unpooled.wrappedBuffer(responseJson)
+            response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html;charset=UTF-8");       // HttpHeaderValues.TEXT_PLAIN.toString()
+            response.headers().set(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes());
+            if (keepAlive) {
+                response.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
+            }
+            ctx.writeAndFlush(response);
+        }
+
+        @Override
+        public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
+            ctx.flush();
+        }
+
+        @Override
+        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
+            logger.error(">>>>>>>>>>> xxl-job provider netty_http server caught exception", cause);
+            ctx.close();
+        }
+
+        @Override
+        public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
+            if (evt instanceof IdleStateEvent) {
+                ctx.channel().close();      // beat 3N, close if idle
+                logger.debug(">>>>>>>>>>> xxl-job provider netty_http server close an idle channel.");
+            } else {
+                super.userEventTriggered(ctx, evt);
+            }
+        }
+    }
+
+    // ---------------------- registry ----------------------
+
+    public void startRegistry(final String appname, final String address) {
+        // start registry
+        ExecutorRegistryThread.getInstance().start(appname, address);
+    }
+
+    public void stopRegistry() {
+        // stop registry
+        ExecutorRegistryThread.getInstance().toStop();
+    }
+
+
+}

+ 14 - 10
module-common/src/main/java/com/xxl/job/core/thread/ExecutorRegistryThread.java

@@ -23,11 +23,11 @@ public class ExecutorRegistryThread {
 
     private Thread registryThread;
     private volatile boolean toStop = false;
-    public void start(final String appName, final String address){
+    public void start(final String appname, final String address){
 
         // valid
-        if (appName==null || appName.trim().length()==0) {
-            logger.warn(">>>>>>>>>>> xxl-job, executor registry config fail, appName is null.");
+        if (appname==null || appname.trim().length()==0) {
+            logger.warn(">>>>>>>>>>> xxl-job, executor registry config fail, appname is null.");
             return;
         }
         if (XxlJobExecutor.getAdminBizList() == null) {
@@ -42,7 +42,7 @@ public class ExecutorRegistryThread {
                 // registry
                 while (!toStop) {
                     try {
-                        RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appName, address);
+                        RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appname, address);
                         for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
                             try {
                                 ReturnT<String> registryResult = adminBiz.registry(registryParam);
@@ -78,7 +78,7 @@ public class ExecutorRegistryThread {
 
                 // registry remove
                 try {
-                    RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appName, address);
+                    RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.name(), appname, address);
                     for (AdminBiz adminBiz: XxlJobExecutor.getAdminBizList()) {
                         try {
                             ReturnT<String> registryResult = adminBiz.registryRemove(registryParam);
@@ -113,13 +113,17 @@ public class ExecutorRegistryThread {
 
     public void toStop() {
         toStop = true;
+
         // interrupt and wait
-        registryThread.interrupt();
-        try {
-            registryThread.join();
-        } catch (InterruptedException e) {
-            logger.error(e.getMessage(), e);
+        if (registryThread != null) {
+            registryThread.interrupt();
+            try {
+                registryThread.join();
+            } catch (InterruptedException e) {
+                logger.error(e.getMessage(), e);
+            }
         }
+
     }
 
 }

+ 63 - 31
module-common/src/main/java/com/xxl/job/core/thread/JobThread.java

@@ -3,11 +3,11 @@ package com.xxl.job.core.thread;
 import com.xxl.job.core.biz.model.HandleCallbackParam;
 import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.biz.model.TriggerParam;
+import com.xxl.job.core.context.XxlJobContext;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.executor.XxlJobExecutor;
 import com.xxl.job.core.handler.IJobHandler;
 import com.xxl.job.core.log.XxlJobFileAppender;
-import com.xxl.job.core.log.XxlJobLogger;
-import com.xxl.job.core.util.ShardingUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -106,7 +106,6 @@ public class JobThread extends Thread{
 			idleTimes++;
 
             TriggerParam triggerParam = null;
-            ReturnT<String> executeResult = null;
             try {
 				// to check toStop signal, we need cycle, so wo cannot use queue.take(), instand of poll(timeout)
 				triggerParam = triggerQueue.poll(3L, TimeUnit.SECONDS);
@@ -117,51 +116,68 @@ public class JobThread extends Thread{
 
 					// log filename, like "logPath/yyyy-MM-dd/9999.log"
 					String logFileName = XxlJobFileAppender.makeLogFileName(new Date(triggerParam.getLogDateTime()), triggerParam.getLogId());
-					XxlJobFileAppender.contextHolder.set(logFileName);
-					ShardingUtil.setShardingVo(new ShardingUtil.ShardingVO(triggerParam.getBroadcastIndex(), triggerParam.getBroadcastTotal()));
+					XxlJobContext xxlJobContext = new XxlJobContext(
+							triggerParam.getJobId(),
+							triggerParam.getExecutorParams(),
+							logFileName,
+							triggerParam.getBroadcastIndex(),
+							triggerParam.getBroadcastTotal());
+
+					// init job context
+					XxlJobContext.setXxlJobContext(xxlJobContext);
 
 					// execute
-					XxlJobLogger.log("<br>----------- xxl-job job execute start -----------<br>----------- Param:" + triggerParam.getExecutorParams());
+					XxlJobHelper.log("<br>----------- xxl-job job execute start -----------<br>----------- Param:" + xxlJobContext.getJobParam());
 
 					if (triggerParam.getExecutorTimeout() > 0) {
 						// limit timeout
 						Thread futureThread = null;
 						try {
-							final TriggerParam triggerParamTmp = triggerParam;
-							FutureTask<ReturnT<String>> futureTask = new FutureTask<ReturnT<String>>(new Callable<ReturnT<String>>() {
+							FutureTask<Boolean> futureTask = new FutureTask<Boolean>(new Callable<Boolean>() {
 								@Override
-								public ReturnT<String> call() throws Exception {
-									return handler.execute(triggerParamTmp.getExecutorParams());
+								public Boolean call() throws Exception {
+
+									// init job context
+									XxlJobContext.setXxlJobContext(xxlJobContext);
+
+									handler.execute();
+									return true;
 								}
 							});
 							futureThread = new Thread(futureTask);
 							futureThread.start();
 
-							executeResult = futureTask.get(triggerParam.getExecutorTimeout(), TimeUnit.SECONDS);
+							Boolean tempResult = futureTask.get(triggerParam.getExecutorTimeout(), TimeUnit.SECONDS);
 						} catch (TimeoutException e) {
 
-							XxlJobLogger.log("<br>----------- xxl-job job execute timeout");
-							XxlJobLogger.log(e);
+							XxlJobHelper.log("<br>----------- xxl-job job execute timeout");
+							XxlJobHelper.log(e);
 
-							executeResult = new ReturnT<String>(IJobHandler.FAIL_TIMEOUT.getCode(), "job execute timeout ");
+							// handle result
+							XxlJobHelper.handleTimeout("job execute timeout ");
 						} finally {
 							futureThread.interrupt();
 						}
 					} else {
 						// just execute
-						executeResult = handler.execute(triggerParam.getExecutorParams());
+						handler.execute();
 					}
 
-					if (executeResult == null) {
-						executeResult = IJobHandler.FAIL;
+					// valid execute handle data
+					if (XxlJobContext.getXxlJobContext().getHandleCode() <= 0) {
+						XxlJobHelper.handleFail("job handle result lost.");
 					} else {
-						executeResult.setMsg(
-								(executeResult!=null&&executeResult.getMsg()!=null&&executeResult.getMsg().length()>50000)
-										?executeResult.getMsg().substring(0, 50000).concat("...")
-										:executeResult.getMsg());
-						executeResult.setContent(null);	// limit obj size
+						String tempHandleMsg = XxlJobContext.getXxlJobContext().getHandleMsg();
+						tempHandleMsg = (tempHandleMsg!=null&&tempHandleMsg.length()>50000)
+								?tempHandleMsg.substring(0, 50000).concat("...")
+								:tempHandleMsg;
+						XxlJobContext.getXxlJobContext().setHandleMsg(tempHandleMsg);
 					}
-					XxlJobLogger.log("<br>----------- xxl-job job execute end(finish) -----------<br>----------- ReturnT:" + executeResult);
+					XxlJobHelper.log("<br>----------- xxl-job job execute end(finish) -----------<br>----------- Result: handleCode="
+							+ XxlJobContext.getXxlJobContext().getHandleCode()
+							+ ", handleMsg = "
+							+ XxlJobContext.getXxlJobContext().getHandleMsg()
+					);
 
 				} else {
 					if (idleTimes > 30) {
@@ -171,26 +187,38 @@ public class JobThread extends Thread{
 					}
 				}
 			} catch (Throwable e) {
+            	e.printStackTrace();
 				if (toStop) {
-					XxlJobLogger.log("<br>----------- JobThread toStop, stopReason:" + stopReason);
+					XxlJobHelper.log("<br>----------- JobThread toStop, stopReason:" + stopReason);
 				}
 
+				// handle result
 				StringWriter stringWriter = new StringWriter();
 				e.printStackTrace(new PrintWriter(stringWriter));
 				String errorMsg = stringWriter.toString();
-				executeResult = new ReturnT<String>(ReturnT.FAIL_CODE, errorMsg);
 
-				XxlJobLogger.log("<br>----------- JobThread Exception:" + errorMsg + "<br>----------- xxl-job job execute end(error) -----------");
+				XxlJobHelper.handleFail(errorMsg);
+
+				XxlJobHelper.log("<br>----------- JobThread Exception:" + errorMsg + "<br>----------- xxl-job job execute end(error) -----------");
 			} finally {
                 if(triggerParam != null) {
                     // callback handler info
                     if (!toStop) {
                         // commonm
-                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTime(), executeResult));
+                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(
+                        		triggerParam.getLogId(),
+								triggerParam.getLogDateTime(),
+								XxlJobContext.getXxlJobContext().getHandleCode(),
+								XxlJobContext.getXxlJobContext().getHandleMsg() )
+						);
                     } else {
                         // is killed
-                        ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [job running, killed]");
-                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTime(), stopResult));
+                        TriggerCallbackThread.pushCallBack(new HandleCallbackParam(
+                        		triggerParam.getLogId(),
+								triggerParam.getLogDateTime(),
+								XxlJobContext.HANDLE_COCE_FAIL,
+								stopReason + " [job running, killed]" )
+						);
                     }
                 }
             }
@@ -201,8 +229,12 @@ public class JobThread extends Thread{
 			TriggerParam triggerParam = triggerQueue.poll();
 			if (triggerParam!=null) {
 				// is killed
-				ReturnT<String> stopResult = new ReturnT<String>(ReturnT.FAIL_CODE, stopReason + " [job not executed, in the job queue, killed.]");
-				TriggerCallbackThread.pushCallBack(new HandleCallbackParam(triggerParam.getLogId(), triggerParam.getLogDateTime(), stopResult));
+				TriggerCallbackThread.pushCallBack(new HandleCallbackParam(
+						triggerParam.getLogId(),
+						triggerParam.getLogDateTime(),
+						XxlJobContext.HANDLE_COCE_FAIL,
+						stopReason + " [job not executed, in the job queue, killed.]")
+				);
 			}
 		}
 

+ 23 - 7
module-common/src/main/java/com/xxl/job/core/thread/TriggerCallbackThread.java

@@ -3,11 +3,13 @@ package com.xxl.job.core.thread;
 import com.xxl.job.core.biz.AdminBiz;
 import com.xxl.job.core.biz.model.HandleCallbackParam;
 import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobContext;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.enums.RegistryConfig;
 import com.xxl.job.core.executor.XxlJobExecutor;
 import com.xxl.job.core.log.XxlJobFileAppender;
-import com.xxl.job.core.log.XxlJobLogger;
 import com.xxl.job.core.util.FileUtil;
+import com.xxl.job.core.util.JdkSerializeTool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -184,10 +186,17 @@ public class TriggerCallbackThread {
      * callback log
      */
     private void callbackLog(List<HandleCallbackParam> callbackParamList, String logContent){
-        for (HandleCallbackParam callbackParam: callbackParamList) {
-            String logFileName = XxlJobFileAppender.makeLogFileName(new Date(callbackParam.getLogDateTim()), callbackParam.getLogId());
-            XxlJobFileAppender.contextHolder.set(logFileName);
-            XxlJobLogger.log(logContent);
+        if(null!=callbackParamList&&!callbackParamList.isEmpty()){
+            for (HandleCallbackParam callbackParam: callbackParamList) {
+                String logFileName = XxlJobFileAppender.makeLogFileName(new Date(callbackParam.getLogDateTim()), callbackParam.getLogId());
+                XxlJobContext.setXxlJobContext(new XxlJobContext(
+                        -1,
+                        null,
+                        logFileName,
+                        -1,
+                        -1));
+                XxlJobHelper.log(logContent);
+            }
         }
     }
 
@@ -204,7 +213,7 @@ public class TriggerCallbackThread {
         }
 
         // append file
-        byte[] callbackParamList_bytes = XxlJobExecutor.getSerializer().serialize(callbackParamList);
+        byte[] callbackParamList_bytes = JdkSerializeTool.serialize(callbackParamList);
 
         File callbackLogFile = new File(failCallbackFileName.replace("{x}", String.valueOf(System.currentTimeMillis())));
         if (callbackLogFile.exists()) {
@@ -235,7 +244,14 @@ public class TriggerCallbackThread {
         // load and clear file, retry
         for (File callbaclLogFile: callbackLogPath.listFiles()) {
             byte[] callbackParamList_bytes = FileUtil.readFileContent(callbaclLogFile);
-            List<HandleCallbackParam> callbackParamList = (List<HandleCallbackParam>) XxlJobExecutor.getSerializer().deserialize(callbackParamList_bytes, HandleCallbackParam.class);
+
+            // avoid empty file
+            if(callbackParamList_bytes == null || callbackParamList_bytes.length < 1){
+                callbaclLogFile.delete();
+                continue;
+            }
+
+            List<HandleCallbackParam> callbackParamList = (List<HandleCallbackParam>) JdkSerializeTool.deserialize(callbackParamList_bytes, List.class);
 
             callbaclLogFile.delete();
             doCallback(callbackParamList);

+ 8 - 0
module-common/src/main/java/com/xxl/job/core/util/DateUtil.java

@@ -135,6 +135,14 @@ public class DateUtil {
         return add(date, Calendar.DAY_OF_MONTH, amount);
     }
 
+    public static Date addHours(final Date date, final int amount) {
+        return add(date, Calendar.HOUR_OF_DAY, amount);
+    }
+
+    public static Date addMinutes(final Date date, final int amount) {
+        return add(date, Calendar.MINUTE, amount);
+    }
+
     private static Date add(final Date date, final int calendarField, final int amount) {
         if (date == null) {
             return null;

+ 3 - 1
module-common/src/main/java/com/xxl/job/core/util/FileUtil.java

@@ -84,8 +84,11 @@ public class FileUtil {
             in = new FileInputStream(file);
             in.read(filecontent);
             in.close();
+
+            return filecontent;
         } catch (Exception e) {
             logger.error(e.getMessage(), e);
+            return null;
         } finally {
             if (in != null) {
                 try {
@@ -95,7 +98,6 @@ public class FileUtil {
                 }
             }
         }
-        return filecontent;
     }
 
 

+ 88 - 0
module-common/src/main/java/com/xxl/job/core/util/GsonTool.java

@@ -0,0 +1,88 @@
+package com.xxl.job.core.util;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.List;
+
+/**
+ * @author xuxueli 2020-04-11 20:56:31
+ */
+public class GsonTool {
+
+    private static Gson gson = null;
+    static {
+            gson= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
+    }
+
+    /**
+     * Object 转成 json
+     *
+     * @param src
+     * @return String
+     */
+    public static String toJson(Object src) {
+        return gson.toJson(src);
+    }
+
+    /**
+     * json 转成 特定的cls的Object
+     *
+     * @param json
+     * @param classOfT
+     * @return
+     */
+    public static <T> T fromJson(String json, Class<T> classOfT) {
+        return gson.fromJson(json, classOfT);
+    }
+
+    /**
+     * json 转成 特定的 rawClass<classOfT> 的Object
+     *
+     * @param json
+     * @param classOfT
+     * @param argClassOfT
+     * @return
+     */
+    public static <T> T fromJson(String json, Class<T> classOfT, Class argClassOfT) {
+        Type type = new ParameterizedType4ReturnT(classOfT, new Class[]{argClassOfT});
+        return gson.fromJson(json, type);
+    }
+    public static class ParameterizedType4ReturnT implements ParameterizedType {
+        private final Class raw;
+        private final Type[] args;
+        public ParameterizedType4ReturnT(Class raw, Type[] args) {
+            this.raw = raw;
+            this.args = args != null ? args : new Type[0];
+        }
+        @Override
+        public Type[] getActualTypeArguments() {
+            return args;
+        }
+        @Override
+        public Type getRawType() {
+            return raw;
+        }
+        @Override
+        public Type getOwnerType() {return null;}
+    }
+
+    /**
+     * json 转成 特定的cls的list
+     *
+     * @param json
+     * @param classOfT
+     * @return
+     */
+    public static <T> List<T> fromJsonList(String json, Class<T> classOfT) {
+        return gson.fromJson(
+                json,
+                new TypeToken<List<T>>() {
+                }.getType()
+        );
+    }
+
+}

+ 203 - 0
module-common/src/main/java/com/xxl/job/core/util/IpUtil.java

@@ -0,0 +1,203 @@
+package com.xxl.job.core.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.UnknownHostException;
+import java.util.Enumeration;
+import java.util.regex.Pattern;
+
+/**
+ * ip tool
+ *
+ * @author xuxueli 2016-5-22 11:38:05
+ */
+public class IpUtil {
+    private static final Logger logger = LoggerFactory.getLogger(IpUtil.class);
+
+    private static final String ANYHOST_VALUE = "0.0.0.0";
+    private static final String LOCALHOST_VALUE = "127.0.0.1";
+    private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$");
+
+
+
+    private static volatile InetAddress LOCAL_ADDRESS = null;
+
+    // ---------------------- valid ----------------------
+
+    private static InetAddress toValidAddress(InetAddress address) {
+        if (address instanceof Inet6Address) {
+            Inet6Address v6Address = (Inet6Address) address;
+            if (isPreferIPV6Address()) {
+                return normalizeV6Address(v6Address);
+            }
+        }
+        if (isValidV4Address(address)) {
+            return address;
+        }
+        return null;
+    }
+
+    private static boolean isPreferIPV6Address() {
+        return Boolean.getBoolean("java.net.preferIPv6Addresses");
+    }
+
+    /**
+     * valid Inet4Address
+     *
+     * @param address
+     * @return
+     */
+    private static boolean isValidV4Address(InetAddress address) {
+        if (address == null || address.isLoopbackAddress()) {
+            return false;
+        }
+        String name = address.getHostAddress();
+        boolean result = (name != null
+                && IP_PATTERN.matcher(name).matches()
+                && !ANYHOST_VALUE.equals(name)
+                && !LOCALHOST_VALUE.equals(name));
+        return result;
+    }
+
+
+    /**
+     * normalize the ipv6 Address, convert scope name to scope id.
+     * e.g.
+     * convert
+     * fe80:0:0:0:894:aeec:f37d:23e1%en0
+     * to
+     * fe80:0:0:0:894:aeec:f37d:23e1%5
+     * <p>
+     * The %5 after ipv6 address is called scope id.
+     * see java doc of {@link Inet6Address} for more details.
+     *
+     * @param address the input address
+     * @return the normalized address, with scope id converted to int
+     */
+    private static InetAddress normalizeV6Address(Inet6Address address) {
+        String addr = address.getHostAddress();
+        int i = addr.lastIndexOf('%');
+        if (i > 0) {
+            try {
+                return InetAddress.getByName(addr.substring(0, i) + '%' + address.getScopeId());
+            } catch (UnknownHostException e) {
+                // ignore
+                logger.debug("Unknown IPV6 address: ", e);
+            }
+        }
+        return address;
+    }
+
+    // ---------------------- find ip ----------------------
+
+
+    private static InetAddress getLocalAddress0() {
+        InetAddress localAddress = null;
+        try {
+            localAddress = InetAddress.getLocalHost();
+            InetAddress addressItem = toValidAddress(localAddress);
+            if (addressItem != null) {
+                return addressItem;
+            }
+        } catch (Throwable e) {
+            logger.error(e.getMessage(), e);
+        }
+
+        try {
+            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+            if (null == interfaces) {
+                return localAddress;
+            }
+            while (interfaces.hasMoreElements()) {
+                try {
+                    NetworkInterface network = interfaces.nextElement();
+                    if (network.isLoopback() || network.isVirtual() || !network.isUp()) {
+                        continue;
+                    }
+                    Enumeration<InetAddress> addresses = network.getInetAddresses();
+                    while (addresses.hasMoreElements()) {
+                        try {
+                            InetAddress addressItem = toValidAddress(addresses.nextElement());
+                            if (addressItem != null) {
+                                try {
+                                    if(addressItem.isReachable(100)){
+                                        return addressItem;
+                                    }
+                                } catch (IOException e) {
+                                    // ignore
+                                }
+                            }
+                        } catch (Throwable e) {
+                            logger.error(e.getMessage(), e);
+                        }
+                    }
+                } catch (Throwable e) {
+                    logger.error(e.getMessage(), e);
+                }
+            }
+        } catch (Throwable e) {
+            logger.error(e.getMessage(), e);
+        }
+        return localAddress;
+    }
+
+
+    // ---------------------- tool ----------------------
+
+    /**
+     * Find first valid IP from local network card
+     *
+     * @return first valid local IP
+     */
+    public static InetAddress getLocalAddress() {
+        if (LOCAL_ADDRESS != null) {
+            return LOCAL_ADDRESS;
+        }
+        InetAddress localAddress = getLocalAddress0();
+        LOCAL_ADDRESS = localAddress;
+        return localAddress;
+    }
+
+    /**
+     * get ip address
+     *
+     * @return String
+     */
+    public static String getIp(){
+        return getLocalAddress().getHostAddress();
+    }
+
+    /**
+     * get ip:port
+     *
+     * @param port
+     * @return String
+     */
+    public static String getIpPort(int port){
+        String ip = getIp();
+        return getIpPort(ip, port);
+    }
+
+    public static String getIpPort(String ip, int port){
+        if (ip==null) {
+            return null;
+        }
+        return ip.concat(":").concat(String.valueOf(port));
+    }
+
+    public static Object[] parseIpPort(String address){
+        String[] array = address.split(":");
+
+        String host = array[0];
+        int port = Integer.parseInt(array[1]);
+
+        return new Object[]{host, port};
+    }
+
+
+}

+ 73 - 0
module-common/src/main/java/com/xxl/job/core/util/JdkSerializeTool.java

@@ -0,0 +1,73 @@
+package com.xxl.job.core.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.*;
+
+/**
+ * @author xuxueli 2020-04-12 0:14:00
+ */
+public class JdkSerializeTool {
+    private static Logger logger = LoggerFactory.getLogger(JdkSerializeTool.class);
+
+
+    // ------------------------ serialize and unserialize ------------------------
+
+    /**
+     * 将对象-->byte[] (由于jedis中不支持直接存储object所以转换成byte[]存入)
+     *
+     * @param object
+     * @return
+     */
+    public static byte[] serialize(Object object) {
+        ObjectOutputStream oos = null;
+        ByteArrayOutputStream baos = null;
+        try {
+            // 序列化
+            baos = new ByteArrayOutputStream();
+            oos = new ObjectOutputStream(baos);
+            oos.writeObject(object);
+            byte[] bytes = baos.toByteArray();
+            return bytes;
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        } finally {
+            try {
+                oos.close();
+                baos.close();
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+        return null;
+    }
+
+
+    /**
+     * 将byte[] -->Object
+     *
+     * @param bytes
+     * @return
+     */
+    public static  <T> Object deserialize(byte[] bytes, Class<T> clazz) {
+        ByteArrayInputStream bais = null;
+        try {
+            // 反序列化
+            bais = new ByteArrayInputStream(bytes);
+            ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(bais));
+            return ois.readObject();
+        } catch (Exception e) {
+            logger.error(e.getMessage(), e);
+        } finally {
+            try {
+                bais.close();
+            } catch (IOException e) {
+                logger.error(e.getMessage(), e);
+            }
+        }
+        return null;
+    }
+
+
+}

+ 70 - 0
module-common/src/main/java/com/xxl/job/core/util/NetUtil.java

@@ -0,0 +1,70 @@
+package com.xxl.job.core.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+
+/**
+ * net util
+ *
+ * @author xuxueli 2017-11-29 17:00:25
+ */
+public class NetUtil {
+    private static Logger logger = LoggerFactory.getLogger(NetUtil.class);
+
+    /**
+     * find avaliable port
+     *
+     * @param defaultPort
+     * @return
+     */
+    public static int findAvailablePort(int defaultPort) {
+        int portTmp = defaultPort;
+        while (portTmp < 65535) {
+            if (!isPortUsed(portTmp)) {
+                return portTmp;
+            } else {
+                portTmp++;
+            }
+        }
+        portTmp = defaultPort--;
+        while (portTmp > 0) {
+            if (!isPortUsed(portTmp)) {
+                return portTmp;
+            } else {
+                portTmp--;
+            }
+        }
+        throw new RuntimeException("no available port.");
+    }
+
+    /**
+     * check port used
+     *
+     * @param port
+     * @return
+     */
+    public static boolean isPortUsed(int port) {
+        boolean used = false;
+        ServerSocket serverSocket = null;
+        try {
+            serverSocket = new ServerSocket(port);
+            used = false;
+        } catch (IOException e) {
+            logger.info(">>>>>>>>>>> xxl-rpc, port[{}] is in use.", port);
+            used = true;
+        } finally {
+            if (serverSocket != null) {
+                try {
+                    serverSocket.close();
+                } catch (IOException e) {
+                    logger.info("");
+                }
+            }
+        }
+        return used;
+    }
+
+}

+ 5 - 66
module-common/src/main/java/com/xxl/job/core/util/ScriptUtil.java

@@ -1,6 +1,6 @@
 package com.xxl.job.core.util;
 
-import com.xxl.job.core.log.XxlJobLogger;
+import com.xxl.job.core.context.XxlJobHelper;
 
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -83,7 +83,7 @@ public class ScriptUtil {
                     try {
                         copy(process.getInputStream(), finalFileOutputStream, new byte[1024]);
                     } catch (IOException e) {
-                        XxlJobLogger.log(e);
+                        XxlJobHelper.log(e);
                     }
                 }
             });
@@ -93,7 +93,7 @@ public class ScriptUtil {
                     try {
                         copy(process.getErrorStream(), finalFileOutputStream, new byte[1024]);
                     } catch (IOException e) {
-                        XxlJobLogger.log(e);
+                        XxlJobHelper.log(e);
                     }
                 }
             });
@@ -109,14 +109,14 @@ public class ScriptUtil {
 
             return exitValue;
         } catch (Exception e) {
-            XxlJobLogger.log(e);
+            XxlJobHelper.log(e);
             return -1;
         } finally {
             if (fileOutputStream != null) {
                 try {
                     fileOutputStream.close();
                 } catch (IOException e) {
-                    XxlJobLogger.log(e);
+                    XxlJobHelper.log(e);
                 }
 
             }
@@ -164,65 +164,4 @@ public class ScriptUtil {
             }
         }
     }
-
-    /**
-     * 脚本执行,日志文件实时输出
-     *
-     * 优点:支持将目标数据实时输出到指定日志文件中去
-     * 缺点:
-     *      标准输出和错误输出优先级固定,可能和脚本中顺序不一致
-     *      Java无法实时获取
-     *
-     *      <!-- commons-exec -->
-     * 		<dependency>
-     * 			<groupId>org.apache.commons</groupId>
-     * 			<artifactId>commons-exec</artifactId>
-     * 			<version>${commons-exec.version}</version>
-     * 		</dependency>
-     *
-     * @param command
-     * @param scriptFile
-     * @param logFile
-     * @param params
-     * @return
-     * @throws IOException
-     */
-    /*public static int execToFileB(String command, String scriptFile, String logFile, String... params) throws IOException {
-        // 标准输出:print (null if watchdog timeout)
-        // 错误输出:logging + 异常 (still exists if watchdog timeout)
-        // 标准输入
-
-        FileOutputStream fileOutputStream = null;   //
-        try {
-            fileOutputStream = new FileOutputStream(logFile, true);
-            PumpStreamHandler streamHandler = new PumpStreamHandler(fileOutputStream, fileOutputStream, null);
-
-            // command
-            CommandLine commandline = new CommandLine(command);
-            commandline.addArgument(scriptFile);
-            if (params!=null && params.length>0) {
-                commandline.addArguments(params);
-            }
-
-            // exec
-            DefaultExecutor exec = new DefaultExecutor();
-            exec.setExitValues(null);
-            exec.setStreamHandler(streamHandler);
-            int exitValue = exec.execute(commandline);  // exit code: 0=success, 1=error
-            return exitValue;
-        } catch (Exception e) {
-            XxlJobLogger.log(e);
-            return -1;
-        } finally {
-            if (fileOutputStream != null) {
-                try {
-                    fileOutputStream.close();
-                } catch (IOException e) {
-                    XxlJobLogger.log(e);
-                }
-
-            }
-        }
-    }*/
-
 }

+ 46 - 46
module-common/src/main/java/com/xxl/job/core/util/ShardingUtil.java

@@ -1,46 +1,46 @@
-package com.xxl.job.core.util;
-
-/**
- * sharding vo
- * @author xuxueli 2017-07-25 21:26:38
- */
-public class ShardingUtil {
-
-    private static InheritableThreadLocal<ShardingVO> contextHolder = new InheritableThreadLocal<ShardingVO>();
-
-    public static class ShardingVO {
-
-        private int index;  // sharding index
-        private int total;  // sharding total
-
-        public ShardingVO(int index, int total) {
-            this.index = index;
-            this.total = total;
-        }
-
-        public int getIndex() {
-            return index;
-        }
-
-        public void setIndex(int index) {
-            this.index = index;
-        }
-
-        public int getTotal() {
-            return total;
-        }
-
-        public void setTotal(int total) {
-            this.total = total;
-        }
-    }
-
-    public static void setShardingVo(ShardingVO shardingVo){
-        contextHolder.set(shardingVo);
-    }
-
-    public static ShardingVO getShardingVo(){
-        return contextHolder.get();
-    }
-
-}
+package com.xxl.job.core.util;//package com.xxl.job.core.util;
+//
+///**
+// * sharding vo
+// * @author xuxueli 2017-07-25 21:26:38
+// */
+//public class ShardingUtil {
+//
+//    private static InheritableThreadLocal<ShardingVO> contextHolder = new InheritableThreadLocal<ShardingVO>();
+//
+//    public static class ShardingVO {
+//
+//        private int index;  // sharding index
+//        private int total;  // sharding total
+//
+//        public ShardingVO(int index, int total) {
+//            this.index = index;
+//            this.total = total;
+//        }
+//
+//        public int getIndex() {
+//            return index;
+//        }
+//
+//        public void setIndex(int index) {
+//            this.index = index;
+//        }
+//
+//        public int getTotal() {
+//            return total;
+//        }
+//
+//        public void setTotal(int total) {
+//            this.total = total;
+//        }
+//    }
+//
+//    public static void setShardingVo(ShardingVO shardingVo){
+//        contextHolder.set(shardingVo);
+//    }
+//
+//    public static ShardingVO getShardingVo(){
+//        return contextHolder.get();
+//    }
+//
+//}

+ 24 - 0
module-common/src/main/java/com/xxl/job/core/util/ThrowableUtil.java

@@ -0,0 +1,24 @@
+package com.xxl.job.core.util;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+/**
+ * @author xuxueli 2018-10-20 20:07:26
+ */
+public class ThrowableUtil {
+
+    /**
+     * parse error to string
+     *
+     * @param e
+     * @return
+     */
+    public static String toString(Throwable e) {
+        StringWriter stringWriter = new StringWriter();
+        e.printStackTrace(new PrintWriter(stringWriter));
+        String errorMsg = stringWriter.toString();
+        return errorMsg;
+    }
+
+}

+ 17 - 25
module-common/src/main/java/com/xxl/job/core/util/XxlJobRemotingUtil.java

@@ -1,7 +1,6 @@
 package com.xxl.job.core.util;
 
 import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.registry.client.util.json.BasicJson;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -13,14 +12,15 @@ import java.net.HttpURLConnection;
 import java.net.URL;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
-import java.util.Map;
 
 /**
  * @author xuxueli 2018-11-25 00:55:31
  */
 public class XxlJobRemotingUtil {
     private static Logger logger = LoggerFactory.getLogger(XxlJobRemotingUtil.class);
-    public static String XXL_RPC_ACCESS_TOKEN = "XXL-RPC-ACCESS-TOKEN";
+    public static final String XXL_JOB_ACCESS_TOKEN = "XXL-JOB-ACCESS-TOKEN";
+
+
     // trust-https start
     private static void trustAllHosts(HttpsURLConnection connection) {
         try {
@@ -30,7 +30,7 @@ public class XxlJobRemotingUtil {
 
             connection.setSSLSocketFactory(newFactory);
         } catch (Exception e) {
-            logger.info(e.getMessage(), e);
+            logger.error(e.getMessage(), e);
         }
         connection.setHostnameVerifier(new HostnameVerifier() {
             @Override
@@ -44,11 +44,9 @@ public class XxlJobRemotingUtil {
         public X509Certificate[] getAcceptedIssuers() {
             return new X509Certificate[]{};
         }
-
         @Override
         public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
         }
-
         @Override
         public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
         }
@@ -61,10 +59,12 @@ public class XxlJobRemotingUtil {
      *
      * @param url
      * @param accessToken
+     * @param timeout
      * @param requestObj
+     * @param returnTargClassOfT
      * @return
      */
-    public static ReturnT<String> postBody(String url, String accessToken, Object requestObj, int timeout) {
+    public static ReturnT postBody(String url, String accessToken, int timeout, Object requestObj, Class returnTargClassOfT) {
         HttpURLConnection connection = null;
         BufferedReader bufferedReader = null;
         try {
@@ -91,19 +91,21 @@ public class XxlJobRemotingUtil {
             connection.setRequestProperty("Accept-Charset", "application/json;charset=UTF-8");
 
             if(accessToken!=null && accessToken.trim().length()>0){
-                connection.setRequestProperty(XXL_RPC_ACCESS_TOKEN, accessToken);
+                connection.setRequestProperty(XXL_JOB_ACCESS_TOKEN, accessToken);
             }
 
             // do connection
             connection.connect();
 
             // write requestBody
-            String requestBody = BasicJson.toJson(requestObj);
+            if (requestObj != null) {
+                String requestBody = GsonTool.toJson(requestObj);
 
-            DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
-            dataOutputStream.write(requestBody.getBytes("UTF-8"));
-            dataOutputStream.flush();
-            dataOutputStream.close();
+                DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
+                dataOutputStream.write(requestBody.getBytes("UTF-8"));
+                dataOutputStream.flush();
+                dataOutputStream.close();
+            }
 
             /*byte[] requestBodyBytes = requestBody.getBytes("UTF-8");
             connection.setRequestProperty("Content-Length", String.valueOf(requestBodyBytes.length));
@@ -119,7 +121,7 @@ public class XxlJobRemotingUtil {
             }
 
             // result
-            bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+            bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
             StringBuilder result = new StringBuilder();
             String line;
             while ((line = bufferedReader.readLine()) != null) {
@@ -129,17 +131,7 @@ public class XxlJobRemotingUtil {
 
             // parse returnT
             try {
-                Map<String, Object> resultMap = BasicJson.parseMap(resultJson);
-
-                ReturnT<String> returnT = new ReturnT<String>();
-                if (resultMap==null) {
-                    returnT.setCode(ReturnT.FAIL_CODE);
-                    returnT.setMsg("AdminBizClient Remoting call fail.");
-                } else {
-                    returnT.setCode(Integer.valueOf(String.valueOf(resultMap.get("code"))));
-                    returnT.setMsg(String.valueOf(resultMap.get("msg")));
-                    returnT.setContent(String.valueOf(resultMap.get("content")));
-                }
+                ReturnT returnT = GsonTool.fromJson(resultJson, ReturnT.class, returnTargClassOfT);
                 return returnT;
             } catch (Exception e) {
                 logger.error("xxl-rpc remoting (url="+url+") response content invalid("+ resultJson +").", e);

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

@@ -142,11 +142,6 @@
 
         <dependency>
             <groupId>cn.com.ctop</groupId>
-            <artifactId>xxl-job-core</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
             <artifactId>module-check</artifactId>
             <version>2.0.2</version>
         </dependency>

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/config/XxlJobConfig.java

@@ -1,7 +1,6 @@
 package cn.com.ctop.job.bytedance.config;
 
 import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -37,10 +36,9 @@ public class XxlJobConfig {
 
     @Bean
     public XxlJobSpringExecutor xxlJobExecutor() {
-        XxlJobLogger.log(">>>>>>>>>>> xxl-job config init.");
         XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
         xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
-        xxlJobSpringExecutor.setAppName(appName);
+        xxlJobSpringExecutor.setAppname(appName);
         xxlJobSpringExecutor.setIp(ip);
         xxlJobSpringExecutor.setPort(port);
         xxlJobSpringExecutor.setAccessToken(accessToken);

+ 1 - 2
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/AlarmRuleJob.java

@@ -21,8 +21,7 @@ public class AlarmRuleJob {
      * @author ZHAOXA
      */
     @XxlJob("alarmRuleJob")
-    public ReturnT<String> execute(String params) throws Exception {
+    public void execute() throws Exception {
         ruleGroupService.checkRules();
-        return ReturnT.SUCCESS;
     }
 }

+ 0 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceCheckAccountLandingPageJob.java

@@ -1,6 +0,0 @@
-package cn.com.ctop.job.bytedance.handler;
-
-public class ByteDanceCheckAccountLandingPageJob {
-
-
-}

+ 3 - 5
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceCheckAccountMonitoringLinkJob.java

@@ -8,9 +8,8 @@ import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
 import com.alibaba.fastjson.JSONObject;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -32,7 +31,7 @@ public class ByteDanceCheckAccountMonitoringLinkJob {
     private ICtopOauthTokenService oauthTokenService;
 
     @XxlJob("byteDanceCheckAccountMonitoringLinkJob")
-    public ReturnT<String> execute(String param) throws Exception{
+    public void execute() throws Exception{
 
         //查询开启监测链接预警的账户
         //Todo 暂时单线程
@@ -49,8 +48,7 @@ public class ByteDanceCheckAccountMonitoringLinkJob {
                 }
             }
         });
-        XxlJobLogger.log("监测链接检查完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("监测链接检查完成");
     }
 
     private void checkMonitorLink(JSONObject data, ByteDanceAdvertisePlan plan, UserAllocation allocation) {

+ 5 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceCleanMaterialJob.java

@@ -2,9 +2,8 @@ package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.common.module.utils.Check;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceCreativeDailyReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -24,13 +23,13 @@ public class ByteDanceCleanMaterialJob {
     static ExecutorService executorService = Executors.newFixedThreadPool(3);
 
     @XxlJob("byteDanceCleanMaterial")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         List<String> signatureList = creativeDailyReportService.getSignatureList();
         if (Check.isNull(signatureList)) {
-            XxlJobLogger.log("头条素材数据获取为空");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("头条素材数据获取为空");
+            XxlJobHelper.handleFail();
+            return ;
         }
         signatureList.forEach(signature -> executorService.submit(() -> creativeDailyReportService.calculationMaterialReport(signature)));
-        return ReturnT.SUCCESS;
     }
 }

+ 7 - 8
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceHourlyAccountWarningLoadJob.java

@@ -3,9 +3,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceHourlyAccountWarningService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -28,18 +27,18 @@ public class ByteDanceHourlyAccountWarningLoadJob {
     static ExecutorService executorService = Executors.newFixedThreadPool(3);
 
     @XxlJob("byteDanceHourlyAccountWarning")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("开始时段消耗预警定时任务");
+    public void execute() throws Exception {
+        XxlJobHelper.log("开始时段消耗预警定时任务");
         long startTime = System.currentTimeMillis();
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         String statDate = DateUtils.formatDate();
         String anotherDay = DateUtils.getAnotherDay("yyyy-MM-dd", statDate, 1);
         tokens.forEach(token -> executorService.submit(() -> byteDanceHourlyAccountWarningService.byteDanceAccountWarning(token.getAccountId(), statDate, anotherDay)));
-        XxlJobLogger.log("时段消耗预警定时任务执行完毕,耗时:{} ms", System.currentTimeMillis() - startTime);
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("时段消耗预警定时任务执行完毕,耗时:{} ms", System.currentTimeMillis() - startTime);
     }
 }

+ 3 - 15
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDancePlanRuleDataJob.java

@@ -4,9 +4,7 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -22,20 +20,10 @@ public class ByteDancePlanRuleDataJob {
     @Autowired
     private IReportService reportService;
     private ExecutorService executorService = Executors.newFixedThreadPool(10);
-
     @XxlJob("bytedancePlanRuleLoadJob")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         Date date = new Date();
-        if(null!=param&&!"".equals(param.trim())){
-            Long accountId = Long.parseLong(param);
-            CtopOauthToken token = tokenService.getTokenByAccountId(accountId);
-            reportService.getAdvertiserPlanRuleData(token,date,date,CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
-            XxlJobLogger.log("头条计划数据清洗完成:accountId=>{}",param);
-            return ReturnT.SUCCESS;
-        }else{
-            List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
-            tokens.forEach(token -> executorService.submit(()->reportService.getAdvertiserPlanRuleData(token,date,date,CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY)));
-            return ReturnT.SUCCESS;
-        }
+        List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
+        tokens.forEach(token -> executorService.submit(()->reportService.getAdvertiserPlanRuleData(token,date,date,CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY)));
     }
 }

+ 2 - 4
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceRefreshTokenJob.java

@@ -1,7 +1,6 @@
 package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.common.module.service.IRefreshTokenService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -17,8 +16,7 @@ public class ByteDanceRefreshTokenJob {
      * @throws Exception
      */
     @XxlJob("byteDanceRefreshTokenJob")
-    public ReturnT<String> execute(String accountId) throws Exception {
-        refreshTokenService.byteDanceRefresh(accountId);
-        return ReturnT.SUCCESS;
+    public void execute() throws Exception {
+        refreshTokenService.byteDanceRefresh(null);
     }
 }

+ 4 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/ByteDanceVideoReportJob.java

@@ -1,9 +1,8 @@
 package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -21,14 +20,13 @@ public class ByteDanceVideoReportJob {
     private IByteDanceVideoReportDailyService byteDanceVideoReportDailyService;
 
     @XxlJob("byteDanceVideoReport")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         String getDate2 = DateUtils.formatDate(DateUtils.addDay(new Date(), -2));
-        XxlJobLogger.log("头条视频报表清洗数据定时任务开始, 执行时间为:" + getDate2);
+        XxlJobHelper.log("头条视频报表清洗数据定时任务开始, 执行时间为:" + getDate2);
         byteDanceVideoReportDailyService.videoInfoList(getDate2, getDate2);
 
         String getDate = DateUtils.formatDate(DateUtils.addDay(new Date(), -1));
-        XxlJobLogger.log("头条视频报表清洗数据定时任务开始, 执行时间为:" + getDate);
+        XxlJobHelper.log("头条视频报表清洗数据定时任务开始, 执行时间为:" + getDate);
         byteDanceVideoReportDailyService.videoInfoList(getDate, getDate);
-        return ReturnT.SUCCESS;
     }
 }

+ 1 - 2
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAccountBidJob.java

@@ -15,8 +15,7 @@ public class BytedanceAccountBidJob {
      * 出价预警
      */
     @XxlJob("bytedanceAccountBidJob")
-    public ReturnT<String> execute(String params) throws Exception {
+    public void execute() throws Exception {
         bidWarningService.bidWarning();
-        return ReturnT.SUCCESS;
     }
 }

+ 8 - 11
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertiserDailyReportLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -31,29 +30,27 @@ public class BytedanceAdvertiserDailyReportLoadJob {
     static ExecutorService executorService = Executors.newFixedThreadPool(5);;
 
     @XxlJob("bytedanceAdvertiserDailyReport")
-    public ReturnT<String> execute(String params) throws Exception {
-        XxlJobLogger.log("头条广告主日报获取任务执行开始");
+    public void execute(String params) throws Exception {
+        XxlJobHelper.log("头条广告主日报获取任务执行开始");
         Date getDate = DateUtils.addDay(new Date(), -1);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条数据异常:为获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条数据异常:为获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         CountDownLatch countDownLatch = new CountDownLatch(tokens.size());
         tokens.forEach(token -> executorService.submit(() -> {
             try {
                 reportService.getAdvertiserReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
             } catch (Exception e) {
-                XxlJobLogger.log(e);
+                XxlJobHelper.log(e);
             } finally {
                 countDownLatch.countDown();
             }
         }));
         countDownLatch.await();
-        XxlJobLogger.log("头条广告主日报获取任务执行结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条广告主日报获取任务执行结束");
     }
-
-
 }

+ 7 - 9
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertiserHourlyReportLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -27,17 +26,17 @@ public class BytedanceAdvertiserHourlyReportLoadJob {
     @Autowired
     private IReportService reportService;
     static ExecutorService executorService = Executors.newFixedThreadPool(4);
-
     @XxlJob("bytedanceAdvertiserHourlyReport")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("头条时报数据获取开始");
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条时报数据获取开始");
         Date getDate = new Date();
         String hour = DateUtils.getNowHour(getDate);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条小时数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条小时数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         tokens.forEach(token -> executorService.submit(() -> {
             if ("00".equals(hour)) {
@@ -47,7 +46,6 @@ public class BytedanceAdvertiserHourlyReportLoadJob {
             }
             reportService.getAdvertiserReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
         }));
-        XxlJobLogger.log("头条时报数据获取结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条时报数据获取结束");
     }
 }

+ 3 - 5
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceAdvertisingDataLoadJob.java

@@ -5,9 +5,8 @@ import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCampaignService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -34,7 +33,7 @@ public class BytedanceAdvertisingDataLoadJob {
     private IByteDanceCreativeService creativeService;
 
     @XxlJob("bytedanceAdvertisingData")
-    public ReturnT<String> execute(String params) throws Exception {
+    public void execute() throws Exception {
         Date getDate = new Date();
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
         String dateString = dateFormat.format(getDate);
@@ -52,7 +51,6 @@ public class BytedanceAdvertisingDataLoadJob {
                 e.printStackTrace();
             }
         }));
-        XxlJobLogger.log("物料数据同步完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("物料数据同步完成");
     }
 }

+ 8 - 9
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCampaignDailyReportLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -26,27 +25,27 @@ public class BytedanceCampaignDailyReportLoadJob {
 
 
     @XxlJob("bytedanceCampaignDailyReport")
-    public ReturnT<String> execute(String params) throws Exception {
-        XxlJobLogger.log("头条广告组日报获取任务执行开始");
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条广告组日报获取任务执行开始");
         Date getDate = DateUtils.addDay(new Date(), -1);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条数据异常:为获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条数据异常:为获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         CountDownLatch countDownLatch = new CountDownLatch(tokens.size());
         tokens.forEach(token -> executorService.submit(() -> {
             try {
                 reportService.getAdvertiserCampaignReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY);
             } catch (Exception e) {
-                XxlJobLogger.log(e);
+                XxlJobHelper.log(e);
             } finally {
                 countDownLatch.countDown();
             }
         }));
         countDownLatch.await();
-        XxlJobLogger.log("头条广告组日报获取任务执行结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条广告组日报获取任务执行结束");
     }
 }

+ 7 - 8
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCampaignHourlyReportLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -25,15 +24,16 @@ public class BytedanceCampaignHourlyReportLoadJob {
     static ExecutorService executorService = Executors.newFixedThreadPool(4);
 
     @XxlJob("bytedanceCampaignHourlyReport")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("头条广告组时报数据获取开始");
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条广告组时报数据获取开始");
         Date getDate = new Date();
         String hour = DateUtils.getNowHour(getDate);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条小时数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条小时数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         tokens.forEach(token -> executorService.submit(() -> {
             if ("00".equals(hour)) {
@@ -43,7 +43,6 @@ public class BytedanceCampaignHourlyReportLoadJob {
             }
             reportService.getAdvertiserCampaignReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
         }));
-        XxlJobLogger.log("头条广告组时报数据获取结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条广告组时报数据获取结束");
     }
 }

+ 5 - 8
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCreativeDailyReportLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -28,19 +27,17 @@ public class BytedanceCreativeDailyReportLoadJob {
     @Autowired
     private IReportService reportService;
     static ExecutorService executorService = Executors.newFixedThreadPool(5);
-
-
     @XxlJob("bytedanceCreativeDailyReport")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         Date getDate = DateUtils.addDay(new Date(), -1);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条数据异常:为获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条数据异常:为获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         tokens.forEach(token -> executorService.submit(() -> reportService.getAdvertiserCreativeReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY)));
-        return ReturnT.SUCCESS;
     }
 
 

+ 7 - 9
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceCreativeHourlyReportLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -27,17 +26,17 @@ public class BytedanceCreativeHourlyReportLoadJob {
     @Autowired
     private IReportService reportService;
     static ExecutorService executorService = Executors.newFixedThreadPool(4);
-
     @XxlJob("bytedanceCreativeHourlyReport")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("头条时报数据获取开始");
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条时报数据获取开始");
         Date now = new Date();
         String hour = DateUtils.getNowHour(now);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条小时数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条小时数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         tokens.forEach(token -> executorService.submit(() -> {
             if ("00".equals(hour)) {
@@ -47,7 +46,6 @@ public class BytedanceCreativeHourlyReportLoadJob {
             }
             reportService.getAdvertiserCreativeReport(token, now, now, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
         }));
-        XxlJobLogger.log("头条时报数据获取结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条时报数据获取结束");
     }
 }

+ 9 - 10
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyMaterialReportJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -27,18 +26,19 @@ public class BytedanceDailyMaterialReportJob {
     private IBytedanceReportService bytedanceReportService;
 
     @XxlJob("bytedanceDailyMaterialReportJob")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         Date getDate2 = DateUtils.addDay(new Date(), -2);
         String date2 = DateUtils.formatDate(getDate2);
         Long start = System.currentTimeMillis();
         Date getDate = DateUtils.addDay(new Date(), -1);
         String date = DateUtils.formatDate(getDate);
-        XxlJobLogger.log("头条获取素材报表数据任务开始,任务时间:" + date2 + "~" + date);
+        XxlJobHelper.log("头条获取素材报表数据任务开始,任务时间:" + date2 + "~" + date);
 
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("头条获取素材报表数据任务执行失败:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("头条获取素材报表数据任务执行失败:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         CountDownLatch countDownLatch = new CountDownLatch(tokens.size());
 
@@ -47,13 +47,13 @@ public class BytedanceDailyMaterialReportJob {
                 public void run() {
                     try {
                         //获取头条素材报表两天前的数据
-                        XxlJobLogger.log("账户"+token.getAccountId() + "素材报表数据任务开始,任务时间:" + date + "~" + date2);
+                        XxlJobHelper.log("账户"+token.getAccountId() + "素材报表数据任务开始,任务时间:" + date + "~" + date2);
                         bytedanceReportService.bytedanceMaterialReport(token, date2, date2);
                         bytedanceReportService.bytedanceMaterialReport(token, date, date);
                         //获取头条素材报表数据
                         bytedanceReportService.bytedanceVideoMaterialReport(token, date2, date2);
                         bytedanceReportService.bytedanceVideoMaterialReport(token, date, date);
-                        XxlJobLogger.log("账户"+token.getAccountId() + "素材报表数据任务完成,任务时间:" + date + "~" + date2);
+                        XxlJobHelper.log("账户"+token.getAccountId() + "素材报表数据任务完成,任务时间:" + date + "~" + date2);
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
@@ -68,11 +68,10 @@ public class BytedanceDailyMaterialReportJob {
             e.printStackTrace();
         }
         Long end = System.currentTimeMillis();
-        XxlJobLogger.log("头条素材数据获取耗时:{}毫秒", end - start);
+        XxlJobHelper.log("头条素材数据获取耗时:{}毫秒", end - start);
 
         videoReportDailyService.videoInfoList(date, date);
         videoReportDailyService.videoInfoList(date2, date2);
-        return ReturnT.SUCCESS;
     }
 
     @Autowired

+ 7 - 11
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyMaterialReportRetryJob.java

@@ -5,9 +5,8 @@ import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportMaterialRetry;
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -27,9 +26,8 @@ public class BytedanceDailyMaterialReportRetryJob {
     private IByteDanceVideoReportDailyService byteDanceVideoReportDailyService;
 
     @XxlJob("bytedanceDailyMaterialReportRetryJob")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("头条素材报表重试定时任务开始");
-
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条素材报表重试定时任务开始");
         List<BytedanceReportMaterialRetry> retryList = bytedanceReportService.getRetryList();
         retryList.forEach(retry -> {
             executorService.submit(new Runnable() {
@@ -41,7 +39,7 @@ public class BytedanceDailyMaterialReportRetryJob {
                         Long accountId = retry.getAccountId();
                         Integer type = retry.getType();
                         CtopOauthToken token = tokenService.getOauthTokenByAccountId(String.valueOf(accountId));
-                        XxlJobLogger.log("头条素材报表重试定时任务开始,当前accountId为:" + token.getAccountId());
+                        XxlJobHelper.log("头条素材报表重试定时任务开始,当前accountId为:" + token.getAccountId());
                         Long days = DateUtils.getDiscrepantDays(startDate, endDate); //间隔天数
                         String start = null;
                         String end = null;
@@ -50,13 +48,13 @@ public class BytedanceDailyMaterialReportRetryJob {
                             end = start;
                             //获取头条素材报表数据
                             int code = bytedanceReportService.bytedanceMaterialReportRetry(type, token, start, end);
-                            XxlJobLogger.log("头条素材报表重试定时任务完成,当前accountId为:" + token.getAccountId() + "code:" + code);
+                            XxlJobHelper.log("头条素材报表重试定时任务完成,当前accountId为:" + token.getAccountId() + "code:" + code);
                             if (code == 200 || code == 1) {
                                 if (type == 1) {
-                                    XxlJobLogger.log("头条素材报表重试定时任务清洗数据开始,当前accountId为:" + token.getAccountId());
+                                    XxlJobHelper.log("头条素材报表重试定时任务清洗数据开始,当前accountId为:" + token.getAccountId());
                                     //重试成功清洗数据
                                     byteDanceVideoReportDailyService.videoInfoListByAccountId(start, end, accountId);
-                                    XxlJobLogger.log("头条素材报表重试定时任务清洗数据完成,当前accountId为:" + token.getAccountId());
+                                    XxlJobHelper.log("头条素材报表重试定时任务清洗数据完成,当前accountId为:" + token.getAccountId());
                                 }
                             }
                         }
@@ -67,8 +65,6 @@ public class BytedanceDailyMaterialReportRetryJob {
                 }
             });
         });
-
-        return ReturnT.SUCCESS;
     }
 
 

+ 0 - 85
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyPlayableReportHistoryJob.java

@@ -1,85 +0,0 @@
-package cn.com.ctop.job.bytedance.handler;
-
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.toutiao.modules.report.service.IBytedanceInterfaceService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
-import org.apache.commons.lang.StringUtils;
-import org.jeecg.common.util.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-@Component
-public class BytedanceDailyPlayableReportHistoryJob {
-
-    static ExecutorService executorService = Executors.newFixedThreadPool(4);
-    @Autowired
-    private ICtopOauthTokenService tokenService;
-    @Autowired
-    private IBytedanceInterfaceService bytedanceInterfaceService;
-
-    @XxlJob("bytedanceDailyPlayableReportHistoryJob")
-    public ReturnT<String> execute(String param) throws Exception {
-        if(StringUtils.isBlank(param)){
-            XxlJobLogger.log("参数为空");
-            return ReturnT.FAIL;
-        }
-
-        String[] args = param.split(",");
-        String startDate = args[0];
-        String endDate = args[1];
-
-        if (StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)){
-            XxlJobLogger.log("参数不正确"+ param);
-            return ReturnT.FAIL;
-        }
-        try {
-            XxlJobLogger.log("头条获取试玩报表数据任务执行开始");
-            Long starttime = System.currentTimeMillis();
-            List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
-            if (null == tokens || tokens.size() <= 0) {
-                XxlJobLogger.log("头条获取试玩报表数据任务执行失败:未获取到可用的token");
-                return ReturnT.FAIL;
-            }
-
-            tokens.forEach(token -> {
-                        executorService.submit(new Runnable() {
-                            @Override
-                            public void run() {
-                                try {
-                                    //间隔天数
-                                    Long days = DateUtils.getDiscrepantDays(startDate, endDate);
-                                    String start = null;
-                                    String end = null;
-                                    for (int i = 0; i <= days; i++) {
-                                        start = DateUtils.addDay(startDate, i);
-                                        end = start;
-                                        //获取头条试玩报表数据
-                                        bytedanceInterfaceService.bytedancePlayableReport(token, start, end);
-                                    }
-                                } catch (Exception e) {
-                                    e.printStackTrace();
-                                }
-                            }
-                        });
-                    }
-            );
-            ////
-            Long endtime = System.currentTimeMillis();
-            XxlJobLogger.log("头条获取素材报表数据任务执行结束,执行耗时:{}秒", (endtime - starttime) / 1000);
-        } catch (Exception e) {
-            XxlJobLogger.log("头条获取素材报表数据任务执行结失败");
-            e.printStackTrace();
-            return ReturnT.FAIL;
-        }
-        return ReturnT.SUCCESS;
-    }
-
-}

+ 10 - 13
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyPlayableReportJob.java

@@ -3,10 +3,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceInterfaceService;
-import cn.com.ctop.toutiao.modules.report.service.IBytedanceReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -18,7 +16,6 @@ import java.util.concurrent.Executors;
 
 @Component
 public class BytedanceDailyPlayableReportJob {
-
     static ExecutorService executorService = Executors.newFixedThreadPool(4);
     @Autowired
     private ICtopOauthTokenService tokenService;
@@ -26,18 +23,19 @@ public class BytedanceDailyPlayableReportJob {
     private IBytedanceInterfaceService bytedanceInterfaceService;
 
     @XxlJob("bytedanceDailyPlayableReportJob")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         Date getDate2 = DateUtils.addDay(new Date(), -2);
         String date2 = DateUtils.formatDate(getDate2);
 
         Date getDate = DateUtils.addDay(new Date(), -1);
         String date = DateUtils.formatDate(getDate);
-        XxlJobLogger.log("头条获取试玩报表数据任务开始,任务时间:" + date2 + "~" + date);
+        XxlJobHelper.log("头条获取试玩报表数据任务开始,任务时间:" + date2 + "~" + date);
 
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.size() <= 0) {
-            XxlJobLogger.log("头条获取试玩报表数据任务执行失败:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("头条获取试玩报表数据任务执行失败:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
 
         tokens.forEach(token -> {
@@ -46,14 +44,14 @@ public class BytedanceDailyPlayableReportJob {
                 public void run() {
                     try {
                         //获取头条素材报表两天前的数据
-                        XxlJobLogger.log("账户"+token.getAccountId() + "试玩报表数据任务开始,任务时间:" + date2 + "~" + date2);
+                        XxlJobHelper.log("账户"+token.getAccountId() + "试玩报表数据任务开始,任务时间:" + date2 + "~" + date2);
                         bytedanceInterfaceService.bytedancePlayableReport(token, date2, date2);
-                        XxlJobLogger.log("账户"+token.getAccountId() + "试玩报表数据任务完成,任务时间:" + date2 + "~" + date2);
+                        XxlJobHelper.log("账户"+token.getAccountId() + "试玩报表数据任务完成,任务时间:" + date2 + "~" + date2);
 
                         //获取头条素材报表数据
-                        XxlJobLogger.log("账户"+token.getAccountId() + "试玩报表数据任务开始,任务时间:" + date + "~" + date);
+                        XxlJobHelper.log("账户"+token.getAccountId() + "试玩报表数据任务开始,任务时间:" + date + "~" + date);
                         bytedanceInterfaceService.bytedancePlayableReport(token, date, date);
-                        XxlJobLogger.log("账户"+token.getAccountId() + "试玩报表数据任务完成,任务时间:" + date + "~" + date);
+                        XxlJobHelper.log("账户"+token.getAccountId() + "试玩报表数据任务完成,任务时间:" + date + "~" + date);
                     } catch (Exception e) {
                         e.printStackTrace();
                     } finally {
@@ -61,7 +59,6 @@ public class BytedanceDailyPlayableReportJob {
                 }
             });
         });
-        return ReturnT.SUCCESS;
     }
 
 

+ 5 - 9
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceDailyPlayableReportRetryJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.entity.BytedanceReportPlayableRetry;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceInterfaceService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -25,9 +24,8 @@ public class BytedanceDailyPlayableReportRetryJob {
 
 
     @XxlJob("bytedanceDailyPlayableReportRetryJob")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("头条试玩报表重试定时任务开始");
-
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条试玩报表重试定时任务开始");
         List<BytedanceReportPlayableRetry> retryList = bytedanceInterfaceService.getRetryList();
         retryList.forEach(retry -> {
             executorService.submit(new Runnable() {
@@ -39,7 +37,7 @@ public class BytedanceDailyPlayableReportRetryJob {
                         Long accountId = retry.getAccountId();
                         Integer type = retry.getType();
                         CtopOauthToken token = tokenService.getOauthTokenByAccountId(String.valueOf(accountId));
-                        XxlJobLogger.log("头条试玩报表重试定时任务开始,当前accountId为:" + token.getAccountId());
+                        XxlJobHelper.log("头条试玩报表重试定时任务开始,当前accountId为:" + token.getAccountId());
                         Long days = DateUtils.getDiscrepantDays(startDate, endDate); //间隔天数
                         String start = null;
                         String end = null;
@@ -48,17 +46,15 @@ public class BytedanceDailyPlayableReportRetryJob {
                             end = start;
                             //获取头条素材报表数据
                             int code = bytedanceInterfaceService.bytedancePlayableReportRetry(type, token, start, end);
-                            XxlJobLogger.log("头条试玩报表重试定时任务完成,当前accountId为:" + token.getAccountId() + "code:" + code);
+                            XxlJobHelper.log("头条试玩报表重试定时任务完成,当前accountId为:" + token.getAccountId() + "code:" + code);
 
                         }
                     } catch (Exception e) {
                         e.printStackTrace();
-                    } finally {
                     }
                 }
             });
         });
-        return ReturnT.SUCCESS;
     }
 
 

+ 0 - 24
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceEffectVideoJob.java

@@ -1,24 +0,0 @@
-package cn.com.ctop.job.bytedance.handler;
-
-import cn.com.ctop.toutiao.modules.material.service.IBytedanceEffectVideoInfoService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import org.jeecg.common.util.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-
-@Component
-public class BytedanceEffectVideoJob {
-    @Autowired
-    private IBytedanceEffectVideoInfoService bytedanceEffectVideoInfoService;
-    @XxlJob("bytedanceEffectVideoJob")
-    public ReturnT<String> execute(String date) throws Exception {
-        if(null == date|| "".equalsIgnoreCase(date.trim())|| "null".equalsIgnoreCase(date.trim())){
-            date = DateUtils.formatDate(DateUtils.addDay(new Date(),-14));
-        }
-        bytedanceEffectVideoInfoService.loadEffectVideo(date);
-        return ReturnT.SUCCESS;
-    }
-}

+ 7 - 8
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceFlowFundJob.java

@@ -3,9 +3,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IBytedanceFundDailyService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -23,16 +22,16 @@ public class BytedanceFlowFundJob {
     private IBytedanceFundDailyService bytedanceFundDailyService;
     static ExecutorService executorService = Executors.newFixedThreadPool(4);
     @XxlJob("bytedanceFlowFund")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("头条账户流水数据获取开始");
+    public void execute() throws Exception {
+        XxlJobHelper.log("头条账户流水数据获取开始");
         Date getDate = new Date();
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("头条账户流水数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("头条账户流水数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         tokens.forEach(token -> executorService.submit(() -> bytedanceFundDailyService.loadFundDataByPage(token, DateUtils.formatDate(getDate), DateUtils.formatDate(getDate),1)));
-        XxlJobLogger.log("头条账户流水数据获取结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条账户流水数据获取结束");
     }
 }

+ 3 - 5
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMaterialsLoadJob.java

@@ -3,9 +3,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -25,7 +24,7 @@ public class BytedanceMaterialsLoadJob {
     private IByteDanceAdvertiserDataService advertiserDataService;
 
     @XxlJob("bytedanceMaterialsLoadJob")
-    public ReturnT<String> execute(String param) throws Exception{
+    public void execute() throws Exception{
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         countDownLatch = new CountDownLatch(tokens.size());
         tokens.forEach(token -> {
@@ -48,7 +47,6 @@ public class BytedanceMaterialsLoadJob {
         } catch (InterruptedException e) {
             e.printStackTrace();
         }
-        XxlJobLogger.log("物料数据同步完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("物料数据同步完成");
     }
 }

+ 4 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceMonitoringLinksCheckJob.java

@@ -11,9 +11,8 @@ import cn.com.ctop.toutiao.modules.material.entity.ByteDanceAdvertisePlan;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertisePlanService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
 import com.alibaba.fastjson.JSONObject;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -38,10 +37,10 @@ public class BytedanceMonitoringLinksCheckJob {
     private ICtopOauthTokenService tokenService;
 
     @XxlJob("bytedanceMonitoringLinksCheckJob")
-    public ReturnT<String> execute(String param) throws Exception{
+    public void execute() throws Exception{
         List<Project> projects = projectService.listByMediaType(3,1);
         if(null==projects||projects.isEmpty()){
-            return ReturnT.SUCCESS;
+            return ;
         }
         for (Project project:projects) {
             List<UserAllocation>allocations = allocationService.getByParams(project.getId(),null,0);
@@ -62,8 +61,7 @@ public class BytedanceMonitoringLinksCheckJob {
                 }
             }
         }
-        XxlJobLogger.log("监测链接检查完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("监测链接检查完成");
     }
 
     private void checkMonitorLink(JSONObject data, ByteDanceAdvertisePlan plan, UserAllocation allocation) {

+ 0 - 57
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceOperationRecordJob.java

@@ -1,57 +0,0 @@
-/*
-package cn.com.ctop.job.bytedance.handler;
-
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.toutiao.modules.material.service.IBytedanceBidWarningService;
-import cn.com.ctop.toutiao.modules.report.service.IBytedanceInterfaceService;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
-import org.apache.commons.lang.StringUtils;
-import org.jeecg.common.util.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.Date;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-@Component
-public class BytedanceOperationRecordJob {
-    @Autowired
-    private IBytedanceInterfaceService bytedanceInterfaceService;
-    @Autowired
-    private ICtopOauthTokenService tokenService;
-    static ExecutorService executorService = Executors.newFixedThreadPool(8);
-
-    @XxlJob("bytedanceOperationRecordJob")
-    public ReturnT<String> execute(String startDate, String endDate) throws Exception {
-        if(StringUtils.isBlank(startDate) || StringUtils.isBlank(endDate)){
-            return ReturnT.FAIL;
-        }
-
-        List<CtopOauthToken> tokens = tokenService.selectKuaiShouToken();
-        if (null == tokens || tokens.size() <= 0) {
-            XxlJobLogger.log("定时获取头条操作记录数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
-        }
-        tokens.forEach(token -> {
-            executorService.submit(new Runnable() {
-                @Override
-                public void run() {
-                    XxlJobLogger.log("定时获取头条操作记录数据开始,accountId:" + token.getAccountId() + "操作目标为:" + 2 + "时间:" + startDate + "~" + endDate);
-                    bytedanceInterfaceService.searchLog(token.getAccountId(), token, 2, startDate, endDate);
-                    XxlJobLogger.log("定时获取头条操作记录数据结束,accountId:" + token.getAccountId() + "操作目标为:" + 2 + "时间:" + startDate + "~" + endDate);
-
-                    XxlJobLogger.log("定时获取头条操作记录数据开始,accountId:" + token.getAccountId() + "操作目标为:" + 3 + "时间:" + startDate + "~" + endDate);
-                    bytedanceInterfaceService.searchLog(token.getAccountId(), token, 3, startDate, endDate);
-                    XxlJobLogger.log("定时获取头条操作记录数据结束,accountId:" + token.getAccountId() + "操作目标为:" + 3 + "时间:" + startDate + "~" + endDate);
-                }
-            });
-        });
-        return ReturnT.SUCCESS;
-    }
-}
-*/

+ 5 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanDailyReportLoadJob.java

@@ -9,9 +9,8 @@ import cn.com.ctop.toutiao.modules.report.entity.BytedancePlanDailyReport;
 import cn.com.ctop.toutiao.modules.report.service.IBytedancePlanDailyReportService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -36,15 +35,16 @@ public class BytedancePlanDailyReportLoadJob {
 
 
     @XxlJob("bytedancePlanDailyReport")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         Date getDate = DateUtils.addDay(new Date(), -1);
         //次留用
         Date getDate2 = DateUtils.addDay(new Date(), -2);
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("定时获取头条数据异常:为获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("定时获取头条数据异常:为获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         tokens.forEach(token -> reportService.getAdvertiserPlanReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY));
         formatZybData(215, getDate);
@@ -57,7 +57,6 @@ public class BytedancePlanDailyReportLoadJob {
 
         //跑次留
         tokens.forEach(token -> reportService.getAdvertiserPlanReport(token, getDate2, getDate2, CtopAdConstant.BYTEDANCE_REPORT_TYPE_DAILY));
-        return ReturnT.SUCCESS;
     }
 
     private void formatZybData(Integer projectId, Date getDate) {

+ 6 - 8
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanHourlyReportLoadJob.java

@@ -5,9 +5,8 @@ import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IBytedancePlanDailyReportService;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -37,8 +36,8 @@ public class BytedancePlanHourlyReportLoadJob {
 
 
     @XxlJob("bytedancePlanHourlyReport")
-    public ReturnT<String> execute(String param) {
-        XxlJobLogger.log("头条时报数据获取开始");
+    public void execute() {
+        XxlJobHelper.log("头条时报数据获取开始");
         Date getDate = new Date();
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH");
         String hour = simpleDateFormat.format(getDate);
@@ -53,7 +52,7 @@ public class BytedancePlanHourlyReportLoadJob {
                     }
                     reportService.getAdvertiserPlanReport(token, getDate, getDate, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
                 } catch (Exception e) {
-                    XxlJobLogger.log(e.getMessage());
+                    XxlJobHelper.log(e.getMessage());
                 } finally {
                     countDownLatch.countDown();
                 }
@@ -62,7 +61,7 @@ public class BytedancePlanHourlyReportLoadJob {
         try {
             countDownLatch.await();
         } catch (InterruptedException e) {
-            XxlJobLogger.log(e.getMessage());
+            XxlJobHelper.log(e.getMessage());
         }
         //清洗缘多多数据渠道号
         if ("00".equals(hour)) {
@@ -73,7 +72,6 @@ public class BytedancePlanHourlyReportLoadJob {
         planDailyReportService.cleanYddHourlyChannelCode(113, getDate);
         planDailyReportService.cleanYddHourlyChannelCode(419, getDate);
 
-        XxlJobLogger.log("头条时报数据获取结束");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条时报数据获取结束");
     }
 }

+ 3 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanLoadJob.java

@@ -3,9 +3,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -20,13 +19,11 @@ public class BytedancePlanLoadJob {
     @Autowired
     private IByteDanceAdvertiserDataService advertiserDataService;
     static ExecutorService executorService = Executors.newFixedThreadPool(4);
-
     @XxlJob("bytedancePlanLoadJob")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         tokens.forEach(token -> executorService.submit(() -> advertiserDataService.getAdvertiserPlan(token, "", null, null)));
-        XxlJobLogger.log("头条全量计划数据获取完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条全量计划数据获取完成");
     }
 }

+ 3 - 5
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedancePlanRealTimeLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -28,13 +27,12 @@ public class BytedancePlanRealTimeLoadJob {
     private IByteDanceAdvertiserDataService advertiserDataService;
 
     @XxlJob("bytedanceRealTimePlanInfo")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         //1:查询当日数据
         List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
         String nowDate = DateUtils.formatDate();
         tokens.forEach(token -> executorService.submit(() -> advertiserDataService.getAdvertiserPlan(token, "", nowDate, nowDate)));
-        XxlJobLogger.log("头条全量计划数据获取完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("头条全量计划数据获取完成");
     }
 
 

+ 0 - 46
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceRuleDataJobDistribute.java

@@ -1,46 +0,0 @@
-package cn.com.ctop.job.bytedance.handler;
-
-import cn.com.ctop.common.module.entity.CtopOauthToken;
-import cn.com.ctop.common.module.service.ICtopOauthTokenService;
-import cn.com.ctop.common.module.utils.HttpUtils;
-import com.xxl.job.core.biz.model.ReturnT;
-import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-import java.util.List;
-
-@Component
-public class BytedanceRuleDataJobDistribute {
-    @Autowired
-    private ICtopOauthTokenService tokenService;
-    @XxlJob("bytedancePlanRuleDataJobDistribute")
-    public ReturnT<String> bytedancePlanRuleDataJobDistribute(String params) throws Exception {
-        List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
-        if(null!=tokens&&!tokens.isEmpty()){
-            //TODO 指定相应的任务id
-            String planUrl = "http://139.186.29.76:8090/jobinfo/trigger?id=87&executorParam=";
-            for(CtopOauthToken token:tokens){
-                String planResult = HttpUtils.httpPostRequest(planUrl+token.getAccountId(),new HashMap<>(),new HashMap<>());
-                XxlJobLogger.log("accountId:{};message:{}",token.getAccountId(),planResult);
-            }
-        }
-        return ReturnT.SUCCESS;
-    }
-
-    @XxlJob("bytedanceAccountRuleDataJobDistribute")
-    public ReturnT<String> bytedanceAccountRuleDataJobDistribute(String params) throws Exception {
-        List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
-        if(null!=tokens&&!tokens.isEmpty()){
-            //TODO
-            String accountUrl = "http://139.186.29.76:8090/jobinfo/trigger?id=87&executorParam=";
-            for(CtopOauthToken token:tokens){
-                String accountResult = HttpUtils.httpPostRequest(accountUrl+token.getAccountId(),new HashMap<>(),new HashMap<>());
-                XxlJobLogger.log("accountId:{};message:{}",token.getAccountId(),accountResult);
-            }
-        }
-        return ReturnT.SUCCESS;
-    }
-}

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceSameDayCreativeLoadJob.java

@@ -4,7 +4,6 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceCreativeService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,10 +22,9 @@ public class BytedanceSameDayCreativeLoadJob {
     @Autowired
     private IByteDanceCreativeService byteDanceCreativeService;
     @XxlJob("bytedanceSameDayCreative")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
         String getDateStr = DateUtils.formatDate(new Date());
         tokens.forEach(token -> executorService.submit(() -> byteDanceCreativeService.getAdvertiserCreative(token, null,getDateStr)));
-        return ReturnT.SUCCESS;
     }
 }

+ 3 - 5
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceTodayPlaneLoadJob.java

@@ -3,9 +3,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -29,7 +28,7 @@ public class BytedanceTodayPlaneLoadJob {
     static ExecutorService executorService = Executors.newFixedThreadPool(15);
 
     @XxlJob("bytedanceTodayPlaneLoadJob")
-    public ReturnT<String> execute(String params) throws Exception {
+    public void execute() throws Exception {
         Date getDate = new Date();
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
         String dateString = dateFormat.format(getDate);
@@ -42,7 +41,6 @@ public class BytedanceTodayPlaneLoadJob {
                 e.printStackTrace();
             }
         }));
-        XxlJobLogger.log("当日计划数据同步完成完成");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("当日计划数据同步完成完成");
     }
 }

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceVideoDailyReportLoadJob.java

@@ -1,7 +1,6 @@
 package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -12,13 +11,12 @@ import java.util.Date;
 @Component
 public class BytedanceVideoDailyReportLoadJob {
     @XxlJob("bytedanceVideoDailyReportLoadJob")
-    public ReturnT<String> execute(String params) throws Exception {
+    public void execute() throws Exception {
         for(int i=0;i<3;i++){
             Date getDate = DateUtils.addDay(new Date(), -i);
             String date = DateUtils.formatDate(getDate);
             videoReportDailyService.videoInfoList(date, date);
         }
-        return ReturnT.SUCCESS;
     }
 
     @Autowired

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceVideoInfoLoadJob.java

@@ -4,7 +4,6 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.material.service.IByteDanceAdvertiserDataService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -22,9 +21,8 @@ public class BytedanceVideoInfoLoadJob {
     private IByteDanceAdvertiserDataService advertiserDataService;
 
     @XxlJob("bytedanceVideoInfo")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         List<CtopOauthToken> tokens = tokenService.getTokenListByType(CtopAdConstant.PLATFORM_TYPE_BYTEDANCE);
         tokens.forEach(token -> executorService.submit(() -> advertiserDataService.getMaterialList(token)));
-        return ReturnT.SUCCESS;
     }
 }

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceVideoReportCleanJob.java

@@ -1,7 +1,6 @@
 package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.toutiao.modules.report.service.IByteDanceVideoReportDailyService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,12 +14,11 @@ public class BytedanceVideoReportCleanJob {
     private IByteDanceVideoReportDailyService videoReportDailyService;
 
     @XxlJob("bytedanceVideoReportCleanJob")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         for(int i=0;i<2;i++){
             Date getDate = DateUtils.addDay(new Date(), -i);
             String date = DateUtils.formatDate(getDate);
             videoReportDailyService.videoInfoList(date, date);
         }
-        return ReturnT.SUCCESS;
     }
 }

+ 7 - 11
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceYesterdayAdvertiserHourlyLoadJob.java

@@ -4,9 +4,8 @@ import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.common.module.utils.CtopAdConstant;
 import cn.com.ctop.toutiao.modules.report.service.IReportService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -19,34 +18,31 @@ import java.util.concurrent.Executors;
  *  Created by JQ.bi on 2020.09.03
  */
 public class BytedanceYesterdayAdvertiserHourlyLoadJob {
-
     @Autowired
     private ICtopOauthTokenService tokenService;
-
     @Autowired
     private IReportService reportService;
-
     private ExecutorService executorService = Executors.newFixedThreadPool(5);
     @XxlJob("byteDanceAdvertiserHourlyReport")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         //查询需要拉取数据的账户token
         List<CtopOauthToken> tokens = tokenService.selectToutiaoToken();
         if (null == tokens || tokens.isEmpty()) {
-            XxlJobLogger.log("获取昨日头条小时数据异常:未获取到可用的token");
-            return ReturnT.FAIL;
+            XxlJobHelper.log("获取昨日头条小时数据异常:未获取到可用的token");
+            XxlJobHelper.handleFail();
+            return ;
         }
         Date yesterday = DateUtils.parseDate(DateUtils.getAnotherDay("yy-MM-dd", DateUtils.getNowDate("yy-MM-dd"), -1), "yy-MM-dd");
         tokens.forEach(it ->executorService.submit(() -> {
             try {
                 reportService.getAdvertiserReport(it, yesterday, yesterday, CtopAdConstant.BYTEDANCE_REPORT_TYPE_HOURLY);
             } catch (Exception e) {
-                XxlJobLogger.log("获取昨日头条小时数据异常:拉取数据异常");
-                XxlJobLogger.log(e.getMessage());
+                XxlJobHelper.log("获取昨日头条小时数据异常:拉取数据异常");
+                XxlJobHelper.log(e.getMessage());
             }
         }));
         if(!executorService.isShutdown()){
             executorService.shutdown();
         }
-        return ReturnT.SUCCESS;
     }
 }

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckDataStateJob.java

@@ -3,7 +3,6 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.check.component.execute.GroovyScriptExecutor;
 import cn.com.ctop.check.entity.CtopCheckTaskList;
 import cn.com.ctop.check.service.ICtopCheckTaskListService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -25,12 +24,11 @@ public class CheckDataStateJob {
      * 检查任务执行结果
      */
     @XxlJob(jobName)
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         //查询需要检查的任务列表
         List<CtopCheckTaskList> ctopCheckTaskList= checkTaskListService.queryExecuteList(jobName);
         if(ctopCheckTaskList!=null){
             ctopCheckTaskList.forEach(it-> groovyScriptExecutor.execute(it));
         }
-        return ReturnT.SUCCESS;
     }
 }

+ 1 - 3
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/CheckExecuteStateJob.java

@@ -3,7 +3,6 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.check.component.execute.GroovyScriptExecutor;
 import cn.com.ctop.check.entity.CtopCheckTaskList;
 import cn.com.ctop.check.service.ICtopCheckTaskListService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -25,12 +24,11 @@ public class CheckExecuteStateJob {
      * 检查任务执行结果
      */
     @XxlJob(jobName)
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         //查询需要检查的任务列表
         List<CtopCheckTaskList> ctopCheckTaskList= checkTaskListService.queryExecuteList(jobName);
         if(ctopCheckTaskList!=null){
             ctopCheckTaskList.forEach(it-> groovyScriptExecutor.execute(it));
         }
-        return ReturnT.SUCCESS;
     }
 }

+ 5 - 14
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/RuleDataAccountCleanJob.java

@@ -7,9 +7,8 @@ package cn.com.ctop.job.bytedance.handler;
 import cn.com.ctop.common.module.entity.CtopOauthToken;
 import cn.com.ctop.common.module.service.ICtopOauthTokenService;
 import cn.com.ctop.toutiao.modules.report.service.IRuleByteDanceAccountService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -29,17 +28,9 @@ public class RuleDataAccountCleanJob {
     private ExecutorService executorService = Executors.newFixedThreadPool(10);
 
     @XxlJob("ruleDataAccountCleanJob")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("规则预警账户维度数据开始清洗");
-        if (null == param || "".equals(param.trim())) {
-            List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
-            tokens.forEach(token -> executorService.submit(()->ruleByteDanceAccountService.cleanRuleDataAccount(token.getAccountId())));
-            return ReturnT.SUCCESS;
-        }else{
-            Long accountId = Long.parseLong(param);
-            ruleByteDanceAccountService.cleanRuleDataAccount(accountId);
-            XxlJobLogger.log("规则预警账户维度数据清洗结束");
-            return ReturnT.SUCCESS;
-        }
+    public void execute() throws Exception {
+        XxlJobHelper.log("规则预警账户维度数据开始清洗");
+        List<CtopOauthToken> tokens = oauthTokenService.selectToutiaoToken();
+        tokens.forEach(token -> executorService.submit(()->ruleByteDanceAccountService.cleanRuleDataAccount(token.getAccountId())));
     }
 }

+ 7 - 9
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/SendDailyUReportJob.java

@@ -1,12 +1,11 @@
 package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.common.module.entity.UReportSubscriber;
+import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
 import cn.com.ctop.common.module.service.ICtopCorpWexinUserService;
 import cn.com.ctop.common.module.service.IUReportExportService;
 import cn.com.ctop.common.module.service.IUReportService;
-import com.xxl.job.core.biz.model.ReturnT;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import cn.com.ctop.common.module.message.handle.impl.EmailSendMsgHandle;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -29,7 +28,7 @@ public class SendDailyUReportJob {
      * 检查任务执行结果
      */
     @XxlJob("sendDailyUReportJob")
-    public ReturnT<String> execute(String param) throws Exception {
+    public void execute() throws Exception {
         uReportService.uReportList().forEach(uReport->{
              List<UReportSubscriber> uReportSubscriber = uReportService.getUReportSubscriberByFileId(uReport.getString("id"));
              if(!uReportSubscriber.isEmpty()){
@@ -47,12 +46,11 @@ public class SendDailyUReportJob {
         });
         //发完全部订阅,删除文件
         File file =new File("/data/file/report"+ File.separator + "uReport");
-            File[] files=file.listFiles();
-            if(files!=null&&files.length>0){
-                for (File f: files){
-                    f.delete();
-                }
+        File[] files=file.listFiles();
+        if(files!=null&&files.length>0){
+            for (File f: files){
+                f.delete();
             }
-        return ReturnT.SUCCESS;
+        }
     }
 }

+ 4 - 6
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/WechatApproveAttendanceJob.java

@@ -2,10 +2,9 @@ package cn.com.ctop.job.bytedance.handler;
 
 
 import cn.com.ctop.oa.modules.service.IWechatNoListService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.enums.NoEn;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -33,12 +32,11 @@ public class WechatApproveAttendanceJob {
      * @author ZHAOXA
      */
     @XxlJob("wechatApproveAttendanceJob")
-    public ReturnT<String> execute(String param) throws Exception {
-        XxlJobLogger.log("--------异常考勤审批数据入库 start ");
+    public void execute() throws Exception {
+        XxlJobHelper.log("--------异常考勤审批数据入库 start ");
         String initMonth = DateUtils.initDateByMonth();
         //更新审批状态表
         wechatNoListService.getNoDateByNo(DateUtils.getMonthBefore(DateUtils.NEW_FORMAT, initMonth, -1), initMonth, NoEn.NO0.valueStr());
-        XxlJobLogger.log("--------异常考勤审批数据入库 end ");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("--------异常考勤审批数据入库 end ");
     }
 }

+ 5 - 7
module-job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/WechatAttendanceJob.java

@@ -3,10 +3,9 @@ package cn.com.ctop.job.bytedance.handler;
 
 import cn.com.ctop.oa.modules.service.IWechatCheckinDataService;
 import cn.com.ctop.oa.modules.service.IWechatUserListService;
-import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.enums.NoEn;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import com.xxl.job.core.log.XxlJobLogger;
 import org.jeecg.common.util.DateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -29,15 +28,14 @@ public class WechatAttendanceJob {
      * @author ZHAOXA
      */
     @XxlJob("wechatAttendanceJob")
-    public ReturnT<String> execute(String params) throws Exception {
-        XxlJobLogger.log("--------考勤和人员数据入库 start ");
+    public void execute() throws Exception {
+        XxlJobHelper.log("--------考勤和人员数据入库 start ");
         String beforeDay = DateUtils.getLastDay(DateUtils.formatDate(new Date()), NoEn.NO1.valueInt());
         //更新员工打卡明细表
         wechatCheckinDataService.getCheckinData(beforeDay + " 00:00:00", beforeDay + " 23:59:59");
-        XxlJobLogger.log("--------考勤数据入库 end ");
+        XxlJobHelper.log("--------考勤数据入库 end ");
         //更新人员信息表
         wechatUserInfoService.getUserList();
-        XxlJobLogger.log("--------人员数据入库 end ");
-        return ReturnT.SUCCESS;
+        XxlJobHelper.log("--------人员数据入库 end ");
     }
 }

+ 0 - 236
module-job-distribute/pom.xml

@@ -1,236 +0,0 @@
-<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>jeecg-boot-parent</artifactId>
-        <groupId>org.jeecgframework.boot</groupId>
-        <version>2.0.2</version>
-    </parent>
-    <groupId>cn.com.ctop</groupId>
-    <artifactId>module-job-distribute</artifactId>
-    <version>2.0.2</version>
-    <name>module-job-distribute</name>
-
-    <properties>
-        <java.version>1.8</java.version>
-        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
-    </properties>
-
-    <repositories>
-        <repository>
-            <id>aliyun</id>
-            <name>aliyun Repository</name>
-            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-        <repository>
-            <id>jeecg</id>
-            <name>jeecg Repository</name>
-            <url>http://maven.jeecg.org/nexus/content/repositories/jeecg</url>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </repository>
-        <repository>
-            <id>com.e-iceblue</id>
-            <name>e-iceblue</name>
-            <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
-        </repository>
-    </repositories>
-
-    <dependencies>
-        <!-- rabbitmq 依赖jar包-->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-amqp</artifactId>
-            <version>1.5.2.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jeecgframework.boot</groupId>
-            <artifactId>jeecg-boot-base-common</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>jcl-over-slf4j</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-media</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-common</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-kuaishou</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-toutiao</artifactId>
-            <version>2.0.2</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-oa</artifactId>
-            <version>2.0.2</version>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun.oss</groupId>
-            <artifactId>aliyun-sdk-oss</artifactId>
-            <version>3.5.0</version>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-csv -->
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-csv</artifactId>
-            <version>1.5</version>
-        </dependency>
-        <!--签章-->
-        <dependency>
-            <groupId>org.bouncycastle</groupId>
-            <artifactId>bcprov-jdk15on</artifactId>
-            <version>1.49</version>
-        </dependency>
-        <dependency>
-            <groupId>org.bouncycastle</groupId>
-            <artifactId>bcpkix-jdk15on</artifactId>
-            <version>1.49</version>
-        </dependency>
-        <dependency>
-            <groupId>org.jeecgframework.boot</groupId>
-            <artifactId>module-ctop</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi</artifactId>
-            <version>3.17</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-            <version>3.17</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml-schemas</artifactId>
-            <version>3.17</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.alibaba</groupId>
-            <artifactId>easyexcel</artifactId>
-            <version>1.1.2-beat1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>xxl-job-core</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-check</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>cn.com.ctop</groupId>
-            <artifactId>module-oa</artifactId>
-            <version>2.0.2</version>
-            <scope>compile</scope>
-        </dependency>
-    </dependencies>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework.cloud</groupId>
-                <artifactId>spring-cloud-dependencies</artifactId>
-                <version>${spring-cloud.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.mybatis.generator</groupId>
-                <artifactId>mybatis-generator-maven-plugin</artifactId>
-                <version>1.3.6</version>
-                <configuration>
-                    <!-- 是否覆盖,true表示会替换生成的JAVA文件,false则不覆盖 -->
-                    <overwrite>true</overwrite>
-                </configuration>
-                <dependencies>
-                    <!--mysql驱动包-->
-                    <dependency>
-                        <groupId>mysql</groupId>
-                        <artifactId>mysql-connector-java</artifactId>
-                        <version>5.1.45</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-            </plugin>
-        </plugins>
-        <resources>
-            <!-- 解决MyBatis配置文件引入问题 -->
-            <resource>
-                <directory>src/main/java</directory>
-                <includes>
-                    <include>**/*.properties</include>
-                    <include>**/*.xml</include>
-                </includes>
-                <!-- 是否替换资源中的属性-->
-                <filtering>true</filtering>
-            </resource>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-            </resource>
-        </resources>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>dev</id>
-            <properties>
-                <!-- 环境标识,需要与配置文件的名称相对应 -->
-                <activatedProperties>dev</activatedProperties>
-            </properties>
-            <activation>
-                <!-- 默认环境 -->
-                <activeByDefault>true</activeByDefault>
-            </activation>
-        </profile>
-        <profile>
-            <id>test</id>
-            <properties>
-                <activatedProperties>test</activatedProperties>
-            </properties>
-        </profile>
-        <profile>
-            <id>prod</id>
-            <properties>
-                <activatedProperties>prod</activatedProperties>
-            </properties>
-        </profile>
-    </profiles>
-</project>

+ 0 - 13
module-job-distribute/src/main/java/cn/com/ctop/module/job/distribute/ModuleJobDistributeApplication.java

@@ -1,13 +0,0 @@
-package cn.com.ctop.module.job.distribute;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-@SpringBootApplication
-public class ModuleJobDistributeApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(ModuleJobDistributeApplication.class, args);
-    }
-
-}

+ 0 - 27
module-job-distribute/src/main/java/cn/com/ctop/module/job/distribute/config/AutoPoiConfig.java

@@ -1,27 +0,0 @@
-package cn.com.ctop.module.job.distribute.config;
-
-import org.jeecgframework.core.util.ApplicationContextUtil;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @Author: Scott
- * @Date: 2018/2/7
- * @description: autopoi 配置类
- */
-@Configuration
-public class AutoPoiConfig {
-
-    /**
-	 * excel注解字典参数支持(导入导出字典值,自动翻译)
-	 * 举例: @Excel(name = "性别", width = 15, dicCode = "sex")
-	 * 1、导出的时候会根据字典配置,把值1,2翻译成:男、女;
-	 * 2、导入的时候,会把男、女翻译成1,2存进数据库;
-	 * @return
-	 */
-	@Bean
-	public ApplicationContextUtil applicationContextUtil() {
-		return new ApplicationContextUtil();
-	}
-
-}

+ 0 - 0
module-job-distribute/src/main/java/cn/com/ctop/module/job/distribute/config/BrowseLogHandelInterceptor.java


Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików