Cui Zhi Feng
2024-09-01 bd3c29a8710d46dc1c2465e64521044d0f1cd356
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,11 +474,25 @@
        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 使用积分商品兑换券
    }
    /**
@@ -841,6 +863,9 @@
        boolean couldCheckRefund = StringUtils.isEmpty(transferId) && count == 0 && cc == 0;
        dto.setCouldCheckRefund(couldCheckRefund);
        List<OrderPointGoodsListDTO> pointGoodsList = orderMapper.getPointGoodsList(id);
        dto.setPointGoodsList(pointGoodsList);
        return dto;
    }