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);
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|