From a00d810984fe187d24e442d5f557bcc271cfa3ce Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Thu, 28 Jan 2021 11:25:49 +0800 Subject: [PATCH] Merge branch 'whole_new' of https://gitee.com/chonggaoxiao/new_excoin.git into whole_new --- src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 41 ++++++++++++++++++++--------------------- 1 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java index 62169c3..08df59a 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java @@ -35,6 +35,7 @@ import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; import com.xcong.excoin.rabbit.pricequeue.OrderModel; +import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel; import com.xcong.excoin.utils.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -45,6 +46,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; /** * @author wzy @@ -470,6 +472,10 @@ ThreadPoolUtils.calReturnMoney(memberEntity.getId(), fee, contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); } + @Override + public void wholeBombOrder(WholePriceDataModel wholePriceData) { + + } @Transactional(rollbackFor = Exception.class) @Override @@ -479,32 +485,22 @@ Long memberId = memberEntity.getId(); List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, null); MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name()); - BigDecimal currentPrice = new BigDecimal(orderModel.getPrice()); + + Map<Object, Object> value = redisUtils.hmget(AppContants.WHOLE_BOMB_PREFIX + memberId); if (CollUtil.isNotEmpty(holdOrderEntities)) { - PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting(); + BigDecimal maxLess = BigDecimal.ZERO; + ContractOrderEntity maxLessEntity = null; + BigDecimal totalProfitOrLess = BigDecimal.ZERO; for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { // 删除次仓订单 contractHoldOrderDao.deleteById(holdOrderEntity.getId()); BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol()); + String symbolPrice = (String) value.get(holdOrderEntity.getSymbol()); + log.info("symbolPrice : {}, symbol : {}", symbolPrice, holdOrderEntity.getSymbol()); + BigDecimal currentPrice = new BigDecimal(symbolPrice); - // 单个订单盈利 - BigDecimal profitOrLess = BigDecimal.ZERO; - // 开多 - if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { - profitOrLess = currentPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber); - // 开空 - } else { - profitOrLess = holdOrderEntity.getOpeningPrice().subtract(currentPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber); - } - - if (MemberEntity.IS_PROFIT_Y == memberEntity.getIsProfit()) { - if (profitOrLess.compareTo(BigDecimal.ZERO) > 0) { - profitOrLess = profitOrLess.multiply(BigDecimal.ONE.subtract(tradeSetting.getForceParam())); - } else { - profitOrLess = profitOrLess.multiply(BigDecimal.ONE.add(tradeSetting.getForceParam())); - } - } - + BigDecimal profitOrLess = CalculateUtil.calOrderProfitOrLess(holdOrderEntity.getOpeningType(), currentPrice, holdOrderEntity.getOpeningPrice(), lotNumber, holdOrderEntity.getSymbolCntSale(), memberEntity.getIsProfit()); + log.info("profitOrLess ---> {}", profitOrLess); ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(holdOrderEntity); // 查询是否满足爆仓条件 @@ -520,6 +516,7 @@ contractOrderEntity.setRewardRatio(rewardRatio); contractOrderEntity.setRewardAmount(profitOrLess); contractOrderEntity.setClosingPrice(currentPrice); + contractOrderEntity.setForceClosingPrice(currentPrice); // 订单状态转换 if (ContractOrderEntity.ORDER_TYPE_OPEN_MORE == contractOrderEntity.getOrderType()) { @@ -541,7 +538,9 @@ } } - memberWalletContractDao.increaseWalletContractBalanceById(BigDecimal.ZERO, wallet.getTotalBalance().subtract(totalAmount), null, wallet.getId()); + memberWalletContractDao.increaseWalletContractBalanceById(wallet.getAvailableBalance().negate(), wallet.getTotalBalance().subtract(totalAmount).negate(), null, wallet.getId()); + + redisUtils.del(AppContants.WHOLE_BOMB_PREFIX + memberId); } else { log.info("无当前持仓"); } -- Gitblit v1.9.1