定时任务 - 定时关闭超期未支付订单

/**
 * 关闭超时未支付订单
 */
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);
}
经验分享 程序员 微信小程序 职场和发展