package com.hdkj.lt.core.sys.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hdkj.lt.core.sys.model.po.SysOrgan;

import javax.annotation.Nonnull;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

/**
 * @Description:
 * @Author: wenhao
 * @Create: 2024/03/28 13:53
 * @Version: 1.0
 */
public interface ISysOrganService extends IService<SysOrgan> {

    /**
     * 将组织机构信息全部放入缓存中
     */
    void putAllToCache();

    /**
     * 根据组织机构ID从缓存中获取组织机构信息，缓存中没有则查询数据库，再更新缓存中的组织机构信息
     *
     * @param organId 组织机构ID
     * @return 组织机构（SYS_ORGAN表）
     */
    SysOrgan getCacheById(@Nonnull Long organId);

    /**
     * 根据组织机构ID集合批量从缓存中获取组织机构信息，缓存中没有的部分则查询数据库，再更新缓存中的组织机构信息
     *
     * @param organIds 组织机构ID集合
     * @return 组织机构信息Map（key为组织机构ID，value为组织机构信息）
     */
    Map<Long, SysOrgan> getCacheMapByIds(Collection<Long> organIds);

    /**
     * 根据组织机构ID集合批量从缓存中获取组织机构信息，缓存中没有的部分则查询数据库，再更新缓存中的组织机构信息
     *
     * @param organIds 组织机构ID集合
     * @return 组织机构信息Set
     */
    Set<SysOrgan> getCacheSetByIds(Collection<Long> organIds);

}
