From ad35d23bdd072d7179eb4bfcb588975f37a68f53 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 07 May 2025 00:32:57 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/utils/UserPointUtil.java |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/nq/utils/UserPointUtil.java b/src/main/java/com/nq/utils/UserPointUtil.java
index 9e87593..e995316 100644
--- a/src/main/java/com/nq/utils/UserPointUtil.java
+++ b/src/main/java/com/nq/utils/UserPointUtil.java
@@ -3,8 +3,11 @@
 
 import com.github.pagehelper.util.StringUtil;
 import com.nq.pojo.UserPosition;
+import com.nq.service.impl.UserServiceImpl;
 import com.nq.vo.position.PositionProfitVO;
 import com.nq.vo.position.UserPositionVO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.math.BigDecimal;
 
@@ -12,6 +15,7 @@
  * 仓位计算工具类
  * */
 public class UserPointUtil {
+    private static final Logger log = LoggerFactory.getLogger(UserPointUtil.class);
 
 
     /**
@@ -50,13 +54,23 @@
         userPositionVO.setStockPlate(position.getStockPlate());
         userPositionVO.setSpreadRatePrice(position.getSpreadRatePrice());
         PositionProfitVO positionProfitVO = getPositionProfitVO(position,nowPrice);
-       BigDecimal ss =  positionProfitVO.getProfitAndLose().divide(userPositionVO.getOrderTotalPrice(),BigDecimal.ROUND_CEILING)
-               .multiply(new BigDecimal(100));
+        BigDecimal profitAndLose = positionProfitVO.getProfitAndLose();
+        BigDecimal orderTotalPrice = userPositionVO.getOrderTotalPrice();
+
+        BigDecimal ss = BigDecimal.ZERO;
+        if (orderTotalPrice.compareTo(BigDecimal.ZERO) == 0) {
+            // 如果分母为0,可以选择返回一个默认值,比如BigDecimal.ZERO
+            // 或者根据业务逻辑进行其他处理
+            ss = BigDecimal.ZERO;
+        } else {
+            ss = profitAndLose.divide(orderTotalPrice, BigDecimal.ROUND_CEILING)
+                    .multiply(new BigDecimal(100));
+        }
         userPositionVO.setProfitAndLoseParent(ss.setScale(2, BigDecimal.ROUND_DOWN)+"%");
         userPositionVO.setProfitAndLose(positionProfitVO.getProfitAndLose());
         userPositionVO.setAllProfitAndLose(positionProfitVO.getAllProfitAndLose());
         if(StringUtil.isEmpty(userPositionVO.getSellOrderId())){
-            userPositionVO.setNow_price(positionProfitVO.getNowPrice());
+            userPositionVO.setNow_price(nowPrice.toString());
         }else{
             userPositionVO.setNow_price(position.getSellOrderPrice().toString());
         }
@@ -70,7 +84,6 @@
     public static PositionProfitVO getPositionProfitVO(UserPosition position,BigDecimal nowPrice) {
         BigDecimal profitAndLose = new BigDecimal("0");
         BigDecimal allProfitAndLose = new BigDecimal("0");
-
         if (position.getSellOrderId() != null) {
 
             BigDecimal subPrice = position.getSellOrderPrice().subtract(position.getBuyOrderPrice());

--
Gitblit v1.9.3