package com.hzs.member.detail.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
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 CuMemberLevelMapper extends BaseMapper<CuMemberLevel> {

    /**
     * 查询最新升级记录
     *
     * @param pkMember 会员ID
     * @param pkOrder  订单ID（可为null）
     * @return
     */
    CuMemberLevel getLastUpgrade(@Param("pkMember") Long pkMember,
                                 @Param("pkOrder") Long pkOrder);

    /**
     * 查询所有升级记录
     *
     * @param pkMember 会员ID
     * @return
     */
    List<CuMemberLevel> getUpgradeList(@Param("pkMember") Long pkMember);

    /**
     * 批量保存升级记录
     *
     * @param memberLevelList 升级记录列表
     * @return
     */
    int insertBatch(@Param("memberLevelList") List<CuMemberLevel> memberLevelList);

    /**
     * 批量保存升级记录（新）
     *
     * @param memberGradeList 升级记录列表
     * @return
     */
    int insertGradeBatch(@Param("memberGradeList") List<CuMemberGrade> memberGradeList);

    /**
     * 查询会员升级记录
     *
     * @param pkMember   会员ID
     * @param gradeValue 等级值
     * @param queryTime  查询开始时间（可为空）
     * @param pkCountry  所属国家
     * @return
     */
    CuMemberLevel getLevelByGradeValue(@Param("pkMember") Long pkMember,
                                       @Param("gradeValue") Integer gradeValue,
                                       @Param("queryTime") Date queryTime,
                                       @Param("pkCountry") Integer pkCountry);

}
