From 6cdfe1d568d06bc63bb513ce0ef1df6aac3c7c3d Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 20 Feb 2021 15:32:12 +0800
Subject: [PATCH] fix

---
 src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java |   29 ++++++++++++++++++-----------
 1 files changed, 18 insertions(+), 11 deletions(-)

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 b396d14..c96299f 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
@@ -180,13 +180,14 @@
         BigDecimal closingPrice = price.multiply(amount).multiply(tradeSetting.getCoinFeeRatio());
         //总费用 = 成交价*数量+手续费
         BigDecimal totalPayPrice = price.multiply(amount).add(closingPrice);
+        BigDecimal totalPayPricCoin = nowPrice.multiply(amount).add(closingPrice);
 
         String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
         MemberWalletCoinEntity walletCoinUsdt = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode);
         if (OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) {
             //买入,所需总费用跟用户USDT金额进行比较
             BigDecimal availableBalance = walletCoinUsdt.getAvailableBalance();
-            if (totalPayPrice.compareTo(availableBalance) > 0) {
+            if (totalPayPrice.compareTo(availableBalance) > 0 || totalPayPricCoin.compareTo(availableBalance) > 0) {
                 return Result.fail(MessageSourceUtils.getString("order_service_0010"));
             }
         } else {
@@ -252,7 +253,7 @@
                 totalPayPrice = nowPrice.multiply(amount).add(closingPrice);
                 price = nowPrice;
             }
-            order.setDealPrice(price);
+            order.setDealPrice(nowPrice);
             order.setDealAmount(totalPayPrice);
             order.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
             order.setTradeType(tradeType);
@@ -268,7 +269,7 @@
             detail.setSymbol(symbol);
             detail.setSymbolCnt(amount);
             detail.setEntrustPrice(nowPriceinBigDecimal);
-            detail.setDealPrice(price);
+            detail.setDealPrice(nowPrice);
             detail.setDealAmount(totalPayPrice);
             detail.setFeeAmount(closingPrice);
             detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_DONE);
@@ -322,15 +323,21 @@
         List<OrderCoinsEntity> findCoinOrderListByMemberIdAndSysmbol = orderCoinsDao.findCoinOrderListByMemberIdAndSysmbol(memberId, symbol, status);
         if (CollUtil.isNotEmpty(findCoinOrderListByMemberIdAndSysmbol)) {
             for (OrderCoinsEntity orderCoinsEntity : findCoinOrderListByMemberIdAndSysmbol) {
-            	orderCoinsEntity.setFeeAmount(orderCoinsEntity.getFeeAmount().setScale(4, BigDecimal.ROUND_DOWN));
-            	orderCoinsEntity.setMarkPrice(orderCoinsEntity.getMarkPrice().setScale(4, BigDecimal.ROUND_DOWN));
-            	orderCoinsEntity.setEntrustCnt(orderCoinsEntity.getEntrustCnt().setScale(4, BigDecimal.ROUND_DOWN));
-            	orderCoinsEntity.setEntrustPrice(orderCoinsEntity.getEntrustPrice().setScale(4, BigDecimal.ROUND_DOWN));
-            	orderCoinsEntity.setDealCnt(orderCoinsEntity.getDealCnt().setScale(4, BigDecimal.ROUND_DOWN));
-            	orderCoinsEntity.setDealPrice(orderCoinsEntity.getDealPrice().setScale(4, BigDecimal.ROUND_DOWN));
-            	orderCoinsEntity.setDealAmount(orderCoinsEntity.getDealAmount().setScale(4, BigDecimal.ROUND_DOWN));
-            	
                 OrderWalletCoinVo entityToVo = OrderWalletCoinMapper.INSTANCE.entityToVo(orderCoinsEntity);
+                entityToVo.setFeeAmount(entityToVo.getFeeAmount()== null 
+        				? BigDecimal.ZERO : entityToVo.getFeeAmount().setScale(4, BigDecimal.ROUND_DOWN));
+                entityToVo.setMarkPrice(entityToVo.getMarkPrice()== null 
+        				? BigDecimal.ZERO : entityToVo.getMarkPrice().setScale(4, BigDecimal.ROUND_DOWN));
+                entityToVo.setEntrustCnt(entityToVo.getEntrustCnt()== null 
+        				? BigDecimal.ZERO : entityToVo.getEntrustCnt().setScale(4, BigDecimal.ROUND_DOWN));
+                entityToVo.setEntrustPrice(entityToVo.getEntrustPrice()== null 
+        				? BigDecimal.ZERO : entityToVo.getEntrustPrice().setScale(4, BigDecimal.ROUND_DOWN));
+                entityToVo.setDealCnt(entityToVo.getDealCnt()== null 
+        				? BigDecimal.ZERO : entityToVo.getDealCnt().setScale(4, BigDecimal.ROUND_DOWN));
+                entityToVo.setDealPrice(entityToVo.getDealPrice()== null 
+        				? BigDecimal.ZERO : entityToVo.getDealPrice().setScale(4, BigDecimal.ROUND_DOWN));
+                entityToVo.setDealAmount(entityToVo.getDealAmount()== null 
+        				? BigDecimal.ZERO : entityToVo.getDealAmount().setScale(4, BigDecimal.ROUND_DOWN));
                 arrayList.add(entityToVo);
             }
         }

--
Gitblit v1.9.1