package org.sxkj.resource.cacel; import org.apache.logging.log4j.util.Strings; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.tool.utils.SpringUtil; import org.sxkj.resource.entity.Oss; import org.sxkj.resource.service.IOssService; import static org.springblade.core.cache.constant.CacheConstant.*; /** * 业务字典缓存工具类 * * @author Chill */ public class OssCache { private static final String OSS_MIN_DEV_SN = "oss:dev:sn:"; public static final String OSS_CODE = "oss:code:"; private static IOssService ossService; private static IOssService getOssService() { if (ossService == null) { ossService = SpringUtil.getBean(IOssService.class); } return ossService; } /** * 根据机场编号获取oss信息 * * @param sn 机场编号 * @return DictBiz */ public static Oss getOssBySn(String sn) { // 如果sn 为空,直接查询默认的 if (Strings.isBlank(sn)){ return getDefaultOss(); } Oss oss = CacheUtil.get(RESOURCE_CACHE, OSS_MIN_DEV_SN, sn, Oss.class); // 从数据库查 if (oss == null) { Oss ossInfo = getOssService().getOssInfoByDevSn(sn); if (null==ossInfo){ // 如果为空则查询默认的连接方式 return getDefaultOss(); } CacheUtil.put(RESOURCE_CACHE, OSS_MIN_DEV_SN, sn, ossInfo); return ossInfo; } // 返回 return oss; } /** * 获取默认的 oss 信息 * @return Oss */ public static Oss getDefaultOss() { String key = "000000"; Oss oss = CacheUtil.get(RESOURCE_CACHE, OSS_CODE, key, () -> getOssService().getDefaultOss(key)); return oss; } }