田源
2023-05-09 d2570148ec3884de3af721bd99c4b7acbbdee075
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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<Attribute> result = getAttributeClient().getById(id);
            return result.getData();
        });
    }
 
    /**
     * 获取元数据集合
     *
     * @param key 属性名称
     */
    public static List<Attribute> getList(String key) {
        String keyPrefix = ATTR_LIST.concat(StringPool.DASH).concat(AuthUtil.getTenantId()).concat(StringPool.COLON);
        return CacheUtil.get(DICT_CACHE, keyPrefix, key, () -> {
            R<List<Attribute>> result = getAttributeClient().getList(key);
            return result.getData();
        });
    }
 
}