京东自动下单会付款吗(Java 实现订单未支付超时自动取消)

在电商上购买商品后,未付款下单,一般会提示30分钟内完成付款,否则订单自动。例如,在JD.COM下订单时,付款没有完成:



超过24小时后,订单将自动取消。这里用Java定时器来实现超时取消功能。

  • 定时器定时器定时器是一个工具来调度任务的执行。任务可以一次执行,也可以一次重复执行。系统将启动一个线程来执行所有计划的任务。
  • TimerTask定时任务
  • TimerTask是一个抽象类,它实现Runnable,这意味着创建多线程任务。

    创建 TimerTask

    TimerTask是一个抽象类。抽象是为了代码重用。要创建继承TimerTask的类:

    公共类CancelOrderTimeTask扩展TimerTask { 私有长id; public CancelOrderTimeTask(long id){ this . id = id; } @ override public void run(){ //执行取消订单 cancel order(id); system . out . println(getCurrentTime()+& # 34;取消订单的时间,订单ID:& # 34;+id); } private String get current time(){ simple date format SDF = new simple date format(); SDF . apply pattern(& # 34;yyyy-MM-DD HH:MM:ss & # 34;); Date Date = new Date(); return SDF . format(date); } }在run方法中执行订单取消任务。

    因为这个方法不是创建bean,所以在调用dao或者其他bean的时候,应该使用ApplicationContext来获取bean。

    Timer 定时器调用 TimerTask

    创建一个新的计时器,由schedule方法调用。该方法有两个参数。第一个是任务的实例,另一个是延迟多长时间调用任务,单位是毫秒。代码如下:

    @ rest controller 公共类timer controller { @ get mapping(& # 34;/timer & # 34;) 公共字符串Timer(long id){ Timer Timer = new Timer(); CancelOrderTimeTask time task = new CancelOrderTimeTask(id); system . out . println(& # 34;当前时间是& # 34;+getCurrentTime());[/h //10秒内执行任务 timer.schedule(时间任务,10 * 1000); return & # 34;好& # 34;; } private String get current time(){ simple date format SDF = new simple date format(); SDF . apply pattern(& # 34;yyyy-MM-DD HH:MM:ss & # 34;); Date Date = new Date(); return SDF . format(date); } } 调用方法后,控制台输出以下内容,表示预定调用成功。

    当前时间为2022-01-24 00:05:09 2022-01-24 00:05:19。Order ID: 3 Summary 首先创建一个调度任务,继承TimerTask,在run方法中编写业务逻辑。

  • 使用Timer调用schedule方法,该方法写入TimerTask实例和延迟时间。
  • 源码

    Github源代码

    京东自动下单

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友