From 6a8d1873fbd76ddc099917048f3bdb2b3661d7fd Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 26 Dec 2025 11:24:48 +0800
Subject: [PATCH] perf(symbols): 降低K线数据加载限制以提升性能

---
 src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java |   61 +++++++++++++-----------------
 1 files changed, 27 insertions(+), 34 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 8432ea3..efcd089 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,15 +1,11 @@
 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;
@@ -17,21 +13,16 @@
 import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity;
 import com.xcong.excoin.modules.symbols.parameter.dto.KlineDetailDto;
 import com.xcong.excoin.modules.symbols.parameter.vo.HomeSymbolsVo;
-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;
-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.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 
@@ -118,7 +109,7 @@
                 LinkedHashMap<String, Object> requestParam = new LinkedHashMap<>();
                 requestParam.put("instId",instId);
                 requestParam.put("bar",bar);
-                requestParam.put("limit","300");
+                requestParam.put("limit","50");
                 String result = ExchangeLoginService.getInstance(ExchangeInfoEnum.OKX_UAT.name()).lineHistory(requestParam);
                 log.info("加载OKX-KLINE,{}", instId);
                 JSONObject json = JSON.parseObject(result);
@@ -182,34 +173,36 @@
         String key = "KINE_{}_{}";
         // 币币k线数据
         if (AppContants.HOME_SYMBOLS_COIN == klineDetailDto.getType()) {
-            key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getPeriod());
+            key = StrUtil.format(key, klineDetailDto.getInstId(), klineDetailDto.getBar());
             // 合约k线数据
         } else {
-            key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getPeriod());
+            key = StrUtil.format(key, klineDetailDto.getInstId(), 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

--
Gitblit v1.9.1