package com.hzs.member.detail.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.member.detail.CuMemberGrade;
import com.hzs.common.domain.member.detail.CuMemberLevel;

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

/**
 * 会员信息-等级升级记录 服务类
 */
public interface ICuMemberLevelService extends IService<CuMemberLevel> {

    /**
     * 删除会员等级升级记录（订单购买升级的）
     *
     * @param pkOrder         订单
     * @param pkApprove       审核人
     * @param currentDateTime 当前时间
     */
    void deleteCuMemberLevelRecord(Long pkOrder, Long pkApprove, Date currentDateTime);

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

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

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

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

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

}
