Selaa lähdekoodia

调整商品为0时处理

yfh 10 tuntia sitten
vanhempi
commit
e2f8fc9d83

+ 37 - 56
fs-service/src/main/java/com/fs/erp/service/impl/WdtErpOrderServiceImpl.java

@@ -1201,39 +1201,16 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         erpWdtBusinessRequestParams.setShopNo(erpconfig.getErpWdShopCode());
         erpWdtBusinessRequestParams.setSwitchMode(0);
         ErpWdtTrade erpWdtTrade = new ErpWdtTrade();
-        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
-        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
-
-        // 平台状态
-        erpWdtTrade.setTradeStatus(TradeStatus.PAID_WAITING_FOR_SHIPMENT.getValue());
 
         // 订单id
         erpWdtTrade.setTid(order.getPlatform_code());
+        // 平台状态
+        erpWdtTrade.setTradeStatus(TradeStatus.REFUNDED.getValue());
 
-
-        // 如果是货到付款
-        if("2".equals(fsStoreOrder.getPayType())){
-            // 支付状态
-            erpWdtTrade.setPayStatus(PaymentStatus.PARTIALLY_PAID.getValue());
-            // 发货条件
-            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
-            // 货到付款金额 = 物流代收金额-优惠金额
-            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
-
-        } else if("3".equals(fsStoreOrder.getPayType())){
-            // 支付状态
-            erpWdtTrade.setPayStatus(PaymentStatus.UNPAID.getValue());
-            // 发货条件
-            erpWdtTrade.setDeliveryTerm(DeliveryTerm.CASH_ON_DELIVERY.getValue());
-            // 货到付款金额 = 物流代收金额-优惠金额
-            erpWdtTrade.setCodAmount(fsStoreOrder.getPayDelivery().subtract(couponPrice));
-        } else { // 如果是线上付款
-            // 支付状态
-            erpWdtTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
-            // 发货条件
-            erpWdtTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
-        }
-
+        // 支付状态
+        erpWdtTrade.setPayStatus(PaymentStatus.FULLY_PAID.getValue());
+        // 发货条件
+        erpWdtTrade.setDeliveryTerm(DeliveryTerm.PAYMENT_BEFORE_DELIVERY.getValue());
         // 下单时间
         erpWdtTrade.setTradeTime(order.getDeal_datetime());
         // 支付时间
@@ -1262,27 +1239,27 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         erpWdtTrade.setSellerMemo(order.getSeller_memo());
         erpWdtTrade.setWarehouseNo(order.getWarehouse_code());
 
+        // 已付金额
+        FsStoreOrderScrm fsStoreOrder = fsStoreOrderScrmService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
         // 运费金额
         erpWdtTrade.setPostAmount(fsStoreOrder.getFreightPrice());
-        // 已付金额
-        if(ObjectUtils.isNotNull(fsStoreOrder)){
-            erpWdtTrade.setPaid(fsStoreOrder.getPayMoney());
-        }
 
         List<FsStoreOrderItemVO> fsStoreOrderItemVOS = fsStoreOrderItemScrmService.selectFsStoreOrderItemListByOrderId(fsStoreOrder.getId());
         List<ErpWdtOrder> erpWdtOrderList = new ArrayList<>();
-        // 商品总价
-        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
 
-        // 总折扣金额 = 优惠券金额 + 折扣金额
-        BigDecimal totalDiscountPrice = BigDecimal.ZERO;
-        // 折扣金额
-        BigDecimal discountPrice = totalPrice.subtract(fsStoreOrder.getPayPrice());
-        totalDiscountPrice = couponPrice.add(discountPrice);
 
-        // 防止除零错误
-        if (totalPrice.compareTo(BigDecimal.ZERO) == 0) {
-            totalPrice = BigDecimal.ONE;
+        // 优惠券金额
+        BigDecimal couponPrice = fsStoreOrder.getCouponPrice();
+        if (fsStoreOrder.getCouponPrice().compareTo(BigDecimal.ZERO) == 0
+                && fsStoreOrder.getTotalPrice().compareTo(fsStoreOrder.getPayMoney()) > 0) {
+            couponPrice = fsStoreOrder.getTotalPrice().subtract(fsStoreOrder.getPayMoney());
+        }
+        // 商品总价
+        BigDecimal totalPrice = fsStoreOrder.getTotalPrice();
+        if(ObjectUtils.isNotNull(fsStoreOrder)&&!(totalPrice.compareTo(BigDecimal.ZERO) == 0)){
+            erpWdtTrade.setPaid(fsStoreOrder.getPayMoney());
+        }else {
+            erpWdtTrade.setPaid(totalPrice);
         }
 
         for (FsStoreOrderItemVO fsStoreOrderItem : fsStoreOrderItemVOS) {
@@ -1293,12 +1270,11 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             FsStoreProductScrm fsStoreProduct = fsStoreProductScrmService.selectFsStoreProductById(fsStoreOrderItem.getProductId());
             Asserts.check(ObjectUtils.isNotNull(fsStoreProduct),"该产品不存在! 产品id: {} ",fsStoreOrderItem.getProductId());
 
-            // 单价
-//            erpWdtOrder.setPrice(fsStoreProduct.getPrice());
             // 状态
-            erpWdtOrder.setStatus(TradeStatus.SHIPPED.getValue());
+
+            erpWdtOrder.setStatus(TradeStatus.REFUNDED.getValue());
             // 退款状态
-            erpWdtOrder.setRefundStatus(RefundStatus.NO_REFUND.getValue());
+            erpWdtOrder.setRefundStatus(RefundStatus.REFUND_SUCCESSFUL.getValue());
 
             // 平台货品ID
             erpWdtOrder.setGoodsId(String.valueOf(fsStoreProduct.getProductId()));
@@ -1306,8 +1282,6 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             erpWdtOrder.setSpecId(jsonObject.getString("sku"));
             erpWdtOrder.setGoodsNo(jsonObject.getString("barCode"));
             erpWdtOrder.setSpecNo(jsonObject.getString("sku"));
-            //由于商品改价 用item里面的单价
-            erpWdtOrder.setPrice(jsonObject.getBigDecimal("price"));
             // 货品名称
             erpWdtOrder.setGoodsName(fsStoreProduct.getProductName());
             // 调整
@@ -1317,8 +1291,17 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             // 分摊优惠
             // 分摊比例
             BigDecimal price = fsStoreProduct.getPrice().multiply(BigDecimal.valueOf(fsStoreOrderItem.getNum()));
-            BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
-            erpWdtOrder.setShareDiscount(divide.multiply(totalDiscountPrice));
+//            TODO 调整
+            if (totalPrice.compareTo(BigDecimal.ZERO) == 0){
+                erpWdtOrder.setShareDiscount(totalPrice);
+                // 单价
+                erpWdtOrder.setPrice(totalPrice);
+            }else {
+                BigDecimal divide = price.divide(totalPrice, RoundingMode.HALF_UP);
+                erpWdtOrder.setShareDiscount(divide.multiply(couponPrice));
+                // 单价
+                erpWdtOrder.setPrice(fsStoreProduct.getPrice());
+            }
 
             erpWdtOrderList.add(erpWdtOrder);
         }
@@ -1328,7 +1311,7 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
         long size = erpWdtOrderList.size();
         if(size > 1) {
             ErpWdtOrder erpWdtOrder = erpWdtOrderList.get(erpWdtOrderList.size() - 1);
-            erpWdtOrder.setShareDiscount(totalDiscountPrice.subtract(erpWdtOrderList.stream()
+            erpWdtOrder.setShareDiscount(couponPrice.subtract(erpWdtOrderList.stream()
                     .limit(size - 1L)
                     .map(item -> Optional.ofNullable(item.getShareDiscount()).orElse(BigDecimal.ZERO))
                     .reduce(BigDecimal.ZERO, BigDecimal::add)));
@@ -1347,17 +1330,15 @@ public class WdtErpOrderServiceImpl implements IErpOrderService {
             String response = client.execute("trade_push.php", map);
             ParserConfig config = new ParserConfig();
             config.propertyNamingStrategy = PropertyNamingStrategy.CamelCase;
+            log.info("Erp推送传参: {}", map);
             ErpWdtApiResponse erpWdtApiResponse = JSON.parseObject(response, ErpWdtApiResponse.class,config);
             if(ObjectUtil.equal(0,erpWdtApiResponse.getCode())){
                 log.info("订单推送成功: {}", response);
                 ErpOrderResponse erpOrderResponse = new ErpOrderResponse();
                 erpOrderResponse.setCode(order.getPlatform_code());
-                erpOrderResponse.setSuccess(true);
-                erpOrderResponse.setRequestRawData(JSON.toJSONString(map));
-                erpOrderResponse.setResponseRawData(response);
                 return erpOrderResponse;
             } else {
-                throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
+                // throw new RuntimeException(String.format("订单推送失败,原因: %s",erpWdtApiResponse.getMessage()));
             }
         } catch (IOException e) {
             e.printStackTrace();

+ 2 - 2
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -472,7 +472,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
         FsUserAddressScrm address = userAddressMapper.selectFsUserAddressByDefaultAddress(uid);
         List<FsStoreCartQueryVO> carts = cartMapper.selectFsStoreCartListByIds(cartParam.getCartIds());
         for (FsStoreCartQueryVO cart : carts) {
-            if (cart.getChangePrice() != null && BigDecimal.ZERO.compareTo(cart.getChangePrice()) < 0) {
+            if (cart.getChangePrice() != null && BigDecimal.ZERO.compareTo(cart.getChangePrice()) <= 0) {
                 cart.setPrice(cart.getChangePrice());
                 //删除改价
                 FsStoreCartScrm fsStoreCart = new FsStoreCartScrm();
@@ -2072,7 +2072,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
             }
 
         }
-        if(order.getPayType().equals(3)){
+        if(order.getPayType().equals(3)||order.getRefundPrice().compareTo(BigDecimal.ZERO)==0){
             //货到付款
         }
         else{