package com.ruoyi.ss.store.mapper;

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

import java.util.List;

/**
 * 商户Mapper接口
 *
 * @author 邱贞招
 * @date 2024-02-21
 */
public interface StoreMapper
{
    /**
     * 查询商户
     *
     * @param storeId 商户主键
     * @return 商户
     */
    public StoreVo selectSmStoreById(Long storeId);

    /**
     * 查询商户列表
     *
     * @param store 商户
     * @return 商户集合
     */
    public List<StoreVo> selectSmStoreList( @Param("query")StoreQuery store);

    /**
     * 新增商户
     *
     * @param store 商户
     * @return 结果
     */
    public int insertSmStore(Store store);

    /**
     * 修改商户
     *
     * @param store 商户
     * @return 结果
     */
    public int updateSmStore(@Param("data") Store store);

    /**
     * 删除商户
     *
     * @param storeId 商户主键
     * @return 结果
     */
    public int deleteSmStoreById(Long storeId);

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

    /**
     * 修改数据的排序
     * @param start 排序范围起始
     * @param end 排序范围结束
     * @param offset 偏移量
     */
    int updateSort(@Param("start") Integer start, @Param("end") Integer end, @Param("offset") Integer offset);

    /**
     * 根据id列表查询数据
     * @param storeIds
     * @return
     */
    List<StoreVo> selectSmStoreByIds(@Param("storeIds") List<Long> storeIds);

    /**
     * 批量更新
     * @param list
     * @return
     */
    int batchUpdate(@Param("list")List<Store> list);

    /**
     * 逻辑删除
     * @param ids
     * @return
     */
    int logicDel(@Param("ids") List<Long> ids);

    /**
     * 查询数量
     * @param query
     * @return
     */
    int selectCount( @Param("query")StoreQuery query);

    /**
     * 将店铺设为默认店铺
     * @param userId 用户id
     * @param storeId 店铺id
     */
    void setDefault(@Param("userId") Long userId, @Param("storeId") Long storeId);

    /**
     * 查询一个
     * @param query
     * @return
     */
    StoreVo selectOne( @Param("query")StoreQuery query);

    /**
     * 通用查询数量方法
     * @param query
     * @return
     */
    List<StoreCountVO> selectCommonCount( @Param("query")StoreQuery query);

    /**
     * 根据条件更新
     */
    int updateByQuery(@Param("data") Store data, @Param("query") StoreQuery query);
}
