From 9816994a2d9b48c6ae0e429b3d6d86a89caa5bd5 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 29 Jan 2021 15:54:37 +0800 Subject: [PATCH] Merge branch 'whole_new' of https://gitee.com/chonggaoxiao/new_excoin.git into whole_new --- src/test/java/com/xcong/excoin/WholeTest.java | 9 ++++ src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java | 54 ++++++++++++++++++++++++-- src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java | 3 - src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java | 46 +--------------------- 4 files changed, 62 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java index e17b469..be949a2 100644 --- a/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java +++ b/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java @@ -46,10 +46,9 @@ @RabbitListener(queues = RabbitMqConfig.QUEUE_WHOLE_PRICE) public void onMessageWholePrice(Message message, Channel channel) { String content = new String(message.getBody()); - WholePriceDataModel wholePriceData = JSONObject.parseObject(content, WholePriceDataModel.class); log.info("我收到了用户的全仓价格消息 : {}", content); - OrderOperatePriceService.wholePriceDataOperation(wholePriceData); + OrderOperatePriceService.wholePriceDataOperation(Long.parseLong(content)); } diff --git a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java index 3609764..357df80 100644 --- a/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java +++ b/src/main/java/com/xcong/excoin/rabbit/pricequeue/OrderOperatePriceService.java @@ -1,7 +1,17 @@ package com.xcong.excoin.rabbit.pricequeue; +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.entity.ContractEntrustOrderEntity; +import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity; +import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper; +import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; +import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; +import com.xcong.excoin.rabbit.pricequeue.whole.HoldOrderDataModel; import com.xcong.excoin.rabbit.pricequeue.whole.WholeDataQueue; import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel; import com.xcong.excoin.utils.RedisUtils; @@ -9,6 +19,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -134,16 +145,49 @@ } } - public static void wholePriceDataOperation(WholePriceDataModel wholePriceData) { + /** + * 全仓价格处理 + * + * @param memberId + */ + public static void wholePriceDataOperation(Long memberId) { RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class); - Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP; + ContractHoldOrderDao contractHoldOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); + ContractEntrustOrderDao contractEntrustOrderDao = SpringContextHolder.getBean(ContractEntrustOrderDao.class); - WholePriceDataModel isExistData = dataModelMap.get(wholePriceData.getMemberId().toString()); - if (isExistData != null) { - dataModelMap.remove(wholePriceData.getMemberId().toString()); + 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); + + Map<String, WholePriceDataModel> dataModelMap = WholeDataQueue.MAP; dataModelMap.put(wholePriceData.getMemberId().toString(), wholePriceData); redisUtils.set(AppContants.WHOLE_BOMB_MAP, JSONObject.toJSONString(dataModelMap)); diff --git a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java index de3abb7..dfc37dc 100644 --- a/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java +++ b/src/main/java/com/xcong/excoin/utils/ThreadPoolUtils.java @@ -108,48 +108,8 @@ * @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); - 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)); - } - }); - + log.info("全仓操作价格"); + OrderProducer orderProducer = SpringContextHolder.getBean(OrderProducer.class); + orderProducer.sendWholePrice(memberId.toString()); } } diff --git a/src/test/java/com/xcong/excoin/WholeTest.java b/src/test/java/com/xcong/excoin/WholeTest.java index 9d52d39..8e7dbf8 100644 --- a/src/test/java/com/xcong/excoin/WholeTest.java +++ b/src/test/java/com/xcong/excoin/WholeTest.java @@ -174,4 +174,13 @@ websocketPriceService.wholeBomb(); } + + @Test + public void wholeForceTest() { + // 3153.33181635 +// System.out.println(new BigDecimal("9921.69458495").subtract(new BigDecimal("6768.36276860"))); + + // 33684.14725218 + } + } -- Gitblit v1.9.1