package com.ruoyi.bst.booth.service;

import java.util.List;
import com.ruoyi.bst.booth.domain.Booth;
import com.ruoyi.bst.booth.domain.BoothVO;
import com.ruoyi.bst.booth.domain.BoothQuery;
import com.ruoyi.bst.device.domain.DeviceVO;
import com.ruoyi.bst.device.domain.vo.DeviceIotVO;

/**
 * 卡座Service接口
 *
 * @author ruoyi
 * @date 2025-04-18
 */
public interface BoothService
{
    /**
     * 查询卡座
     *
     * @param id 卡座主键
     * @return 卡座
     */
    public BoothVO selectBoothByBoothId(Long id, boolean scope);

    default BoothVO selectBoothByBoothId(Long id) {
        return this.selectBoothByBoothId(id, false);
    }

    /**
     * 查询卡座
     *
     * @param boothNo 卡座编号
     * @return 卡座编号
     */
    public BoothVO selectBoothByBoothNo(String boothNo, boolean scope);

    default BoothVO selectBoothByBoothNo(String boothNo) {
        return this.selectBoothByBoothNo(boothNo, false);
    }

    /**
     * 查询卡座列表
     *
     * @param booth 卡座
     * @return 卡座集合
     */
    public List<BoothVO> selectBoothList(BoothQuery booth);


    /**
     * 查询一个
     */
    public BoothVO selectOne(BoothQuery query);

    /**
     * 新增卡座
     *
     * @param booth 卡座
     * @return 结果
     */
    public int insertBooth(Booth booth);

    /**
     * 修改卡座
     *
     * @param booth 卡座
     * @return 结果
     */
    public int updateBooth(Booth booth);

    /**
     * 批量删除卡座
     *
     * @param boothIds 需要删除的卡座主键集合
     * @return 结果
     */
    public int deleteBoothByBoothIds(List<Long> boothIds);

    /**
     * 删除卡座信息
     *
     * @param boothId 卡座主键
     * @return 结果
     */
    public int deleteBoothByBoothId(Long boothId);


    public BoothVO bindUser(Long userId, String boothNo);

    public DeviceIotVO lighting(BoothVO booth, Long userId,boolean requiredIot);

    boolean lighting(DeviceVO device);

    void getDevices(BoothVO booth);

    int unbindUser(BoothVO booth);

    int userChangeBind(String usingBoothNo ,String changeBoothNo,Long userId);
}
