对于用户提交订单后,没有进行支付,我们需要设置一个超时处理方法,比如:超过30分钟,订单自动取消。
采用定时任务来实现
实现方式:我们采用定时任务实现,每秒钟执行一次,判断是否超时,超时则将订单自动取消,也就是将订单的状态设置为2
1.超时任务controller层
@Controller
public class CheckordrertimeoutTask {
@Autowired
MsoderService msoderService;
public void Checktimeoutorder(int miniutes) {
List<Msorder> orderlist = msoderService.listorder();
for(Msorder msorder:orderlist) {
Date createtime = msorder.getCreatetime();
Date paytime = msorder.getPaytime();
if(paytime!=null) {
continue;
}
long timedistance = System.currentTimeMillis()-createtime.getTime();
long miniute = timedistance/60*1000;
if(miniute>miniutes) {
//订单取消,状态设置为2
msoderService.updateflagbyid(2, msorder.getId());
}
System.out.println("Checktimeoutorder");
}
}
}
2.设置定时任务
2.1 执行定时任务的方法
- 通过Autowired自动引入超时任务类CheckordrertimeoutTask
- 调用超时任务方法clusterQuartz.Checktimeoutorder(20);
public class PrintCurrentTimeJobs2 extends QuartzJobBean
{
private static final Log LOG_RECORD = LogFactory.getLog(PrintCurren