訂單超時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);
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM