Ver código fonte

fix:“修复抵扣券仍为打折效果的问题”

soobin 1 ano atrás
pai
commit
ff8a19bbb3

+ 1 - 1
src/main/java/com/szwl/controller/AirwallexPayController.java

@@ -160,7 +160,7 @@ public class AirwallexPayController {
         Integer productNumber = paymentIntentRequestBody.getProductNumber();
 
         // 生成订单编号
-        String sn = tCoinOrderService.initSn(equipmentId);
+        String sn = tCoinOrderService.initSn(Long.parseLong(clientId.substring(clientId.length() - 6)));
 
         // 七云还是申泽
         TEquipment equipment = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(clientId));

+ 71 - 24
src/main/java/com/szwl/controller/TOrderController.java

@@ -208,17 +208,28 @@ public class TOrderController {
         // 计算折扣后的价格
         if(StringUtils.isNotEmpty(code)){
             BigDecimal discount = BigDecimal.valueOf(promoCode.getDiscount());
-            price = product.getRmbPrice().multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+            if (StringUtils.isNotEmpty(promoCode.getType()) && promoCode.getType().equals("1")) {
+                if (price.compareTo(discount) > 0) {
+                    // 如果 price 大于 discount,从 price 中减去 discount
+                    price = price.subtract(discount).setScale(2, RoundingMode.HALF_DOWN);
+                } else {
+                    // 如果 price 小于等于 discount,将 price 设置为 0
+                    price = BigDecimal.ZERO;
+                }
+            } else {
+                price = product.getRmbPrice().multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+            }
         }
         // 判断价格是否小于等于0
         if (BigDecimal.ZERO.compareTo(price) >= 0) {
             return JsonMessage.error("商品价格异常");
         }
         // 生成订单编号
-        String sn = orderService.initSn(equipmentId);
+        Long client6 = Long.parseLong(clientId.substring(clientId.length() - 6));
+        String sn = orderService.initSn(client6);
         // 获取关联设备的分销
         TProportion proportion = R.getDataIfSuccess(szwlFeign.getProportion(String.valueOf(equipmentId)));
-        if (proportion == null&&proportion.getId()==null) {
+        if (proportion == null || proportion.getId() == null) {
             return JsonMessage.error("设备商家未完成分销设置");
         }
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
@@ -324,7 +335,7 @@ public class TOrderController {
         orderDetails.setCompanyType(companyType);
         orderDetails.setMachineType(equipment.getMachineType());
 
-        String client6 = clientId.substring(clientId.length() - 6);
+//        String client6 = clientId.substring(clientId.length() - 6);
         String productName1 = productName + "-" + equipment.getName() + "-" + client6;
         String result = null;
         if(StringUtils.isNotEmpty(payPlatform)&&payPlatform.equals("1")){
@@ -482,15 +493,26 @@ public class TOrderController {
         }
         if(StringUtils.isNotEmpty(code)){
             BigDecimal discount = BigDecimal.valueOf(promoCode.getDiscount());
-            price = product.getRmbPrice().multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+            if (StringUtils.isNotEmpty(promoCode.getType()) && promoCode.getType().equals("1")) {
+                if (price.compareTo(discount) > 0) {
+                    // 如果 price 大于 discount,从 price 中减去 discount
+                    price = price.subtract(discount).setScale(2, RoundingMode.HALF_DOWN);
+                } else {
+                    // 如果 price 小于等于 discount,将 price 设置为 0
+                    price = BigDecimal.ZERO;
+                }
+            } else {
+                price = product.getRmbPrice().multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+            }
         }
         if (BigDecimal.ZERO.compareTo(price) >= 0) {
             return JsonMessage.error("商品价格异常");
         }
-        String sn = orderService.initSn(equipmentId);
+        Long client6 = Long.parseLong(clientId.substring(clientId.length() - 6));
+        String sn = orderService.initSn(client6);
         // 获取关联设备的分销
         TProportion proportion = R.getDataIfSuccess(szwlFeign.getProportion(String.valueOf(equipmentId)));
-        if (proportion == null&&proportion.getId()==null) {
+        if (proportion == null || proportion.getId() == null) {
             return JsonMessage.error("设备商家未完成分销设置");
         }
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
@@ -600,7 +622,7 @@ public class TOrderController {
         orderDetails.setCompanyType(companyType);
         orderDetails.setMachineType(equipment.getMachineType());
 
-        String client6 = clientId.substring(clientId.length() - 6);
+//        String client6 = clientId.substring(clientId.length() - 6);
         String productName1 = productName + "-" + equipment.getName() + "-" + client6;
         String result = null;
         if(StringUtils.isNotEmpty(payPlatform)&&payPlatform.equals("1")){
@@ -731,21 +753,32 @@ public class TOrderController {
             price = product.getRmbPrice();
             productId = product.getId();
             productNo = product.getNo();
-            if (BigDecimal.ZERO.compareTo(price) >= 0) {
-                return JsonMessage.error("商品价格异常");
-            }
         } else {
             price = new BigDecimal(pri);
         }
         if(StringUtils.isNotEmpty(code)){
             BigDecimal discount = BigDecimal.valueOf(promoCode.getDiscount());
-            price = price.multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+            if (StringUtils.isNotEmpty(promoCode.getType()) && promoCode.getType().equals("1")) {
+                if (price.compareTo(discount) > 0) {
+                    // 如果 price 大于 discount,从 price 中减去 discount
+                    price = price.subtract(discount).setScale(2, RoundingMode.HALF_DOWN);
+                } else {
+                    // 如果 price 小于等于 discount,将 price 设置为 0
+                    price = BigDecimal.ZERO;
+                }
+            } else {
+                price = price.multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+            }
         }
-        String sn1 = orderService.initSn(equipmentId);
-        String sn2 = orderService.initSn(equipmentId);
+        if (BigDecimal.ZERO.compareTo(price) >= 0) {
+            return JsonMessage.error("商品价格异常");
+        }
+        Long client6 = Long.parseLong(clientId.substring(clientId.length() - 6));
+        String sn1 = orderService.initSn(client6);
+        String sn2 = orderService.initSn(client6);
         // 获取关联设备的分销
         TProportion proportion = R.getDataIfSuccess(szwlFeign.getProportion(String.valueOf(equipmentId)));
-        if (proportion == null&&proportion.getId()==null) {
+        if (proportion == null || proportion.getId()==null) {
             return JsonMessage.error("设备商家未完成分销设置");
         }
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
@@ -897,7 +930,7 @@ public class TOrderController {
         orderDetails.setRefundStatus("0");
         orderDetails.setMachineType(equipment.getMachineType());
 
-        String client6 = clientId.substring(clientId.length() - 6);
+//        String client6 = clientId.substring(clientId.length() - 6);
         String productName1 = productName + "-" + equipment.getName() + "-" + client6;
         String result = null;
         if(StringUtils.isNotEmpty(payPlatform)&&payPlatform.equals("1")){
@@ -1086,7 +1119,19 @@ public class TOrderController {
                     int i;
                     for( i = 0;i<promoCodeList.size();i++){
                         BigDecimal discount = BigDecimal.valueOf(promoCodeList.get(i).getDiscount()).setScale(2, RoundingMode.HALF_DOWN);
-                        BigDecimal price1 = productPrice.multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+                        BigDecimal price1 = new BigDecimal(0.0);
+                        if (StringUtils.isNotEmpty(promoCodeList.get(i).getType()) && promoCodeList.get(i).getType().equals("1")) {
+                            if (productPrice.compareTo(discount) > 0) {
+                                // 如果 price 大于 discount,从 price 中减去 discount
+                                price1 = productPrice.subtract(discount).setScale(2, RoundingMode.HALF_DOWN);
+                            } else {
+                                // 如果 price 小于等于 discount,将 price 设置为 0
+                                price1 = BigDecimal.ZERO;
+                            }
+                        } else {
+                            price1 = productPrice.multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
+                        }
+//                        BigDecimal price1 = productPrice.multiply(discount).divide(new BigDecimal(10)).setScale(2, RoundingMode.HALF_DOWN);
                         price = price.add(price1);
                         onePrice = onePrice.add(price1);
                     }
@@ -1167,11 +1212,12 @@ public class TOrderController {
         if (BigDecimal.ZERO.compareTo(price) >= 0) {
             return JsonMessage.error("商品价格异常");
         }
-        String sn1 = orderService.initSn(equipmentId);
-        String sn2 = orderService.initSn(equipmentId);
+        Long client6 = Long.parseLong(clientId.substring(clientId.length() - 6));
+        String sn1 = orderService.initSn(client6);
+        String sn2 = orderService.initSn(client6);
         // 获取关联设备的分销
         TProportion proportion = R.getDataIfSuccess(szwlFeign.getProportion(String.valueOf(equipmentId)));
-        if (proportion == null&&proportion.getId()==null) {
+        if (proportion == null || proportion.getId()==null) {
             return JsonMessage.error("设备商家未完成分销设置");
         }
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
@@ -1323,7 +1369,7 @@ public class TOrderController {
         orderDetails.setRefundStatus("0");
         orderDetails.setMachineType(equipment.getMachineType());
 
-        String client6 = clientId.substring(clientId.length() - 6);
+//        String client6 = clientId.substring(clientId.length() - 6);
         String productName1 = "";
         if(productNumber > 1) {
             if(equipment.getMachineType() == null || equipment.getMachineType().equals("0")) {
@@ -1643,10 +1689,11 @@ public class TOrderController {
 
         Long equipmentId = equipment.getId();
         //查找商品
-        String sn1 = orderService.initSn(equipmentId);
+        Long client6 = Long.parseLong(clientId.substring(clientId.length() - 6));
+        String sn1 = orderService.initSn(client6);
         // 获取关联设备的分销
         TProportion proportion = R.getDataIfSuccess(szwlFeign.getProportion(String.valueOf(equipmentId)));
-        if (proportion == null&&proportion.getId()==null) {
+        if (proportion == null || proportion.getId()==null) {
             return JsonMessage.error("设备商家未完成分销设置");
         }
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
@@ -1816,7 +1863,7 @@ public class TOrderController {
         orderDetails.setRefundStatus("0");
         orderDetails.setMachineType(equipment.getMachineType());
 
-        String client6 = clientId.substring(clientId.length() - 6);
+//        String client6 = clientId.substring(clientId.length() - 6);
         String productName1 = "";
         if(productNumber > 1) {
             if(equipment.getMachineType() == null || equipment.getMachineType().equals("0")) {

+ 4 - 2
src/main/java/com/szwl/controller/TWeixinPayController.java

@@ -240,7 +240,8 @@ public class TWeixinPayController {
         if (BigDecimal.ZERO.compareTo(price) >= 0) {
             return JsonMessage.error("商品价格异常");
         }
-        String sn1 = orderService.initSn(equipmentId);
+        Long client6 = Long.parseLong(clientId.substring(clientId.length() - 6));
+        String sn1 = orderService.initSn(client6);
         //获取分销  关联设备
         TAdmin admin = R.getDataIfSuccess(szwlFeign.getAdmin(String.valueOf(equipment.getAdminId())));
         if (admin == null) {
@@ -367,7 +368,8 @@ public class TWeixinPayController {
         }
         amount.setCurrency("CNY");
         createRequest.setAmount(amount);
-        String refundNo = orderService.initSn(order.getEquipmentId());
+        Long client6 = Long.parseLong(order.getClientId().substring(order.getClientId().length() - 6));
+        String refundNo = orderService.initSn(client6);
         createRequest.setOutRefundNo(refundNo);
         createRequest.setNotifyUrl("https://app.sunzee.com.cn/PAY-SERVER/tWeixinPay/refundNotify");
 //        createRequest.setNotifyUrl("http://mianhuatang.gz2vip.91tunnel.com/tWeixinPay/refundNotify");