package com.njcn.product.system.dict.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.product.system.dict.pojo.param.DictDataParam;
import com.njcn.product.system.dict.pojo.po.DictData;
import com.njcn.product.system.dict.pojo.vo.DictDataVO;


import java.util.List;

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

    /**
     * 根据前台传递参数，分页查询字典数据
     * @param queryParam 查询参数
     * @return 字典列表
     */
    Page<DictDataVO> listDictData(DictDataParam.DictDataQueryParam queryParam);

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

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

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

    /**
     * 根据字典类型id查询字典信息
     */
    Page<DictDataVO> getTypeIdData(DictDataParam.DicTypeIdQueryParam queryParam);

    /**
     *
     * @param dicIndex 字典id
     * @return 根据字典id查询字典数据
     */
    DictData getDicDataById(String dicIndex);

    /**
     *
     * @param dictypeName 字典类型名称
     * @return 根据字典类型名称查询字典数据
     */
    List<DictData> getDicDataByTypeName(String dictypeName);

    /**
     *
     * @param dictTypeCode 字典类型code
     * @return 根据字典类型名称查询字典数据
     */
    List<DictData> getDicDataByTypeCode(String dictTypeCode);

    /**
     *
     * @param dicName 字典名称
     * @return 根据字典名称查询字典数据
     */
    DictData getDicDataByName(String dicName);

    /**
     *
     * @param dicName 字典名称,类型名称
     * @return 根据字典名称查询字典数据
     */
    DictData getDicDataByNameAndType(String dicName,String typeName);

    /**
     *
     * @param dicCode 字典Code,类型名称
     * @return 根据字典Code查询字典数据
     */
    DictData getDicDataByCodeAndType(String dicCode,String typeCode);
    /**
     *
     * @param code 字典code
     * @return 根据字典code查询字典数据
     */
    DictData getDicDataByCode(String code);


    /**
     * 根据字典类型名称&数据名称获取字典数据
     *
     * @param dicTypeName 字典类型名称
     * @param dicDataName 字典数据名称
     * @return 字典数据
     */
    DictData getDicDataByNameAndTypeName(String dicTypeName, String dicDataName);

    /**
     * 后台新增字典数据
     * @param dicTypeName 类型名称
     * @param dicDataName 数据名称
     * @return 新增后的字典数据
     */
    DictData addDictData(String dicTypeName, String dicDataName);



}
