package com.hzs.member.account.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.account.CuMemberBank;
import com.hzs.member.account.dto.CuMemberBankParam;
import com.hzs.member.account.vo.CuMemberBankVO;
import com.hzs.member.handlebusiness.vo.BusinessMemberVO;

import java.util.List;

/**
 * <p>
 * 会员信息-银行卡信息 服务类
 * </p>
 *
 * @author hzs
 * @since 2022-08-31
 */
public interface ICuMemberBankService extends IService<CuMemberBank> {
    /**
     * 根据主键查询银行卡信息
     *
     * @param pkId 主键
     * @return CuMemberBank
     */
    CuMemberBankVO selectCuMemberBankById(Long pkId);

    /**
     * 是否绑定银行卡
     *
     * @param pkMember 会员ID
     * @return CuMemberBank
     */
    CuMemberBankVO isBindBank(Long pkMember, Integer pkCountry);

    /**
     * 解绑银行卡
     *
     * @param pkId 银行卡ID
     * @return Boolean
     */
    Boolean unbindBank(Long pkId);

    /**
     * 保存用户银行卡信息
     *
     * @param cuMemberBankParam 银行卡信息
     * @return Integer
     */
    Integer saveMemberBank(CuMemberBankParam cuMemberBankParam);


    /**
     * 查询绑定的银行卡
     *
     * @param pkMember  会员ID
     * @param pkCountry 国家ID
     * @return List<CuMemberBank>
     */
    List<CuMemberBankVO> selectBankCardByPkMember(Long pkMember, Integer pkCountry);

    /**
     * 修改默认卡
     *
     * @param pkId ID
     * @return Integer
     */
    Boolean updateDefault(Long pkId,Long pkMember,Integer pkCountry);

    /**
     * 根据会员批量重置银行卡
     *
     * @param businessMemberList 办理业务会员信息
     * @param updatePkMember     变更人
     * @return Integer
     */
    Integer batchUpdateBankBypkMembers(List<BusinessMemberVO> businessMemberList, Long updatePkMember);

    /**
     * 查询重复的银行信息
     * @param cuMemberBankParam 入参
     * @return  List<CuMemberBank>
     */
    List<CuMemberBank> selectRepeatBank(CuMemberBankParam cuMemberBankParam);

}
