From a1b05c46a7141a4c217569b89029a3d0b63dc741 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 29 Jan 2021 14:51:12 +0800
Subject: [PATCH] modify
---
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 | 36 -----------------
4 files changed, 60 insertions(+), 42 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..ddc8c7d 100644
--- a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
+++ b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
@@ -112,44 +112,10 @@
@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));
+ 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