package com.ruoyi.ss.room.mapper;

import java.util.List;

import com.ruoyi.ss.room.domain.Room;
import com.ruoyi.ss.room.domain.RoomQuery;
import com.ruoyi.ss.room.domain.RoomVO;
import com.ruoyi.ss.room.domain.TagsVO;
import org.apache.ibatis.annotations.Param;

/**
 * 房间Mapper接口
 *
 * @author qzz
 * @date 2024-11-20
 */
public interface RoomMapper
{
    /**
     * 查询房间
     *
     * @param roomId 房间主键
     * @return 房间
     */
    public RoomVO selectERoomByRoomId(Long roomId);

    /**
     * 查询房间列表
     *
     * @param query 房间
     * @return 房间集合
     */
    public List<RoomVO> selectERoomList(@Param("query") RoomQuery query);

    /**
     * 查询房间ids
     *
     * @param query 条件
     * @return 房间集合
     */
    List<Long> selectRoomIdsList(@Param("query") RoomQuery query);

    /**
     * 新增房间
     *
     * @param eRoom 房间
     * @return 结果
     */
    public int insertERoom(Room eRoom);

    /**
     * 修改房间
     *
     * @param eRoom 房间
     * @return 结果
     */
    public int updateERoom(@Param("data") Room eRoom);

    /**
     * 修改店铺名
     */
    public int updateStoreName(@Param("data") Room eRoom);

    /**
     * 删除房间
     *
     * @param roomId 房间主键
     * @return 结果
     */
    public int deleteERoomByRoomId(Long roomId);

    /**
     * 批量删除房间
     *
     * @param roomIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteERoomByRoomIds(Long[] roomIds);

    /**
     * 根据店铺id查询房间列表
     *
     * @param storeId 店铺id
     * @return 房间集合
     */
    List<RoomVO> selectERoomListByStoreId(Long storeId);

//    /**
//     * 下架设备
//     * @param deviceId 设备id
//     * @return String
//     */
//    int offlineDevice(Long deviceId);

    /**
     * 解除套餐
     * @param ruleId 套餐id
     * @return String
     */
    int unBandRule(@Param("ruleId") Long ruleId,@Param("roomId")  Long roomId);

    /**
     * 获取空闲房间数
     */
    int selectIdleRoomNum(Long storeId);

    /**
     * 获取厕所数
     */
    int selectToiletNum(Long storeId);

    /**
     * 获取标签列表
     * @param storeId 店铺id
     * @return String
     */
    List<TagsVO> getTagListByStoreId(Long storeId);

    /**
     * 判断房间是否已存在该套餐
     * @param ruleId 套餐id
     * @return boolean
     */
    List<RoomVO> selectIsExistRule(Long ruleId);

    /**
     * 获取房间数
     */
    int getCount(@Param("query") RoomQuery query);

    /**
     * code交换id
     */
    Long getId(String roomCode);

    /**
     * 校验房间码是否存在
     */
    boolean checkCodeIsExist(@Param("code")String code, @Param("roomId")Long roomId);
}
