From bf68aa759bc3c0a858d80cb3d1ae1f1682cd6c94 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 06 Apr 2021 15:38:42 +0800 Subject: [PATCH] Merge branch 'activity' of http://120.27.238.55:7000/r/exchange into activity --- src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 81 ++++++++++++++++++++++++---------------- 1 files changed, 49 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java index 9c93699..1c3431f 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java @@ -213,7 +213,7 @@ memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); // 发送预估强平价 - ThreadPoolUtils.sendWholeForceClosingPrice(submitOrderDto.getSymbol(), memberEntity); +// ThreadPoolUtils.sendWholeForceClosingPrice(submitOrderDto.getSymbol(), memberEntity); // 计算佣金 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), openFeePrice, contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); @@ -266,7 +266,7 @@ memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId()); // 发送预估强平价 - ThreadPoolUtils.sendWholeForceClosingPrice(submitOrderDto.getSymbol(), memberEntity); +// ThreadPoolUtils.sendWholeForceClosingPrice(submitOrderDto.getSymbol(), memberEntity); // 计算佣金 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN); @@ -385,17 +385,7 @@ // 若该用户为交易员且开启带单模式,则发送带单异步 if (isOpenFollow) { - FollowFollowerOrderRelationEntity relationEntity = new FollowFollowerOrderRelationEntity(); - relationEntity.setIsShow(FollowFollowerOrderRelationEntity.IS_SHOW_Y); - relationEntity.setMemberId(holdOrderEntity.getMemberId()); - relationEntity.setOrderId(holdOrderEntity.getId()); - relationEntity.setOrderType(FollowFollowerOrderRelationEntity.ORDER_TYPE_HOLD); - relationEntity.setTradeId(tradeInfo.getId()); - relationEntity.setTradeMemberId(tradeInfo.getMemberId()); - relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo()); - followFollowerOrderRelationDao.insert(relationEntity); - - followProducer.sendAddFollowOrder(holdOrderEntity.getId()); + sendFollowOrder(tradeInfo, holdOrderEntity); // ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId()); } // 提交成功 @@ -405,6 +395,20 @@ return Result.fail(MessageSourceUtils.getString("member_service_0067")); } + @Override + public void sendFollowOrder(FollowTraderInfoEntity tradeInfo, ContractHoldOrderEntity holdOrderEntity) { + FollowFollowerOrderRelationEntity relationEntity = new FollowFollowerOrderRelationEntity(); + relationEntity.setIsShow(FollowFollowerOrderRelationEntity.IS_SHOW_Y); + relationEntity.setMemberId(holdOrderEntity.getMemberId()); + relationEntity.setOrderId(holdOrderEntity.getId()); + relationEntity.setOrderType(FollowFollowerOrderRelationEntity.ORDER_TYPE_HOLD); + relationEntity.setTradeId(tradeInfo.getId()); + relationEntity.setTradeMemberId(tradeInfo.getMemberId()); + relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo()); + followFollowerOrderRelationDao.insert(relationEntity); + + followProducer.sendAddFollowOrder(holdOrderEntity.getId()); + } /** * 全仓模式--若当前已经存在持仓,则合并当前持仓 @@ -499,7 +503,7 @@ } // 回报率 - BigDecimal returnRate = rewardRatio.divide(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()), 8, BigDecimal.ROUND_DOWN); + BigDecimal returnRate = rewardRatio.divide(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), 8, BigDecimal.ROUND_DOWN); // 成本价格 BigDecimal costPrice = holdOrderEntity.getOpeningPrice() @@ -512,7 +516,7 @@ // if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) { // canAddMaxBond = BigDecimal.ZERO; // } - BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()); + BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount()); if (rewardRatio.compareTo(BigDecimal.ZERO) < 0) { canReduceMaxBond = canReduceMaxBond.add(rewardRatio); @@ -527,7 +531,8 @@ holdOrderListVo.setReturnRate(returnRate); holdOrderListVo.setProfitOrLoss(rewardRatio); if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) { - BigDecimal forcePrice = CalculateUtil.getForceSetPriceForWhole(holdOrderEntity.getSymbol(), memberEntity); + BigDecimal forcePrice = CalculateUtil.calWholePriceTwo(memberEntity, holdOrderEntity); +// contractHoldOrderDao.updateForcePriceBySymbolAndMemberId(forcePrice, memberEntity.getId(), holdOrderEntity.getSymbol()); holdOrderListVo.setForceClosingPrice(forcePrice); } resultList.add(holdOrderListVo); @@ -549,7 +554,7 @@ } result.put("hold", resultList); - result.put("totalProfitOrLoss", totalProfitOrLoss.setScale(4, BigDecimal.ROUND_DOWN).toPlainString()); + result.put("totalProfitOrLoss", totalProfitOrLoss.setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); return Result.ok(result); } return Result.ok("success"); @@ -648,7 +653,7 @@ return Result.loading("loading_type"); } - List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbolDto.getSymbol(), 1); + List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbolDto.getSymbol(), symbolDto.getType()); if (CollUtil.isEmpty(holdOrderEntities)) { return Result.fail("订单不存在"); } @@ -846,6 +851,10 @@ if (i > 0) { // 发送爆仓消息 sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), forceClosingPrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId()); + + if (ContractOrderEntity.CONTRACTTYPE_DOCUMENTARY == holdOrderEntity.getContractType()) { + followProducer.sendChangeFollowOrderBond(holdOrderEntity.getId(), changeBondDto.getAmount(), changeBondDto.getType()); + } return Result.ok("调整成功"); } return Result.fail("调整失败"); @@ -859,7 +868,7 @@ BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol))); List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId()); - List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId()); + List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbolTest(memberEntity.getId(), null); MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name()); // if (memberEntity.getContractPositionType().equals(ContractEntrustOrderEntity.POSITION_TYPE_ADD)) { // // 当前合约委托单 @@ -951,6 +960,7 @@ contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp()); contractMoneyInfoVo.setMoreBondAmount(moreBondAmount); contractMoneyInfoVo.setLessBondAmount(lessBondAmount); + contractMoneyInfoVo.setProfitOrLess(totalProfitOrLess); return Result.ok(contractMoneyInfoVo); } @@ -1134,28 +1144,35 @@ if (CollUtil.isNotEmpty(list)) { for (ContractHoldOrderEntity holdOrderEntity : list) { + BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).multiply(tradeSettingEntity.getDoingRatio()); + MemberWalletContractEntity wallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(holdOrderEntity.getMemberId(), CoinTypeEnum.USDT.name()); + log.info("订单编号:{}, 持仓费:{}", holdOrderEntity.getOrderNo(), thisTimeHold); + BigDecimal holdAmount = holdOrderEntity.getHoldAmount(); if (holdAmount == null) { holdAmount = BigDecimal.ZERO; } - BigDecimal thisTimeHold = holdOrderEntity.getBondAmount().multiply(tradeSettingEntity.getDoingRatio()); - log.info("订单编号:{}, 持仓费:{}", holdOrderEntity.getOrderNo(), thisTimeHold); - - MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId()); - BigDecimal subBond = holdOrderEntity.getBondAmount().subtract(thisTimeHold); - - BigDecimal newForcePrice = CalculateUtil.getForceSetPrice(subBond.subtract(holdOrderEntity.getOpeningFeeAmount()), holdOrderEntity.getOpeningPrice(), holdOrderEntity.getSymbolCnt(), holdOrderEntity.getSymbolSku(), holdOrderEntity.getOpeningType(), memberEntity); holdAmount = holdAmount.add(thisTimeHold); - holdOrderEntity.setBondAmount(subBond); - holdOrderEntity.setHoldAmount(holdAmount); - holdOrderEntity.setForceClosingPrice(newForcePrice); - holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1); - contractHoldOrderDao.updateById(holdOrderEntity); - if (ContractEntrustOrderEntity.POSITION_TYPE_ADD == holdOrderEntity.getPositionType()) { + + MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId()); + BigDecimal subBond = holdOrderEntity.getBondAmount().subtract(thisTimeHold); + BigDecimal newForcePrice = CalculateUtil.getForceSetPrice(subBond.subtract(holdOrderEntity.getOpeningFeeAmount()), holdOrderEntity.getOpeningPrice(), holdOrderEntity.getSymbolCnt(), holdOrderEntity.getSymbolSku(), holdOrderEntity.getOpeningType(), memberEntity); + holdOrderEntity.setBondAmount(subBond); + holdOrderEntity.setHoldAmount(holdAmount); + holdOrderEntity.setForceClosingPrice(newForcePrice); + holdOrderEntity.setOperateNo(holdOrderEntity.getOperateNo() + 1); + contractHoldOrderDao.updateById(holdOrderEntity); + + memberWalletContractDao.increaseWalletContractBalanceById(null, thisTimeHold.negate(), null, wallet.getId()); // 发送爆仓消息 sendOrderBombMsg(holdOrderEntity.getId(), holdOrderEntity.getOpeningType(), newForcePrice, holdOrderEntity.getSymbol(), holdOrderEntity.getOperateNo(), holdOrderEntity.getMemberId()); + } else { + holdOrderEntity.setHoldAmount(holdAmount); + contractHoldOrderDao.updateById(holdOrderEntity); + memberWalletContractDao.increaseWalletContractBalanceById(thisTimeHold.negate(), thisTimeHold.negate(), null, wallet.getId()); + ThreadPoolUtils.sendWholePrice(holdOrderEntity.getMemberId()); } } } -- Gitblit v1.9.1