From 0d30c93d000413c6eb34f489ef17688ad4175201 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Mon, 29 Apr 2024 18:18:21 +0800
Subject: [PATCH] 55测试环境

---
 src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java |   30 +++++++++++++++++++++++-------
 1 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java
index 2ed558d..f2cd874 100644
--- a/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/otc/service/impl/OtcOrderServiceImpl.java
@@ -32,7 +32,9 @@
 import com.xcong.excoin.modules.otc.vo.BuyOrderDetailVo;
 import com.xcong.excoin.modules.otc.vo.OrderListVo;
 import com.xcong.excoin.modules.otc.vo.SaleOrderDetailVo;
+import com.xcong.excoin.rabbit.producer.OtcProducter;
 import com.xcong.excoin.utils.RedisUtils;
+import com.xcong.excoin.utils.ThreadPoolUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Bean;
@@ -57,12 +59,15 @@
     private final OtcBlackListDao otcBlackListDao;
     private final OtcSettingDao otcSettingDao;
     private final RedisUtils redisUtils;
+    private final OtcProducter otcProducter;
 
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Result buyOrder(OtcOrderAddDto orderAddDto) {
         MemberEntity member = LoginUserUtils.getAppLoginUser();
+
+//        MemberEntity member = memberDao.selectById(445L);
         OtcEntrustOrder entrustOrder = otcEntrustOrderDao.selectById(orderAddDto.getId());
         if (entrustOrder == null) {
             throw new GlobalException("委托单不存在");
@@ -95,8 +100,10 @@
             throw new GlobalException("剩余数量不足");
         }
 
-        BigDecimal cny = orderAddDto.getUsdtAmount().multiply(entrustOrder.getUnitPrice());
-        if (cny.compareTo(orderAddDto.getCnyAmount()) != 0) {
+        BigDecimal cny = orderAddDto.getUsdtAmount().multiply(entrustOrder.getUnitPrice()).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal usdt = orderAddDto.getCnyAmount().divide(entrustOrder.getUnitPrice(), 2, BigDecimal.ROUND_DOWN);
+        if (cny.compareTo(orderAddDto.getCnyAmount()) != 0 && usdt.compareTo(orderAddDto.getUsdtAmount()) != 0) {
+            log.info("BUY = CNY:{}, CNY_{}, USDT:{}, USDT_{}", cny, orderAddDto.getCnyAmount(), usdt, orderAddDto.getUsdtAmount());
             throw new GlobalException("数量与金额不符");
         }
         /**
@@ -107,7 +114,7 @@
         objectQueryWrapper.lt("status",OtcOrder.STATUS_PAY);
         List<OtcOrder> otcOrders = this.baseMapper.selectList(objectQueryWrapper);
         if(CollUtil.isNotEmpty(otcOrders)){
-            if(otcOrders.size() > 3){
+            if(otcOrders.size() >= 3){
                 throw new GlobalException("最多可同时有三个待付款订单");
             }
         }
@@ -148,6 +155,7 @@
         this.baseMapper.insert(otcOrder);
         this.baseMapper.insert(sale);
 
+        ThreadPoolUtils.sendOrderMsg();
         return Result.ok("购买成功", otcOrder.getId());
     }
 
@@ -196,8 +204,10 @@
             throw new GlobalException("资金密码错误");
         }
 
-        BigDecimal cny = orderAddDto.getUsdtAmount().multiply(entrustOrder.getUnitPrice());
-        if (cny.compareTo(orderAddDto.getCnyAmount()) != 0) {
+        BigDecimal cny = orderAddDto.getUsdtAmount().multiply(entrustOrder.getUnitPrice()).setScale(2, BigDecimal.ROUND_DOWN);
+        BigDecimal usdt = orderAddDto.getCnyAmount().divide(entrustOrder.getUnitPrice(), 2, BigDecimal.ROUND_DOWN);
+        if (cny.compareTo(orderAddDto.getCnyAmount()) != 0 && usdt.compareTo(orderAddDto.getUsdtAmount()) != 0) {
+            log.info("SALE = CNY:{}, CNY_{}, USDT:{}, USDT_{}", cny, orderAddDto.getCnyAmount(), usdt, orderAddDto.getUsdtAmount());
             throw new GlobalException("数量与金额不符");
         }
 
@@ -244,6 +254,8 @@
         this.baseMapper.insert(buy);
 
         memberWalletCoinDao.updateFrozenBalance(member.getId(), wallet.getId(), orderAddDto.getUsdtAmount());
+
+        ThreadPoolUtils.sendOrderMsg();
         return Result.ok("出售成功", otcOrder.getId());
     }
 
@@ -313,6 +325,8 @@
         memberWalletCoinDao.reduceFrozenBalance(saleWallet.getId(), buyOrder.getCoinAmount());
 
         this.baseMapper.updateOrderStatusByOrderNo(OtcOrder.STATUS_FINISH, null, otcOrder.getOrderNo());
+        otcProducter.sendMarketBussinessMsg(otcOrder.getEntrustOrderId(), OtcOrder.STATUS_FINISH);
+        otcProducter.sendOrderReturn(buyOrder.getOrderNo());
     }
 
     @Override
@@ -336,7 +350,7 @@
         buyDetail.setTotalAmount(buyOrder.getTotalAmount());
         buyDetail.setUnitPrice(buyOrder.getUnitPrice());
         buyDetail.setCreateTime(buyOrder.getCreateTime());
-        buyDetail.setIsMb(member.getIsTrader());
+        buyDetail.setIsMb(member.getAccountType() == 1 ? 2 : 1);
         buyDetail.setPayName(buyOrder.getPayName());
         buyDetail.setIsOwnEntrust(member.getId().equals(buyOrder.getEntrustMemberId()) ? 1 : 2);
 
@@ -397,7 +411,7 @@
         saleDetail.setTotalAmount(saleOrder.getTotalAmount());
         saleDetail.setUnitPrice(saleOrder.getUnitPrice());
         saleDetail.setCreateTime(saleOrder.getCreateTime());
-        saleDetail.setIsMb(member.getIsTrader());
+        saleDetail.setIsMb(member.getAccountType() == 1 ? 2 : 1);
         saleDetail.setPayName(saleOrder.getPayName());
 
         saleDetail.setSaleName(buyMember.getName());
@@ -462,6 +476,8 @@
 
         otcEntrustOrderDao.updateRemainAmount(otcOrder.getEntrustOrderId(), otcOrder.getCoinAmount());
         this.baseMapper.updateOrderStatusByOrderNo(OtcOrder.STATUS_CANCEL, null, otcOrder.getOrderNo());
+
+        otcProducter.sendMarketBussinessMsg(otcOrder.getEntrustOrderId(), OtcOrder.STATUS_CANCEL);
     }
 
     @Override

--
Gitblit v1.9.1