From 05c74ca131add20dbcf23dc109e63c21b3e2be29 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 24 Feb 2021 18:11:57 +0800
Subject: [PATCH] Merge branch 'whole_new_trc20' into whole_new
---
src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java | 80 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 76 insertions(+), 4 deletions(-)
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 2428c7b..120acf3 100644
--- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
+++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java
@@ -1,9 +1,25 @@
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;
+import com.xcong.excoin.utils.SpringContextHolder;
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;
@@ -60,12 +76,12 @@
// 判断这个单的这个类型是否有
// if (CollectionUtils.isNotEmpty(list)) {
// 新增
- OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
+ OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
list.add(orderModel);
// }
} else {
List<OrderModel> list = new ArrayList<OrderModel>();
- OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
+ OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
list.add(orderModel);
orderMap.put(price, list);
}
@@ -95,12 +111,12 @@
// 判断这个单的这个类型是否有
// if (CollectionUtils.isNotEmpty(list)) {
// 新增
- OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
+ OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
list.add(orderModel);
// }
} else {
List<OrderModel> list = new ArrayList<OrderModel>();
- OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo());
+ OrderModel orderModel = new OrderModel(orderId, type, price, null,order.getOperateNo(), order.getMemberId());
list.add(orderModel);
orderMap.put(price, list);
}
@@ -129,4 +145,60 @@
}
}
+ /**
+ * 全仓价格处理
+ *
+ * @param memberId
+ */
+ public static void wholePriceDataOperation(Long memberId) {
+ Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP;
+ log.info("操作前:{}", dataModelMap);
+ RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
+
+ ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
+ ContractEntrustOrderDao contractEntrustOrderDao = SpringContextHolder.getBean(ContractEntrustOrderDao.class);
+
+ MemberWalletContractDao memberWalletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
+
+ List<ContractHoldOrderEntity> holdOrders = contractHoldOrderDao.selectHoldOrderListByMemberId(memberId);
+ log.info("持仓数量:{}", holdOrders.size());
+ if (CollUtil.isEmpty(holdOrders)) {
+ if (dataModelMap.get(memberId.toString()) != null) {
+ log.info("平仓后执行");
+ dataModelMap.remove(memberId.toString());
+
+ redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap));
+ }
+ 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(memberId);
+ BigDecimal totalAmount = BigDecimal.ZERO;
+ if (CollUtil.isNotEmpty(entrustOrder)) {
+ for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) {
+ totalAmount = totalAmount.add(contractEntrustOrderEntity.getEntrustAmount());
+ }
+ }
+
+ wholePriceData.setBalance(wallet.getTotalBalance().subtract(totalAmount));
+ wholePriceData.setMemberId(memberId);
+
+ dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData);
+ redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap));
+ log.info("dataModelMap为:{}", dataModelMap);
+ }
+
}
--
Gitblit v1.9.1