package com.sv.mapper;


import com.sv.annotation.NoPlatform;
import com.sv.dto.api.MemberCardVenuesDTO;
import com.sv.dto.api.VenueDTO;
import com.sv.dto.oms.VenueOmsDTO;
import com.sv.entity.Venue;
import com.sv.entity.VenueCard;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Mapper - 场馆
 *
 * @author zuojie.Liang
 * @since 2018-08-02
 */
public interface VenueMapper {

    /**
     * 新建场馆
     *
     * @param venue 场馆
     */
    void insert(Venue venue);

    /**
     * 更新场馆
     *
     * @param venue 场馆
     */
    void update(Venue venue);

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

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

    /**
     * api
     * 查询场馆
     *
     * @param id 编号
     * @return 场馆
     */
    Venue findById(Integer id);

    /**
     * api 查询场馆
     *
     * @param id 编号
     * @return 场馆
     */
    VenueDTO findByVenueId(Integer id);

    /**
     * 查询场馆
     *
     * @return 场馆集合
     */
    List<Venue> findAll();

    /**
     * 查询场馆oms
     *
     * @return 场馆集合
     */
    List<Venue> findAlls();

    /**
     * api 查询场馆列表
     *
     * @param type
     * @return
     */
    List<VenueDTO> findAllVenues(@Param("type") Integer type, @Param("geohash") String geohash);

    VenueOmsDTO findOmsDTOById(Integer id);

    /**
     * api
     * 查询我的会员卡
     */
    @NoPlatform
    List<MemberCardVenuesDTO> findByMemberCard(@Param("platformId") Integer platformId, @Param("memberId") Integer memberId);


    void updateStatus(@Param("id") Integer id, @Param("status") Byte status);

    /**
     * api
     * 查询地址
     */
    Venue findAddress(Integer id);

    List<Venue> findByType(@Param("venueType") Integer venueType);

    void addNumber(@Param("number") Integer number, @Param("venueId") Integer venueId);

    void updateNumber(@Param("number") Integer number, @Param("venueId") Integer venueId);

    Integer countByMember(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId);

    void addMember(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId);

    void deleteMember(@Param("memberId") Integer memberId, @Param("venueId") Integer venueId);
}