package com.hzs.member.account.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.account.CuMemberAccount;
import com.hzs.common.domain.member.account.CuMemberTransfer;
import com.hzs.common.domain.member.account.CuMemberTransferExt;
import com.hzs.common.domain.system.config.BdTransfer;
import com.hzs.member.account.vo.CuMemberTransferVO;



/**
 * <p>
 * 会员转账表 服务类
 * </p>
 *
 * @author hzs
 * @since 2022-09-06
 */
public interface ICuMemberTransferService extends IService<CuMemberTransfer> {
    /**
     * 是否在血缘线上
     *
     * @param pkMember   转出方用户ID
     * @param toPkMember 转入方用户ID
     * @return Boolean
     */
    Boolean isBloodLine(Long pkMember, Long toPkMember);

    /**
     * 是否血缘伞上
     *
     * @param pkMember   转出方ID
     * @param toPkMember 转入方ID
     * @return Boolean
     */
    Boolean isBloodKinshipOnUmbrella(Long pkMember, Long toPkMember);

    /**
     * 是否血缘伞下
     *
     * @param pkMember   转出方ID
     * @param toPkMember 转入方ID
     * @return Boolean
     */
    Boolean isBloodKinshipUnderUmbrella(Long pkMember, Long toPkMember);

    /**
     * 查找安置人线上
     *
     * @param pkMember   转出方ID
     * @param toPkMember 转入方ID
     * @return Boolean
     */
    Boolean isPlaceSponsorOnline(Long pkMember, Long toPkMember);

    /**
     * 查找安置人伞上
     *
     * @param pkMember   转出方ID
     * @param toPkMember 转入方ID
     * @return Boolean
     */
    Boolean isPlaceSponsorOnUmbrella(Long pkMember, Long toPkMember);

    /**
     * 查找安置人伞下
     *
     * @param pkMember   转出方ID
     * @param toPkMember 转入方ID
     * @return Boolean
     */
    Boolean isPlaceSponsorUnderUmbrella(Long pkMember, Long toPkMember);

    /**
     * 获取转账配置
     *
     * @param pkCountry 国家ID
     * @return BdTransfer
     */
    BdTransfer getBdTransfer(Integer pkCountry);


    /**
     * 保存转账
     *
     * @param cuMemberTransfer 转账信息
     * @param cuMemberAccount 转出的账户信息
     * @param toMemberAccount 转入的账户信息
     * @return Integer
     */
    Integer saveMemberTransferInfo(CuMemberTransfer cuMemberTransfer, CuMemberAccount cuMemberAccount,CuMemberAccount toMemberAccount);

    /**
     * 根据条件查询转账列表
     *
     * @param cuMemberTransferVO 转账参数
     * @return List<CuMemberTransferVO>
     */
    Object[] selectMemberTransferList(CuMemberTransferVO cuMemberTransferVO);
}
