From 53bc6ea0abbeb39146502a40292e6562c5a736d7 Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Sat, 17 Oct 2020 16:27:32 +0800
Subject: [PATCH] 修复交易问题

---
 src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java |    4 ++++
 src/main/java/com/xcong/excoin/rabbit/producer/OrderSubmitProducer.java            |    4 ++--
 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java      |    6 +++---
 src/main/java/com/xcong/excoin/trade/CoinTrader.java                               |   10 ++++++----
 4 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
index 65dc2a0..61d617f 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -582,16 +582,16 @@
         // 这里需要加锁 保证同一个时间只有一个线程操作一个钱包
         String key = "UPDATE_WALLET_COIN_"+id;
         while (true){
-            boolean b = redisUtils.setNotExist(key, 1, 5);
+            boolean b = redisUtils.setNotExist(key, 1, 2);
             if(b){
-                System.out.println("我拿到了锁");
+                //System.out.println("我拿到了锁");
                 // 拿到了锁才能扣
                 memberWalletCoinDao.updateWalletBalance(id,availableBalance,totalBalance,frozenBalance);
                 // 扣完释放锁
                 redisUtils.del(key);
                 break;
             }else {
-                System.out.println("我没有拿到锁");
+
             }
         }
     }
diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
index b52f93c..b59e970 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
@@ -7,6 +7,7 @@
 
 import javax.annotation.Resource;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.xcong.excoin.common.contants.AppContants;
 import com.xcong.excoin.common.enumerates.CoinTypeEnum;
@@ -1094,6 +1095,9 @@
         if (CollectionUtils.isNotEmpty(trades)) {
             for (OrderCoinsEntity trade : trades) {
                 if (trade != null) {
+                    if (trade.getOrderType()==2 && trade.getEntrustCnt().compareTo(trade.getDealCnt())!=0){
+                        System.out.println("问题卖单:"+ JSON.toJSONString(trade));
+                    }
                     //orderCoinsDao.updateStatus(trade.getId(),OrderCoinsEntity.ORDERSTATUS_DONE);
                     ids.add(trade.getId());
                     // 买单 实际成交金额小于委托的 这一部分从冻结扣除
diff --git a/src/main/java/com/xcong/excoin/rabbit/producer/OrderSubmitProducer.java b/src/main/java/com/xcong/excoin/rabbit/producer/OrderSubmitProducer.java
index 1cc749f..6dac18e 100644
--- a/src/main/java/com/xcong/excoin/rabbit/producer/OrderSubmitProducer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/producer/OrderSubmitProducer.java
@@ -38,9 +38,9 @@
 
     @Override
     public void confirm(CorrelationData correlationData, boolean ack, String cause) {
-        log.info("#----->{}#", correlationData);
+        //log.info("#----->{}#", correlationData);
         if (ack) {
-            log.info("success");
+           // log.info("success");
         } else {
             log.info("--->{}", cause);
         }
diff --git a/src/main/java/com/xcong/excoin/trade/CoinTrader.java b/src/main/java/com/xcong/excoin/trade/CoinTrader.java
index 4c08fb4..8ab6f28 100644
--- a/src/main/java/com/xcong/excoin/trade/CoinTrader.java
+++ b/src/main/java/com/xcong/excoin/trade/CoinTrader.java
@@ -333,6 +333,8 @@
         if ((focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_SELL && focusedOrder.getDealCnt().compareTo(focusedOrder.getEntrustCnt()) < 0)
                 || (focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY && focusedOrder.getDealAmount().compareTo(focusedOrder.getEntrustAmount()) < 0)) {
             logger.info("市价单未交易完成:#{}"+JSON.toJSONString(focusedOrder));
+            // 打印此时的限价买单
+            logger.info("此时的买单:#{}"+JSON.toJSONString(lpList));
             addMarketPriceOrder(focusedOrder);
         }
         //每个订单的匹配批量推送
@@ -424,17 +426,17 @@
         focusedOrder.setDealAmount(focusedOrder.getDealAmount().add(turnover));
 
         // 判断两个单是否完成
-        if(matchOrder.getEntrustAmount()!=null && matchOrder.getEntrustAmount().compareTo(matchOrder.getDealAmount())<=0){
+        if(matchOrder.getEntrustAmount()!=null &&matchOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustAmount().compareTo(matchOrder.getDealAmount())<=0){
             matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
         }
-        if(matchOrder.getEntrustCnt()!=null && matchOrder.getEntrustCnt().compareTo(matchOrder.getDealCnt())<=0){
+        if(matchOrder.getEntrustCnt()!=null &&matchOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustCnt().compareTo(matchOrder.getDealCnt())<=0){
             matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
         }
 
-        if(focusedOrder.getEntrustAmount()!=null && focusedOrder.getEntrustAmount().compareTo(focusedOrder.getDealAmount())<=0){
+        if(focusedOrder.getEntrustAmount()!=null &&  focusedOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustAmount().compareTo(focusedOrder.getDealAmount())<=0){
             focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
         }
-        if(focusedOrder.getEntrustCnt()!=null && focusedOrder.getEntrustCnt().compareTo(focusedOrder.getDealCnt())<=0){
+        if(focusedOrder.getEntrustCnt()!=null &&focusedOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustCnt().compareTo(focusedOrder.getDealCnt())<=0){
             focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
         }
 

--
Gitblit v1.9.1