package com.njcn.gather.system.dictionary.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.system.dictionary.pojo.param.DictDataParam;
import com.njcn.gather.system.dictionary.pojo.po.DictData;
import com.njcn.web.pojo.dto.SimpleTreeDTO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author hongawen
 * @since 2021-12-13
 */
public interface IDictDataService extends IService<DictData> {


    /**
     * 根据字典类型id查询字典信息
     * @param queryParam 查询参数
     * @return 操作结果
     */
    Page<DictData> getDictDataByTypeId(DictDataParam.QueryParam queryParam);

    /**
     * 根据字典类型id查询该类型下所有字典数据
     *
     * @param typeId
     * @return
     */
    List<DictData> listDictDataByTypeId(String typeId);

    /**
     * 根据字典类型id查询字典信息
     * @param typeId 字典类型id
     * @return 操作结果
     */
    List<DictData> getDictDataByTypeId(String typeId);

    /**
     * 新增数据字典
     * @param dictDataParam 字典数据
     * @return 操作结果
     */
    boolean addDictData(DictDataParam dictDataParam);


    /**
     * 更新字典数据
     * @param updateParam 字典数据
     * @return 操作结果
     */
    boolean updateDictData(DictDataParam.UpdateParam updateParam);

    /**
     * 批量逻辑删除字典数据
     * @param ids 字典id集合
     * @return 操作结果
     */
    boolean deleteDictData(List<String> ids);

    /**
     * 根据字典id获取字典数据
     * @param id 查询参数
     * @return 根据字典id查询字典数据
     */
    DictData getDictDataById(String id);

    /**
     * 根据字典名称获取字典数据
     * @param name 字典名称
     * @return 根据字典名称查询字典数据
     */
    DictData getDictDataByName(String name);

    /**
     * 根据字典code获取字典数据
     * @param code 字典code
     * @return 根据字典code查询字典数据
     */
    DictData getDictDataByCode(String code);

    /**
     * 获取所有字典数据基础信息
     * @return 返回所有字典数据
     */
    List<SimpleTreeDTO> dictDataCache();

    /**
     * 导出字典数据
     * @param queryParam 查询参数
     */
    void exportDictData(DictDataParam.QueryParam queryParam);

    /**
     * 根据字典类型id删除字典数据
     * @param ids 字典类型id集合
     * @return 成功返回true，失败返回false
     */
    boolean deleteDictDataByDictTypeId(List<String> ids);
}
