From fcf1957a7e56986a99885894a05c45bfda460226 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 08 Apr 2021 19:07:51 +0800
Subject: [PATCH] modify

---
 src/main/java/com/xcong/excoin/utils/CalculateUtil.java |   26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
index baf5769..ad6762a 100644
--- a/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
+++ b/src/main/java/com/xcong/excoin/utils/CalculateUtil.java
@@ -211,11 +211,10 @@
      * @param contractHoldOrderEntity
      * @return
      */
-    public static BigDecimal calWholePriceTwo(MemberEntity memberEntity, ContractHoldOrderEntity contractHoldOrderEntity, int type) {
+    public static BigDecimal calWholePriceTwo(MemberEntity memberEntity, ContractHoldOrderEntity contractHoldOrderEntity, int type, BigDecimal newPrice) {
         ContractHoldOrderDao holdOrderDao = SpringContextHolder.getBean(ContractHoldOrderDao.class);
         MemberWalletContractDao walletContractDao = SpringContextHolder.getBean(MemberWalletContractDao.class);
-        RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
-        BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(contractHoldOrderEntity.getSymbol())));
+        CacheSettingUtils cacheSettingUtils = SpringContextHolder.getBean(CacheSettingUtils.class);
 
         Long memberId = memberEntity.getId();
         MemberWalletContractEntity walletContract = walletContractDao.findWalletContractByMemberIdAndSymbol(memberId, CoinTypeEnum.USDT.name());
@@ -230,7 +229,26 @@
                 } else {
                     totalBondAmount = totalBondAmount.add(holdOrderEntity.getBondAmount());
                 }
-                totalProfitOrLoss = totalProfitOrLoss.add(calProfitOrLoss(holdOrderEntity, memberEntity));
+
+                // 盈亏
+                BigDecimal rewardRatio = BigDecimal.ZERO;
+                // 开多
+                if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
+                    // (最新价-开仓价)*规格*张数
+                    rewardRatio = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
+                    // 开空
+                } else {
+                    // (开仓价-最新价)*规格*张数
+                    rewardRatio = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(contractHoldOrderEntity.getSymbolSku()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale()));
+                }
+
+                if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) {
+                    PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting();
+                    if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) {
+                        rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam()));
+                    }
+                }
+                totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio);
             }
 
             // 维持保证金

--
Gitblit v1.9.1