package com.hzs.member.account.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.account.CuMemberTradeBonus;
import com.hzs.common.domain.member.account.CuMemberTradeDetail;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author hzs
 * @since 2023-03-21
 */
public interface ICuMemberTradeDetailService extends IService<CuMemberTradeDetail> {

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

    /**
     * 奖金可提现 根据期间发放奖金
     *
     * @param startPeriod 期间
     * @return: void
     * @Author: sui q
     * @Date: 2023/3/21 15:30
     */
    void updateCuMemberTradeDetailByPeriod(Integer startPeriod, Integer endPeriod,  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(List<CuMemberTradeDetail> cuMemberTradeDetailList);

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

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

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

}
