package com.sv.mapper;

import com.sv.annotation.PlatformKey;
import com.sv.entity.VenueCard;
import com.sv.entity.VipCard;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Mapper - 场馆会员卡
 *
 * @author lihong
 * @since 2018-08-02
 */
public interface VenueCardMapper {

    /**
     * 新建场馆会员卡
     *
     * @param venueCard 场馆会员卡
     */
    void insert(VenueCard venueCard);

    /**
     * 查询所有场馆会员卡
     *
     * @return 会员卡配置
     */
    List<VenueCard> findVenueCard();

    /**
     * 更新场馆会员卡
     *
     * @param venueCard 场馆会员卡
     */
    void update(VenueCard venueCard);

    /**
     * 删除场馆会员卡
     *
     * @param id 编号
     * @return 删除数量
     */
    int delete(Integer id);

    /**
     * 删除场馆会员卡
     *
     * @param ids 编号数组
     * @return 删除数量
     */
    int deleteByIds(Integer[] ids);

    /**
     * 查询场馆会员卡
     *
     * @param id 编号
     * @return 场馆会员卡
     */
    VenueCard findById(Integer id);

    /**
     * 查询场馆会员卡
     *
     * @param id 编号
     * @return 场馆会员卡
     */
    VenueCard findsById(Integer id);

    /**
     * 查询场馆会员卡
     *
     * @return 场馆会员卡集合
     */
    List<VenueCard> findAll();

    /**
     * 查询场馆会员卡
     *
     * @return 场馆会员卡集合
     */
    List<VenueCard> findAlls(@Param("id") Integer id);

    /**
     * 更新状态
     *
     * @param ids 编号
     * @param status 状态
     * @return 更新数量
     */
    int updateStatus(@Param("ids") Integer[] ids, @Param("status") Byte status);

    /**
     * api 根据场馆id,类型，查找场馆列表会员卡
     */
    @PlatformKey("c.platform_id")
    List<VenueCard> findByVenueId(@Param("venueId") Integer venueId, @Param("venueType") Integer venueType);

    /**
     * api 根据场馆ID，会员卡类型，场馆类型查找购买会员需要的金额
     * @param cardType
     * @param type
     * @param venueId
     * @return
     */
    VenueCard findPrice(@Param("cardType")Integer cardType,@Param("type")Integer type,@Param("venueId")Integer venueId);

    Integer countByVenue(@Param("venueId") Integer venueId,@Param("venueType") Integer venueType,@Param("excludeId") Integer excludeId,@Param("cardType") Integer cardType);
}