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.ContractEntrustOrderDao; import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; import com.xcong.excoin.modules.contract.dao.ContractOrderDao; import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; 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.SneakyThrows; 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; /** * @author wzy * @date 2020-06-01 **/ @Slf4j public class ThreadPoolUtils { public static final ExecutorService EXECUTOR = Executors.newFixedThreadPool(20); /** * 计算佣金 * * @param id 用户ID * @param price 手续费 * @param entity 订单实体 * @param type 订单类型 */ public static void calReturnMoney(Long id, BigDecimal price, ContractOrderEntity entity, int type) { OrderWebsocketServiceImpl orderWebsocketService = SpringContextHolder.getBean(OrderWebsocketServiceImpl.class); EXECUTOR.execute(new Runnable() { @Override public void run() { orderWebsocketService.calYj(id, price, entity, type); } }); } /** * 发送钉钉消息 * * @param type 类型 */ public static void sendDingTalk(int type) { EXECUTOR.execute(new Runnable() { @Override public void run() { DingTalkUtils.sendActionCard(type); } }); } public static void sendFollowOrderTask(Long id) { FollowOrderOperationService followOrderOperationService = SpringContextHolder.getBean(FollowOrderOperationService.class); EXECUTOR.execute(new Runnable() { @Override public void run() { 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() { @SneakyThrows @Override public void run() { Thread.sleep(500); log.info("全仓操作价格"); OrderProducer orderProducer = SpringContextHolder.getBean(OrderProducer.class); orderProducer.sendWholePrice(memberId.toString()); } }); } }