@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 cancelOrder = new ArrayList<>();

List orderNos = (List) 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);

}

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