zj
2025-06-30 414555cfbb72c02ebc07ca164a7ff0d0f592de13
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
102
103
104
105
106
107
108
109
110
111
package data.loadcache;
 
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jdbc.core.JdbcTemplate;
 
import kernel.bo.RecordObjectMapper;
import project.RedisKeys;
import project.redis.RedisHandler;
import project.wallet.Wallet;
import project.wallet.WalletExtend;
import project.wallet.WalletLog;
import project.wallet.WalletRedisKeys;
import project.wallet.rate.ExchangeRate;
import project.wallet.rate.UserRateConfig;
 
public class WalletLoadCacheService {
    
    private static final Logger logger = LoggerFactory.getLogger(WalletLoadCacheService.class);
    private JdbcTemplate jdbcTemplate;
    private RedisHandler redisHandler;
 
    public void loadcache() {
//        loadWallet();
//        logger.info("完成Wallet数据加载redis");
        loadWalletExtend();
        logger.info("完成WalletExtend数据加载redis");
        loadExchangeRate();
        logger.info("完成ExchangeRate数据加载redis");
        loadUserRateConfig();
        logger.info("完成UserRateConfig数据加载redis");
        loadWalletLog();
        logger.info("完成WalletLog数据加载redis");
    }
 
    public void loadWallet() {
        List<Wallet> list = jdbcTemplate.query("SELECT * FROM T_WALLET", RecordObjectMapper.newInstance(Wallet.class));
        Map<String, Object> params = new ConcurrentHashMap<String, Object>();
        for (Wallet wallet : list) {
            params.put(WalletRedisKeys.WALLET_PARTY_ID + wallet.getPartyId().toString(), wallet);
        }
        redisHandler.setBatchSync(params);
    }
 
    public void loadWalletExtend() {
        List<WalletExtend> list = jdbcTemplate.query("SELECT * FROM T_WALLET_EXTEND", RecordObjectMapper.newInstance(WalletExtend.class));
        Map<String, Object> params = new ConcurrentHashMap<String, Object>();
        for (WalletExtend walletExtend : list) {
            params.put(
                    WalletRedisKeys.WALLET_EXTEND_PARTY_ID + walletExtend.getPartyId() + walletExtend.getWallettype(),
                    walletExtend);
        }
        redisHandler.setBatchSync(params);
    }
    
    public void loadExchangeRate() {
        List<ExchangeRate> list = jdbcTemplate.query("SELECT * FROM T_EXCHANGE_RATE", RecordObjectMapper.newInstance(ExchangeRate.class));
        Map<String, Map<String, ExchangeRate>> cacheMap = new ConcurrentHashMap<String, Map<String, ExchangeRate>>();
 
        for (ExchangeRate exchangeRate : list) {
            if (cacheMap.containsKey(exchangeRate.getOut_or_in())) {
                Map<String, ExchangeRate> map = cacheMap.get(exchangeRate.getOut_or_in());
                map.put(exchangeRate.getCurrency(), exchangeRate);
                cacheMap.put(exchangeRate.getOut_or_in(), map);
            } else {
                Map<String, ExchangeRate> map = new ConcurrentHashMap<String, ExchangeRate>();
                map.put(exchangeRate.getCurrency(), exchangeRate);
                cacheMap.put(exchangeRate.getOut_or_in(), map);
            }
            redisHandler.setSync(RedisKeys.EXCHANGE_RATE_ID + exchangeRate.getId().toString(), exchangeRate);
            redisHandler.setSync(RedisKeys.EXCHANGE_RATE_CURRENCY + exchangeRate.getCurrency(), exchangeRate);
        }
 
        for (Entry<String, Map<String, ExchangeRate>> entry : cacheMap.entrySet()) {
            redisHandler.setSync(RedisKeys.EXCHANGE_RATE_OUTORIN + entry.getKey(), entry.getValue());
        }
    }
    
    public void loadUserRateConfig() {
        List<UserRateConfig> list = jdbcTemplate.query("SELECT * FROM T_USER_RATE_CONFIG", 
                RecordObjectMapper.newInstance(UserRateConfig.class));
        Map<String, Object> params = new ConcurrentHashMap<String, Object>();
        for (UserRateConfig config : list) {
            params.put(RedisKeys.USER_RATE_CONFIG_PARTY_ID + config.getPartyId().toString(), config);
        }
        redisHandler.setBatchSync(params);
    }
    
    public void loadWalletLog() {
        List<WalletLog> list = jdbcTemplate.query("SELECT * FROM T_WALLET_LOG", RecordObjectMapper.newInstance(WalletLog.class));
        Map<String, Object> params = new ConcurrentHashMap<String, Object>();
        for (WalletLog walletLog : list) {
            params.put(RedisKeys.WALLET_LOG_ORDERNO + walletLog.getOrder_no(), walletLog);
        }
        redisHandler.setBatchSync(params);
    }
 
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
 
    public void setRedisHandler(RedisHandler redisHandler) {
        this.redisHandler = redisHandler;
    }
 
}