|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public static void sendWholePrice(@NotNull Long memberId) { | 
|---|
|  |  |  | EXECUTOR.execute(new Runnable() { | 
|---|
|  |  |  | @SneakyThrows | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void run() { | 
|---|
|  |  |  | Thread.sleep(500); | 
|---|
|  |  |  | log.info("全仓操作价格"); | 
|---|
|  |  |  | ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); | 
|---|
|  |  |  | ContractEntrustOrderDao contractEntrustOrderDao = SpringContextHolder.getBean(ContractEntrustOrderDao.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); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ContractEntrustOrderEntity> entrustOrder = contractEntrustOrderDao.selectEntrustOrderListByMemberId(wholePriceData.getMemberId()); | 
|---|
|  |  |  | BigDecimal totalAmount = BigDecimal.ZERO; | 
|---|
|  |  |  | if (CollUtil.isNotEmpty(entrustOrder)) { | 
|---|
|  |  |  | for (ContractEntrustOrderEntity contractEntrustOrderEntity : entrustOrder) { | 
|---|
|  |  |  | totalAmount.add(contractEntrustOrderEntity.getEntrustAmount()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wholePriceData.setBalance(wallet.getTotalBalance().subtract(totalAmount)); | 
|---|
|  |  |  | wholePriceData.setMemberId(memberId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | OrderProducer orderProducer = SpringContextHolder.getBean(OrderProducer.class); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | orderProducer.sendWholePrice(JSONObject.toJSONString(wholePriceData)); | 
|---|
|  |  |  | orderProducer.sendWholePrice(memberId.toString()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|