package com.hzs.bonus.detail.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hzs.common.domain.member.achieve.ext.CuMemberRetailRangeExt;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.detail.CuMemberLevel;
import org.apache.ibatis.annotations.Param;

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

/**
 * 会员信息-等级升级记录 Mapper 接口
 */
public interface CuMemberGradeMapper extends BaseMapper<CuMemberGrade> {

    /**
     * 回退会员等级
     */
    void updateCuMemberGrade(@Param("rangeTableName") String rangeTableName, @Param("period") Integer period);

    /**
     * 查询会员最新手动升级记录，更新秒结表会员等级小于手动升级的会员等级
     */
    void updateCuMemberGradeSecond(@Param("secondRangeTableName") String secondRangeTableName, @Param("period") Integer period);

    /**
     * 查询手动升级的等级
     */
    List<CuMemberGrade> queryCuMemberGradeByList(@Param("period") Integer period, @Param("memberRetailRangeExtList") List<CuMemberRetailRangeExt> memberRetailRangeExtList);

    /**
     * 查询会员等级
     */
    List<CuMemberLevel> queryCuMemberLevel(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 回退会员等级
     */
    void updateCuMemberGradeLevel(@Param("rangeTableName") String rangeTableName, @Param("pkOrder") Long pkOrder);

    /**
     * 查询订单升级记录
     *
     * @param pkMember
     * @param pkOrder
     * @return
     */
    CuMemberRetailRangeExt getMemberLevel(@Param("pkMember") Long pkMember, @Param("pkOrder") Long pkOrder);

    /**
     * 删除等级
     */
    void deleteCuMemberGrade(@Param("period") Integer period);

    /**
     * 删除等级升级记录
     */
    void deleteCuMemberGradeByList(@Param("cuMemberGradeList") List<CuMemberGrade> cuMemberGradeList, @Param("period") Integer period);

    /**
     * 查询自动升级的等级
     */
    List<CuMemberGrade> queryCuMemberGrade(@Param("cuMemberRetailRangeExtList") List<CuMemberRetailRangeExt> cuMemberRetailRangeExtList,
                                           @Param("period") Integer period);

}
