package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.PileAuthCard;
import com.jsowell.pile.dto.PileAuthCardDTO;
import com.jsowell.pile.vo.uniapp.customer.AuthCardVO;
import com.jsowell.pile.vo.web.PileAuthCardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface PileAuthCardMapper {
    /**
     * delete by primary key
     *
     * @param id primaryKey
     * @return deleteCount
     */
    int deleteByPrimaryKey(Integer id);

    /**
     * insert record to table
     *
     * @param record the record
     * @return insert count
     */
    int insert(PileAuthCard record);

    int insertOrUpdate(PileAuthCard record);

    int insertOrUpdateSelective(PileAuthCard record);

    /**
     * insert record to table selective
     *
     * @param record the record
     * @return insert count
     */
    int insertSelective(PileAuthCard record);

    /**
     * select by primary key
     *
     * @param id primary key
     * @return object by primary key
     */
    PileAuthCard selectByPrimaryKey(Integer id);

    /**
     * update record selective
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKeySelective(PileAuthCard record);

    /**
     * update record
     *
     * @param record the updated record
     * @return update count
     */
    int updateByPrimaryKey(PileAuthCard record);

    int updateBatch(List<PileAuthCard> list);

    int batchInsert(@Param("list") List<PileAuthCard> list);

    /**
     * 查询充电站鉴权卡
     *
     * @param id 充电站鉴权卡主键
     * @return 充电站鉴权卡
     */
    // public PileAuthCard selectPileAuthCardById(Long id);

    PileAuthCardVO getCardInfoById(Long id);

    /**
     * 查询充电站鉴权卡信息
     *
     * @param pileAuthCard
     * @return
     */
    PileAuthCard selectPileAuthCardInfo(PileAuthCard pileAuthCard);

    /**
     * 查询充电站鉴权卡列表
     *
     * @param pileAuthCard 充电站鉴权卡
     * @return 充电站鉴权卡集合
     */
    List<PileAuthCard> selectPileAuthCardList(PileAuthCard pileAuthCard);

    /**
     * 查询充电站鉴权卡列表
     *
     * @param dto 充电站鉴权卡
     * @return 充电站鉴权卡集合
     */
    List<PileAuthCardVO> getPileAuthCardInfoList(PileAuthCardDTO dto);

    /**
     * 新增充电站鉴权卡
     *
     * @param pileAuthCard 充电站鉴权卡
     * @return 结果
     */
    int insertPileAuthCard(PileAuthCard pileAuthCard);

    /**
     * 修改充电站鉴权卡
     *
     * @param pileAuthCard 充电站鉴权卡
     * @return 结果
     */
    int updatePileAuthCard(PileAuthCard pileAuthCard);

    /**
     * 删除充电站鉴权卡
     *
     * @param id 充电站鉴权卡主键
     * @return 结果
     */
    int deletePileAuthCardById(Long id);

    /**
     * 停用某张卡
     *
     * @param id
     * @return
     */
    int deactivateCard(Long id);

    /**
     * 批量删除充电站鉴权卡
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deletePileAuthCardByIds(Long[] ids);

    int unBindingCard(PileAuthCard pileAuthCard);

    /**
     * 根据逻辑卡号查询某状态的鉴权卡信息
     *
     * @param status
     * @param logicCard
     * @return
     */
    PileAuthCard selectSomeStatusCardInfo(@Param("status") String status, @Param("logicCard") String logicCard);

    /**
     * 通过memberId查询鉴权卡列表 （小程序用）
     *
     * @param memberId
     * @return
     */
    List<AuthCardVO> getAuthCardListByMemberId(@Param("memberId") String memberId);
}