From 3ffaa6bf323862a3770897d4e934baf98d324c47 Mon Sep 17 00:00:00 2001 From: zainali5120 <512061637@qq.com> Date: Sun, 20 Sep 2020 23:39:55 +0800 Subject: [PATCH] 撮合交易代码提交 --- src/main/java/com/xcong/excoin/rabbit/consumer/ExchangeConsumer.java | 39 +++++++++++++++++++++++++++++++++++---- 1 files changed, 35 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/ExchangeConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/ExchangeConsumer.java index 9c9793a..a124d69 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/ExchangeConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/ExchangeConsumer.java @@ -7,9 +7,13 @@ import com.xcong.excoin.modules.coin.service.OrderCoinService; import com.xcong.excoin.modules.exchange.service.HandleKlineService; import com.xcong.excoin.trade.ExchangeTrade; +import com.xcong.excoin.utils.CoinTypeConvert; import com.xcong.excoin.utils.RedisUtils; +import com.xcong.excoin.websocket.CandlestickModel; +import com.xcong.excoin.websocket.NewCandlestick; import com.xcong.excoin.websocket.TradePlateSendWebSocket; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @@ -45,8 +49,7 @@ */ @RabbitListener(queues = RabbitMqConfig.QUEUE_TRADE_PLATE) public void tradePlate(String content) { - log.info("#盘口信息消费者---->{}#", content); - tradePlateSendWebSocket.sendMessagePlate("NEKK/USDT",content,null); + tradePlateSendWebSocket.sendMessagePlate("ROC/USDT",content,null); } /** @@ -55,7 +58,7 @@ */ @RabbitListener(queues = RabbitMqConfig.QUEUE_HANDLE_TRADE) public void handleTradeExchange(String content) { - log.info("#---->{}#", content); + // log.info("#处理订单---->{}#", content); List<ExchangeTrade> exchangeTrades = JSONObject.parseArray(content, ExchangeTrade.class); // 去掉空的 暂时这样 Iterator<ExchangeTrade> iterator = exchangeTrades.iterator(); @@ -63,6 +66,9 @@ if(iterator.next()==null){ iterator.remove(); } + } + if(CollectionUtils.isEmpty(exchangeTrades)){ + return; } // 处理K线 并更新最新价 handleKlineService.handleExchangeOrderToKline(exchangeTrades); @@ -77,8 +83,33 @@ Object o = redisUtils.get(key); Map<String, Candlestick> currentKlineMap = (Map<String, Candlestick> )o; Set<Map.Entry<String, Candlestick>> entries = currentKlineMap.entrySet(); + + for(Map.Entry<String, Candlestick> map : entries){ - tradePlateSendWebSocket.sendMessageKline(symbolUsdt,map.getKey(),JSONObject.toJSONString(map.getValue()),null); + String ch = "market.{}.kline.{}"; + Candlestick value = map.getValue(); + String key1 = map.getKey(); + String chKey = key1; + if(key1.equals("1hour")){ + chKey = "60min"; + } + // 转换 + NewCandlestick newCandlestick= new NewCandlestick(); + String nekkusdt = CoinTypeConvert.convertReverse(symbolUsdt); + ch = StrUtil.format(ch, nekkusdt,chKey); + newCandlestick.setCh(ch); + CandlestickModel model = new CandlestickModel(); + model.setVol(value.getVolume()); + model.setLow(value.getLow()); + model.setOpen(value.getOpen()); + model.setHigh(value.getHigh()); + model.setCount(value.getCount()); + model.setAmount(value.getAmount()); + model.setId(value.getTimestamp()/1000); + model.setTimestamp(value.getTimestamp()/1000); + model.setClose(value.getClose()); + newCandlestick.setTick(model); + tradePlateSendWebSocket.sendMessageKline(symbolUsdt,key1,JSONObject.toJSONString(newCandlestick),null); } // 处理用户订单 orderCoinService.handleOrder(exchangeTrades); -- Gitblit v1.9.1