Prechádzať zdrojové kódy

完善框架内任务定时,增加传参任务ID

zhaosongshan 7 mesiacov pred
rodič
commit
ccdab3cb10

+ 1 - 1
pom.xml

@@ -74,7 +74,7 @@
         <lombok.versin>1.18.22</lombok.versin>
         <minio.version>8.5.2</minio.version>
         <mssql.connector.java.version>9.2.1.jre8</mssql.connector.java.version>
-        <mybatis.plus.version>3.5.3.1</mybatis.plus.version>
+        <mybatis.plus.version>3.5.5</mybatis.plus.version>
         <mybatis.version>3.5.10</mybatis.version>
         <mysql.connector.java.version>8.0.28</mysql.connector.java.version>
         <netty.common.version>4.1.89.Final</netty.common.version>

+ 1 - 1
snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/timer/CommonTimerTaskRunner.java

@@ -26,5 +26,5 @@ public interface CommonTimerTaskRunner {
      * @author xuyuxiang
      * @date 2022/8/15 16:09
      **/
-    void action();
+    void action(String jobId);
 }

+ 2 - 2
snowy-plugin/snowy-plugin-dev/snowy-plugin-dev-func/src/main/java/vip/xiaonuo/dev/core/listener/DevJobListener.java

@@ -40,11 +40,11 @@ public class DevJobListener implements ApplicationListener<ApplicationStartedEve
     @Override
     public void onApplicationEvent(@NonNull ApplicationStartedEvent applicationStartedEvent) {
         SpringUtil.getBean(DevJobService.class).list(new LambdaQueryWrapper<DevJob>()
-                .eq(DevJob::getJobStatus, DevJobStatusEnum.RUNNING.getValue()).orderByAsc(DevJob::getSortCode))
+                        .eq(DevJob::getJobStatus, DevJobStatusEnum.RUNNING.getValue()).orderByAsc(DevJob::getSortCode))
                 .forEach(devJob -> CronUtil.schedule(devJob.getId(), devJob.getCronExpression(), () -> {
                     try {
                         // 运行定时任务
-                        ((CommonTimerTaskRunner) SpringUtil.getBean(Class.forName(devJob.getActionClass()))).action();
+                        ((CommonTimerTaskRunner) SpringUtil.getBean(Class.forName(devJob.getActionClass()))).action(devJob.getId());
                     } catch (ClassNotFoundException e) {
                         throw new CommonException("定时任务找不到对应的类,名称为:{}", devJob.getActionClass());
                     }

+ 20 - 10
snowy-plugin/snowy-plugin-dev/snowy-plugin-dev-func/src/main/java/vip/xiaonuo/dev/modular/job/service/impl/DevJobServiceImpl.java

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.aop.support.AopUtils;
 import org.springframework.scheduling.support.CronExpression;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -56,7 +57,7 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
 
     @Override
     public Page<DevJob> page(DevJobPageParam devJobPageParam) {
-        QueryWrapper<DevJob> queryWrapper = new QueryWrapper<>();
+        QueryWrapper<DevJob> queryWrapper = new QueryWrapper<DevJob>().checkSqlInjection();
         // 查询部分字段
         queryWrapper.lambda().select(DevJob::getId, DevJob::getName, DevJob::getCategory,
                 DevJob::getActionClass, DevJob::getCronExpression, DevJob::getJobStatus, DevJob::getSortCode);
@@ -81,20 +82,20 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
 
     @Override
     public List<DevJob> list(DevJobListParam devJobListParam) {
-        LambdaQueryWrapper<DevJob> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        QueryWrapper<DevJob> queryWrapper = new QueryWrapper<DevJob>().checkSqlInjection();
         // 查询部分字段
-        lambdaQueryWrapper.select(DevJob::getId, DevJob::getName, DevJob::getCategory,
+        queryWrapper.lambda().select(DevJob::getId, DevJob::getName, DevJob::getCategory,
                 DevJob::getActionClass, DevJob::getCronExpression, DevJob::getJobStatus, DevJob::getSortCode);
         if(ObjectUtil.isNotEmpty(devJobListParam.getCategory())) {
-            lambdaQueryWrapper.eq(DevJob::getCategory, devJobListParam.getCategory());
+            queryWrapper.lambda().eq(DevJob::getCategory, devJobListParam.getCategory());
         }
         if(ObjectUtil.isNotEmpty(devJobListParam.getSearchKey())) {
-            lambdaQueryWrapper.like(DevJob::getName, devJobListParam.getSearchKey());
+            queryWrapper.lambda().like(DevJob::getName, devJobListParam.getSearchKey());
         }
         if(ObjectUtil.isNotEmpty(devJobListParam.getJobStatus())) {
-            lambdaQueryWrapper.like(DevJob::getJobStatus, devJobListParam.getJobStatus());
+            queryWrapper.lambda().like(DevJob::getJobStatus, devJobListParam.getJobStatus());
         }
-        return this.list(lambdaQueryWrapper);
+        return this.list(queryWrapper);
     }
 
     @Override
@@ -214,7 +215,7 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
         CronUtil.schedule(devJob.getId(), devJob.getCronExpression(), () -> {
             try {
                 // 运行定时任务
-                ((CommonTimerTaskRunner) SpringUtil.getBean(Class.forName(devJob.getActionClass()))).action();
+                ((CommonTimerTaskRunner) SpringUtil.getBean(Class.forName(devJob.getActionClass()))).action(devJob.getId());
             } catch (ClassNotFoundException e) {
                 throw new CommonException("定时任务找不到对应的类,名称为:{}", devJob.getActionClass());
             }
@@ -223,6 +224,7 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
                 .set(DevJob::getJobStatus, DevJobStatusEnum.RUNNING.getValue()));
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void runJobNow(DevJobIdParam devJobIdParam) {
         DevJob devJob = this.detail(devJobIdParam);
@@ -232,7 +234,7 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
         }
         try {
             // 直接运行一次
-            ((CommonTimerTaskRunner) SpringUtil.getBean(Class.forName(devJob.getActionClass()))).action();
+            ((CommonTimerTaskRunner) SpringUtil.getBean(Class.forName(devJob.getActionClass()))).action(devJob.getId());
         } catch (ClassNotFoundException e) {
             throw new CommonException("定时任务找不到对应的类,名称为:{}", devJob.getActionClass());
         }
@@ -243,7 +245,15 @@ public class DevJobServiceImpl extends ServiceImpl<DevJobMapper, DevJob> impleme
         Map<String, CommonTimerTaskRunner> commonTimerTaskRunnerMap = SpringUtil.getBeansOfType(CommonTimerTaskRunner.class);
         if (ObjectUtil.isNotEmpty(commonTimerTaskRunnerMap)) {
             Collection<CommonTimerTaskRunner> values = commonTimerTaskRunnerMap.values();
-            return values.stream().map(commonTimerTaskRunner -> commonTimerTaskRunner.getClass().getName()).collect(Collectors.toList());
+            return values.stream().map(commonTimerTaskRunner -> {
+                Class<?> clazz = null;
+                if(AopUtils.isAopProxy(commonTimerTaskRunner)) {
+                    clazz = AopUtils.getTargetClass(commonTimerTaskRunner);
+                } else {
+                    clazz = commonTimerTaskRunner.getClass();
+                }
+                return clazz.getName();
+            }).collect(Collectors.toList());
         } else {
             return CollectionUtil.newArrayList();
         }

+ 3 - 2
snowy-plugin/snowy-plugin-dev/snowy-plugin-dev-func/src/main/java/vip/xiaonuo/dev/modular/job/task/DevJobTimerTaskRunner.java

@@ -29,8 +29,9 @@ public class DevJobTimerTaskRunner implements CommonTimerTaskRunner {
     private int n = 1;
 
     @Override
-    public void action() {
-        log.info("我是一个定时任务,正在在被执行第" + n + "次");
+    public void action(String jobId) {
+        log.info("我是一个定时任务,正在在被执行第{}次", n);
         n = n + 1;
+        log.info("jobId:{}",jobId);
     }
 }

+ 2 - 2
snowy-plugin/snowy-plugin-exam/snowy-plugin-exam-func/src/main/java/vip/xiaonuo/exam/job/task/ExamJobTimerTaskRunner.java

@@ -22,7 +22,7 @@ public class ExamJobTimerTaskRunner implements CommonTimerTaskRunner {
      * @date 2022/8/15 16:09
      **/
     @Override
-    public void action() {
-
+    public void action(String extJson) {
+        log.info("extJson:{}",extJson);
     }
 }