From d23645e976981bc9b670eea1d469fe8a36be309c Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Wed, 17 Apr 2024 17:19:53 +0800
Subject: [PATCH] 55测试环境

---
 src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java |   38 ++++++++++++++++++++++++++++++++------
 1 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java b/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
index e0c2ece..d31f6f0 100644
--- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
+++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/WebsocketPriceService.java
@@ -12,6 +12,7 @@
 import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
 import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
+import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
 import com.xcong.excoin.rabbit.pricequeue.whole.HoldOrderDataModel;
 import com.xcong.excoin.rabbit.pricequeue.whole.WholeDataQueue;
 import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel;
@@ -21,6 +22,7 @@
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -41,6 +43,9 @@
     private MemberDao memberDao;
     @Resource
     private MemberWalletContractDao memberWalletContractDao;
+
+    @Resource
+    private CacheSettingUtils cacheSettingUtils;
     /**
      * @param symbol
      * @param price
@@ -283,6 +288,7 @@
     }
 
     public void wholeBomb() {
+        redisUtils.set("whole_bomb_execute", 1, 30);
         Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
         if (CollUtil.isEmpty(dataModelMap)) {
             return;
@@ -294,12 +300,13 @@
 
             if (CollUtil.isNotEmpty(list)) {
                 BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
+
+                MemberEntity memberEntity = memberDao.selectById(Long.parseLong(entry.getKey()));
                 Map<String, BigDecimal> prices = new HashMap<>();
                 for (HoldOrderDataModel holdOrderData : list) {
                     String price = redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderData.getSymbol()));
                     BigDecimal newPrice = new BigDecimal(price);
 //                    BigDecimal newPrice = new BigDecimal("29958.46627789");
-
 
                     BigDecimal rewardRatio = null;
                     if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderData.getOpeningType()) {
@@ -310,6 +317,16 @@
                         // (开仓价-最新价)*规格*张数
                         rewardRatio = holdOrderData.getOpeningPrice().subtract(newPrice).multiply(holdOrderData.getSymbolSku()).multiply(new BigDecimal(holdOrderData.getSymbolCntSale()));
                     }
+
+                    if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+                        PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+                        if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+                            rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+                        } else {
+//                        rewardRatio = rewardRatio.multiply(BigDecimal.ONE.add(tradeSettingEntity.getProfitParam()));
+                        }
+                    }
+
                     holdOrderData.setRewardAmount(rewardRatio);
                     holdOrderData.setClosingPrice(newPrice);
                     totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio).setScale(8, BigDecimal.ROUND_DOWN);
@@ -322,11 +339,20 @@
                     continue;
                 }
 
-                dataModelMap.remove(entry.getKey());
-                System.out.println("触发");
-                wholePriceData.setPrices(prices);
-                contractHoldOrderDao.updateMemberAllHoldOrderClosingStatus(wholePriceData.getMemberId());
-                orderProducer.sendWholeBomb(JSONObject.toJSONString(wholePriceData));
+                log.info("过来过来");
+                synchronized(this) {
+                    log.info("爆仓啥的:{}", entry.getKey());
+                    boolean b = redisUtils.setNotExist(AppContants.WHOLE_BOMB_PREFIX + entry.getKey(), 1, 5);
+                    if (b) {
+                        dataModelMap.remove(entry.getKey());
+                        wholePriceData.setEquity(wholePriceData.getBalance().add(totalProfitOrLoss));
+                        redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap));
+                        log.info("全仓爆仓触发:{}", JSONObject.toJSONString(wholePriceData));
+                        wholePriceData.setPrices(prices);
+                        contractHoldOrderDao.updateMemberAllHoldOrderClosingStatus(wholePriceData.getMemberId());
+                        orderProducer.sendWholeBomb(JSONObject.toJSONString(wholePriceData));
+                    }
+                }
             }
         }
     }

--
Gitblit v1.9.1