futian.liu
2023-12-20 24768b0ab6231de0a0e43ef6d1b36a6e9c1b33ae
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.consum.base.cache;
 
import java.util.ArrayList;
import java.util.List;
 
import com.consum.base.Constants;
import com.consum.base.FinSysTenantCacheProvider;
import com.consum.base.service.FinSysTenantService;
import com.consum.model.po.FinSysTenant;
import com.walker.infrastructure.ApplicationRuntimeException;
import com.walker.infrastructure.utils.JsonUtils;
import com.walker.support.redis.cache.RedisCacheProvider;
 
/**
 * 区划缓存
 * 
 * @作者:power @时间:2023/7/20 20:35
 */
public class RedisFinSysTenantCache extends RedisCacheProvider<FinSysTenant> implements FinSysTenantCacheProvider {
    public RedisFinSysTenantCache() {
        this.setUseRedis(true);
        this.setLoadPage(false);
    }
 
    @Override
    public FinSysTenant get(String code) {
        FinSysTenant finSysTenant = this.getCacheData(code);
        if (finSysTenant == null) {
            finSysTenant = this.finSysTenantService.queryOneByCode(code);
            if (finSysTenant == null) {
                logger.warn("从数据库未查询到区划,无法缓存,code = {}", code);
                return null;
            }
 
            // 2023-07-26,时克英,区划相对固定,无需设置失效时间,让他永远存储吧。
            // this.putCacheData(code, finSysTenant,7200);
            this.putCacheData(code, finSysTenant);
        }
        return finSysTenant;
    }
 
    @Override
    public void save(FinSysTenant e) {
        this.putCacheData(e.getCode(), e);
    }
 
    @Override
    public void update(FinSysTenant e) {
        this.updateCacheData(e.getCode(), e);
    }
 
    @Override
    public void remove(String code) {
        this.removeCacheData(code);
    }
 
    @Override
    public FinSysTenant getById(String id) {
        FinSysTenant finSysTenant = this.getCacheData(id);
        if (finSysTenant == null) {
            finSysTenant = this.finSysTenantService.get(new FinSysTenant(Long.parseLong(id)));
            if (finSysTenant == null) {
                logger.warn("从数据库未查询到区划,无法缓存,id = {}", id);
                return null;
            }
            this.putCacheData(finSysTenant.getId().toString(), finSysTenant);
        }
        return finSysTenant;
    }
 
    @Override
    public List<FinSysTenant> selectAll() {
        List<FinSysTenant> allTree = new ArrayList<>();
        FinSysTenant temp = null;
        for (String value : this.getCache().getIterator(null)) {
            try {
                temp = JsonUtils.jsonStringToObject(value, FinSysTenant.class);
            } catch (Exception ex) {
                throw new ApplicationRuntimeException("redis存储'EbProductBrand'解析错吴:" + value, ex);
            }
            allTree.add(temp);
        }
        return allTree;
    }
 
    @Override
    public String getProviderName() {
        return Constants.CACHE_NAME_FIN_TENANT;
    }
 
    @Override
    public Class<?> getProviderType() {
        return FinSysTenant.class;
    }
 
    public void setFinSysTenantService(FinSysTenantService finSysTenantService) {
        this.finSysTenantService = finSysTenantService;
    }
 
    private FinSysTenantService finSysTenantService;
}