From df483646c9416d7718a8d009201f7b12158725c3 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Tue, 09 Jun 2020 20:01:23 +0800
Subject: [PATCH] modify
---
/dev/null | 16 ----------------
src/main/resources/templates/febs/views/index.html | 6 +++---
src/main/resources/application-dev.yml | 6 ------
src/main/resources/application-prod.yml | 6 ------
src/main/resources/application-test.yml | 6 ------
pom.xml | 6 ------
src/main/resources/templates/febs/views/layout.html | 4 +---
7 files changed, 4 insertions(+), 46 deletions(-)
diff --git a/pom.xml b/pom.xml
index fc9df74..46f2f0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,12 +65,6 @@
<artifactId>commons-pool2</artifactId>
</dependency>
- <!-- 任务调度 -->
- <dependency>
- <groupId>org.quartz-scheduler</groupId>
- <artifactId>quartz</artifactId>
- </dependency>
-
<!-- MyBatis增强插件 -->
<dependency>
<groupId>com.baomidou</groupId>
diff --git a/src/main/java/com/xcong/excoin/common/annotation/IsCron.java b/src/main/java/com/xcong/excoin/common/annotation/IsCron.java
deleted file mode 100644
index 21cdb30..0000000
--- a/src/main/java/com/xcong/excoin/common/annotation/IsCron.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.xcong.excoin.common.annotation;
-
-import com.xcong.excoin.common.validator.CronValidator;
-
-import javax.validation.Constraint;
-import javax.validation.Payload;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * @author MrBird
- */
-@Target({ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Constraint(validatedBy = CronValidator.class)
-public @interface IsCron {
-
- String message();
-
- Class<?>[] groups() default {};
-
- Class<? extends Payload>[] payload() default {};
-}
\ No newline at end of file
diff --git a/src/main/java/com/xcong/excoin/common/validator/CronValidator.java b/src/main/java/com/xcong/excoin/common/validator/CronValidator.java
deleted file mode 100644
index 9a51c40..0000000
--- a/src/main/java/com/xcong/excoin/common/validator/CronValidator.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.xcong.excoin.common.validator;
-
-import com.xcong.excoin.common.annotation.IsCron;
-import org.quartz.CronExpression;
-
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-
-/**
- * 校验是否为合法的 Cron表达式
- *
- * @author MrBird
- */
-public class CronValidator implements ConstraintValidator<IsCron, String> {
-
- @Override
- public void initialize(IsCron isCron) {
- }
-
- @Override
- public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
- try {
- return CronExpression.isValidExpression(value);
- } catch (Exception e) {
- return false;
- }
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/xcong/excoin/job/configure/ScheduleConfigure.java b/src/main/java/com/xcong/excoin/job/configure/ScheduleConfigure.java
deleted file mode 100644
index 3fa8a05..0000000
--- a/src/main/java/com/xcong/excoin/job/configure/ScheduleConfigure.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.xcong.excoin.job.configure;
-
-import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
-import lombok.RequiredArgsConstructor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-
-import javax.sql.DataSource;
-import java.util.Properties;
-import java.util.concurrent.ThreadPoolExecutor;
-
-/**
- * 定时任务配置
- *
- * @author MrBird
- */
-@Configuration
-@RequiredArgsConstructor
-public class ScheduleConfigure {
-
- private final DynamicRoutingDataSource dynamicRoutingDataSource;
-
- @Bean
- public ThreadPoolTaskExecutor scheduleJobExecutorService(){
- ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
- executor.setCorePoolSize(5);
- executor.setMaxPoolSize(10);
- executor.setQueueCapacity(20);
- executor.setKeepAliveSeconds(30);
- executor.setThreadNamePrefix("Febs-Job-Thread");
- executor.setWaitForTasksToCompleteOnShutdown(true);
- executor.setAwaitTerminationSeconds(60);
- executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
- executor.initialize();
- return executor;
- }
-
- @Bean
- public SchedulerFactoryBean schedulerFactoryBean() {
- SchedulerFactoryBean factory = new SchedulerFactoryBean();
- // 手动从多数据源中获取 quartz数据源
- DataSource quartz = dynamicRoutingDataSource.getDataSource("quartz");
- factory.setDataSource(quartz);
-
- // quartz参数
- Properties prop = new Properties();
- prop.put("org.quartz.scheduler.instanceName", "MyScheduler");
- 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.misfireThreshold", "12000");
- prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
- factory.setQuartzProperties(prop);
-
- factory.setSchedulerName("FEBS_Scheduler");
- // 延时启动
- factory.setStartupDelay(1);
- factory.setApplicationContextSchedulerContextKey("applicationContextKey");
- // 启动时更新己存在的 Job
- factory.setOverwriteExistingJobs(true);
- // 设置自动启动,默认为 true
- factory.setAutoStartup(true);
-
- return factory;
- }
-}
diff --git a/src/main/java/com/xcong/excoin/job/controller/JobController.java b/src/main/java/com/xcong/excoin/job/controller/JobController.java
deleted file mode 100644
index d6d8e65..0000000
--- a/src/main/java/com/xcong/excoin/job/controller/JobController.java
+++ /dev/null
@@ -1,107 +0,0 @@
-package com.xcong.excoin.job.controller;
-
-import com.xcong.excoin.common.annotation.ControllerEndpoint;
-import com.xcong.excoin.common.controller.BaseController;
-import com.xcong.excoin.common.entity.FebsResponse;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.job.entity.Job;
-import com.xcong.excoin.job.service.IJobService;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.wuwenze.poi.ExcelKit;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.quartz.CronExpression;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author MrBird
- */
-@Slf4j
-@Validated
-@RestController
-@RequestMapping("job")
-@RequiredArgsConstructor
-public class JobController extends BaseController {
-
- private final IJobService jobService;
-
- @GetMapping
- @RequiresPermissions("job:view")
- public FebsResponse jobList(QueryRequest request, Job job) {
- Map<String, Object> dataTable = getDataTable(this.jobService.findJobs(request, job));
- return new FebsResponse().success().data(dataTable);
- }
-
- @GetMapping("cron/check")
- public boolean checkCron(String cron) {
- try {
- return CronExpression.isValidExpression(cron);
- } catch (Exception e) {
- return false;
- }
- }
-
- @PostMapping
- @RequiresPermissions("job:add")
- @ControllerEndpoint(operation = "新增定时任务", exceptionMessage = "新增定时任务失败")
- public FebsResponse addJob(@Valid Job job) {
- this.jobService.createJob(job);
- return new FebsResponse().success();
- }
-
- @GetMapping("delete/{jobIds}")
- @RequiresPermissions("job:delete")
- @ControllerEndpoint(operation = "删除定时任务", exceptionMessage = "删除定时任务失败")
- public FebsResponse deleteJob(@NotBlank(message = "{required}") @PathVariable String jobIds) {
- String[] ids = jobIds.split(StringPool.COMMA);
- this.jobService.deleteJobs(ids);
- return new FebsResponse().success();
- }
-
- @PostMapping("update")
- @ControllerEndpoint(operation = "修改定时任务", exceptionMessage = "修改定时任务失败")
- public FebsResponse updateJob(@Valid Job job) {
- this.jobService.updateJob(job);
- return new FebsResponse().success();
- }
-
- @GetMapping("run/{jobIds}")
- @RequiresPermissions("job:run")
- @ControllerEndpoint(operation = "执行定时任务", exceptionMessage = "执行定时任务失败")
- public FebsResponse runJob(@NotBlank(message = "{required}") @PathVariable String jobIds) {
- this.jobService.run(jobIds);
- return new FebsResponse().success();
- }
-
- @GetMapping("pause/{jobIds}")
- @RequiresPermissions("job:pause")
- @ControllerEndpoint(operation = "暂停定时任务", exceptionMessage = "暂停定时任务失败")
- public FebsResponse pauseJob(@NotBlank(message = "{required}") @PathVariable String jobIds) {
- this.jobService.pause(jobIds);
- return new FebsResponse().success();
- }
-
- @GetMapping("resume/{jobIds}")
- @RequiresPermissions("job:resume")
- @ControllerEndpoint(operation = "恢复定时任务", exceptionMessage = "恢复定时任务失败")
- public FebsResponse resumeJob(@NotBlank(message = "{required}") @PathVariable String jobIds) {
- this.jobService.resume(jobIds);
- return new FebsResponse().success();
- }
-
- @GetMapping("excel")
- @RequiresPermissions("job:export")
- @ControllerEndpoint(exceptionMessage = "导出Excel失败")
- public void export(QueryRequest request, Job job, HttpServletResponse response) {
- List<Job> jobs = this.jobService.findJobs(request, job).getRecords();
- ExcelKit.$Export(Job.class, response).downXlsx(jobs, false);
- }
-}
diff --git a/src/main/java/com/xcong/excoin/job/controller/JobLogController.java b/src/main/java/com/xcong/excoin/job/controller/JobLogController.java
deleted file mode 100644
index 8ea2be0..0000000
--- a/src/main/java/com/xcong/excoin/job/controller/JobLogController.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.xcong.excoin.job.controller;
-
-import com.xcong.excoin.common.annotation.ControllerEndpoint;
-import com.xcong.excoin.common.controller.BaseController;
-import com.xcong.excoin.common.entity.FebsResponse;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.job.entity.JobLog;
-import com.xcong.excoin.job.service.IJobLogService;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.wuwenze.poi.ExcelKit;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.NotBlank;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author MrBird
- */
-@Slf4j
-@Validated
-@RestController
-@RequestMapping("jobLog")
-@RequiredArgsConstructor
-public class JobLogController extends BaseController {
-
- private final IJobLogService jobLogService;
-
- @GetMapping
- @RequiresPermissions("job:log:view")
- public FebsResponse jobLogList(QueryRequest request, JobLog log) {
- Map<String, Object> dataTable = getDataTable(this.jobLogService.findJobLogs(request, log));
- return new FebsResponse().success().data(dataTable);
- }
-
- @GetMapping("delete/{jobIds}")
- @RequiresPermissions("job:log:delete")
- @ControllerEndpoint(exceptionMessage = "删除调度日志失败")
- public FebsResponse deleteJobLog(@NotBlank(message = "{required}") @PathVariable String jobIds) {
- String[] ids = jobIds.split(StringPool.COMMA);
- this.jobLogService.deleteJobLogs(ids);
- return new FebsResponse().success();
- }
-
- @GetMapping("excel")
- @RequiresPermissions("job:log:export")
- @ControllerEndpoint(exceptionMessage = "导出Excel失败")
- public void export(QueryRequest request, JobLog jobLog, HttpServletResponse response) {
- List<JobLog> jobLogs = this.jobLogService.findJobLogs(request, jobLog).getRecords();
- ExcelKit.$Export(JobLog.class, response).downXlsx(jobLogs, false);
- }
-}
diff --git a/src/main/java/com/xcong/excoin/job/controller/ViewController.java b/src/main/java/com/xcong/excoin/job/controller/ViewController.java
deleted file mode 100644
index f7dff2c..0000000
--- a/src/main/java/com/xcong/excoin/job/controller/ViewController.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.xcong.excoin.job.controller;
-
-import com.xcong.excoin.common.entity.FebsConstant;
-import com.xcong.excoin.common.utils.FebsUtil;
-import com.xcong.excoin.job.entity.Job;
-import com.xcong.excoin.job.service.IJobService;
-import lombok.RequiredArgsConstructor;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * @author MrBird
- */
-@Controller("jobView")
-@RequestMapping(FebsConstant.VIEW_PREFIX + "job")
-@RequiredArgsConstructor
-public class ViewController {
-
- private final IJobService jobService;
-
- @GetMapping("job")
- @RequiresPermissions("job:view")
- public String online() {
- return FebsUtil.view("job/job");
- }
-
- @GetMapping("job/add")
- @RequiresPermissions("job:add")
- public String jobAdd() {
- return FebsUtil.view("job/jobAdd");
- }
-
- @GetMapping("job/update/{jobId}")
- @RequiresPermissions("job:update")
- public String jobUpdate(@NotBlank(message = "{required}") @PathVariable Long jobId, Model model) {
- Job job = jobService.findJob(jobId);
- model.addAttribute("job", job);
- return FebsUtil.view("job/jobUpdate");
- }
-
- @GetMapping("log")
- @RequiresPermissions("job:log:view")
- public String log() {
- return FebsUtil.view("job/jobLog");
- }
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/entity/Job.java b/src/main/java/com/xcong/excoin/job/entity/Job.java
deleted file mode 100644
index b9cba39..0000000
--- a/src/main/java/com/xcong/excoin/job/entity/Job.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.xcong.excoin.job.entity;
-
-import com.xcong.excoin.common.annotation.IsCron;
-import com.xcong.excoin.common.converter.TimeConverter;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.wuwenze.poi.annotation.Excel;
-import com.wuwenze.poi.annotation.ExcelField;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.Size;
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @author MrBird
- */
-@Data
-@TableName("t_job")
-@Excel("定时任务信息表")
-public class Job implements Serializable {
-
- private static final long serialVersionUID = 400066840871805700L;
-
- /**
- * 任务调度参数 key
- */
- public static final String JOB_PARAM_KEY = "JOB_PARAM_KEY";
-
- public enum ScheduleStatus {
- /**
- * 正常
- */
- NORMAL("0"),
- /**
- * 暂停
- */
- PAUSE("1");
-
- private String value;
-
- ScheduleStatus(String value) {
- this.value = value;
- }
-
- public String getValue() {
- return value;
- }
- }
-
- @TableId(value = "JOB_ID", type = IdType.AUTO)
- private Long jobId;
-
- @TableField("bean_name")
- @NotBlank(message = "{required}")
- @Size(max = 50, message = "{noMoreThan}")
- @ExcelField(value = "Bean名称")
- private String beanName;
-
- @TableField("method_name")
- @NotBlank(message = "{required}")
- @Size(max = 50, message = "{noMoreThan}")
- @ExcelField(value = "方法名称")
- private String methodName;
-
- @TableField("params")
- @Size(max = 50, message = "{noMoreThan}")
- @ExcelField(value = "方法参数")
- private String params;
-
- @TableField("cron_expression")
- @NotBlank(message = "{required}")
- @IsCron(message = "{invalid}")
- @ExcelField(value = "Cron表达式")
- private String cronExpression;
-
- @TableField("status")
- @ExcelField(value = "状态", writeConverterExp = "0=正常,1=暂停")
- private String status;
-
- @TableField("remark")
- @Size(max = 100, message = "{noMoreThan}")
- @ExcelField(value = "备注")
- private String remark;
-
- @TableField("create_time")
- @ExcelField(value = "创建时间", writeConverter = TimeConverter.class)
- private Date createTime;
-
- private transient String createTimeFrom;
- private transient String createTimeTo;
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/entity/JobLog.java b/src/main/java/com/xcong/excoin/job/entity/JobLog.java
deleted file mode 100644
index 75cca0f..0000000
--- a/src/main/java/com/xcong/excoin/job/entity/JobLog.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.xcong.excoin.job.entity;
-
-
-import com.xcong.excoin.common.converter.TimeConverter;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.wuwenze.poi.annotation.Excel;
-import com.wuwenze.poi.annotation.ExcelField;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * @author MrBird
- */
-@Data
-@TableName("t_job_log")
-@Excel("调度日志信息表")
-public class JobLog implements Serializable {
-
- private static final long serialVersionUID = -7114915445674333148L;
- /**
- * 任务执行成功
- */
- public static final String JOB_SUCCESS = "0";
- /**
- * 任务执行失败
- */
- public static final String JOB_FAIL = "1";
-
- @TableId(value = "LOG_ID", type = IdType.AUTO)
- private Long logId;
-
- @TableField("job_id")
- private Long jobId;
-
- @TableField("bean_name")
- @ExcelField(value = "Bean名称")
- private String beanName;
-
- @TableField("method_name")
- @ExcelField(value = "方法名称")
- private String methodName;
-
- @TableField("params")
- @ExcelField(value = "方法参数")
- private String params;
-
- @TableField("status")
- @ExcelField(value = "状态", writeConverterExp = "0=成功,1=失败")
- private String status;
-
- @TableField("error")
- @ExcelField(value = "异常信息")
- private String error;
-
- @TableField("times")
- @ExcelField(value = "耗时(毫秒)")
- private Long times;
-
- @TableField("create_time")
- @ExcelField(value = "执行时间", writeConverter = TimeConverter.class)
- private Date createTime;
-
- private transient String createTimeFrom;
- private transient String createTimeTo;
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/mapper/JobLogMapper.java b/src/main/java/com/xcong/excoin/job/mapper/JobLogMapper.java
deleted file mode 100644
index e62a226..0000000
--- a/src/main/java/com/xcong/excoin/job/mapper/JobLogMapper.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.xcong.excoin.job.mapper;
-
-
-import com.xcong.excoin.job.entity.JobLog;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * @author MrBird
- */
-public interface JobLogMapper extends BaseMapper<JobLog> {
-}
\ No newline at end of file
diff --git a/src/main/java/com/xcong/excoin/job/mapper/JobMapper.java b/src/main/java/com/xcong/excoin/job/mapper/JobMapper.java
deleted file mode 100644
index f782e8a..0000000
--- a/src/main/java/com/xcong/excoin/job/mapper/JobMapper.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.xcong.excoin.job.mapper;
-
-
-import com.xcong.excoin.job.entity.Job;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-import java.util.List;
-
-/**
- * @author MrBird
- */
-public interface JobMapper extends BaseMapper<Job> {
-
- /**
- * 获取定时任务列表
- *
- * @return 定时任务列表
- */
- List<Job> queryList();
-}
\ No newline at end of file
diff --git a/src/main/java/com/xcong/excoin/job/service/IJobLogService.java b/src/main/java/com/xcong/excoin/job/service/IJobLogService.java
deleted file mode 100644
index aa2de65..0000000
--- a/src/main/java/com/xcong/excoin/job/service/IJobLogService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.xcong.excoin.job.service;
-
-import com.xcong.excoin.common.entity.FebsConstant;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.job.entity.JobLog;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-import org.springframework.scheduling.annotation.Async;
-
-/**
- * @author MrBird
- */
-public interface IJobLogService extends IService<JobLog> {
-
- /**
- * 获取定时任务日志分页数据
- *
- * @param request request
- * @param jobLog jobLog
- * @return 定时任务日志分页数据
- */
- IPage<JobLog> findJobLogs(QueryRequest request, JobLog jobLog);
-
- /**
- * 保存定时任务日志
- *
- * @param log 定时任务日志
- */
- @Async(FebsConstant.ASYNC_POOL)
- void saveJobLog(JobLog log);
-
- /**
- * 删除定时任务日志
- *
- * @param jobLogIds 定时任务日志id数组
- */
- void deleteJobLogs(String[] jobLogIds);
-}
diff --git a/src/main/java/com/xcong/excoin/job/service/IJobService.java b/src/main/java/com/xcong/excoin/job/service/IJobService.java
deleted file mode 100644
index 3639aa2..0000000
--- a/src/main/java/com/xcong/excoin/job/service/IJobService.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.xcong.excoin.job.service;
-
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.job.entity.Job;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * @author MrBird
- */
-public interface IJobService extends IService<Job> {
-
- /**
- * 获取定时任务
- *
- * @param jobId 任务id
- * @return 定时任务
- */
- Job findJob(Long jobId);
-
- /**
- * 获取定时任务分页数据
- *
- * @param request request
- * @param job job
- * @return 定时任务分页数据
- */
- IPage<Job> findJobs(QueryRequest request, Job job);
-
- /**
- * 创建定时任务
- *
- * @param job job
- */
- void createJob(Job job);
-
- /**
- * 更新定时任务
- *
- * @param job 定时任务
- */
- void updateJob(Job job);
-
- /**
- * 删除定时任务
- *
- * @param jobIds 定时任务id数组
- */
- void deleteJobs(String[] jobIds);
-
- /**
- * 批量更新定时任务状态
- *
- * @param jobIds 定时任务id
- * @param status 待更新状态
- */
- void updateBatch(String jobIds, String status);
-
- /**
- * 运行定时任务
- *
- * @param jobIds 定时任务id
- */
- void run(String jobIds);
-
- /**
- * 暂停定时任务
- *
- * @param jobIds 定时任务id
- */
- void pause(String jobIds);
-
- /**
- * 恢复定时任务
- *
- * @param jobIds 定时任务id
- */
- void resume(String jobIds);
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/service/impl/JobLogServiceImpl.java b/src/main/java/com/xcong/excoin/job/service/impl/JobLogServiceImpl.java
deleted file mode 100644
index 6f956d6..0000000
--- a/src/main/java/com/xcong/excoin/job/service/impl/JobLogServiceImpl.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.xcong.excoin.job.service.impl;
-
-import com.xcong.excoin.common.entity.FebsConstant;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.common.utils.SortUtil;
-import com.xcong.excoin.job.entity.JobLog;
-import com.xcong.excoin.job.mapper.JobLogMapper;
-import com.xcong.excoin.job.service.IJobLogService;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Service;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * @author MrBird
- */
-@Slf4j
-@Service("JobLogService")
-public class JobLogServiceImpl extends ServiceImpl<JobLogMapper, JobLog> implements IJobLogService {
-
- @Override
- public IPage<JobLog> findJobLogs(QueryRequest request, JobLog jobLog) {
- LambdaQueryWrapper<JobLog> queryWrapper = new LambdaQueryWrapper<>();
-
- if (StringUtils.isNotBlank(jobLog.getBeanName())) {
- queryWrapper.eq(JobLog::getBeanName, jobLog.getBeanName());
- }
- if (StringUtils.isNotBlank(jobLog.getMethodName())) {
- queryWrapper.eq(JobLog::getMethodName, jobLog.getMethodName());
- }
- if (StringUtils.isNotBlank(jobLog.getStatus())) {
- queryWrapper.eq(JobLog::getStatus, jobLog.getStatus());
- }
- Page<JobLog> page = new Page<>(request.getPageNum(), request.getPageSize());
- SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_DESC, true);
- return this.page(page, queryWrapper);
- }
-
- @Override
- public void saveJobLog(JobLog log) {
- this.save(log);
- }
-
- @Override
- public void deleteJobLogs(String[] jobLogIds) {
- List<String> list = Arrays.asList(jobLogIds);
- this.baseMapper.deleteBatchIds(list);
- }
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/service/impl/JobServiceImpl.java b/src/main/java/com/xcong/excoin/job/service/impl/JobServiceImpl.java
deleted file mode 100644
index 3cc4745..0000000
--- a/src/main/java/com/xcong/excoin/job/service/impl/JobServiceImpl.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package com.xcong.excoin.job.service.impl;
-
-import com.xcong.excoin.common.entity.FebsConstant;
-import com.xcong.excoin.common.entity.QueryRequest;
-import com.xcong.excoin.common.utils.SortUtil;
-import com.xcong.excoin.job.entity.Job;
-import com.xcong.excoin.job.mapper.JobMapper;
-import com.xcong.excoin.job.service.IJobService;
-import com.xcong.excoin.job.util.ScheduleUtils;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.quartz.CronTrigger;
-import org.quartz.Scheduler;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.PostConstruct;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author MrBird
- */
-@Slf4j
-@Service("JobService")
-@RequiredArgsConstructor
-@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
-public class JobServiceImpl extends ServiceImpl<JobMapper, Job> implements IJobService {
-
- private final Scheduler scheduler;
-
-
- /**
- * 项目启动时,初始化定时器
- */
- @PostConstruct
- public void init() {
- List<Job> scheduleJobList = this.baseMapper.queryList();
- // 如果不存在,则创建
- scheduleJobList.forEach(scheduleJob -> {
- CronTrigger cronTrigger = ScheduleUtils.getCronTrigger(scheduler, scheduleJob.getJobId());
- if (cronTrigger == null) {
- ScheduleUtils.createScheduleJob(scheduler, scheduleJob);
- } else {
- ScheduleUtils.updateScheduleJob(scheduler, scheduleJob);
- }
- });
- }
-
- @Override
- public Job findJob(Long jobId) {
- return this.getById(jobId);
- }
-
- @Override
- public IPage<Job> findJobs(QueryRequest request, Job job) {
- LambdaQueryWrapper<Job> queryWrapper = new LambdaQueryWrapper<>();
-
- if (StringUtils.isNotBlank(job.getBeanName())) {
- queryWrapper.eq(Job::getBeanName, job.getBeanName());
- }
- if (StringUtils.isNotBlank(job.getMethodName())) {
- queryWrapper.eq(Job::getMethodName, job.getMethodName());
- }
- if (StringUtils.isNotBlank(job.getParams())) {
- queryWrapper.like(Job::getParams, job.getParams());
- }
- if (StringUtils.isNotBlank(job.getRemark())) {
- queryWrapper.like(Job::getRemark, job.getRemark());
- }
- if (StringUtils.isNotBlank(job.getStatus())) {
- queryWrapper.eq(Job::getStatus, job.getStatus());
- }
-
- if (StringUtils.isNotBlank(job.getCreateTimeFrom()) && StringUtils.isNotBlank(job.getCreateTimeTo())) {
- queryWrapper
- .ge(Job::getCreateTime, job.getCreateTimeFrom())
- .le(Job::getCreateTime, job.getCreateTimeTo());
- }
- Page<Job> page = new Page<>(request.getPageNum(), request.getPageSize());
- SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_DESC, true);
- return this.page(page, queryWrapper);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void createJob(Job job) {
- job.setCreateTime(new Date());
- job.setStatus(Job.ScheduleStatus.PAUSE.getValue());
- this.save(job);
- ScheduleUtils.createScheduleJob(scheduler, job);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void updateJob(Job job) {
- ScheduleUtils.updateScheduleJob(scheduler, job);
- this.baseMapper.updateById(job);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void deleteJobs(String[] jobIds) {
- List<String> list = Arrays.asList(jobIds);
- list.forEach(jobId -> ScheduleUtils.deleteScheduleJob(scheduler, Long.valueOf(jobId)));
- this.baseMapper.deleteBatchIds(list);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void updateBatch(String jobIds, String status) {
- List<String> list = Arrays.asList(jobIds.split(StringPool.COMMA));
- Job job = new Job();
- job.setStatus(status);
- this.baseMapper.update(job, new LambdaQueryWrapper<Job>().in(Job::getJobId, list));
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void run(String jobIds) {
- String[] list = jobIds.split(StringPool.COMMA);
- Arrays.stream(list).forEach(jobId -> ScheduleUtils.run(scheduler, this.findJob(Long.valueOf(jobId))));
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void pause(String jobIds) {
- String[] list = jobIds.split(StringPool.COMMA);
- Arrays.stream(list).forEach(jobId -> ScheduleUtils.pauseJob(scheduler, Long.valueOf(jobId)));
- this.updateBatch(jobIds, Job.ScheduleStatus.PAUSE.getValue());
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void resume(String jobIds) {
- String[] list = jobIds.split(StringPool.COMMA);
- Arrays.stream(list).forEach(jobId -> ScheduleUtils.resumeJob(scheduler, Long.valueOf(jobId)));
- this.updateBatch(jobIds, Job.ScheduleStatus.NORMAL.getValue());
- }
-}
diff --git a/src/main/java/com/xcong/excoin/job/task/TestTask.java b/src/main/java/com/xcong/excoin/job/task/TestTask.java
deleted file mode 100644
index b2ccd9b..0000000
--- a/src/main/java/com/xcong/excoin/job/task/TestTask.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.xcong.excoin.job.task;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-/**
- * @author MrBird
- */
-@Slf4j
-@Component
-public class TestTask {
-
- public void test(String params) {
- log.info("我是带参数的test方法,正在被执行,参数为:{}" , params);
- }
- public void test1() {
- log.info("我是不带参数的test1方法,正在被执行");
- }
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/util/ScheduleJob.java b/src/main/java/com/xcong/excoin/job/util/ScheduleJob.java
deleted file mode 100644
index 14b682b..0000000
--- a/src/main/java/com/xcong/excoin/job/util/ScheduleJob.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.xcong.excoin.job.util;
-
-import com.xcong.excoin.common.utils.SpringContextUtil;
-import com.xcong.excoin.job.entity.Job;
-import com.xcong.excoin.job.entity.JobLog;
-import com.xcong.excoin.job.service.IJobLogService;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.quartz.JobExecutionContext;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.scheduling.quartz.QuartzJobBean;
-
-import java.util.Date;
-import java.util.concurrent.Future;
-
-/**
- * 定时任务
- *
- * @author MrBird
- */
-@Slf4j
-public class ScheduleJob extends QuartzJobBean {
-
- private ThreadPoolTaskExecutor scheduleJobExecutorService = SpringContextUtil.getBean("scheduleJobExecutorService", ThreadPoolTaskExecutor.class);
-
- @Override
- protected void executeInternal(JobExecutionContext context) {
- Job scheduleJob = (Job) context.getMergedJobDataMap().get(Job.JOB_PARAM_KEY);
-
- // 获取spring bean
- IJobLogService scheduleJobLogService = SpringContextUtil.getBean(IJobLogService.class);
-
- JobLog jobLog = new JobLog();
- jobLog.setJobId(scheduleJob.getJobId());
- jobLog.setBeanName(scheduleJob.getBeanName());
- jobLog.setMethodName(scheduleJob.getMethodName());
- jobLog.setParams(scheduleJob.getParams());
- jobLog.setCreateTime(new Date());
-
- long startTime = System.currentTimeMillis();
-
- try {
- // 执行任务
- log.info("任务准备执行,任务ID:{}", scheduleJob.getJobId());
- ScheduleRunnable task = new ScheduleRunnable(scheduleJob.getBeanName(), scheduleJob.getMethodName(),
- scheduleJob.getParams());
- Future<?> future = scheduleJobExecutorService.submit(task);
- future.get();
- long times = System.currentTimeMillis() - startTime;
- jobLog.setTimes(times);
- // 任务状态 0:成功 1:失败
- jobLog.setStatus(JobLog.JOB_SUCCESS);
-
- log.info("任务执行完毕,任务ID:{} 总共耗时:{} 毫秒", scheduleJob.getJobId(), times);
- } catch (Exception e) {
- log.error("任务执行失败,任务ID:" + scheduleJob.getJobId(), e);
- long times = System.currentTimeMillis() - startTime;
- jobLog.setTimes(times);
- // 任务状态 0:成功 1:失败
- jobLog.setStatus(JobLog.JOB_FAIL);
- jobLog.setError(StringUtils.substring(e.toString(), 0, 2000));
- } finally {
- scheduleJobLogService.saveJobLog(jobLog);
- }
- }
-}
diff --git a/src/main/java/com/xcong/excoin/job/util/ScheduleRunnable.java b/src/main/java/com/xcong/excoin/job/util/ScheduleRunnable.java
deleted file mode 100644
index 9a806a5..0000000
--- a/src/main/java/com/xcong/excoin/job/util/ScheduleRunnable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.xcong.excoin.job.util;
-
-import com.xcong.excoin.common.utils.SpringContextUtil;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.util.ReflectionUtils;
-
-import java.lang.reflect.Method;
-
-/**
- * 执行定时任务
- *
- * @author MrBird
- */
-@Slf4j
-public class ScheduleRunnable implements Runnable {
-
- private Object target;
- private Method method;
- private String params;
-
- ScheduleRunnable(String beanName, String methodName, String params) throws NoSuchMethodException, SecurityException {
- this.target = SpringContextUtil.getBean(beanName);
- this.params = params;
-
- if (StringUtils.isNotBlank(params)) {
- this.method = target.getClass().getDeclaredMethod(methodName, String.class);
- } else {
- this.method = target.getClass().getDeclaredMethod(methodName);
- }
- }
-
- @Override
- public void run() {
- try {
- ReflectionUtils.makeAccessible(method);
- if (StringUtils.isNotBlank(params)) {
- method.invoke(target, params);
- } else {
- method.invoke(target);
- }
- } catch (Exception e) {
- log.error("执行定时任务失败", e);
- }
- }
-
-}
diff --git a/src/main/java/com/xcong/excoin/job/util/ScheduleUtils.java b/src/main/java/com/xcong/excoin/job/util/ScheduleUtils.java
deleted file mode 100644
index 42007d7..0000000
--- a/src/main/java/com/xcong/excoin/job/util/ScheduleUtils.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package com.xcong.excoin.job.util;
-
-import com.xcong.excoin.job.entity.Job;
-import lombok.extern.slf4j.Slf4j;
-import org.quartz.*;
-
-/**
- * 定时任务工具类
- *
- * @author MrBird
- */
-@Slf4j
-public class ScheduleUtils {
-
- private static final String JOB_NAME_PREFIX = "TASK_";
-
- /**
- * 获取触发器 key
- */
- private static TriggerKey getTriggerKey(Long jobId) {
- return TriggerKey.triggerKey(JOB_NAME_PREFIX + jobId);
- }
-
- /**
- * 获取jobKey
- */
- private static JobKey getJobKey(Long jobId) {
- return JobKey.jobKey(JOB_NAME_PREFIX + jobId);
- }
-
- /**
- * 获取表达式触发器
- */
- public static CronTrigger getCronTrigger(Scheduler scheduler, Long jobId) {
- try {
- return (CronTrigger) scheduler.getTrigger(getTriggerKey(jobId));
- } catch (SchedulerException e) {
- log.error("获取Cron表达式失败", e);
- }
- return null;
- }
-
- /**
- * 创建定时任务
- */
- public static void createScheduleJob(Scheduler scheduler, com.xcong.excoin.job.entity.Job scheduleJob) {
- try {
- // 构建job信息
- JobDetail jobDetail = JobBuilder.newJob(ScheduleJob.class).withIdentity(getJobKey(scheduleJob.getJobId()))
- .build();
-
- // 表达式调度构建器
- CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression())
- .withMisfireHandlingInstructionDoNothing();
-
- // 按新的cronExpression表达式构建一个新的trigger
- CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(scheduleJob.getJobId()))
- .withSchedule(scheduleBuilder).build();
-
- // 放入参数,运行时的方法可以获取
- jobDetail.getJobDataMap().put(com.xcong.excoin.job.entity.Job.JOB_PARAM_KEY, scheduleJob);
-
- scheduler.scheduleJob(jobDetail, trigger);
-
- // 暂停任务
- if (scheduleJob.getStatus().equals(com.xcong.excoin.job.entity.Job.ScheduleStatus.PAUSE.getValue())) {
- pauseJob(scheduler, scheduleJob.getJobId());
- }
- } catch (SchedulerException e) {
- log.error("创建定时任务失败", e);
- }
- }
-
- /**
- * 更新定时任务
- */
- public static void updateScheduleJob(Scheduler scheduler, com.xcong.excoin.job.entity.Job scheduleJob) {
- try {
- TriggerKey triggerKey = getTriggerKey(scheduleJob.getJobId());
-
- // 表达式调度构建器
- CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(scheduleJob.getCronExpression())
- .withMisfireHandlingInstructionDoNothing();
-
- CronTrigger trigger = getCronTrigger(scheduler, scheduleJob.getJobId());
-
- if (trigger == null) {
- throw new SchedulerException("获取Cron表达式失败");
- } else {
- // 按新的 cronExpression表达式重新构建 trigger
- trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build();
- // 参数
- trigger.getJobDataMap().put(com.xcong.excoin.job.entity.Job.JOB_PARAM_KEY, scheduleJob);
- }
-
- scheduler.rescheduleJob(triggerKey, trigger);
-
- // 暂停任务
- if (scheduleJob.getStatus().equals(com.xcong.excoin.job.entity.Job.ScheduleStatus.PAUSE.getValue())) {
- pauseJob(scheduler, scheduleJob.getJobId());
- }
-
- } catch (SchedulerException e) {
- log.error("更新定时任务失败", e);
- }
- }
-
- /**
- * 立即执行任务
- */
- public static void run(Scheduler scheduler, com.xcong.excoin.job.entity.Job scheduleJob) {
- try {
- // 参数
- JobDataMap dataMap = new JobDataMap();
- dataMap.put(Job.JOB_PARAM_KEY, scheduleJob);
-
- scheduler.triggerJob(getJobKey(scheduleJob.getJobId()), dataMap);
- } catch (SchedulerException e) {
- log.error("执行定时任务失败", e);
- }
- }
-
- /**
- * 暂停任务
- */
- public static void pauseJob(Scheduler scheduler, Long jobId) {
- try {
- scheduler.pauseJob(getJobKey(jobId));
- } catch (SchedulerException e) {
- log.error("暂停定时任务失败", e);
- }
- }
-
- /**
- * 恢复任务
- */
- public static void resumeJob(Scheduler scheduler, Long jobId) {
- try {
- scheduler.resumeJob(getJobKey(jobId));
- } catch (SchedulerException e) {
- log.error("恢复定时任务失败", e);
- }
- }
-
- /**
- * 删除定时任务
- */
- public static void deleteScheduleJob(Scheduler scheduler, Long jobId) {
- try {
- scheduler.deleteJob(getJobKey(jobId));
- } catch (SchedulerException e) {
- log.error("删除定时任务失败", e);
- }
- }
-}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index a84924e..144ecf0 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -19,12 +19,6 @@
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/febs_base?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
- # 数据源-2,名称为 quartz
- quartz:
- username: root
- password: root
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/febs_quartz?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
redis:
# Redis数据库索引(默认为 0)
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 04d0df9..6df33a3 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -19,12 +19,6 @@
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/febs_base?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
- # 数据源-2,名称为 quartz
- quartz:
- username: root
- password: 123456
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/febs_quartz?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
redis:
# Redis数据库索引(默认为 0)
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 04d0df9..6df33a3 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -19,12 +19,6 @@
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/febs_base?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
- # 数据源-2,名称为 quartz
- quartz:
- username: root
- password: 123456
- driver-class-name: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://127.0.0.1:3306/febs_quartz?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
redis:
# Redis数据库索引(默认为 0)
diff --git a/src/main/resources/mapper/job/JobMapper.xml b/src/main/resources/mapper/job/JobMapper.xml
deleted file mode 100644
index 5b245b4..0000000
--- a/src/main/resources/mapper/job/JobMapper.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xcong.excoin.job.mapper.JobMapper">
- <select id="queryList" resultType="job">
- select job_id jobId,
- bean_name beanName,
- method_name methodName,
- params,
- cron_expression cronExpression,
- status,
- remark,
- create_time createTime
- from t_job
- order by job_id
- </select>
-</mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/index.html b/src/main/resources/templates/febs/views/index.html
index d27068d..a46deb5 100644
--- a/src/main/resources/templates/febs/views/index.html
+++ b/src/main/resources/templates/febs/views/index.html
@@ -99,9 +99,9 @@
<div class="layui-col-md-offset5">
<table class="login-count-table">
<tr>
- <td>今日IP</td>
- <td>今日访问</td>
- <td>总访问量</td>
+ <td>注册用户数量</td>
+ <td>持仓用户数量</td>
+ <td>当前平台总金额</td>
</tr>
<tr>
<td class="count" id="today-ip">
diff --git a/src/main/resources/templates/febs/views/layout.html b/src/main/resources/templates/febs/views/layout.html
index 514ecb5..430a48e 100644
--- a/src/main/resources/templates/febs/views/layout.html
+++ b/src/main/resources/templates/febs/views/layout.html
@@ -26,8 +26,6 @@
<dl class="layui-nav-child">
<dd><a class="layui-nav-child-href" id="user-profile">个人中心</a></dd>
<dd><a class="layui-nav-child-href" id="password-update">密码修改</a></dd>
- <dd><a class="layui-nav-child-href" target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Shiro">项目地址</a></dd>
- <hr/>
<dd><a class="layui-nav-child-href" data-th-href="@{logout}">退出登录</a></dd>
</dl>
</li>
@@ -65,7 +63,7 @@
<div class="layui-side-scroll">
<div class="layui-logo" style="cursor: pointer">
<img data-th-src="@{febs/images/logo.png}">
- <span>FEBS 权限系统</span>
+ <span>ExCoin 管理系统</span>
</div>
<script
type="text/html"
--
Gitblit v1.9.1