ソースを参照

feat: 将定时任务从fs-admin拆分出来

xdd 1 ヶ月 前
コミット
51fe76a816

+ 1 - 1
fs-admin/src/main/java/com/fs/quartz/client/JobApiClient.java

@@ -21,7 +21,7 @@ import java.util.stream.Collectors;
 @Component
 public class JobApiClient {
 
-    private String baseUrl = "http://localhost:7014/monitor/job";
+    private String baseUrl = "http://127.0.0.1:7014/monitor/job";
 
     /**
      * 准备 HttpRequest 对象,设置通用头部信息.

+ 0 - 57
fs-admin/src/main/java/com/fs/quartz/config/ScheduleConfig.java

@@ -1,57 +0,0 @@
-package com.fs.quartz.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-import javax.sql.DataSource;
-import java.util.Properties;
-
-/**
- * 定时任务配置
- * 
- 
- */
-@Configuration
-public class ScheduleConfig
-{
-    @Bean
-    public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource)
-    {
-        SchedulerFactoryBean factory = new SchedulerFactoryBean();
-        factory.setDataSource(dataSource);
-
-        // quartz参数
-        Properties prop = new Properties();
-        prop.put("org.quartz.scheduler.instanceName", "FSScheduler");
-        prop.put("org.quartz.scheduler.instanceId", "AUTO");
-        // 线程池配置
-        prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
-        prop.put("org.quartz.threadPool.threadCount", "20");
-        prop.put("org.quartz.threadPool.threadPriority", "5");
-        // JobStore配置
-        prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX");
-        // 集群配置
-        prop.put("org.quartz.jobStore.isClustered", "true");
-        prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
-        prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");
-        prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");
-
-        // sqlserver 启用
-        // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
-        prop.put("org.quartz.jobStore.misfireThreshold", "12000");
-        prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
-        factory.setQuartzProperties(prop);
-
-        factory.setSchedulerName("FSScheduler");
-        // 延时启动
-        factory.setStartupDelay(1);
-        factory.setApplicationContextSchedulerContextKey("applicationContextKey");
-        // 可选,QuartzScheduler
-        // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了
-        factory.setOverwriteExistingJobs(true);
-        // 设置自动启动,默认为true
-        factory.setAutoStartup(true);
-
-        return factory;
-    }
-}

+ 24 - 4
fs-admin/src/main/java/com/fs/quartz/controller/SysJobController.java

@@ -2,8 +2,10 @@ package com.fs.quartz.controller;
 
 import java.util.List;
 
+import com.fs.common.utils.SecurityUtils;
 import com.fs.common.utils.poi.ExcelUtil;
-import com.fs.core.security.SecurityUtils;
+import com.fs.core.security.LoginUser;
+import com.fs.core.web.service.TokenService;
 import com.fs.quartz.client.JobApiClient;
 import com.fs.quartz.config.CronUtils;
 import com.fs.quartz.service.ISysJobService;
@@ -24,6 +26,8 @@ import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.quartz.domain.SysJob;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * 调度任务信息操作处理
  *
@@ -39,6 +43,10 @@ public class SysJobController extends BaseController
     @Autowired
     private JobApiClient jobApiClient;
 
+
+    @Autowired
+    private TokenService tokenService;
+
     /**
      * 查询定时任务列表
      */
@@ -80,8 +88,12 @@ public class SysJobController extends BaseController
     @PreAuthorize("@ss.hasPermi('monitor:job:add')")
     @Log(title = "定时任务", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody SysJob sysJob) throws Exception
+    public AjaxResult add(@RequestBody SysJob sysJob, HttpServletRequest request) throws Exception
     {
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        if(loginUser != null) {
+            sysJob.setCreateBy(loginUser.getUsername());
+        }
         return jobApiClient.addJob(sysJob);
     }
 
@@ -91,8 +103,12 @@ public class SysJobController extends BaseController
     @PreAuthorize("@ss.hasPermi('monitor:job:edit')")
     @Log(title = "定时任务", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody SysJob sysJob) throws Exception
+    public AjaxResult edit(@RequestBody SysJob sysJob,HttpServletRequest request) throws Exception
     {
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        if(loginUser != null) {
+            sysJob.setCreateBy(loginUser.getUsername());
+        }
         return jobApiClient.editJob(sysJob);
     }
 
@@ -102,8 +118,12 @@ public class SysJobController extends BaseController
     @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
     @Log(title = "定时任务", businessType = BusinessType.UPDATE)
     @PutMapping("/changeStatus")
