package com.hzs.bonus.detail.service;

import com.baomidou.mybatisplus.extension.service.IService;
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 java.util.Date;
import java.util.List;

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

    /**
     * 回退极差奖衔，每日重新结算，先把奖衔回退到前一天
     *
     * @param period         结算期间
     * @param rangeTableName 结算表
     */
    List<CuMemberLevel> calculateCuMemberRetailGradeInit(Integer period, Date startDate, Date endDate, String rangeTableName);

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

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

    /**
     * 回退会员等级
     */
    void updateCuMemberGrade(String rangeTableName, Long pkOrder);

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

    /**
     * 插入会员等级升级记录
     */
    void insertCuMemberGrade(List<CuMemberGrade> cuMemberGradeList);

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

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

}
