From d775bb5dacca4c6ff33c65a0cb891f5992cc1bed Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 28 May 2020 20:12:42 +0800
Subject: [PATCH] 同步k线、最新价、人民币美元汇率、homesymbols接口

---
 src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java |   65 ++++++++++++++++++++++++++++++--
 1 files changed, 61 insertions(+), 4 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 dbc30d6..2298cb9 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
@@ -2,8 +2,14 @@
 
 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.modules.platform.dao.PlatformCnyUsdtExchangeDao;
+import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity;
+import com.xcong.excoin.modules.symbols.parameter.vo.HomeSymbolsVo;
 import com.xcong.excoin.modules.symbols.service.SymbolsService;
+import com.xcong.excoin.utils.CoinTypeConvert;
 import com.xcong.excoin.utils.RedisUtils;
 import com.xcong.excoin.utils.api.ApiClient;
 import com.xcong.excoin.utils.api.response.Kline;
@@ -26,6 +32,9 @@
 
     @Resource
     private RedisUtils redisUtils;
+
+    @Resource
+    private PlatformCnyUsdtExchangeDao platformCnyUsdtExchangeDao;
 
     private static final String API_KEY = "3938f004-bfe31905-f7581c1a-6abe0";
     private static final String API_SECRET = "a0f7a154-ghxertfvbf-6ce2d90c-a0bab";
@@ -50,11 +59,14 @@
         synchronized (this) {
             //更新币币交易K线历史数据
             for (SymbolEnum symbol : SymbolEnum.values()) {
-                log.info(symbol.getValue());
+                try {
+                    Thread.sleep(500);
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
                 String[] symbols = symbol.getValue().toLowerCase().split("/");
-                ApiClient client = new ApiClient(API_KEY, API_SECRET);
+                ApiClient client = getClient();
                 KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + "");
-                log.info("{}", JSONObject.toJSONString(kline));
                 if (kline != null) {
                     if ("ok".equalsIgnoreCase(kline.getStatus())) {
                         List<Kline> klines = (List<Kline>) kline.data;
@@ -74,11 +86,56 @@
                         }
 
                         if (klines.size() > 0) {
-//                            redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list);
+                            redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list);
                         }
                     }
                 }
             }
         }
     }
+
+    @Override
+    public Result homeSymbols(Integer type) {
+        List<HomeSymbolsVo> list = new ArrayList<>();
+        // 币币行情
+        if (AppContants.HOME_SYMBOLS_COIN == type) {
+            for (SymbolEnum symbolEnum : SymbolEnum.values()) {
+                list.add(getSymbolReturnData(symbolEnum.getName()));
+            }
+            // 合约行情
+        } else if (AppContants.HOME_SYMBOLS_CONTRACT == type) {
+            for (SymbolEnum symbolEnum : SymbolEnum.values()) {
+                list.add(getSymbolReturnData(symbolEnum.getName()));
+            }
+            // 自选行情
+        } else {
+
+        }
+
+        return Result.ok(list);
+    }
+
+    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 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.getVolume());
+        if (cnyUsdtExchange != null) {
+            BigDecimal cnyPrice = openPrice.multiply(cnyUsdtExchange.getValue()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            homeSymbolsVo.setCnyPrice(cnyPrice);
+        }
+
+        return homeSymbolsVo;
+    }
 }

--
Gitblit v1.9.1