diff --git a/db/yami_shop.sql b/db/yami_shop.sql index c2f8645..a168400 100644 --- a/db/yami_shop.sql +++ b/db/yami_shop.sql @@ -3,6 +3,7 @@ SQLyog Ultimate v12.5.1 (64 bit) MySQL - 5.7.23 : Database - yami_shops ********************************************************************* */ + create database IF NOT EXISTS `yami_shops` default character set utf8 collate utf8_general_ci; USE yami_shops; @@ -17,6 +18,8 @@ USE yami_shops; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; /*Table structure for table `qrtz_blob_triggers` */ +/*Table structure for table `qrtz_blob_triggers` */ + DROP TABLE IF EXISTS `qrtz_blob_triggers`; CREATE TABLE `qrtz_blob_triggers` ( @@ -60,10 +63,6 @@ CREATE TABLE `qrtz_cron_triggers` ( /*Data for the table `qrtz_cron_triggers` */ -insert into `qrtz_cron_triggers`(`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`CRON_EXPRESSION`,`TIME_ZONE_ID`) values -('clusteredScheduler','TASK_14','DEFAULT','0 * * * * ?','Asia/Shanghai'), -('clusteredScheduler','TASK_16','DEFAULT','0 0/5 * * * ?','Asia/Shanghai'); - /*Table structure for table `qrtz_fired_triggers` */ DROP TABLE IF EXISTS `qrtz_fired_triggers`; @@ -115,10 +114,6 @@ CREATE TABLE `qrtz_job_details` ( /*Data for the table `qrtz_job_details` */ -insert into `qrtz_job_details`(`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`,`DESCRIPTION`,`JOB_CLASS_NAME`,`IS_DURABLE`,`IS_NONCONCURRENT`,`IS_UPDATE_DATA`,`REQUESTS_RECOVERY`,`JOB_DATA`) values -('clusteredScheduler','TASK_14','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','��\0sr\0org.quartz.JobDataMap���迩��\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap�����](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap�.�(v\n�\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap���`�\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~�dꂑ� \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0 orderTaskpt\0 0 * * * * ?sr\0java.lang.Long;��̏#�\0J\0valuexr\0java.lang.Number��� ���\0\0xp\0\0\0\0\0\0\0t\0 cancelOrdert\0\0t\0取消超时未支付订单sr\0java.lang.Integer⠤���8\0I\0valuexq\0~\0\0\0\0\0x\0'), -('clusteredScheduler','TASK_16','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','��\0sr\0org.quartz.JobDataMap���迩��\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap�����](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap�.�(v\n�\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap���`�\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~�dꂑ� \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0 orderTaskpt\0\r0 0/5 * * * ?sr\0java.lang.Long;��̏#�\0J\0valuexr\0java.lang.Number��� ���\0\0xp\0\0\0\0\0\0\0t\0 confirmOrdert\0\0t\0系统自动确认收货订单sr\0java.lang.Integer⠤���8\0I\0valuexq\0~\0\0\0\0\0x\0'); - /*Table structure for table `qrtz_locks` */ DROP TABLE IF EXISTS `qrtz_locks`; @@ -131,10 +126,6 @@ CREATE TABLE `qrtz_locks` ( /*Data for the table `qrtz_locks` */ -insert into `qrtz_locks`(`SCHED_NAME`,`LOCK_NAME`) values -('clusteredScheduler','STATE_ACCESS'), -('clusteredScheduler','TRIGGER_ACCESS'); - /*Table structure for table `qrtz_paused_trigger_grps` */ DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`; @@ -161,9 +152,6 @@ CREATE TABLE `qrtz_scheduler_state` ( /*Data for the table `qrtz_scheduler_state` */ -insert into `qrtz_scheduler_state`(`SCHED_NAME`,`INSTANCE_NAME`,`LAST_CHECKIN_TIME`,`CHECKIN_INTERVAL`) values -('clusteredScheduler','DESKTOP-1HK3TCV1565167178497',1565168967434,10000); - /*Table structure for table `qrtz_simple_triggers` */ DROP TABLE IF EXISTS `qrtz_simple_triggers`; @@ -245,10 +233,6 @@ CREATE TABLE `qrtz_triggers` ( /*Data for the table `qrtz_triggers` */ -insert into `qrtz_triggers`(`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`JOB_NAME`,`JOB_GROUP`,`DESCRIPTION`,`NEXT_FIRE_TIME`,`PREV_FIRE_TIME`,`PRIORITY`,`TRIGGER_STATE`,`TRIGGER_TYPE`,`START_TIME`,`END_TIME`,`CALENDAR_NAME`,`MISFIRE_INSTR`,`JOB_DATA`) values -('clusteredScheduler','TASK_14','DEFAULT','TASK_14','DEFAULT',NULL,1565169000000,1565168940000,5,'WAITING','CRON',1565168511000,0,NULL,1,''), -('clusteredScheduler','TASK_16','DEFAULT','TASK_16','DEFAULT',NULL,1565169000000,1565168700000,5,'WAITING','CRON',1565168517000,0,NULL,1,''); - /*Table structure for table `tz_app_connect` */ DROP TABLE IF EXISTS `tz_app_connect`; @@ -4737,7 +4721,7 @@ CREATE TABLE `tz_schedule_job_log` ( `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`log_id`), KEY `job_id` (`job_id`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='定时任务日志'; +) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8 COMMENT='定时任务日志'; /*Data for the table `tz_schedule_job_log` */ @@ -4751,7 +4735,42 @@ insert into `tz_schedule_job_log`(`log_id`,`job_id`,`bean_name`,`method_name`,` (7,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:06:00'), (8,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:07:00'), (9,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:08:00'), -(10,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:09:00'); +(10,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:09:00'), +(11,14,'orderTask','cancelOrder','',1,NULL,9,'2019-08-07 17:10:00'), +(12,16,'orderTask','confirmOrder','',1,NULL,2,'2019-08-07 17:10:00'), +(13,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:11:00'), +(14,14,'orderTask','cancelOrder','',1,NULL,6,'2019-08-07 17:12:00'), +(15,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:13:00'), +(16,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:14:00'), +(17,14,'orderTask','cancelOrder','',1,NULL,19,'2019-08-07 17:15:00'), +(18,16,'orderTask','confirmOrder','',1,NULL,12,'2019-08-07 17:15:00'), +(19,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:16:00'), +(20,14,'orderTask','cancelOrder','',1,NULL,0,'2019-08-07 17:17:00'), +(21,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:18:00'), +(22,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:19:00'), +(23,14,'orderTask','cancelOrder','',1,NULL,27,'2019-08-07 17:20:00'), +(24,16,'orderTask','confirmOrder','',1,NULL,15,'2019-08-07 17:20:00'), +(25,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:21:00'), +(26,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:22:00'), +(27,14,'orderTask','cancelOrder','',1,NULL,8,'2019-08-07 17:23:00'), +(28,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:24:00'), +(29,14,'orderTask','cancelOrder','',1,NULL,7,'2019-08-07 17:25:00'), +(30,16,'orderTask','confirmOrder','',1,NULL,4,'2019-08-07 17:25:00'), +(31,14,'orderTask','cancelOrder','',1,NULL,1,'2019-08-07 17:26:00'), +(32,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:27:00'), +(33,14,'orderTask','cancelOrder','',1,NULL,4,'2019-08-07 17:28:00'), +(34,14,'orderTask','cancelOrder','',1,NULL,8,'2019-08-07 17:29:00'), +(35,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:30:00'), +(36,16,'orderTask','confirmOrder','',1,NULL,2,'2019-08-07 17:30:00'), +(37,14,'orderTask','cancelOrder','',1,NULL,3,'2019-08-07 17:31:00'), +(38,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:32:00'), +(39,14,'orderTask','cancelOrder','',1,NULL,2,'2019-08-07 17:33:00'), +(40,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:34:00'), +(41,14,'orderTask','cancelOrder','',1,NULL,10,'2019-08-07 17:35:00'), +(42,16,'orderTask','confirmOrder','',1,NULL,3,'2019-08-07 17:35:00'), +(43,14,'orderTask','cancelOrder','',1,NULL,5,'2019-08-07 17:36:00'), +(44,14,'orderTask','cancelOrder','',1,NULL,6,'2019-08-07 17:37:00'), +(45,14,'orderTask','cancelOrder','',1,NULL,6,'2019-08-07 17:38:00'); /*Table structure for table `tz_shop_detail` */ diff --git a/yami-shop-quartz/src/main/java/com/yami/shop/quartz/config/ScheduleManager.java b/yami-shop-quartz/src/main/java/com/yami/shop/quartz/config/ScheduleManager.java index 135f981..c7580a7 100644 --- a/yami-shop-quartz/src/main/java/com/yami/shop/quartz/config/ScheduleManager.java +++ b/yami-shop-quartz/src/main/java/com/yami/shop/quartz/config/ScheduleManager.java @@ -45,7 +45,7 @@ public class ScheduleManager { /** * 获取表达式触发器 */ - private CronTrigger getCronTrigger(ScheduleJob scheduleJob) { + public CronTrigger getCronTrigger(ScheduleJob scheduleJob) { try { return (CronTrigger) scheduler.getTrigger(getTriggerKey(scheduleJob)); } catch (SchedulerException e) { diff --git a/yami-shop-quartz/src/main/java/com/yami/shop/quartz/service/impl/ScheduleJobServiceImpl.java b/yami-shop-quartz/src/main/java/com/yami/shop/quartz/service/impl/ScheduleJobServiceImpl.java index 2cf5938..ec614d1 100644 --- a/yami-shop-quartz/src/main/java/com/yami/shop/quartz/service/impl/ScheduleJobServiceImpl.java +++ b/yami-shop-quartz/src/main/java/com/yami/shop/quartz/service/impl/ScheduleJobServiceImpl.java @@ -16,6 +16,7 @@ import com.yami.shop.quartz.dao.ScheduleJobMapper; import com.yami.shop.quartz.enums.ScheduleStatus; import com.yami.shop.quartz.model.ScheduleJob; import com.yami.shop.quartz.service.ScheduleJobService; +import org.quartz.CronTrigger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,7 +43,11 @@ public class ScheduleJobServiceImpl extends ServiceImpl { - if (ScheduleStatus.NORMAL.getType().equals(scheduleJob.getStatus())) { + CronTrigger trigger = scheduleManager.getCronTrigger(scheduleJob); + // 如果定时任务不存在,则创建定时任务 + if (trigger == null) { + scheduleManager.createScheduleJob(scheduleJob); + } else if (ScheduleStatus.NORMAL.getType().equals(scheduleJob.getStatus())) { scheduleManager.resumeJob(scheduleJob); } else if (ScheduleStatus.PAUSE.getType().equals(scheduleJob.getStatus())) { scheduleManager.pauseJob(scheduleJob);