From c24fc100ef9966495dc706e110fc37f13e003448 Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Thu, 08 Oct 2020 21:34:28 +0800
Subject: [PATCH] 优化usdt同步

---
 src/main/java/com/xcong/excoin/trade/CoinTrader.java |   50 ++++++++++++++++++++++++++------------------------
 1 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/trade/CoinTrader.java b/src/main/java/com/xcong/excoin/trade/CoinTrader.java
index fc4a8fc..3e249f0 100644
--- a/src/main/java/com/xcong/excoin/trade/CoinTrader.java
+++ b/src/main/java/com/xcong/excoin/trade/CoinTrader.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 
+import com.alibaba.fastjson.JSONObject;
 import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity;
 import com.xcong.excoin.modules.coin.service.OrderCoinService;
 import com.xcong.excoin.rabbit.producer.ExchangeProducer;
@@ -37,8 +38,7 @@
     //是否暂停交易
     private boolean tradingHalt = false;
     private boolean ready = false;
-    //交易对信息
-    //private ExchangeCoinPublishType publishType;
+
     private String clearTime;
 
     private SimpleDateFormat dateTimeFormat;
@@ -140,9 +140,16 @@
             return;
         }
         // 如果
-        if (exchangeOrder.getEntrustAmount().compareTo(BigDecimal.ZERO) <= 0 || exchangeOrder.getEntrustAmount().subtract(exchangeOrder.getDealAmount()).compareTo(BigDecimal.ZERO) <= 0) {
-            return;
+        if(OrderCoinsEntity.ORDERTYPE_BUY==exchangeOrder.getOrderType()){
+            if (exchangeOrder.getEntrustAmount().compareTo(BigDecimal.ZERO) <= 0 || exchangeOrder.getEntrustAmount().subtract(exchangeOrder.getDealAmount()).compareTo(BigDecimal.ZERO) <= 0) {
+                return;
+            }
+        }else{
+            if (exchangeOrder.getEntrustCnt().compareTo(BigDecimal.ZERO) <= 0 || exchangeOrder.getEntrustCnt().subtract(exchangeOrder.getDealCnt()).compareTo(BigDecimal.ZERO) <= 0) {
+                return;
+            }
         }
+
 
         TreeMap<BigDecimal, MergeOrder> limitPriceOrderList;
         LinkedList<OrderCoinsEntity> marketPriceOrderList;
@@ -254,7 +261,6 @@
             while (iterator.hasNext()) {
                 OrderCoinsEntity matchOrder = iterator.next();
                 ExchangeTrade trade = processMatch(focusedOrder, matchOrder);
-                logger.info(">>>>>" + trade);
                 if (trade != null) {
                     exchangeTrades.add(trade);
                 }
@@ -493,7 +499,6 @@
                 //orderCoinService.handleOrder(trades);
                 // kafkaTemplate.send("exchange-trade", JSON.toJSONString(trades));
             }
-            // 更新最新K线 TODO
 
         }
     }
@@ -527,7 +532,7 @@
      * @param buyTradePlate sellTradePlate
      */
     public void sendTradePlateMessage(TradePlate buyTradePlate, TradePlate sellTradePlate) {
-        //防止并发引起数组越界,造成盘口倒挂 TODO
+        //防止并发引起数组越界,造成盘口倒挂
         List<List<BigDecimal>> plate;
         List<BigDecimal> plateItem;
         TradePlateModel tradePlateModel = new TradePlateModel();
@@ -535,10 +540,10 @@
         if (buyTradePlate != null && buyTradePlate.getItems() != null) {
             plate = new ArrayList<>();
             LinkedList<TradePlateItem> items = buyTradePlate.getItems();
-            for (TradePlateItem item : items) {
+            for (int i = items.size() - 1; i >= 0; i--) {
                 plateItem = new ArrayList<>(2);
-                BigDecimal price = item.getPrice();
-                BigDecimal amount = item.getAmount();
+                BigDecimal price = items.get(i).getPrice();
+                BigDecimal amount = items.get(i).getAmount();
                 plateItem.add(price);
                 plateItem.add(amount);
                 plate.add(plateItem);
@@ -549,10 +554,10 @@
         if (sellTradePlate != null && sellTradePlate.getItems() != null) {
             plate = new ArrayList<>();
             LinkedList<TradePlateItem> items = sellTradePlate.getItems();
-            for (TradePlateItem item : items) {
+            for (int i = items.size() - 1; i >= 0; i--) {
                 plateItem = new ArrayList<>(2);
-                BigDecimal price = item.getPrice();
-                BigDecimal amount = item.getAmount();
+                BigDecimal price = items.get(i).getPrice();
+                BigDecimal amount = items.get(i).getAmount();
                 plateItem.add(price);
                 plateItem.add(amount);
                 plate.add(plateItem);
@@ -560,8 +565,7 @@
             tradePlateModel.setSell(plate);
         }
 
-        // 盘口发生变化通知TODO
-
+        // 盘口发生变化通知
         exchangeProducer.sendPlateMsg(JSON.toJSONString(tradePlateModel));
     }
 
@@ -571,7 +575,7 @@
      * @param
      */
     public String sendTradePlateMessage() {
-        //防止并发引起数组越界,造成盘口倒挂 TODO
+        //防止并发引起数组越界,造成盘口倒挂
         List<List<BigDecimal>> plate;
         List<BigDecimal> plateItem;
         TradePlateModel tradePlateModel = new TradePlateModel();
@@ -579,10 +583,10 @@
         if (buyTradePlate != null && buyTradePlate.getItems() != null) {
             plate = new ArrayList<>();
             LinkedList<TradePlateItem> items = buyTradePlate.getItems();
-            for (TradePlateItem item : items) {
+            for (int i = items.size() - 1; i >= 0; i--) {
                 plateItem = new ArrayList<>(2);
-                BigDecimal price = item.getPrice();
-                BigDecimal amount = item.getAmount();
+                BigDecimal price = items.get(i).getPrice();
+                BigDecimal amount = items.get(i).getAmount();
                 plateItem.add(price);
                 plateItem.add(amount);
                 plate.add(plateItem);
@@ -593,10 +597,10 @@
         if (sellTradePlate != null && sellTradePlate.getItems() != null) {
             plate = new ArrayList<>();
             LinkedList<TradePlateItem> items = sellTradePlate.getItems();
-            for (TradePlateItem item : items) {
+            for (int i = items.size() - 1; i >= 0; i--) {
                 plateItem = new ArrayList<>(2);
-                BigDecimal price = item.getPrice();
-                BigDecimal amount = item.getAmount();
+                BigDecimal price = items.get(i).getPrice();
+                BigDecimal amount = items.get(i).getAmount();
                 plateItem.add(price);
                 plateItem.add(amount);
                 plate.add(plateItem);
@@ -604,9 +608,7 @@
             tradePlateModel.setSell(plate);
         }
 
-        // 盘口发生变化通知TODO
         return JSON.toJSONString(tradePlateModel);
-        //exchangeProducer.sendPlateMsg(JSON.toJSONString(tradePlateModel));
     }
 
     /**

--
Gitblit v1.9.1