gao
2020-05-27 7fe6d6283dfda883bb50617b1aaeb83b2046f8df
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
package com.xcong.excoin.modules.symbols.service.impl;
 
import com.alibaba.fastjson.JSONObject;
import com.huobi.client.model.Candlestick;
import com.xcong.excoin.common.enumerates.SymbolEnum;
import com.xcong.excoin.modules.symbols.service.SymbolsService;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.api.ApiClient;
import com.xcong.excoin.utils.api.response.Kline;
import com.xcong.excoin.utils.api.response.KlineResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
 
/**
 * @author wzy
 * @date 2020-05-26
 **/
@Slf4j
@Service
public class SymbolsServiceImpl implements SymbolsService {
 
    @Resource
    private RedisUtils redisUtils;
 
    private static final String API_KEY = "3938f004-bfe31905-f7581c1a-6abe0";
    private static final String API_SECRET = "a0f7a154-ghxertfvbf-6ce2d90c-a0bab";
 
 
    private static volatile ApiClient client;
 
    private static ApiClient getClient() {
        if (client == null) {
            synchronized (ApiClient.class) {
                if (client == null) {
                    client = new ApiClient(API_KEY, API_SECRET);
                }
            }
        }
        return client;
    }
 
 
    @Override
    public void updateSymbolsKine(String time) {
        synchronized (this) {
            //更新币币交易K线历史数据
            for (SymbolEnum symbol : SymbolEnum.values()) {
                log.info(symbol.getValue());
                String[] symbols = symbol.getValue().toLowerCase().split("/");
                ApiClient client = new ApiClient(API_KEY, API_SECRET);
                KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + "");
                log.info("{}", JSONObject.toJSONString(kline));
                if (kline != null) {
                    if ("ok".equalsIgnoreCase(kline.getStatus())) {
                        List<Kline> klines = (List<Kline>) kline.data;
                        List<Candlestick> list = new ArrayList<Candlestick>();
                        Candlestick candlestick = null;
                        for (Kline kline1 : klines) {
                            candlestick = new Candlestick();
                            candlestick.setAmount(BigDecimal.valueOf(kline1.getAmount()));
                            candlestick.setClose(BigDecimal.valueOf(kline1.getClose()));
                            candlestick.setCount(kline1.getCount());
                            candlestick.setHigh(BigDecimal.valueOf(kline1.getHigh()));
                            candlestick.setLow(BigDecimal.valueOf(kline1.getLow()));
                            candlestick.setVolume(BigDecimal.valueOf(kline1.getVol()));
                            candlestick.setTimestamp(kline1.getId() * 1000);
                            candlestick.setOpen(BigDecimal.valueOf(kline1.getOpen()));
                            list.add(candlestick);
                        }
 
                        if (klines.size() > 0) {
//                            redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list);
                        }
                    }
                }
            }
        }
    }
}