From aab9711ea4512f013fd28478b3cc59757190edbb Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <cuizf@fengyuntec.com>
Date: 星期日, 01 九月 2024 09:53:19 +0800
Subject: [PATCH] 处理积分商品兑换券

---
 src/main/java/com/mzl/flower/service/payment/OrderService.java |   32 +++++++++++++++++++++++++++-----
 1 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 95bc18a..430198b 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -133,6 +133,9 @@
     @Autowired
     private OrderItemCheckMapper orderItemCheckMapper;
 
+    @Autowired
+    private OrderPointGoodsMapper pointGoodsMapper;
+
     public void changeFlower2Cart(CartSaveDTO dto) {
         String userId = SecurityUtils.getUserId();
         Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
@@ -361,7 +364,8 @@
         }
 
         Address address = addressMapper.selectById(dto.getAddressId());
-        List<TransportOrderDTO> tLs = transportService.getPreOrderTransportList(address, p.getTotalWeight(), dto.getTransportId());
+        List<TransportOrderDTO> tLs = transportService.getPreOrderTransportList(address
+                , p.getTotalWeight(), dto.getTransportId());
         BigDecimal transportFee = new BigDecimal(0);
         String deliveryName = "";
         if (tLs != null && tLs.size() > 0) {
@@ -373,6 +377,10 @@
         String userId = SecurityUtils.getUserId();
         Order order = new Order();
         order.setId(UUIDGenerator.getUUID());
+
+        final List<Long> goodsRecordIdList = dto.getGoodsRecordIdList();
+        usePointGoods(order.getId(), goodsRecordIdList);//使用积分商品兑换券
+
         order.create(userId);
         order.setRemarks(dto.getRemarks());
         order.setSpecialNeeds(dto.getSpecialNeeds());
@@ -421,7 +429,8 @@
         //商品列表处理
         List<FlowerCartListDTO> flowers = p.getFlowers();
         Map<Long, List<ParamItemDTO>> paramMap = new HashMap<>();
-        BigDecimal flowerAmount = order.getFlowerAmount();//订单商品总价
+        final BigDecimal flowerAmount = order.getFlowerAmount();//订单商品总价
+        final BigDecimal memberCouponAmount = order.getMemberCouponAmount();//使用优惠券面值
         for (FlowerCartListDTO f : flowers) {
             OrderItem t = new OrderItem();
             t.setId(UUIDGenerator.getUUID());
@@ -451,8 +460,7 @@
             t.setTotal(f.getTotalMember());//使用会员总价
 
             t.setOriginalPrice(pp.getPrice());//非会员售价
-            BigDecimal couponAmount = calculateCoupon(order.getMemberCouponAmount()
-                    , t.getTotal(), order.getFlowerAmount(), t.getNum());
+            BigDecimal couponAmount = calculateCoupon(memberCouponAmount, t.getTotal(), flowerAmount, t.getNum());
             t.setCouponAmount(couponAmount);//每扎平摊的优惠券面值
             t.setRealPrice(t.getPrice().subtract(couponAmount));//退款时使用的真实成交价
 
@@ -466,13 +474,27 @@
         order.setPayOpenid(openId);
         orderMapper.insert(order);
 
-        //TODO 处理积分商品兑换券
+        //处理积分商品兑换券
+        if(goodsRecordIdList != null && goodsRecordIdList.size() > 0){
+            for(Long goodsRecordId : goodsRecordIdList){
+                OrderPointGoods g = new OrderPointGoods();
+                g.setId(UUIDGenerator.getUUID());
+                g.setOrderId(order.getId());
+                g.setGoodsRecordId(goodsRecordId);
+                g.create(userId);
+                pointGoodsMapper.insert(g);
+            }
+        }
 
         Map map = paymentV3Service.wxPrepay(order);
         map.put("_testV2OrderId", order.getId());
         return map;
     }
 
+    private void usePointGoods(String orderId, List<Long> goodsRecordIdList){
+        //TODO 使用积分商品兑换券
+    }
+
     /**
      * 计算订单中每种商品每扎平摊的优惠券面值,保留2位小数
      *

--
Gitblit v1.9.3