From 9eed388bf3c07dc0ea24fb0637b4964c8e387437 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 22 Dec 2025 16:45:43 +0800
Subject: [PATCH] fix(symbols): 修复K线数据获取逻辑

---
 src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java |   45 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 38 insertions(+), 7 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 ac6ee46..1926bfd 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
@@ -1,12 +1,18 @@
 package com.xcong.excoin.modules.symbols.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.huobi.client.model.Candlestick;
 import com.xcong.excoin.common.contants.AppContants;
 import com.xcong.excoin.common.enumerates.SymbolEnum;
 import com.xcong.excoin.common.response.Result;
 import com.xcong.excoin.common.system.mapper.CandlestickMapper;
+import com.xcong.excoin.modules.newPrice.ExchangeInfoEnum;
+import com.xcong.excoin.modules.newPrice.ExchangeLoginService;
+import com.xcong.excoin.modules.newPrice.KlineVo;
 import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao;
 import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity;
 import com.xcong.excoin.modules.symbols.parameter.dto.KlineDetailDto;
@@ -14,6 +20,7 @@
 import com.xcong.excoin.modules.symbols.parameter.vo.KlineDataVo;
 import com.xcong.excoin.modules.symbols.service.SymbolsService;
 import com.xcong.excoin.utils.CoinTypeConvert;
+import com.xcong.excoin.utils.MessageSourceUtils;
 import com.xcong.excoin.utils.RedisUtils;
 import com.xcong.excoin.utils.api.ApiClient;
 import com.xcong.excoin.utils.api.response.Kline;
@@ -24,6 +31,8 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 
 /**
@@ -126,22 +135,19 @@
 
     public HomeSymbolsVo getSymbolReturnData(String symbol) {
         PlatformCnyUsdtExchangeEntity cnyUsdtExchange = platformCnyUsdtExchangeDao.getCNYAndUSDTOne();
-        // 获取当日k线数据
-        Candlestick symbolObject = (Candlestick) redisUtils.get(symbol);
         // 获取当前币种最新价
         BigDecimal newestPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
-        // 获取当日k线的开盘价
-        BigDecimal openPrice = symbolObject.getOpen();
-
+        BigDecimal openPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToOpenKey(symbol)));
+        BigDecimal volume = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToVolumeKey(symbol)));
         BigDecimal upOrDown = newestPrice.subtract(openPrice).divide(openPrice, 8, BigDecimal.ROUND_HALF_UP);
         HomeSymbolsVo homeSymbolsVo = new HomeSymbolsVo();
 
         homeSymbolsVo.setSymbol(symbol);
         homeSymbolsVo.setCurrentPrice(newestPrice);
         homeSymbolsVo.setUpOrDown(upOrDown);
-        homeSymbolsVo.setVolume(symbolObject.getAmount());
+        homeSymbolsVo.setVolume(volume);
         if (cnyUsdtExchange != null) {
-            BigDecimal cnyPrice = openPrice.multiply(cnyUsdtExchange.getValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal cnyPrice = newestPrice.multiply(cnyUsdtExchange.getValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
             homeSymbolsVo.setCnyPrice(cnyPrice);
         }
 
@@ -182,4 +188,29 @@
         }
         return Result.fail("获取数据失败");
     }
+
+    @Override
+    public Result findKlineList(KlineVo klineDetailDto) {
+        Integer type = klineDetailDto.getType();
+        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);
+        String data = json.getString("data");
+        List<String[]> klinesList = JSON.parseArray(data, String[].class);
+        return Result.ok(klinesList);
+    }
 }

--
Gitblit v1.9.1