package com.starry.admin.modules.clerk.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.starry.admin.modules.clerk.module.entity.PlayClerkLevelInfoEntity;
import com.starry.admin.modules.system.module.entity.SysTenantEntity;
import java.util.List;

/**
 * 店员等级Service接口
 *
 * @author admin
 * @since 2024-03-30
 */
public interface IPlayClerkLevelInfoService extends IService<PlayClerkLevelInfoEntity> {

    /**
     * 初始化店员等级
     *
     * @param sysTenantEntity
     *            租户信息
     * @author admin
     * @since 2024/7/19 15:13
     **/
    void initDefaultLevel(SysTenantEntity sysTenantEntity);

    /**
     * 获取新增陪聊时，默认最低等级ID
     *
     * @return PlayClerkLevelInfoEntity
     */
    PlayClerkLevelInfoEntity getDefaultLevel();

    /**
     * 查询店员等级
     *
     * @param id
     *            店员等级主键
     * @return 店员等级
     */
    PlayClerkLevelInfoEntity selectPlayClerkLevelInfoById(String id);

    /**
     * 查询店员等级列表
     *
     * @return 店员等级集合
     */
    List<PlayClerkLevelInfoEntity> selectAll();

    /**
     * 分页查询店员等级列表
     *
     * @param playClerkLevelInfo
     *            店员等级
     * @return 店员等级集合
     */
    IPage<PlayClerkLevelInfoEntity> selectPlayClerkLevelInfoByPage(PlayClerkLevelInfoEntity playClerkLevelInfo);

    /**
     * 新增店员等级
     *
     * @param playClerkLevelInfo
     *            店员等级
     * @return 结果
     */
    boolean create(PlayClerkLevelInfoEntity playClerkLevelInfo);

    /**
     * 修改店员等级
     *
     * @param playClerkLevelInfo
     *            店员等级
     * @return 结果
     */
    boolean update(PlayClerkLevelInfoEntity playClerkLevelInfo);

    /**
     * 批量删除店员等级
     *
     * @param ids
     *            需要删除的店员等级主键集合
     * @return 结果
     */
    int deletePlayClerkLevelInfoByIds(String[] ids);

    /**
     * 删除店员等级信息
     *
     * @param id
     *            店员等级主键
     * @return 结果
     */
    int deletePlayClerkLevelInfoById(String id);

    /**
     * 查询最大等级
     *
     * @return 最大等级
     */
    int selectMaxLevel();

    /**
     * 删除最大等级
     */
    void delMaxLevelByLevel(Integer level);
}
