From b764d248320f1d47afcaa0f37d486fa6620db477 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 04 Sep 2020 11:13:00 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/utils/CalculateUtil.java | 16 ++++++++++++++-- 1 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java index d687981..4f8834f 100644 --- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java +++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java @@ -2,6 +2,7 @@ import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.xcong.excoin.common.enumerates.CoinTypeEnum; import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum; @@ -85,7 +86,7 @@ * 全仓模式 -- 预估强平价 * 开仓价 - (权益 - 其他币种成本)/当前币种成本 * (开仓价 * 杠杆) */ - public static void getForceSetPriceForWhole(@NotNull String aa, @NotNull MemberEntity memberEntity) { + public static BigDecimal getForceSetPriceForWhole(String currentSymbol, @NotNull MemberEntity memberEntity) { ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class); MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class); @@ -93,6 +94,8 @@ MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name()); List<ContractHoldOrderEntity> holdOrderEntities = holdOrderDao.selectHoldOrderListForWholeByMemberIdAndSymbol(memberId, null); List<String> symbols = holdOrderDao.selectWholeHoldOrderSymbolsByMemberId(memberId); + + BigDecimal result = BigDecimal.ZERO; if (CollUtil.isNotEmpty(holdOrderEntities)) { for (String symbol : symbols) { @@ -128,7 +131,7 @@ profitOrLoss = profitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity)); } - log.info("{}, {}, {}, {}, {}, {}", totalBondAmount, symbolFeeAmount, symbolFeeAmount, openPrice, profitOrLoss, leverRatio); + log.info("{}, {}, {}, {}, {}, {}", totalBondAmount, symbolBondAmount, symbolFeeAmount, openPrice, profitOrLoss, leverRatio); BigDecimal sub = walletContract.getTotalBalance().add(profitOrLoss).subtract(symbolFeeAmount).subtract(totalBondAmount); log.info("sub -- {}", sub); BigDecimal divide = sub.divide(symbolBondAmount, 8, BigDecimal.ROUND_DOWN); @@ -138,8 +141,17 @@ BigDecimal forcePrice = openPrice.subtract(divide.multiply(divide2)); log.info("forcePrice -- {}", forcePrice); + if (StrUtil.isBlank(currentSymbol)) { + holdOrderDao.updateForcePriceBySymbolAndMemberId(forcePrice, memberId, symbol); + } + + if (symbol.equalsIgnoreCase(currentSymbol)) { + result = forcePrice; + } } } + + return result; } private static BigDecimal calProfitOrLoss(ContractHoldOrderEntity holdOrderEntity, MemberEntity memberEntity) { -- Gitblit v1.9.1