From d8b9adf6a39ad94f22f473d11bc829a1cea5865f Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Wed, 26 Aug 2020 19:43:12 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 46 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 35 insertions(+), 11 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 48a7aec..22ee611 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 @@ -6,6 +6,7 @@ import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.OrderClosingTypeEnum; import com.xcong.excoin.common.system.service.CommonService; +import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao; import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao; import com.xcong.excoin.modules.contract.dao.ContractOrderDao; import com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity; @@ -31,6 +32,7 @@ import com.xcong.excoin.modules.member.entity.MemberSettingEntity; 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.utils.*; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -38,6 +40,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -51,30 +54,22 @@ @Resource private MemberDao memberDao; - @Resource private OrderWebsocketServiceImpl orderWebsocketService; - @Resource private ContractHoldOrderDao contractHoldOrderDao; - @Resource private ContractOrderDao contractOrderDao; - @Resource private CommonService commonService; - @Resource private MemberWalletContractDao memberWalletContractDao; - @Resource private CacheSettingUtils cacheSettingUtils; - @Resource private RedisUtils redisUtils; @Resource private MemberSettingDao memberSettingDao; - @Resource private FollowFollowerOrderRelationDao followFollowerOrderRelationDao; @Resource @@ -85,6 +80,8 @@ private FollowTraderProfitDetailDao followTraderProfitDetailDao; @Resource private FollowFollowerProfitDao followFollowerProfitDao; + @Resource + private ContractEntrustOrderDao contractEntrustOrderDao; @Transactional(rollbackFor = Exception.class) @Override @@ -261,7 +258,7 @@ MemberEntity memberEntity = memberDao.selectById(holdOrderEntity.getMemberId()); - MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(holdOrderEntity.getMemberId(), CoinTypeEnum.USDT.name()); + MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(holdOrderEntity.getMemberId(), CoinTypeConvert.convertContractTypeToCoin(symbol)); if (walletContract != null) { BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol); // 盈亏 @@ -305,6 +302,7 @@ log.info("bondAmount:{}", bondAmount); // 平仓手续费 TODO 可能需要修复手续费 BigDecimal fee = BigDecimal.ZERO; + if (holdOrderEntity.getSymbolCnt() != 0) { fee = holdOrderEntity.getOpeningFeeAmount().divide(BigDecimal.valueOf(holdOrderEntity.getSymbolCnt()), 8, BigDecimal.ROUND_DOWN).multiply(BigDecimal.valueOf(closeCnt)); } else { @@ -324,14 +322,19 @@ if (holdOrderEntity.getSymbolCntSale() != 0) { holdOrderEntity.setOpeningFeeAmount(holdOrderEntity.getOpeningFeeAmount().subtract(fee)); + holdOrderEntity.setBondAmount(holdOrderEntity.getBondAmount().subtract(bondAmount)); contractHoldOrderDao.updateById(holdOrderEntity); } else { contractHoldOrderDao.deleteById(holdOrderEntity.getId()); } - BigDecimal changeAmount = profitOrLoss.add(bondAmount).subtract(fee); + BigDecimal changeAmount = profitOrLoss.add(bondAmount); + log.info("changeAmount : {}", changeAmount); - memberWalletContractDao.increaseWalletContractBalanceById(changeAmount, profitOrLoss.subtract(fee), null, walletContract.getId()); + BigDecimal total = profitOrLoss.subtract(fee); + log.info("totalMoney : {}", total); + + memberWalletContractDao.increaseWalletContractBalanceById(changeAmount, total, null, walletContract.getId()); ThreadPoolUtils.sendWholeForceClosingPrice(holdOrderEntity.getSymbol(), memberEntity); // 计算佣金 @@ -339,4 +342,25 @@ } } + + @Override + public void entrustCloseOrder(List<OrderModel> list) { + if (CollUtil.isNotEmpty(list)) { + List<Long> ids = new ArrayList<>(); + list.forEach(model -> ids.add(model.getOrderId())); + List<ContractEntrustOrderEntity> contractEntrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByIds(ids); + + if (CollUtil.isNotEmpty(contractEntrustOrderEntities)) { + for (ContractEntrustOrderEntity entrustOrderEntity : contractEntrustOrderEntities) { + closeOrder(entrustOrderEntity); + } + } else { + log.info("平仓委托单未找到"); + } + } + } + + private void closeOrder(ContractEntrustOrderEntity entrustOrder) { + log.info("执行平仓委托"); + } } -- Gitblit v1.9.1