From 0e2ecf41e6ff7dadd8b2f5bd18d118e88f23d9eb Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Tue, 30 Mar 2021 16:37:13 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 46 ++++++++++++++++++++++++++++++++++------------ 1 files changed, 34 insertions(+), 12 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 a05c0f4..ba5c3a1 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 @@ -97,19 +97,30 @@ if (ids.size() == 1) { ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectById(ids.get(0)); - // 判断仓位类型是否逐仓 - if (holdOrderEntity.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) { - // 逐仓平仓 - cancelHoldOrderMethod(holdOrderEntity); + if (holdOrderEntity != null) { + // 判断仓位类型是否逐仓 + if (holdOrderEntity.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) { + // 逐仓平仓 + cancelHoldOrderMethod(holdOrderEntity); + } else { + // 全仓模式平仓 + closingWholeOrder(holdOrderEntity); + } } else { - // 全仓模式平仓 - closingWholeOrder(holdOrderEntity); + log.info("持仓订单为空: {}", ids.get(0)); } } else { List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectBatchIds(ids); if (CollUtil.isNotEmpty(holdOrderEntities)) { for (ContractHoldOrderEntity holdOrder : holdOrderEntities) { - cancelHoldOrderMethod(holdOrder); + // 判断仓位类型是否逐仓 + if (holdOrder.getPositionType() == ContractEntrustOrderEntity.POSITION_TYPE_ADD) { + // 逐仓平仓 + cancelHoldOrderMethod(holdOrder); + } else { + // 全仓模式平仓 + closingWholeOrder(holdOrder); + } } } } @@ -181,6 +192,14 @@ MemberWalletContractEntity traderWallet = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(traderInfoEntity.getMemberId(), CoinTypeEnum.USDT.name()); memberWalletContractDao.increaseWalletContractBalanceById(returnMoney, returnMoney, null, traderWallet.getId()); insertReturnProfitDetail(traderInfoEntity.getMemberId(), memberEntity.getId(), returnMoney, holdOrderEntity.getOrderNo()); + //增加返佣提醒 + String orderNo = holdOrderEntity.getOrderNo(); + LogRecordUtils.insertFollowerNotice(traderInfoEntity.getMemberId(), + NoticeConstant.RETURN_MONEY_TITLE, + StrUtil.format(NoticeConstant.RETURN_MONEY_CONTENT, + memberEntity.getInviteId(), + orderNo, + returnMoney.setScale(2, BigDecimal.ROUND_HALF_UP).toString())); } } } @@ -214,8 +233,8 @@ if (MemberEntity.IS_TRADER_Y.equals(memberEntity.getIsTrader())) { followOrderOperationService.closingFollowOrders(holdOrderEntity.getOrderNo()); } else { - followFollowerProfitDao.updateFollowerProfitByTradeMemberId(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), profitOrLoss, traderInfoEntity.getMemberId(), memberEntity.getId()); - LogRecordUtils.insertFollowerNotice(memberEntity.getId(), NoticeConstant.CLOSE_ORDER_TITLE, StrUtil.format(NoticeConstant.CLOSE_ORDER_CONTENT, contractOrderEntity.getSymbol(), contractOrderEntity.getClosingPrice(), profitOrLoss.setScale(8, BigDecimal.ROUND_DOWN).toString(), traderInfoEntity.getNickname())); + //followFollowerProfitDao.updateFollowerProfitByTradeMemberId(holdOrderEntity.getBondAmount(), profitOrLoss, traderInfoEntity.getMemberId(), memberEntity.getId()); + LogRecordUtils.insertFollowerNotice(memberEntity.getId(), NoticeConstant.CLOSE_ORDER_TITLE, StrUtil.format(NoticeConstant.CLOSE_ORDER_CONTENT, contractOrderEntity.getSymbol(), contractOrderEntity.getClosingPrice().setScale(2, BigDecimal.ROUND_HALF_UP).toString(), profitOrLoss.setScale(2, BigDecimal.ROUND_HALF_UP).toString(), traderInfoEntity.getNickname())); } } } @@ -302,6 +321,7 @@ } log.info("profitOrLoss:{}", profitOrLoss); + BigDecimal rewardRatio = profitOrLoss.divide(holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()), 4, BigDecimal.ROUND_DOWN); // 保证金 BigDecimal bondAmount = CalculateUtil.getBondAmount(holdOrderEntity.getOpeningPrice(), lotNumber, closeCnt, holdOrderEntity.getLeverRatio()); @@ -323,6 +343,7 @@ contractOrderEntity.setClosingType(closingType); contractOrderEntity.setSymbolCnt(closeCnt); contractOrderEntity.setRewardAmount(profitOrLoss); + contractOrderEntity.setRewardRatio(rewardRatio); contractOrderEntity.setBondAmount(bondAmount.add(fee)); contractOrderEntity.setClosingFeeAmount(fee); contractOrderEntity.setClosingTime(new Date()); @@ -384,8 +405,7 @@ log.info("执行平仓委托"); Long memberId = entrustOrder.getMemberId(); -// int orderType = entrustOrder.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE ? ContractHoldOrderEntity.OPENING_TYPE_MORE : ContractHoldOrderEntity.OPENING_TYPE_LESS; - int orderType = entrustOrder.getEntrustType(); + int orderType = entrustOrder.getEntrustType() == ContractEntrustOrderEntity.ENTRUST_TYPE_CLOSE_MORE ? ContractHoldOrderEntity.OPENING_TYPE_MORE : ContractHoldOrderEntity.OPENING_TYPE_LESS; String symbol = entrustOrder.getSymbol(); MemberEntity memberEntity = memberDao.selectById(memberId); @@ -446,11 +466,13 @@ contractOrderEntity.setEntrustOpeningPrice(newPrice); contractOrderEntity.setEntrustTime(new Date()); contractOrderEntity.setClosingPrice(newPrice); - contractOrderEntity.setOrderType(orderType); + contractOrderEntity.setTradeType(ContractOrderEntity.TRADE_TYPE_LIMIT_PRICE); + contractOrderEntity.setOrderType(entrustOrder.getEntrustType()); contractOrderEntity.setClosingType(closingType); contractOrderEntity.setSymbolCnt(closeCnt); contractOrderEntity.setRewardAmount(profitOrLoss); contractOrderEntity.setBondAmount(bondAmount); + contractOrderEntity.setClosingTime(new Date()); contractOrderEntity.setClosingFeeAmount(fee); contractOrderDao.insert(contractOrderEntity); -- Gitblit v1.9.1