package com.hzs.system.config.service;


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

import java.util.List;

/**
 * <p>
 * 等级配置表 服务类
 * </p>
 *
 * @author zhangjing
 * @since 2022-09-08
 */
public interface IBdGradeService extends IService<BdGrade> {

    /**
     * 获取等级
     * @param pkId 主键
     * @return: R<GradeDTO>
     * @Author: sui q
     * @Date: 2022/9/24 17:57
     */
    BdGrade getBdGrade(Integer pkId);

    /*
     * @description: 根据等级值获得等级
     * @author: sui q
     * @date: 2023/4/23 19:21
     * @param: null null
     **/
    BdGrade getGradeByGradeValue(Integer gradeValue, Integer pkCountry);

    /**
     * 根据国家查询等级配置列表
     * @param pkCountry 国家
     * @return: R<List<AreaCurrencyDTO>>
     * @Author: sui q
     * @Date: 2022/9/6 10:37
     */
    List<BdGrade> queryGradeConfigByCondition(Integer pkCountry);

    /**
     * 根据国家查询等级配置列表
     * @param pkCountry 国家
     * @return: R<List<AreaCurrencyDTO>>
     * @Author: sui q
     * @Date: 2022/9/6 10:37
     */
    List<BdGrade> queryHaiFunGradeConfigByCondition(Integer pkCountry);


    /**
     * @description: 生成等级配置
     * @author: zhang jing
     * @date: 2022/10/18 16:42
     * @param: [grade]
     * @return: boolean
     **/
    boolean generate(BdGrade grade);
    /**
     * @description: 新增等级配置
     * @author: zhang jing
     * @date: 2022/10/26 11:57
     * @param: [grade]
     * @return: boolean
     **/
    boolean saveBdGrade(BdGradeExt gradeExt);

    /**
     * @description: 修改等级配置+新增等级范围
     * @author: zhang jing
     * @date: 2022/10/26 14:28
     * @param: [gradeExt]
     * @return: boolean
     **/
    boolean updateBdGrade(BdGradeExt gradeExt);

    /**
     * @description: 修改拓展信息
     * @author: zhang jing
     * @date: 2022/10/31 16:47
     * @param: [gradeExt]
     * @return: boolean
     **/
    boolean updateExpand (BdGradeExt gradeExt);

    /**
     * 查询所有国家的等级配置
    * @return: List<BdGrade>
    * @Author: sui q
    * @Date: 2023/2/21 15:32
    */
    List<BdGrade> queryBdGrade();

    boolean updateGrade(Long pkId);
    /**
     * 查询全部等级列表数据
     * @param pkCountry
     * @return
     */
    List<BdGrade> selectGradeAll(Integer pkCountry);
    /**
     * 根据国家查询等级配置列表
     * @param pkCountry 国家
     * @return: R<List<AreaCurrencyDTO>>
     * @Author: sui q
     * @Date: 2022/9/6 10:37
     */
    List<BdGrade> queryGrowUpFootmarkGrade(Integer pkCountry);
    /**
     * 查询等级
     * @param pkCountry
     * @return
     */
    List<BdGrade> queryNextGrade(Integer pkCountry);
}
