From d5b1ec5dca1aefb6425d2e12b1b2804714019c27 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 28 Jan 2021 16:31:21 +0800
Subject: [PATCH] whole bomb finish

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
index 08df59a..61a73e7 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -35,6 +35,7 @@
 import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
 import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
 import com.xcong.excoin.rabbit.pricequeue.OrderModel;
+import com.xcong.excoin.rabbit.pricequeue.whole.HoldOrderDataModel;
 import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel;
 import com.xcong.excoin.utils.*;
 import lombok.extern.slf4j.Slf4j;
@@ -472,9 +473,54 @@
         ThreadPoolUtils.calReturnMoney(memberEntity.getId(), fee, contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE);
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public void wholeBombOrder(WholePriceDataModel wholePriceData) {
+        MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(wholePriceData.getMemberId(), CoinTypeEnum.USDT.name());
 
+        List<HoldOrderDataModel> list = wholePriceData.getList();
+        if (CollUtil.isNotEmpty(list)) {
+            for (HoldOrderDataModel holdOrderDataModel : list) {
+                ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectById(holdOrderDataModel.getId());
+
+                contractHoldOrderDao.deleteById(holdOrderDataModel.getId());
+
+                ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(holdOrderEntity);
+
+                if (holdOrderEntity.getOpeningType() == ContractHoldOrderEntity.OPENING_TYPE_MORE) {
+                    contractOrderEntity.setClosingType(4);
+                } else {
+                    contractOrderEntity.setClosingType(5);
+                }
+
+                BigDecimal rewardRatio = holdOrderDataModel.getRewardAmount().divide(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN);
+                contractOrderEntity.setRewardRatio(rewardRatio);
+                contractOrderEntity.setRewardAmount(holdOrderDataModel.getRewardAmount());
+                contractOrderEntity.setClosingPrice(holdOrderDataModel.getClosingPrice());
+                contractOrderEntity.setForceClosingPrice(holdOrderDataModel.getClosingPrice());
+
+                // 订单状态转换
+                if (ContractOrderEntity.ORDER_TYPE_OPEN_MORE == contractOrderEntity.getOrderType()) {
+                    contractOrderEntity.setOrderType(ContractOrderEntity.ORDER_TYPE_CLOSE_MORE);
+                } else {
+                    contractOrderEntity.setOrderType(ContractOrderEntity.ORDER_TYPE_CLOSE_LESS);
+                }
+                contractOrderEntity.setClosingTime(new Date());
+                contractOrderEntity.setClosingFeeAmount(holdOrderEntity.getOpeningFeeAmount());
+
+                contractOrderDao.insert(contractOrderEntity);
+            }
+
+            List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(wholePriceData.getMemberId());
+            BigDecimal totalAmount = BigDecimal.ZERO;
+            if (CollUtil.isNotEmpty(entrustOrder)) {
+                for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
+                    totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
+                }
+            }
+
+            memberWalletContractDao.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().subtract(totalAmount).negate(), null, wallet.getId());
+        }
     }
 
     @Transactional(rollbackFor = Exception.class)

--
Gitblit v1.9.1