package shop.alien.lawyer.service;

/**
 * 訂單過期處理服務接口
 * 
 * @author system
 * @since 2025-01-XX
 */
public interface OrderExpirationService {

    /**
     * 處理訂單支付超時
     * 
     * @param orderNum 訂單no
     */
    void handleOrderPaymentTimeout(String orderNum);
    /**
     * 處理訂單待接單超時
     *
     * @param expiredKey 訂單no
     */
    void handleRefundOrderKey(String expiredKey);

    /**
     * 處理訂單支付超時
     *
     * @param orderNum 訂單no
     */
    void handleTimeOutCompleteOrder(String orderNum);

    /**
     * 設置訂單支付超時監聽
     * 
     * @param orderNumber 訂單NO
     * @param timeoutSeconds 超時時間（秒），默認30分鐘
     */
    void setOrderPaymentTimeout(String orderNumber, long timeoutSeconds);

    /**
     * 設置订单待接单超时監聽
     *
     * @param orderNumber 訂單NO
     * @param timeoutSeconds 超時時間（秒），默認30分鐘
     */
    void setOrderAcceptTimeout(String orderNumber, long timeoutSeconds);

    /**
     * 設置訂單退款超時監聽
     *
     * @param orderNumber 訂單NO
     * @param timeoutSeconds 超時時間（秒），默認30分鐘
     */
    void setOrderRefundTimeout(String orderNumber, long timeoutSeconds);

    /**
     * 设置订单超时完成监听
     *
     * @param orderNumber 订单NO
     * @param timeoutSeconds 超时时间（秒），默認30分鐘
     */
    void setOrderCompleteTimeout(String orderNumber, long timeoutSeconds);

    /**
     * 取消訂單支付超時監聽（當訂單已支付時調用）
     * 
     * @param orderNumber 訂單NO
     */
    void cancelOrderPaymentTimeout(String orderNumber);

    /**
     * 取消訂單支付超時監聽（當訂單已支付時調用）
     *
     * @param orderNumber 訂單NO
     */
    void cancelOrderAcceptTimeout(String orderNumber);

    /**
     * 取消訂單支付超時監聽（當訂單已支付時調用）
     *
     * @param orderNumber 訂單NO
     */
    void cancelOrderRefundTimeout(String orderNumber);
}

