package com.sckw.system.api;

import com.sckw.system.api.model.dto.res.*;

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

/**
 * @desc: 基础信息远程接口
 * @author: czh
 * @date: 2023/6/19
 */
public interface RemoteSystemService {

    /**
     * @param keys type#value,type#value
     * @return Map<String, SysDictResDto>
     * @desc: 根据类型id查字典，先查redis，没查到查数据库，查出来了存redis
     * @author: czh
     * @date: 2023/7/5
     */
    Map<String, SysDictResDto> queryDictMapByTypeValues(String keys);

    /**
     * @param type 类型
     * @return Map<String, SysDictResDto>
     * @desc: 根据类型id查字典，先查redis，没查到查数据库，查出来了存redis
     * @author: czh
     * @date: 2023/7/5
     */
    Map<String, SysDictResDto> queryDictMapByType(String type);

    /**
     * @param type 类型
     * @return SysDictResDto
     * @desc: 根据类型id查字典，先查redis，没查到查数据库，查出来了存redis
     * @author: czh
     * @date: 2023/7/5
     */
    List<SysDictResDto> queryDictByType(String type);

    /**
     * @param type 字典类型，value key
     * @return SysDictResDto
     * @desc: 根据字典类型和key查
     * @author: czh
     * @date: 2023/7/7
     */
    SysDictResDto queryDictByTypeAndValue(String type, String value);

    /**
     * @param type 字典类型
     * @return SysDictResDto
     * @desc: 根据字典类型和key查字典
     * @author: czh
     * @date: 2023/7/7
     */
    List<SysDictGroupResDto> queryDictGroupByType(String type);

    /**
     * @param type 字典类型 value key
     * @return SysDictResDto
     * @desc: 根据字典类型和key查最底层的数据
     * @author: czh
     * @date: 2023/7/7
     */
    List<SysDictResDto> queryDictBottom(String type, String value);

    /**
     * @param type 字典类型，value key
     * @return SysDictGroupResDto
     * @desc: 根据字典类型和key查字典组
     * @author: czh
     * @date: 2023/7/7
     */
    SysDictGroupResDto queryDictGroupByTypeAndValue(String type, String value);

    /**
     * @param entId 企业id
     * @return EntCacheResDto
     * @desc: 从缓存查企业信息
     * @author: czh
     * @date: 2023/7/7
     */
    EntCacheResDto queryEntCacheById(Long entId);

    /**
     * @desc: 从缓存批量查企业信息
     * @author: yzc
     * @date: 2023-07-10 8:59
     * @Param entIds:
     * @return: java.util.List<com.sckw.system.api.model.dto.res.EntCacheResDto>
     */
    List<EntCacheResDto> queryEntCacheByIds(List<Long> entIds);

    /**
     * @param entIds 企业id
     * @return Map
     * @desc: 从缓存批量主体机构信息
     * @author: czh
     * @date: 2023/7/22
     */
    Map<Long, List<EntCacheResDto>> queryEntDeptCacheByIds(List<Long> entIds);

    /**
     * @desc: 从缓存批量查企业信息
     * @author: yzc
     * @date: 2023-07-10 8:59
     * @Param entIds
     * @return: Map
     */
    Map<Long, EntCacheResDto> queryEntCacheMapByIds(List<Long> entIds);

    /**
     * @param entName 企业名
     * @return EntCacheResDto
     * @desc: 从缓存查企业信息 模糊匹配
     * @author: czh
     * @date: 2023/7/7
     */
    List<EntCacheResDto> queryEntCacheByName(String entName);

    /**
     * @param entIdList 企业id集合
     * @return Map<Long, EntCacheResDto>
     * @desc: 查企业树
     * @author: czh
     * @date: 2023/7/17
     */
    Map<Long, EntCacheResDto> queryEntTreeByIds(List<Long> entIdList);

    /**
     * @param userId 用户id
     * @return UserCacheResDto
     * @desc: 从缓存查用户信息
     * @author: czh
     * @date: 2023/7/7
     */
    UserCacheResDto queryUserCacheById(Long userId);

    /**
     * @desc: 从缓存查用户信息
     * @author: yzc
     * @date: 2023-07-10 17:59
     * @Param userIds:
     * @return: java.util.List<com.sckw.system.api.model.dto.res.UserCacheResDto>
     */
    List<UserCacheResDto> queryUserCacheByIds(List<Long> userIds);

    /**
     * @desc: 从缓存查用户信息
     * @author: yzc
     * @date: 2023-07-10 17:59
     * @Param userIds: 用户id
     * @return: Map
     */
    Map<Long, UserCacheResDto> queryUserCacheMapByIds(List<Long> userIds);

    /**
     * @desc: 从缓存查区域信息
     * @author: yzc
     * @date: 2023-07-11 11:45
     * @Param code:
     * @return: com.sckw.system.api.model.dto.res.SysAreaCacheResDto
     */
    SysAreaCacheResDto queryAreaCacheById(Integer code);

    /**
     * @param list 地址code集合
     * @return AreaTreeFrontResDto
     * @desc: 向上查找区域树
     * @author: czh
     * @date: 2023/8/2
     */
    List<AreaTreeFrontResDto> queryAreaTreeFrontByCodeList(List<Integer> list);
    /**
     * @param entId 企业id
     * @return UserCacheResDto
     * @desc: 根据企业id查客户经理信息
     * @author: czh
     * @date: 2023/7/11
     */
    UserCacheResDto queryManagerInfoByEntId(Long entId);

}
