Helius
2021-01-28 d5b1ec5dca1aefb6425d2e12b1b2804714019c27
src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java
@@ -1,14 +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;
@@ -78,11 +91,51 @@
            @Override
            public void run() {
                try {
                    CalculateUtil.getForceSetPriceForWhole(symbol, memberEntity);
                    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));
            }
        });
    }
}