/**
* 关闭超时未支付订单
*/
public void closeOrder();
@Transactional(propagation = Propagation.REQUIRED)
@Override
public void closeOrder() {
// 查询所有未付款订单,判断时间是否超时(1天),超时则关闭交易
OrderStatus queryOrder = new OrderStatus();
queryOrder.setOrderStatus(OrderStatusEnum.WAIT_PAY.type);
List<OrderStatus> list = orderStatusMapper.select(queryOrder);
for (OrderStatus os : list) {
// 获得订单创建时间
Date createdTime = os.getCreatedTime();
// 和当前时间进行对比
int days = DateUtil.daysBetween(createdTime, new Date());
if (days >= 1) {
// 超过1天,关闭订单
doCloseOrder(os.getOrderId());
}
}
}
@Transactional(propagation = Propagation.REQUIRED)
void doCloseOrder(String orderId) {
OrderStatus close = new OrderStatus();
close.setOrderId(orderId);
close.setOrderStatus(OrderStatusEnum.CLOSE.type);
close.setCloseTime(new Date());
orderStatusMapper.updateByPrimaryKeySelective(close);
}