From 829f629756e5402bcd3e9f6ef1f9c6dbffbabb11 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 17 Apr 2024 14:46:29 +0800 Subject: [PATCH] 55测试环境 --- src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java | 70 ++++++++++++++++++++++++++++++++-- 1 files changed, 65 insertions(+), 5 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 2298cb9..5557ef4 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,13 +1,17 @@ package com.xcong.excoin.modules.symbols.service.impl; +import cn.hutool.core.util.StrUtil; 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.platform.dao.PlatformCnyUsdtExchangeDao; 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.RedisUtils; @@ -52,7 +56,6 @@ } return client; } - @Override public void updateSymbolsKine(String time) { @@ -100,12 +103,28 @@ // 币币行情 if (AppContants.HOME_SYMBOLS_COIN == type) { for (SymbolEnum symbolEnum : SymbolEnum.values()) { - list.add(getSymbolReturnData(symbolEnum.getName())); + list.add(getSymbolReturnData(symbolEnum.getValue())); } +// +// HomeSymbolsVo xch = new HomeSymbolsVo(); +// xch.setSymbol("XCH/USDT"); +// BigDecimal xchNewPrice = new BigDecimal(redisUtils.getString("XCH_NEW_PRICE")); +// xch.setCurrentPrice(xchNewPrice); +// +// BigDecimal xchUpDown = new BigDecimal(redisUtils.getString("XCH_UP_DOWN")); +// xch.setUpOrDown(xchUpDown); +// +// PlatformCnyUsdtExchangeEntity cnyUsdtExchange = platformCnyUsdtExchangeDao.getCNYAndUSDTOne(); +// if (cnyUsdtExchange != null) { +// BigDecimal cnyPrice = xchNewPrice.multiply(cnyUsdtExchange.getValue().add(cnyUsdtExchange.getDiff())).setScale(2, BigDecimal.ROUND_HALF_UP); +// xch.setCnyPrice(cnyPrice); +// } +// +// list.add(xch); // 合约行情 } else if (AppContants.HOME_SYMBOLS_CONTRACT == type) { for (SymbolEnum symbolEnum : SymbolEnum.values()) { - list.add(getSymbolReturnData(symbolEnum.getName())); + list.add(getSymbolReturnData(symbolEnum.getValue())); } // 自选行情 } else { @@ -113,6 +132,12 @@ } return Result.ok(list); + } + + @Override + public Result findSymbolData(String symbol) { + HomeSymbolsVo homeSymbolsVo = getSymbolReturnData(symbol); + return Result.ok(homeSymbolsVo); } public HomeSymbolsVo getSymbolReturnData(String symbol) { @@ -130,12 +155,47 @@ homeSymbolsVo.setSymbol(symbol); homeSymbolsVo.setCurrentPrice(newestPrice); homeSymbolsVo.setUpOrDown(upOrDown); - homeSymbolsVo.setVolume(symbolObject.getVolume()); + homeSymbolsVo.setVolume(symbolObject.getAmount()); if (cnyUsdtExchange != null) { - BigDecimal cnyPrice = openPrice.multiply(cnyUsdtExchange.getValue()).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal cnyPrice = newestPrice.multiply(cnyUsdtExchange.getValue().add(cnyUsdtExchange.getDiff())).setScale(2, BigDecimal.ROUND_HALF_UP); homeSymbolsVo.setCnyPrice(cnyPrice); } return homeSymbolsVo; } + + @Override + public Result findKlineDetails(KlineDetailDto klineDetailDto) { + String key = "KINE_{}_{}"; + // 币币k线数据 + if (AppContants.HOME_SYMBOLS_COIN == klineDetailDto.getType()) { + key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getPeriod()); + // 合约k线数据 + } else { + key = StrUtil.format(key, klineDetailDto.getSymbol(), klineDetailDto.getPeriod()); + } + + 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("获取数据失败"); + } } -- Gitblit v1.9.1