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