From 9c9c8f1e9b4658f65997c66769507c6ea6476a7f Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 28 Jan 2021 16:54:38 +0800
Subject: [PATCH] Merge branch 'whole_new' of https://gitee.com/chonggaoxiao/new_excoin into whole_new
---
src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java | 84 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 83 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
index 528598c..f31295b 100644
--- a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
+++ b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
@@ -1,11 +1,28 @@
package com.xcong.excoin.utils;
+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.ContractHoldOrderDao;
+import com.xcong.excoin.modules.contract.dao.ContractOrderDao;
+import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
+import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper;
import com.xcong.excoin.modules.contract.service.impl.OrderWebsocketServiceImpl;
import com.xcong.excoin.modules.documentary.service.FollowOrderOperationService;
+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.rabbit.pricequeue.whole.HoldOrderDataModel;
+import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel;
+import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.dingtalk.DingTalkUtils;
+import lombok.extern.slf4j.Slf4j;
+import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
+import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -13,6 +30,7 @@
* @author wzy
* @date 2020-06-01
**/
+@Slf4j
public class ThreadPoolUtils {
public static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(20);
@@ -54,8 +72,72 @@
EXECUTOR.execute(new Runnable() {
@Override
public void run() {
- followOrderOperationService.addFollowerOrder(id);
+ try {
+ followOrderOperationService.addFollowerOrder(id);
+ } catch (Exception e) {
+ log.error("产生跟单任务报错", e);
+ }
}
});
}
+
+ /**
+ * 全仓模式 -- 预估强平价
+ *
+ * @param symbol 币种
+ * @param memberEntity 会员信息
+ */
+ public static void sendWholeForceClosingPrice(@NotNull String symbol, @NotNull MemberEntity memberEntity) {
+ EXECUTOR.execute(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ CalculateUtil.getForceSetPriceForWhole(null, memberEntity);
+ } catch (Exception e) {
+ log.error("全仓模式预估强平价", e);
+ }
+ }
+ });
+ }
+
+ /**
+ * 发送全仓价格操作
+ *
+ * @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);
+ 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);
+ wholePriceData.setBalance(wallet.getTotalBalance());
+ wholePriceData.setMemberId(memberId);
+
+ OrderProducer orderProducer = SpringContextHolder.getBean(OrderProducer.class);
+
+ orderProducer.sendWholePrice(JSONObject.toJSONString(wholePriceData));
+ }
+ });
+
+ }
}
--
Gitblit v1.9.1