package com.hzs.member.account.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.account.CuMemberRecharge;
import com.hzs.common.domain.member.account.CuMemberRechargeExt;
import com.hzs.member.account.vo.CuMemberRechargeVO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 会员充值表 Mapper 接口
 */
public interface CuMemberRechargeMapper extends BaseMapper<CuMemberRecharge> {

    /**
     * 根据会员编号批量充值不同币种的金额
     *
     * @param cuMemberRecharges 会员充值信息
     * @return Integer
     */
    Integer batchSaveAccountByMemberCode(@Param("cuMemberRecharges") List<CuMemberRecharge> cuMemberRecharges);

    /**
     * 根据ID查询用户充值信息
     *
     * @param pkId ID
     * @return CuMemberRechargeExt
     */
    CuMemberRechargeExt selectMemberRechargeById(@Param("pkId") Long pkId);

    /**
     * 根据充值单号更新审核状态信息
     *
     * @param cuMemberRecharge 审核信息
     * @return int
     */
    Integer updateBathRechargeByRechargeCode(CuMemberRecharge cuMemberRecharge);

    /**
     * 根据条件查询列表信息
     *
     * @param cuMemberRechargeVO 查询参数
     * @return List<CuMemberRechargeExt>
     */
    List<CuMemberRechargeExt> selectMemberRechargeList(CuMemberRechargeVO cuMemberRechargeVO);

    /**
     * 根据条件查询列表总计信息
     *
     * @param cuMemberRechargeVO 查询参数
     * @return CuMemberRechargeExt
     */
    CuMemberRechargeExt selectMemberRechargeListTotal(CuMemberRechargeVO cuMemberRechargeVO);

    /**
     * 根据来源编号查询奖金账户的充值信息
     *
     * @param sourceCode 来源编号
     * @return List<CuMemberRecharge>
     */
    List<CuMemberRecharge> selectMemberRechargeBonusBySourceCode(String sourceCode);

    /**
     * 根据会员编号查询提交审核的用户
     *
     * @param pkCountry   国家ID
     * @param memberCodes 会员编号
     * @return List<String>
     */
    List<String> selectMemberRechargeApproveByUserCode(@Param("pkCountry") Integer pkCountry, @Param("memberCodes") List<String> memberCodes);

    /**
     * 查询操作人
     *
     * @param pkCountry 国家ID
     * @return List<String>
     */
    List<CuMemberRechargeExt> selectOperator(@Param("pkCountry") Integer pkCountry);

    /**
     * 查询总金额
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return List<CuMemberRecharge>
     */
    CuMemberRecharge selectRechargeTotalAmount(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
}
