
package com.tmerclub.cloud.supplier.mapper;

import com.tmerclub.cloud.api.supplier.vo.SupplierBankCardVO;
import com.tmerclub.cloud.supplier.dto.SupplierBankCardDTO;
import com.tmerclub.cloud.supplier.model.SupplierBankCard;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 银行卡信息
 *
 * @author lhd
 * @date 2022-03-14 17:04:32
 */
public interface SupplierBankCardMapper {

    /**
     * 根据银行卡信息id获取银行卡信息
     *
     * @param supplierBankCardId 银行卡信息id
     * @return 银行卡信息
     */
    SupplierBankCardVO getBySupplierBankCardId(@Param("supplierBankCardId") Long supplierBankCardId);

    /**
     * 保存银行卡信息
     * @param supplierBankCard 银行卡信息
     */
    void save(@Param("supplierBankCard") SupplierBankCard supplierBankCard);

    /**
     * 更新银行卡信息
     * @param supplierBankCard 银行卡信息
     */
    void update(@Param("supplierBankCard") SupplierBankCard supplierBankCard);

    /**
     * 根据银行卡信息id删除银行卡信息
     * @param supplierBankCardId
     */
    void deleteById(@Param("supplierBankCardId") Long supplierBankCardId);

    /**
     * 根据供应商id获取银行卡列表
     * @param supplierId
     * @return
     */
    List<SupplierBankCardVO> listBySupplierId(@Param("supplierId") Long supplierId);

    /**
     * 批量插入供应商银行卡信息
     * @param supplierBankCardDTOList
     * @param supplierId
     */
    void insertBatch(@Param("supplierBankCardList") List<SupplierBankCardDTO> supplierBankCardDTOList, @Param("supplierId") Long supplierId);

    /**
     * 根据供应商id批量删除该供应商下的银行卡信息
     * @param supplierId
     */
    void deleteBySupplierId(@Param("supplierId") Long supplierId);

    /**
     * 设置银行卡为主账号
     * @param supplierBankCardId
     * @param supplierId
     */
    void setPrimary(@Param("supplierBankCardId") Long supplierBankCardId, @Param("supplierId") Long supplierId);

    /**
     * 设置银行卡不为主账号
     * @param supplierBankCardId
     * @param supplierId
     */
    void setNotPrimary(@Param("supplierBankCardId") Long supplierBankCardId, @Param("supplierId") Long supplierId);

    /**
     * 根据供应商id统计银行卡数量
     * @param supplierId
     * @return
     */
    int countBySupplierId(Long supplierId);
}
