package com.czg.account.service;

import com.czg.account.dto.calltable.*;
import com.czg.account.entity.CallConfig;
import com.czg.account.entity.CallQueue;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.CallTable;

/**
 * 叫号桌型表 服务层。
 *
 * @author zs
 * @since 2025-02-21
 */
public interface CallTableService extends IService<CallTable> {

    CallTablePage get(Long shopId, Long callTableId, Integer state);

    boolean add(Long shopId, CallTableDTO addCallTableDTO);

    boolean update(Long shopId, UpdateCallTableDTO callTableDTO);

    CallTableNumDTO takeNumber(Long shopId, TakeNumberDTO takeNumberDTO);

    String takeNumberCode(Long shopId, Integer callTableId);

    Integer call(Long shopId, CallQueueDTO callQueueDTO);

    boolean updateInfo(Long shopId, UpdateCallQueueDTO updateCallQueueDTO);

    Page<CallQueue> getQueue(Long shopId, String openId, Long callTableId, Integer state);

    Page<CallRecordVO> getCallRecord(Long shopId, Integer callTableId);

    CallConfig getConfig(Long shopId);

    boolean updateConfig(Long shopId, UpdateConfigDTO configDTO);

    boolean subMsg(CallSubMsgDTO subMsgDTO);

    Object getStatus(Long shopId, String openId, Long queueId);

    Boolean cancel(Long shopId, Long queueId);
}
