package com.hzs.system.config.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hzs.common.domain.system.config.BdGrade;
import com.hzs.common.domain.system.config.ext.BdGradeExt;

import java.math.BigDecimal;
import java.util.List;

/**
 * 等级配置表 服务类
 */
public interface IBdGradeService extends IService<BdGrade> {

    /**
     * 获取等级
     *
     * @param pkId 主键
     */
    BdGrade getBdGrade(Integer pkId);

    /*
     *  根据等级值获得等级
     **/
    BdGrade getGradeByGradeValue(Integer gradeValue, Integer pkCountry);

    /**
     * 根据国家查询等级配置列表
     *
     * @param pkCountry 国家
     */
    List<BdGrade> queryGradeConfigByCondition(Integer pkCountry);

    /**
     * 根据国家查询等级配置列表
     *
     * @param pkCountry 国家
     */
    List<BdGrade> queryHaiFunGradeConfigByCondition(Integer pkCountry);

    /**
     * 生成等级配置
     **/
    boolean generate(BdGrade grade);

    /**
     * 新增等级配置
     **/
    boolean saveBdGrade(BdGradeExt gradeExt);

    /**
     * 修改等级配置+新增等级范围
     **/
    boolean updateBdGrade(BdGradeExt gradeExt);

    /**
     * 修改拓展信息
     **/
    boolean updateExpand(BdGradeExt gradeExt);

    List<BdGrade> queryRetailGrade();

    /**
     * 删除等级配置
     *
     * @param pkId
     * @param userId
     * @return
     */
    boolean updateGrade(Long pkId, Long userId);

    /**
     * 查询全部等级列表数据
     *
     * @param pkCountry
     * @return
     */
    List<BdGrade> selectGradeAll(Integer pkCountry);

    /**
     * 获取小于等于业绩最合适的等级
     *
     * @param achieve   业绩
     * @param pkCountry 所属国家
     * @return
     */
    BdGrade getLastGrade(BigDecimal achieve, Integer pkCountry);

}
