package com.cpop.system.business.service;

import com.cpop.core.base.R;
import com.cpop.system.business.bo.DictTypeBo;
import com.cpop.system.business.vo.DictTypePageVo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
import com.cpop.system.business.entity.DictType;

/**
 * 系统-字典表 服务层。
 *
 * @author DB
 * @since 2023-12-01
 */
public interface DictTypeService extends IService<DictType> {

    /**
     * 获取系统字典类型分页
     * @author DB
     * @since 2023/12/01
     * @param dictName 字典名
     * @return R<Page<DictTypePageVo>>
     */
    Page<DictTypePageVo> getDictTypePage(String dictName);

    /**
     * 查询系统类型是否存在
     * @author DB
     * @since 2023/12/01
     * @param bo 请求参数
     * @return boolean
     */
    Boolean checkDictTypeUnique(DictTypeBo bo);

    /**
     * 根据主键删除字典类型
     * @author DB
     * @since 2023/12/01
     * @param id 主键
     */
    void removeDataAndCache(String id);

    /**
     * 重设字典
     * @author DB
     * @since 2023/12/01
     */
    void resetDictCache();

    /**
     * 清除字典缓存
     * @author DB
     * @since 2023/12/01
     */
    void clearDictCache();

    /**
     * 加载字典缓存
     * @author DB
     * @since 2023/12/01
     */
    void loadingDictCache();
}
