From 1b2b20308310e9fc5d4216d1e37f3587b251bc91 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Wed, 15 Oct 2025 15:48:45 +0800
Subject: [PATCH] 1

---
 trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/HobiDataService.java                  |    2 +
 trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java |    5 +-
 trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java     |   77 ++++++++++++++++++++++++++++++++++++++
 3 files changed, 81 insertions(+), 3 deletions(-)

diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java
index dadd646..2305d95 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/data/internal/CryptosKlineServiceImpl.java
@@ -108,8 +108,7 @@
 
     public void bulid(String symbol, String line) {
         RequestDataHelper.set("symbol", symbol);
-        List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, null,
-                0);
+        List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, null);
         KlineTimeObject model = new KlineTimeObject();
         Collections.sort(list); // 按时间升序
         model.setKline(list);
@@ -179,7 +178,7 @@
 
     @Override
     public void saveOneByHuoBi(String symbol, String line) {
-        List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, 2, 0);
+        List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, 2);
         if (list == null || list.isEmpty()) {
             return;
         }
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/HobiDataService.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/HobiDataService.java
index 215b2cb..34ed48c 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/HobiDataService.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/HobiDataService.java
@@ -89,6 +89,8 @@
      */
     public List<Kline> kline(String symbol, String period, Integer num, int maximum);
 
+    public List<Kline> kline(String symbol, String period, Integer num);
+
     /**
      * 市场深度数据(20档)
      */
diff --git a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
index 9aa50b4..f6ea35d 100644
--- a/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
+++ b/trading-order-huobi/src/main/java/com.yami.trading.huobi/hobi/internal/HobiDataServiceImpl.java
@@ -220,6 +220,83 @@
         return list;
     }
 
+    @Override
+    public List<Kline> kline(String symbol, String period, Integer num) {
+        List<Kline> list = new ArrayList<Kline>();
+        Item item = itemService.findBySymbol(symbol);
+        if (item == null) {
+            return list;
+        }
+        try {
+            Map<String, Object> param = new HashMap<String, Object>();
+            param.put("symbol", symbol);
+            param.put("period", period);
+            if (num == null) {
+                if (Kline.PERIOD_1MIN.equals(period)) {
+                    param.put("size", 1440);
+                }
+                if (Kline.PERIOD_5MIN.equals(period)) {
+                    param.put("size", 576);
+                }
+                if (Kline.PERIOD_15MIN.equals(period)) {
+                    param.put("size", 576);
+                }
+                if (Kline.PERIOD_30MIN.equals(period)) {
+                    param.put("size", 576);
+                }
+                if (Kline.PERIOD_60MIN.equals(period)) {
+                    param.put("size", 576);
+                }
+
+                if (Kline.PERIOD_4HOUR.equals(period)) {
+                    param.put("size", 576);
+                }
+                if (Kline.PERIOD_1DAY.equals(period)) {
+                    param.put("size", 500);
+                }
+                if (Kline.PERIOD_1MON.equals(period)) {
+                    param.put("size", 500);
+                }
+                if (Kline.PERIOD_1WEEK.equals(period)) {
+                    param.put("size", 500);
+                }
+
+            } else {
+                param.put("size", num);
+            }
+
+            String result = HttpHelper.getJSONFromHttp(Config.url + Config.kline, param, HttpMethodType.GET);
+            JSONObject resultJson = JSON.parseObject(result);
+            String status = resultJson.getString("status");
+            if ("ok".equals(status)) {
+                JSONArray dataArray = resultJson.getJSONArray("data");
+                /**
+                 * 丢弃第一行数据
+                 */
+                int start = 1;
+                if (num != null && num == 1) start = 0;
+                for (int i = start; i < dataArray.size(); i++) {
+                    JSONObject realtimeJson = dataArray.getJSONObject(i);
+                    Kline kline = new Kline();
+                    kline.setSymbol(item.getSymbol());
+                    kline.setPeriod(period);
+                    kline.setTs(Long.valueOf(realtimeJson.getString("id") + "000"));
+                    kline.setOpen(realtimeJson.getBigDecimal("open"));
+                    kline.setClose(realtimeJson.getBigDecimal("close"));
+                    kline.setHigh(realtimeJson.getBigDecimal("high"));
+                    kline.setLow(realtimeJson.getBigDecimal("low"));
+                    kline.setVolume(realtimeJson.getBigDecimal("vol"));
+                    kline.setAmount(realtimeJson.getBigDecimal("amount"));
+                    list.add(kline);
+                }
+
+            }
+        } catch (Exception e) {
+            logger.error("error", e);
+        }
+        return list;
+    }
+
     /**
      * 市场深度数据(20档),包装,数据本地化处理
      */

--
Gitblit v1.9.3