From 915218a43e8d7eb7b0d938151c6e0e1deba6f152 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 26 Dec 2025 10:58:05 +0800
Subject: [PATCH] refactor(symbols): 重命名K线时长字段从period到bar
---
src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java | 153 ++++++++++++++++++++++++++++++--------------------
1 files changed, 91 insertions(+), 62 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java b/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java
index cc882f8..8791fcf 100644
--- a/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java
@@ -66,42 +66,65 @@
return client;
}
+// @Override
+// public void updateSymbolsKine(String time) {
+// synchronized (this) {
+// //更新币币交易K线历史数据
+// for (SymbolEnum symbol : SymbolEnum.values()) {
+// try {
+// Thread.sleep(500);
+// } catch (InterruptedException e) {
+// e.printStackTrace();
+// }
+// String[] symbols = symbol.getValue().toLowerCase().split("/");
+// ApiClient client = getClient();
+// KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + "");
+// 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);
+// }
+// }
+// }
+// }
+// }
+// }
+
@Override
public void updateSymbolsKine(String time) {
synchronized (this) {
//更新币币交易K线历史数据
for (SymbolEnum symbol : SymbolEnum.values()) {
- try {
- Thread.sleep(500);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
String[] symbols = symbol.getValue().toLowerCase().split("/");
- ApiClient client = getClient();
- KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + "");
- 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);
- }
- }
- }
+ String instId = symbols[0] +"-"+ symbols[1];
+ instId = instId.toUpperCase() ;
+ String bar = time;
+ LinkedHashMap<String, Object> requestParam = new LinkedHashMap<>();
+ requestParam.put("instId",instId);
+ requestParam.put("bar",bar);
+ requestParam.put("limit","300");
+ String result = ExchangeLoginService.getInstance(ExchangeInfoEnum.OKX_UAT.name()).lineHistory(requestParam);
+ log.info("加载OKX-KLINE,{}", instId);
+ JSONObject json = JSON.parseObject(result);
+ String data = json.getString("data");
+ log.info("加载OKX-KLINE,{}", data);
+ redisUtils.set("KINE_" + instId + "_" + time, data);
}
}
}
@@ -159,49 +182,55 @@
String key = "KINE_{}_{}";
// 币币k线数据
if (AppContants.HOME_SYMBOLS_COIN == klineDetailDto.getType()) {
- key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getPeriod());
+ key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getBar());
// 合约k线数据
} else {
- key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getPeriod());
+ key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getBar());
}
- Object data = redisUtils.get(key);
- if (data != null) {
- List list = (List) data;
- int length = 0;
- // 默认获取k线900个柱状(超出会报错)
- int size = 900;
-
- if (list.size() > size) {
- length = size - 1;
- } else {
- length = list.size() - 1;
- }
-
- List<KlineDataVo> result = new ArrayList<>(length);
- for (int i = length; i > 0; i--) {
- Candlestick object = (Candlestick) list.get(i);
- KlineDataVo klineDataVo = CandlestickMapper.INSTANCE.toKlineDataVo(object);
- result.add(klineDataVo);
- }
- return Result.ok(result);
- }
- return Result.fail("获取数据失败");
+ String data = redisUtils.getString(key);
+ List<String[]> klinesList = JSON.parseArray(data, String[].class);
+ return Result.ok(klinesList);
+// if (data != null) {
+// List list = (List) data;
+// int length = 0;
+// // 默认获取k线900个柱状(超出会报错)
+// int size = 900;
+//
+// if (list.size() > size) {
+// length = size - 1;
+// } else {
+// length = list.size() - 1;
+// }
+//
+// List<KlineDataVo> result = new ArrayList<>(length);
+// for (int i = length; i > 0; i--) {
+// Candlestick object = (Candlestick) list.get(i);
+// KlineDataVo klineDataVo = CandlestickMapper.INSTANCE.toKlineDataVo(object);
+// result.add(klineDataVo);
+// }
+// return Result.ok(result);
+// }
+// return Result.fail("获取数据失败");
}
@Override
public Result findKlineList(KlineVo klineDetailDto) {
Integer type = klineDetailDto.getType();
- String instId = null;
- if (AppContants.HOME_SYMBOLS_COIN == type){
- instId = CoinTypeConvert.convertToCoinKlineKey(klineDetailDto.getInstId());
- }else if (AppContants.HOME_SYMBOLS_CONTRACT == type){
- instId = CoinTypeConvert.convertToKlineKey(klineDetailDto.getInstId());
- }else{
- return Result.fail("参数错误");
- }
+ String instId = klineDetailDto.getInstId();
+// String instId = null;
+// if (AppContants.HOME_SYMBOLS_COIN == type){
+// instId = CoinTypeConvert.convertToCoinKlineKey(klineDetailDto.getInstId());
+// }else if (AppContants.HOME_SYMBOLS_CONTRACT == type){
+// instId = CoinTypeConvert.convertToKlineKey(klineDetailDto.getInstId());
+// }else{
+// return Result.fail("参数错误");
+// }
+ String bar = klineDetailDto.getBar();
LinkedHashMap<String, Object> requestParam = new LinkedHashMap<>();
requestParam.put("instId",instId);
+ requestParam.put("bar",bar);
+ requestParam.put("limit","300");
String result = ExchangeLoginService.getInstance(ExchangeInfoEnum.OKX_UAT.name()).lineHistory(requestParam);
log.info("加载OKX-KLINE,{}", result);
JSONObject json = JSON.parseObject(result);
--
Gitblit v1.9.1