首页 > 其他 > 详细

为订单设定定时任务(触发器)

时间:2020-03-02 14:38:13      阅读:159      评论:0      收藏:0      [点我收藏+]

@Configuration
public class QuartzConfig {

//定义任务详情
@Bean
public JobDetail orderjobDetail() {
//指定job的名称和持久化保存任务
return JobBuilder
.newJob(OrderQuartz.class) //1.自定义任务
.withIdentity("orderQuartz") //2.任务名称
.storeDurably()
.build();
}
//定义触发器
@Bean
public Trigger orderTrigger() {
/*SimpleScheduleBuilder builder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInMinutes(1) //定义时间周期
.repeatForever();*/
CronScheduleBuilder scheduleBuilder
= CronScheduleBuilder.cronSchedule("0 0/1 * * * ?"); //1.执行周期
return TriggerBuilder
.newTrigger()
.forJob(orderjobDetail())
.withIdentity("orderQuartz") //2.任务
.withSchedule(scheduleBuilder).build();
}

}

 

//准备订单定时任务
@Component
public class OrderQuartz extends QuartzJobBean{

@Autowired
private OrderMapper orderMapper;

/**
* 超时:当前时间 - 创建订单的时间> 30分钟
* 创建时间 < 当前时间-30分钟
*
* 业务:如果超时30分钟.则将状态由1改为6
* sql: update tb_order set status=6,updated=#{date}
* where status = 1 and created < #{timeOut}
*/
@Override
@Transactional
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
//1.计算超时时间 日历工具API 用于计算时间
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, -30);
Date timeOut = calendar.getTime(); //获取超时时间

Order orderTemp = new Order();
orderTemp.setStatus(6).setUpdated(new Date());
UpdateWrapper<Order> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("status", 1)
.lt("created", timeOut);
orderMapper.update(orderTemp, updateWrapper);
System.out.println("定时任务操成功!!!!!");
}

}

为订单设定定时任务(触发器)

原文:https://www.cnblogs.com/pureray-hui/p/12395006.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!