-    public AjaxResult changeStatus(@RequestBody SysJob job) throws Exception
+    public AjaxResult changeStatus(@RequestBody SysJob job,HttpServletRequest request) throws Exception
     {
+        LoginUser loginUser = tokenService.getLoginUser(request);
+        if(loginUser != null) {
+            job.setCreateBy(loginUser.getUsername());
+        }
         return jobApiClient.changeJobStatus(job);
     }
 

+ 10 - 3
fs-service-quartz/src/main/java/com/fs/quartz/FsQuartzApplication.java → fs-service-quartz/src/main/java/com/fs/FsQuartzApplication.java

@@ -1,15 +1,22 @@
-package com.fs.quartz;
+package com.fs;
 
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
+import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.scheduling.annotation.EnableAsync;
 
 @EnableCaching
 @EnableAsync
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+@SpringBootApplication(exclude = {
+        DataSourceAutoConfiguration.class,
+        SecurityAutoConfiguration.class,
+        SecurityFilterAutoConfiguration.class,
+        ManagementWebSecurityAutoConfiguration.class
+})
 public class FsQuartzApplication {
     public static void main(String[] args) {
         SpringApplication.run(FsQuartzApplication.class, args);

+ 0 - 11
fs-service-quartz/src/main/java/com/fs/quartz/quartz/controller/SysJobController.java

@@ -13,7 +13,6 @@ import com.fs.quartz.service.ISysJobService;
 import com.fs.quartz.util.CronUtils;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -33,7 +32,6 @@ public class SysJobController extends BaseController
     /**
      * 查询定时任务列表
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
     @GetMapping("/list")
     public TableDataInfo list(SysJob sysJob)
     {
@@ -45,7 +43,6 @@ public class SysJobController extends BaseController
     /**
      * 导出定时任务列表
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
     @Log(title = "定时任务", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult export(SysJob sysJob)
@@ -58,7 +55,6 @@ public class SysJobController extends BaseController
     /**
      * 获取定时任务详细信息
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
     @GetMapping(value = "/{jobId}")
     public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
     {
@@ -68,7 +64,6 @@ public class SysJobController extends BaseController
     /**
      * 新增定时任务
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:add')")
     @Log(title = "定时任务", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody SysJob sysJob) throws Exception, TaskException
@@ -77,14 +72,12 @@ public class SysJobController extends BaseController
         {
             return AjaxResult.error("cron表达式不正确");
         }
-        sysJob.setCreateBy(SecurityUtils.getUsername());
         return toAjax(jobService.insertJob(sysJob));
     }
 
     /**
      * 修改定时任务
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:edit')")
     @Log(title = "定时任务", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody SysJob sysJob) throws Exception, TaskException
@@ -93,14 +86,12 @@ public class SysJobController extends BaseController
         {
             return AjaxResult.error("cron表达式不正确");
         }
-        sysJob.setUpdateBy(SecurityUtils.getUsername());
         return toAjax(jobService.updateJob(sysJob));
     }
 
     /**
      * 定时任务状态修改
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
     @Log(title = "定时任务", businessType = BusinessType.UPDATE)
     @PutMapping("/changeStatus")
     public AjaxResult changeStatus(@RequestBody SysJob job) throws Exception
@@ -113,7 +104,6 @@ public class SysJobController extends BaseController
     /**
      * 定时任务立即执行一次
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
     @Log(title = "定时任务", businessType = BusinessType.UPDATE)
     @PutMapping("/run")
     public AjaxResult run(@RequestBody SysJob job) throws Exception
@@ -125,7 +115,6 @@ public class SysJobController extends BaseController
     /**
      * 删除定时任务
      */
-    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
     @Log(title = "定时任务", businessType = BusinessType.DELETE)
     @DeleteMapping("/{jobIds}")
     public AjaxResult remove(@PathVariable Long[] jobIds) throws Exception, TaskException

+ 0 - 87
fs-service-quartz/src/main/java/com/fs/quartz/quartz/controller/SysJobLogController.java

@@ -1,87 +0,0 @@
-package com.fs.quartz.quartz.controller;
-
-import com.fs.common.annotation.Log;
-import com.fs.common.core.controller.BaseController;
-import com.fs.common.core.domain.AjaxResult;
-import com.fs.common.core.page.TableDataInfo;
-import com.fs.common.enums.BusinessType;
-import com.fs.common.utils.poi.ExcelUtil;
-import com.fs.quartz.mapper.domain.SysJobLog;
-import com.fs.quartz.service.ISysJobLogService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 调度日志操作处理
- *
-
- */
-@RestController
-@RequestMapping("/monitor/jobLog")
-public class SysJobLogController extends BaseController
-{
-    @Autowired
-    private ISysJobLogService jobLogService;
-
-    /**
-     * 查询定时任务调度日志列表
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
-    @GetMapping("/list")
-    public TableDataInfo list(SysJobLog sysJobLog)
-    {
-        startPage();
-        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-        return getDataTable(list);
-    }
-
-    /**
-     * 导出定时任务调度日志列表
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
-    @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public AjaxResult export(SysJobLog sysJobLog)
-    {
-        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
-        ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
-        return util.exportExcel(list, "调度日志");
-    }
-
-    /**
-     * 根据调度编号获取详细信息
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
-    @GetMapping(value = "/{configId}")
-    public AjaxResult getInfo(@PathVariable Long jobLogId)
-    {
-        return AjaxResult.success(jobLogService.selectJobLogById(jobLogId));
-    }
-
-
-    /**
-     * 删除定时任务调度日志
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
-    @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{jobLogIds}")
-    public AjaxResult remove(@PathVariable Long[] jobLogIds)
-    {
-        return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
-    }
-
-    /**
-     * 清空定时任务调度日志
-     */
-    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
-    @Log(title = "调度日志", businessType = BusinessType.CLEAN)
-    @DeleteMapping("/clean")
-    public AjaxResult clean()
-    {
-        jobLogService.cleanJobLog();
-        return AjaxResult.success();
-    }
-}

+ 1 - 1
fs-admin/src/main/java/com/fs/qw/qwTask/qwTask.java → fs-service-quartz/src/main/java/com/fs/quartz/qwTask/qwTask.java

@@ -1,4 +1,4 @@
-package com.fs.qw.qwTask;
+package com.fs.quartz.qwTask;
 
 import com.fs.course.service.IFsUserCourseService;
 import com.fs.qw.mapper.QwCompanyMapper;

+ 1 - 1
fs-admin/src/main/java/com/fs/task/FsCourseTask.java → fs-service-quartz/src/main/java/com/fs/quartz/task/FsCourseTask.java

@@ -1,4 +1,4 @@
-package com.fs.task;
+package com.fs.quartz.task;
 
 import com.fs.course.service.IFsCourseWatchLogService;
 import com.fs.qw.service.IHyWorkTaskService;

+ 1 - 1
fs-admin/src/main/java/com/fs/task/StoreTask.java → fs-service-quartz/src/main/java/com/fs/quartz/task/StoreTask.java

@@ -1,4 +1,4 @@
-package com.fs.task;
+package com.fs.quartz.task;
 
 
 import cn.hutool.core.util.StrUtil;

+ 1 - 1
fs-admin/src/main/java/com/fs/course/task/VideoTask.java → fs-service-quartz/src/main/java/com/fs/quartz/task/course/task/VideoTask.java

@@ -1,4 +1,4 @@
-package com.fs.course.task;
+package com.fs.quartz.task.course.task;
 
 import com.fs.common.core.redis.RedisCache;
 import com.fs.course.domain.FsUserVideo;

+ 1 - 1
fs-admin/src/main/java/com/fs/task/qw/FsCourseTask.java → fs-service-quartz/src/main/java/com/fs/quartz/task/qw/FsCourseTask.java

@@ -1,4 +1,4 @@
-package com.fs.task.qw;
+package com.fs.quartz.task.qw;
 
 import com.fs.course.service.IFsCourseWatchLogService;
 import com.fs.qw.service.IQwWorkTaskService;

+ 1 - 1
fs-admin/src/main/java/com/fs/task/stats/FsStatsMemberDailyTask.java → fs-service-quartz/src/main/java/com/fs/quartz/task/stats/FsStatsMemberDailyTask.java

@@ -1,4 +1,4 @@
-package com.fs.task.stats;
+package com.fs.quartz.task.stats;
 
 import com.fs.statis.service.IFsStatsMemberDailyService;
 import lombok.extern.slf4j.Slf4j;

+ 1 - 1
fs-service-quartz/src/main/resources/application-dev.yml

@@ -7,7 +7,7 @@ spring:
         # 端口,默认为6379
         port: 6379
         # 密码
-#        password: ''
+        password: ''
         # 连接超时时间
         timeout: 30s
         lettuce: