Browse Source

day14
策略模式+工厂模式优化商品结算;声音结算优惠金额、优惠列表造成验签失败bug修复

it_lv 2 weeks ago
parent
commit
a424c6aa0e

+ 7 - 1
service/service-order/src/main/java/com/atguigu/tingshu/order/pattern/strategy/TrackTradeOrderStrategy.java

@@ -5,6 +5,7 @@ import com.atguigu.tingshu.album.AlbumFeignClient;
 import com.atguigu.tingshu.model.album.AlbumInfo;
 import com.atguigu.tingshu.model.album.TrackInfo;
 import com.atguigu.tingshu.order.pattern.AbstractTradeOrderStrategy;
+import com.atguigu.tingshu.vo.order.OrderDerateVo;
 import com.atguigu.tingshu.vo.order.OrderDetailVo;
 import com.atguigu.tingshu.vo.order.OrderInfoVo;
 import com.atguigu.tingshu.vo.order.TradeVo;
@@ -12,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -47,7 +49,7 @@ public class TrackTradeOrderStrategy extends AbstractTradeOrderStrategy {
         //4.3 计算相关价格 声音不支持折扣
         BigDecimal originalAmount = price.multiply(BigDecimal.valueOf(tradeVo.getTrackCount()));
         BigDecimal orderAmount = originalAmount;
-
+        BigDecimal derateAmount = new BigDecimal("0.00");
         //4.4 封装订单明细列表
         List<OrderDetailVo> orderDetailVoList = waitBuyTrackList
                 .stream()
@@ -59,11 +61,15 @@ public class TrackTradeOrderStrategy extends AbstractTradeOrderStrategy {
                     orderDetailVo.setItemPrice(price);
                     return orderDetailVo;
                 }).collect(Collectors.toList());
+        //4.5 即使声音无优惠,也要封装一个订单优惠列表 否则验签会失败
+        List<OrderDerateVo> orderDerateVoList = new ArrayList<>();
 
         orderInfoVo.setOriginalAmount(originalAmount);
         orderInfoVo.setOrderAmount(orderAmount);
+        orderInfoVo.setDerateAmount(derateAmount);
         //5.2 为商品列表赋值
         orderInfoVo.setOrderDetailVoList(orderDetailVoList);
+        orderInfoVo.setOrderDerateVoList(orderDerateVoList);
 
         //5.3 为订单VO其他杂项赋值:购买商品类别
         orderInfoVo.setItemType(tradeVo.getItemType());

+ 3 - 3
service/service-order/src/main/java/com/atguigu/tingshu/order/service/impl/OrderInfoServiceImpl.java

@@ -329,9 +329,9 @@ public class OrderInfoServiceImpl extends ServiceImpl<OrderInfoMapper, OrderInfo
             }
 
             //模拟异常
-            if (orderInfo.getId() % 2 == 0) {
-                int i = 1 / 0;
-            }
+            //if (orderInfo.getId() % 2 == 0) {
+            //    int i = 1 / 0;
+            //}
         }
         if (ORDER_PAY_WAY_WEIXIN.equals(payWay)) {
             //5. TODO 处理付款方式为:微信支付 采用延迟消息进行延迟关单