package shop.alien.store.service;

/**
 * 预约相关通知异步发送，避免阻塞主流程（查询+落库均在异步中执行）
 */
public interface ReservationNoticeAsyncService {

    /**
     * 异步根据订单ID查询预约/店铺/桌号并给商家发送订单取消提醒（LifeNotice）
     *
     * @param orderId 预订订单ID
     */
    void sendCancelReminderToStore(Integer orderId);

    /**
     * 异步给商家发送订单修改提醒（LifeNotice），需主线程传入原/新时间与桌位文案，异步内仅查店铺手机号并落库
     *
     * @param reservationId  预约ID
     * @param oldDateTime   原预订时间，如 2026-01-01 14:00
     * @param oldTableNumber 原桌位，如 A01
     * @param newDateTime   修改后时间
     * @param newTableNumber 修改后桌位，如 A02
     */
    void sendUpdateReminderToStore(Integer reservationId, String oldDateTime, String oldTableNumber, String newDateTime, String newTableNumber);

    /**
     * 异步根据预约ID查询预约/店铺/桌号并给商家发送订单过期提醒（LifeNotice）
     *
     * @param reservationId 预约ID
     */
    void sendExpiredReminderToStore(Integer reservationId);
}
