From 2159ddb3466f66711bb3031314aace36fa187838 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 29 Mar 2021 17:15:13 +0800 Subject: [PATCH] 20210329 全仓模式下资金划转,需要减去亏损 --- src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 56 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java index 212a3b2..1aacdec 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java @@ -416,41 +416,41 @@ if (balance.compareTo(BigDecimal.ZERO) <= 0) { return Result.fail(MessageSourceUtils.getString("member_service_0004")); } - - //获取全仓模式下的所有持仓信息 - PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting(); - BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol))); - List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberEntity.getId(),""); - + //获取合约当前持仓类型 + Integer contractPositionType = memberEntity.getContractPositionType(); // 总盈利 BigDecimal totalProfitOrLess = BigDecimal.ZERO; - if (CollUtil.isNotEmpty(holdOrderEntities)) { - for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { - // 获取最新价 - BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); - BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol()); - - // 单个订单盈利 - BigDecimal profitOrLess = BigDecimal.ZERO; - // 开多 - if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { - profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber); - // 开空 - } else { - profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber); - } - - if (MemberEntity.IS_PROFIT_Y == memberEntity.getIsProfit()) { - if (profitOrLess.compareTo(BigDecimal.ZERO) > 0) { - profitOrLess = profitOrLess.multiply(BigDecimal.ONE.subtract(tradeSetting.getForceParam())); + if(contractPositionType == 2){ + //获取全仓模式下的所有持仓信息 + PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting(); + BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol))); + List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberEntity.getId(),""); + if (CollUtil.isNotEmpty(holdOrderEntities)) { + for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) { + // 获取最新价 + BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol()))); + BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol()); + // 单个订单盈利 + BigDecimal profitOrLess = BigDecimal.ZERO; + // 开多 + if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { + profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber); + // 开空 } else { - profitOrLess = profitOrLess.multiply(BigDecimal.ONE.add(tradeSetting.getForceParam())); + profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).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())); + } + } + totalProfitOrLess = totalProfitOrLess.add(profitOrLess); } - totalProfitOrLess = totalProfitOrLess.add(profitOrLess); } } - + String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue(); MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, symbol); BigDecimal availableBalance = walletContract.getAvailableBalance(); -- Gitblit v1.9.1