Kaynağa Gözat

update: 修改订单预览、提交订单相关

Ben 11 ay önce
ebeveyn
işleme
f66ed92faf

+ 1 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/convert/order/TradeOrderConvert.java

@@ -61,6 +61,7 @@ public interface TradeOrderConvert {
             @Mapping(source = "createReqVO.couponId", target = "couponId"),
             @Mapping(target = "remark", ignore = true),
             @Mapping(source = "createReqVO.remark", target = "userRemark"),
+            @Mapping(source = "calculateRespBO.shopId", target = "shopId"),
             @Mapping(source = "calculateRespBO.price.totalPrice", target = "totalPrice"),
             @Mapping(source = "calculateRespBO.price.discountPrice", target = "discountPrice"),
             @Mapping(source = "calculateRespBO.price.deliveryPrice", target = "deliveryPrice"),

+ 11 - 8
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -56,9 +56,7 @@ import cn.newfeifan.mall.module.trade.service.price.TradePriceService;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateReqBO;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateRespBO;
 import cn.newfeifan.mall.module.trade.service.price.calculator.TradePriceCalculatorHelper;
-import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.extern.slf4j.Slf4j;
-import org.ehcache.shadow.org.terracotta.offheapstore.HashingMap;
 import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -375,7 +373,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         }
 
 
-        payPoints = 4;//为了测试方便,临时写死
+        payPoints = 3;//为了测试方便,临时写死
 
         //计算订单含积分的各项商品价格
         TradePriceCalculateRespBO tradePriceCalculateRespBO = calculatePriceWithPoints(userId, createReqVO);
@@ -393,7 +391,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
             itemPayPointsMap.put(orderItem.getSkuId(),orderItem);
         }
 
-        Integer allShopPainRMB = 0;//所有店铺订单实际支付的金额
+        Integer allShopPayRMB = 0;//所有店铺订单实际支付的金额
 
         List<Map<String,Object>> orderMapList = new ArrayList<Map<String,Object>>();
 
@@ -435,7 +433,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
                 Long skuId = orderItem.getSkuId();
                 TradePriceCalculateRespBO.OrderItem orderItemTmp = itemPayPointsMap.get(skuId);
                 orderItem.setPayPoints(orderItemTmp.getPayPoints()); //本商品使用积分
-                Integer payRmb = orderItem.getPrice()-orderItemTmp.getPayPoints();//本商品实付人民币
+                Integer payRmb = orderItem.getPrice()*orderItem.getCount()-orderItemTmp.getPayPoints();//本商品实付人民币
                 orderItem.setPayRmb(payRmb);//本商品实付人民币
                 orderItem.setPayPrice(payRmb);//本商品实付人民币
 
@@ -443,7 +441,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
                 shopPayPrice += payRmb;//一间店铺订单总支付价格
             }
 
-            allShopPainRMB+=shopPayPrice;
+            shopPayPrice+=order.getDeliveryPrice();//店铺支付总金额,加上运费
+
+            allShopPayRMB +=shopPayPrice;
 
             Long merchantId = shopMerchantMap.get(shopId);//商户ID
 
@@ -473,8 +473,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         List<TradeOrderItemDO> firstOrderItems = (List<TradeOrderItemDO>)(orderMapList.get(0).get("orderItems"));
 
         BeanUtils.copyProperties(firstOrder, virtualOrder);
-        virtualOrder.setPayPrice(allShopPainRMB);
-        virtualOrder.setPayRmb(allShopPainRMB);
+        virtualOrder.setPayPrice(allShopPayRMB);
+        virtualOrder.setPayRmb(allShopPayRMB);
         virtualOrder.setId(0l);//为了让payOrder中的tradeOrderId为0;
 
         // 3. 生成预支付:生成支付订单记录
@@ -555,6 +555,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
         // 创建支付单,用于后续的支付
         PayOrderCreateReqDTO payOrderCreateReqDTO = TradeOrderConvert.INSTANCE.convert(
                 order, orderItems, tradeOrderProperties);
+
+        payOrderCreateReqDTO.setPrice(order.getPayRmb());//同步订单价格
+
         Long payOrderId = payOrderApi.createOrder(payOrderCreateReqDTO);
 
         // update By Ben  因为订单与支付订单表的关系已经变成多对一了,所以把下面为订单表设置支付订单ID要移到外面做。

+ 12 - 3
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/price/calculator/TradePriceCalculatorHelper.java

@@ -212,8 +212,17 @@ public class TradePriceCalculatorHelper {
      * @return 分摊金额数组,和传入的 orderItems 一一对应
      */
     public static List<Integer> dividePrice(List<TradePriceCalculateRespBO.OrderItem> orderItems, Integer price) {
-        Integer total = calculateTotalPayPrice(orderItems);
-        assert total != null;
+
+        // 注释by Ben 系统原来这个计算总价的,计出来不对,不知为何,所以自己计算算了
+//        Integer total = calculateTotalPayPrice(orderItems);
+
+        Integer total = 0;//商品支付总金额
+        for(TradePriceCalculateRespBO.OrderItem item:orderItems){
+            Integer itemPrice = item.getPrice()*item.getCount();
+            total+=itemPrice;
+        }
+
+//        assert total != null;
         // 遍历每一个,进行分摊
         List<Integer> prices = new ArrayList<>(orderItems.size());
         int remainPrice = price;
@@ -227,7 +236,7 @@ public class TradePriceCalculatorHelper {
             // 2. 如果选中,则按照百分比,进行分摊
             int partPrice;
             if (i < orderItems.size() - 1) { // 减一的原因,是因为拆分时,如果按照比例,可能会出现.所以最后一个,使用反减
-                partPrice = (int) (price * (1.0D * orderItem.getPayPrice() / total));
+                partPrice = (int) (price * (1.0D * (orderItem.getPrice()*orderItem.getCount())/ total));
                 remainPrice -= partPrice;
             } else {
                 partPrice = remainPrice;