From 9816994a2d9b48c6ae0e429b3d6d86a89caa5bd5 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 29 Jan 2021 15:54:37 +0800
Subject: [PATCH] Merge branch 'whole_new' of https://gitee.com/chonggaoxiao/new_excoin.git into whole_new

---
 src/test/java/com/xcong/excoin/WholeTest.java                                  |    9 ++++
 src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java |   54 ++++++++++++++++++++++++--
 src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java  |    3 -
 src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java                      |   46 +---------------------
 4 files changed, 62 insertions(+), 50 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java
index e17b469..be949a2 100644
--- a/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java
@@ -46,10 +46,9 @@
     @RabbitListener(queues = RabbitMqConfig.QUEUE_WHOLE_PRICE)
     public void onMessageWholePrice(Message message, Channel channel) {
         String content = new String(message.getBody());
-        WholePriceDataModel wholePriceData = JSONObject.parseObject(content, WholePriceDataModel.class);
 
         log.info("我收到了用户的全仓价格消息 : {}", content);
-        OrderOperatePriceService.wholePriceDataOperation(wholePriceData);
+        OrderOperatePriceService.wholePriceDataOperation(Long.parseLong(content));
     }
 
 
diff --git a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
index 3609764..357df80 100644
--- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
+++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -1,7 +1,17 @@
 package com.xcong.excoin.rabbit.pricequeue;
 
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.xcong.excoin.common.contants.AppContants;
+import com.xcong.excoin.common.enumerates.CoinTypeEnum;
+import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao;
+import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
+import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity;
+import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
+import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper;
+import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
+import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
+import com.xcong.excoin.rabbit.pricequeue.whole.HoldOrderDataModel;
 import com.xcong.excoin.rabbit.pricequeue.whole.WholeDataQueue;
 import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel;
 import com.xcong.excoin.utils.RedisUtils;
@@ -9,6 +19,7 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -134,16 +145,49 @@
         }
     }
 
-    public static void wholePriceDataOperation(WholePriceDataModel wholePriceData) {
+    /**
+     * 全仓价格处理
+     *
+     * @param memberId
+     */
+    public static void wholePriceDataOperation(Long memberId) {
         RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
 
-        Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
+        ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
+        ContractEntrustOrderDao contractEntrustOrderDao = SpringContextHolder.getBean(ContractEntrustOrderDao.class);
 
-        WholePriceDataModel isExistData = dataModelMap.get(wholePriceData.getMemberId().toString());
-        if (isExistData != null) {
-            dataModelMap.remove(wholePriceData.getMemberId().toString());
+        MemberWalletContractDao memberWalletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
+
+        List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListByMemberId(memberId);
+        if (CollUtil.isEmpty(holdOrders)) {
+            return;
         }
 
+        MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
+
+        WholePriceDataModel wholePriceData = new WholePriceDataModel();
+        List<HoldOrderDataModel> holdOrderDataModels = ContractHoldOrderEntityMapper.INSTANCE.entitiesToDataModels(holdOrders);
+        wholePriceData.setList(holdOrderDataModels);
+
+        BigDecimal totalHoldBond = BigDecimal.ZERO;
+        for (ContractHoldOrderEntity holdOrder : holdOrders) {
+            totalHoldBond = totalHoldBond.add(holdOrder.getHoldBond() == null ? BigDecimal.ZERO : holdOrder.getHoldBond());
+        }
+
+        wholePriceData.setHoldBond(totalHoldBond);
+
+        List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(wholePriceData.getMemberId());
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        if (CollUtil.isNotEmpty(entrustOrder)) {
+            for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
+                totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
+            }
+        }
+
+        wholePriceData.setBalance(wallet.getTotalBalance().subtract(totalAmount));
+        wholePriceData.setMemberId(memberId);
+
+        Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
         dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData);
 
         redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap));
diff --git a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
index de3abb7..dfc37dc 100644
--- a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
+++ b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
@@ -108,48 +108,8 @@
      * @param memberId
      */
     public static void sendWholePrice(@NotNull Long memberId) {
-        EXECUTOR.execute(new Runnable() {
-            @Override
-            public void run() {
-                log.info("全仓操作价格");
-                ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
-                ContractEntrustOrderDao contractEntrustOrderDao = SpringContextHolder.getBean(ContractEntrustOrderDao.class);
-                RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
-                MemberWalletContractDao memberWalletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
-
-                List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListByMemberId(memberId);
-                if (CollUtil.isEmpty(holdOrders)) {
-                    return;
-                }
-                MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
-
-                WholePriceDataModel wholePriceData = new WholePriceDataModel();
-                List<HoldOrderDataModel> holdOrderDataModels = ContractHoldOrderEntityMapper.INSTANCE.entitiesToDataModels(holdOrders);
-                wholePriceData.setList(holdOrderDataModels);
-
-                BigDecimal totalHoldBond = BigDecimal.ZERO;
-                for (ContractHoldOrderEntity holdOrder : holdOrders) {
-                    totalHoldBond = totalHoldBond.add(holdOrder.getHoldBond() == null ? BigDecimal.ZERO : holdOrder.getHoldBond());
-                }
-
-                wholePriceData.setHoldBond(totalHoldBond);
-
-                List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(wholePriceData.getMemberId());
-                BigDecimal totalAmount = BigDecimal.ZERO;
-                if (CollUtil.isNotEmpty(entrustOrder)) {
-                    for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
-                        totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
-                    }
-                }
-
-                wholePriceData.setBalance(wallet.getTotalBalance().subtract(totalAmount));
-                wholePriceData.setMemberId(memberId);
-
-                OrderProducer orderProducer = SpringContextHolder.getBean(OrderProducer.class);
-
-                orderProducer.sendWholePrice(JSONObject.toJSONString(wholePriceData));
-            }
-        });
-
+        log.info("全仓操作价格");
+        OrderProducer orderProducer = SpringContextHolder.getBean(OrderProducer.class);
+        orderProducer.sendWholePrice(memberId.toString());
     }
 }
diff --git a/src/test/java/com/xcong/excoin/WholeTest.java b/src/test/java/com/xcong/excoin/WholeTest.java
index 9d52d39..8e7dbf8 100644
--- a/src/test/java/com/xcong/excoin/WholeTest.java
+++ b/src/test/java/com/xcong/excoin/WholeTest.java
@@ -174,4 +174,13 @@
         websocketPriceService.wholeBomb();
     }
 
+
+    @Test
+    public void wholeForceTest() {
+        // 3153.33181635
+//        System.out.println(new BigDecimal("9921.69458495").subtract(new BigDecimal("6768.36276860")));
+
+        // 33684.14725218
+    }
+
 }

--
Gitblit v1.9.1