Browse Source

fix[litemall-wx]: 大额优惠券导致订单费用为负

Junling Bu 6 years ago
parent
commit
a0fc7d0630

+ 1 - 1
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java

@@ -318,7 +318,7 @@ public class WxOrderService {
         BigDecimal integralPrice = new BigDecimal(0.00);
 
         // 订单费用
-        BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice);
+        BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice).max(new BigDecimal(0.00));
         // 最终支付费用
         BigDecimal actualPrice = orderTotalPrice.subtract(integralPrice);
 

+ 2 - 1
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java

@@ -495,7 +495,8 @@ public class WxCartController {
         BigDecimal integralPrice = new BigDecimal(0.00);
 
         // 订单费用
-        BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice);
+        BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice).max(new BigDecimal(0.00));
+
         BigDecimal actualPrice = orderTotalPrice.subtract(integralPrice);
 
         Map<String, Object> data = new HashMap<>();

+ 22 - 0
litemall-wx-api/src/test/java/org/linlinjava/litemall/wx/BigDecimalTest.java

@@ -0,0 +1,22 @@
+package org.linlinjava.litemall.wx;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import java.math.BigDecimal;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+public class BigDecimalTest {
+
+    @Test
+    public void test() {
+        BigDecimal a = new BigDecimal(0);
+        BigDecimal b = new BigDecimal(1);
+        BigDecimal c = a.subtract(b);
+        BigDecimal d = c.max(new BigDecimal(0));
+
+        System.out.println(c);
+        System.out.println(d);
+    }
+}