package com.ruoyi.ss.store.mapper;

import java.util.List;

import com.ruoyi.ss.store.domain.Store;
import com.ruoyi.ss.store.domain.StoreQuery;
import com.ruoyi.ss.store.domain.StoreVO;
import org.apache.ibatis.annotations.Param;

/**
 * 店铺Mapper接口
 *
 * @author qzz
 * @date 2024-11-20
 */
public interface StoreMapper
{
    /**
     * 查询店铺
     *
     * @param storeId 店铺主键
     * @return 店铺
     */
    public StoreVO selectEStoreByStoreId(Long storeId);

    /**
     * 查询店铺列表
     *
     * @param query 店铺
     * @return 店铺集合
     */
    public List<StoreVO> selectEStoreList(@Param("query") StoreQuery query);

    /**
     * 新增店铺
     *
     * @param eStore 店铺
     * @return 结果
     */
    public int insertEStore(Store eStore);

    /**
     * 修改店铺
     *
     * @param eStore 店铺
     * @return 结果
     */
    public int updateEStore(@Param("data") Store eStore);

    /**
     * 删除店铺
     *
     * @param storeId 店铺主键
     * @return 结果
     */
    public int deleteEStoreByStoreId(Long storeId);

    /**
     * 批量删除店铺
     *
     * @param storeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEStoreByStoreIds(Long[] storeIds);

    /**
     * 根据定位获取城市店铺列表
     */
    List<StoreVO> selectEStoreByCityId(Long cityId);

    /**
     * 根据商户id获取店铺列表
     */
    List<StoreVO> getStoreListByMerchantId(Long merchantId);

    /**
     * 是否存在该房间标签
     */
    boolean isExistTypeTags(@Param("storeId") Long storeId, @Param("type") String type);

    /**
     * 更新门店类型标签
     */
    int updateStoreTypeTags(@Param("storeId") Long storeId, @Param("type") String type);

    /**
     * 下架设备（根据设备id）
     * @param deviceId 设备id
     * @return String
     */
    int offlineDeviceByDeviceId(Long deviceId);

    /**
     * 获取店铺总数
     * @param userId
     * @return
     */
    int selectCount(Long userId);

    /**
     * 根据商户id获取店铺id
     * @param mchId
     * @return
     */
    Long selectStoreIdByMerchantId(Long mchId);

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

    /**
     * 校验店铺code是否存在
     */
    boolean checkCodeIsExist(@Param("code")String code, @Param("storeId")Long storeId);
}
