package shop.alien.store.service;

/**
 * 预订订单支付超时服务（Redis 缓存 + 过期自动关闭）
 *
 * @author system
 */
public interface ReservationOrderPaymentTimeoutService {

    /**
     * 设置预订订单支付超时监听（写入 Redis，过期后自动关闭订单）
     *
     * @param orderSn        订单编号 user_reservation_order.order_sn
     * @param timeoutSeconds 超时秒数，建议 15*60
     */
    void setReservationOrderPaymentTimeout(String orderSn, long timeoutSeconds);

    /**
     * 取消预订订单支付超时监听（订单已支付时调用，删除 Redis key）
     *
     * @param orderSn 订单编号
     */
    void cancelReservationOrderPaymentTimeout(String orderSn);

    /**
     * 处理过期 key 对应的订单（关闭待支付订单）。由 Redis 过期监听回调，一般不需要业务直接调用。
     *
     * @param orderSn 订单编号
     */
    void handleReservationOrderPaymentTimeout(String orderSn);
}
