package com.vci.ubcs.omd.cache; import com.vci.ubcs.omd.entity.Attribute; import com.vci.ubcs.omd.feign.IAttributeClient; import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.SpringUtil; import org.springblade.core.tool.utils.StringPool; import java.util.List; import static org.springblade.core.cache.constant.CacheConstant.DICT_CACHE; /** * 元数据(属性)缓存工具类 * * @author Chill */ public class AttributeCache { private static final String ATTR_ID = "attr:id"; private static final String ATTR_LIST = "attr:list"; private static final String ATTR_CACHE = "ubcs:attr"; private static IAttributeClient attrClient; private static IAttributeClient getAttributeClient() { if (attrClient == null) { attrClient = SpringUtil.getBean(IAttributeClient.class); } return attrClient; } /** * 获取元数据实体 * * @param id 主键 * @return 元数据实体对象 */ public static Attribute getById(Long id) { String keyPrefix = ATTR_ID.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); return CacheUtil.get(ATTR_CACHE, keyPrefix, id, () -> { R result = getAttributeClient().getById(id); return result.getData(); }); } /** * 获取元数据集合 * * @param key 属性名称 */ public static List getList(String key) { String keyPrefix = ATTR_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON); return CacheUtil.get(DICT_CACHE, keyPrefix, key, () -> { R> result = getAttributeClient().getList(key); return result.getData(); }); } }