From d5b1ec5dca1aefb6425d2e12b1b2804714019c27 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 28 Jan 2021 16:31:21 +0800 Subject: [PATCH] whole bomb finish --- src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java | 74 +++++++++++++++++++++++++++++++++++++ 1 files changed, 74 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java index 47b89a5..1f89588 100644 --- a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java +++ b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java @@ -1,12 +1,27 @@ package com.xcong.excoin.utils; +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONObject; +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; @@ -64,4 +79,63 @@ } }); } + + /** + * 全仓模式 -- 预估强平价 + * + * @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); + 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