package com.hzs.bonus.bonus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.bonus.CuMemberBonus;
import com.hzs.common.domain.member.ext.CuMemberBonusExt;
import com.hzs.bonus.bonus.param.BonusParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 会员奖金-会员奖金汇总表 Mapper 接口
 */
public interface CuMemberBonusMapper extends BaseMapper<CuMemberBonus> {

    /**
     * 批量获取cuMemberBonus主键
     *
     * @param rowNum 数量
     */
    List<Long> batchQueryCuMemberBonusSeq(Integer rowNum);

    /**
     * 根据查询条件查询会员奖金
     *
     * @param bonusParam 查询条件
     */
    List<CuMemberBonus> queryMemberBonusTotalByCondition(BonusParam bonusParam);

    /**
     * 根据查询条件查询会员奖金
     *
     * @param bonusParam 查询条件
     */
    List<CuMemberBonusExt> queryMemberBonusByCondition(BonusParam bonusParam);

    /**
     * 根据查询条件查询会员奖金
     *
     * @param bonusParam 查询条件
     */
    List<CuMemberBonusExt> queryMemberBonusByConditionForServer(@Param("bonusParam") BonusParam bonusParam);

    /**
     * 根据查询条件查询会员奖金
     *
     * @param bonusParam 查询条件
     */
    List<CuMemberBonusExt> queryBonusTotalVoByConditionForServer(@Param("bonusParam") BonusParam bonusParam);

    /**
     * 删除会员奖金汇总表
     *
     * @param period 结算期间
     */
    void deleteCuMemberBonus(Integer period);

    /**
     * 批量插入会员奖金主表
     *
     * @param cuMemberBonusList 会员奖金
     */
    void batchInsertCuMemberBonus(@Param("cuMemberBonusList") List<?> cuMemberBonusList);

    /**
     * 批量插入会员奖金主表
     *
     * @param cuMemberBonusList 会员奖金
     */
    void insertOrUpdateCuMemberBonus(@Param("cuMemberBonusList") List<CuMemberBonus> cuMemberBonusList);

    /**
     * 更新奖金状态
     *
     * @param grantStatus    发放状态
     * @param oldGrantStatus 原来的发放状态
     */
    Integer updateCuMemberBonusStatus(@Param("pkCountry") Integer pkCountry, @Param("grantStatus") Integer grantStatus,
                                      @Param("oldGrantStatus") Integer oldGrantStatus, @Param("startPeriod") Integer startPeriod,
                                      @Param("endPeriod") Integer endPeriod);

    /*
     *  查询会员一周周期的拓展累计，复购拓展累计
     **/
    List<CuMemberBonus> queryWeekMemberBonus(@Param("startPeriod") int startPeriod, @Param("endPeriod") int endPeriod);
}
