package com.hzs.member.account.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.account.CuMemberTradeBonus;
import com.hzs.common.domain.member.account.CuMemberTradeDetail;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author hzs
 * @since 2023-03-21
 */
public interface CuMemberTradeDetailMapper extends BaseMapper<CuMemberTradeDetail> {

    /**
     * 批量插入会员交易流水，用于奖金发放插入流水
     *
     * @param cuMemberTradeDetailList 交易流水
     * @return: void
     * @Author: sui q
     * @Date: 2023/3/21 11:45
     */
    void batchInsertCuMemberTradeDetail(@Param("cuMemberTradeDetailList") List<?> cuMemberTradeDetailList);

    /**
     * 奖金可提现 根据期间发放奖金
     *
     * @param startPeriod 期间
     * @return: void
     * @Author: sui q
     * @Date: 2023/3/21 15:30
     */
    void updateCuMemberTradeDetailByPeriod(@Param("startPeriod") Integer startPeriod, @Param("endPeriod") Integer endPeriod,  @Param("pkCountry") Integer pkCountry);

    /**
     * 根据会员编号查询会员奖金的发放明细
     *
     * @param pkMember 会员编号
     * @return: List<CuMemberTradeDetail>
     * @Author: sui q
     * @Date: 2023/3/24 16:05
     */
    List<CuMemberTradeDetail> queryCuMemberTradeDetail(Long pkMember);

    /**
     * 批量更新会员奖金发放明细
     *
     * @param cuMemberTradeDetailList 会员奖金发放明细
     * @return: void
     * @Author: sui q
     * @Date: 2023/3/24 17:41
     */
    void updateCuMemberTradeDetail(@Param("cuMemberTradeDetailList") List<?> cuMemberTradeDetailList);

    /**
     * 批量更新会员奖金发放明细
     *
     * @param cuMemberTradeDetailList 会员奖金发放明细
     * @return: void
     * @Author: sui q
     * @Date: 2023/3/24 17:41
     */
    void updateAddCuMemberTradeDetail(@Param("cuMemberTradeDetailList") List<?> cuMemberTradeDetailList);

    /**
     * 根据交易流水信息 批量插入会员奖金发放
     *
     * @param sourceCode 单号
     * @return Integer
     */
    Integer batchInsertMemberTradeDetailFromTrade(@Param("sourceCode") String sourceCode, @Param("period") Integer period);

    /**
     * 根据用户ID查询用户扣款金额
     *
     * @param pkMember 用户ID
     * @return List<CuMemberTradeDetail>
     */
    List<CuMemberTradeDetail> selectMemberTradeDetailByPkMember(@Param("pkMember") Long pkMember);
}
