package com.sckw.system.dao;

import com.sckw.system.model.SysDict;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 字典
 * @author zk
 * @date 2023-05-30
 */
@Mapper
public interface SysDictDao {

    /**
     * 新增
     * @param record
     * @return
     */
    int insert(SysDict record);

    /**
     * 更新
     * @param record
     * @return
     */
    int update(SysDict record);

    /**
     * 详情查询
     * @param id
     * @return
     */
    SysDict selectByKey(Long id);

    /**
     * 详情查询
     * @param id
     * @return
     */
    List<SysDict> selectByKeys(List<Long> list);

    /**
     * 查询
     * @param params
     * @return
     */
    List<SysDict> findPage(Map<String, Object> params);

    /**
     * 查询
     * @param params
     * @return
     */
    List<Map<String, Object>> findList(Map<String, Object> params);

    /**
     * @param type 类型
     * @return SysDict
     * @desc: 根据类型查
     * @author: czh
     * @date: 2023/7/6
     */
    List<SysDict> queryByType(String type);

    /**
     * @param dictTypeId 字典类型id, value选项值  label
     * @return SysDict
     * @desc: 查询唯一的一条字典
     * @author: czh
     * @date: 2023/7/7
     */
    SysDict queryUnitDict(@Param(value = "dictTypeId") Long dictTypeId, @Param(value = "value") String value, @Param(value = "label") String label, @Param(value = "parentId") String parentId);

    /**
     * @param type 类型 value key
     * @return SysDict
     * @desc: 根据类型和key查唯一一条
     * @author: czh
     * @date: 2023/7/7
     */
    SysDict queryByTypeAndValue(@Param(value = "type") String type, @Param(value = "value") String value);

    /**
     * @return SysDict
     * @desc: 查全部
     * @author: czh
     * @date: 2023/7/7
     */
    List<SysDict> selectAll();
}
