From 55a4f22db43ec34bc7f59103f4a94005bd613850 Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Wed, 31 Mar 2021 15:40:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/activity' into activity
---
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 66 +++++++++++++++++++--------------
1 files changed, 38 insertions(+), 28 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 7a9967d..0532ea6 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
@@ -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());
+ }
/**
* 全仓模式--若当前已经存在持仓,则合并当前持仓
@@ -527,7 +531,7 @@
holdOrderListVo.setReturnRate(returnRate);
holdOrderListVo.setProfitOrLoss(rewardRatio);
if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) {
- BigDecimal forcePrice = CalculateUtil.getForceSetPriceForWhole(holdOrderEntity.getSymbol(), memberEntity);
+ BigDecimal forcePrice = CalculateUtil.calForcePriceForWhole(memberEntity, holdOrderEntity);
holdOrderListVo.setForceClosingPrice(forcePrice);
}
resultList.add(holdOrderListVo);
@@ -648,7 +652,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("订单不存在");
}
@@ -859,7 +863,7 @@
BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
- List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbolTest(memberEntity.getId(), ContractOrderEntity.CONTRACTTYPE_NORMAL);
+ 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)) {
// // 当前合约委托单
@@ -1135,29 +1139,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().subtract(holdOrderEntity.getOpeningFeeAmount()).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);
-
- memberWalletContractDao.increaseWalletContractBalanceById(null, thisTimeHold.negate(), null, holdOrderEntity.getMemberId());
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