Browse Source

【BUG】解决会员计算时,金额太大int类型装不下的问题

痴货 7 tháng trước cách đây
mục cha
commit
2bca9ef490

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/bo/TradePriceCalculateRespBO.java

@@ -72,7 +72,7 @@ public class TradePriceCalculateRespBO {
     /**
      * 是否包邮
      */
-    private Boolean freeDelivery;
+    private Boolean freeDelivery = false;
 
     /**
      * 赠送的优惠劵

+ 4 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeDiscountActivityPriceCalculator.java

@@ -18,6 +18,8 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
 
 import jakarta.annotation.Resource;
+
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -171,7 +173,8 @@ public class TradeDiscountActivityPriceCalculator implements TradePriceCalculato
         if (discountPercent == null) {
             return 0;
         }
-        Integer newPrice = price * discountPercent / 100;
+        BigDecimal divide = new BigDecimal(price).multiply(new BigDecimal(discountPercent)).divide(new BigDecimal(100));
+        Integer newPrice =  divide.intValue();
         return price - newPrice;
     }