package shop.alien.store.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import shop.alien.entity.store.StoreTable;
import shop.alien.entity.store.dto.StoreTableChangeDTO;
import shop.alien.entity.store.dto.StoreTableDTO;
import shop.alien.entity.store.vo.StoreTableStatusVO;

import java.util.List;

/**
 * 桌号表 服务类
 *
 * @author system
 * @since 2025-01-XX
 */
public interface StoreTableService extends IService<StoreTable> {

    /**
     * 分页查询桌号列表
     *
     * @param pageNum  页数
     * @param pageSize 页容
     * @param storeId  门店ID
     * @param status   状态（0:空闲, 1:就餐中, 2:已预订）
     * @return IPage<StoreTable>
     */
    IPage<StoreTable> getTablePage(Integer pageNum, Integer pageSize, Integer storeId, Integer status);

    /**
     * 批量创建桌号
     *
     * @param storeId     门店ID
     * @param tableNumbers 桌号列表
     * @return boolean
     */
    boolean batchCreateTables(Integer storeId, List<String> tableNumbers);

    /**
     * 更新桌号
     *
     * @param dto 桌号管理DTO
     * @return boolean
     */
    boolean updateTable(StoreTableDTO dto);

    /**
     * 删除桌号
     *
     * @param id 桌号ID
     * @return boolean
     */
    boolean deleteTable(Integer id);

    /**
     * 换桌
     *
     * @param dto 换桌DTO
     * @return boolean
     */
    boolean changeTable(StoreTableChangeDTO dto);

    /**
     * 批量查询桌号状态
     *
     * @param tableIds 桌号ID列表
     * @return List<StoreTableStatusVO>
     */
    List<StoreTableStatusVO> batchQueryTableStatus(List<Integer> tableIds);

}
