zoukankan      html  css  js  c++  java
  • 订单超时30分钟自动取消

    @Configuration      //1.主要用于标记配置类,兼备Component的效果。
    @EnableScheduling // 2.开启定时任务
    public class OrderCancelTask {
    Logger logger = LoggerFactory.getLogger(OrderCancelTask.class);

    @Value("${web.order-create-time-key}")
    private String ORDERS_CREATE_TIME_KEY;

    @Autowired
    private OrdersInfoService ordersInfoService;

    //3.添加定时任务
    //@Scheduled(cron = "0/5 * * * * ?")
    //或直接指定时间间隔,例如:5秒
    @Scheduled(fixedRate=5000)
    public void configureTasks() {
    logger.info("自动取消超时未支付订单任务开始...");
    List<String> cancelOrder = new ArrayList<>();
    List<String> orderNos = (List<String>) RedisClient.get(ORDERS_CREATE_TIME_KEY);
    if (orderNos != null && orderNos.size()>0){
    for (String orderNo : orderNos){
    String no = orderNo.substring(0,orderNo.indexOf("-"));
    String time = orderNo.substring(orderNo.indexOf("-")+1);
    Long orderTime = Long.parseLong(time);
    Long now = new Date().getTime();
    if (now - orderTime > 1000){
    logger.info("自动取消超时未支付订单: " + no + ",订单时间:" +time);
    ordersInfoService.orderTimeOut(no);
    cancelOrder.add(orderNo);
    }
    }
    orderNos.removeAll(cancelOrder);
    }
    RedisClient.set(ORDERS_CREATE_TIME_KEY,orderNos,-1);
    }
    }
  • 相关阅读:
    mysql 常用的几个网址
    mysql 5.7 master/salve 切换
    oracle ebs 12.1.3 的一些日志路径
    postgresql 10.x 的命令 pg_test_fsync
    yii使用bootstrap分页样式
    Mysql让主键归0
    PHP基础知识练习
    ini_set的用法介绍
    php set_time_limit(0) 设置程序执行时间的函数
    php func_get_args
  • 原文地址:https://www.cnblogs.com/bwl914/p/14028924.html
Copyright © 2011-2022 走看看