From 34a5c00c80235213fca81689636c79fbad47a5fe Mon Sep 17 00:00:00 2001 From: gongzuming <gongzuming> Date: 星期五, 11 十月 2024 09:24:26 +0800 Subject: [PATCH] 支付优化 --- src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java | 44 ++++++++++++++++++++++++++++++++++---------- 1 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java b/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java index d77abfb..5461255 100644 --- a/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java +++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java @@ -9,6 +9,7 @@ import com.mzl.flower.dto.request.payment.TransferDetailReqDTO; import com.mzl.flower.dto.request.payment.TransferReqDTO; import com.mzl.flower.dto.request.payment.UserPaymentDTO; +import com.mzl.flower.entity.flower.Flower; import com.mzl.flower.entity.payment.*; import com.mzl.flower.entity.system.UserWechat; import com.mzl.flower.mapper.flower.FlowerMapper; @@ -114,6 +115,9 @@ @Autowired private CouponRecordService couponRecordService; + + @Autowired + private OrderService orderService; /** * 微信预支付 @@ -457,7 +461,10 @@ revertPointGoodsRecord(order.getId()); //恢复优惠券 - couponRecordService.cancelCouponUsage(order.getId()); + String memberCouponId = order.getMemberCouponId(); + if(StringUtils.isNotEmpty(memberCouponId)) { + couponRecordService.cancelCouponUsage(order.getId()); + } } private void revertPointGoodsRecord(String orderId){ @@ -471,6 +478,22 @@ } public Map payAgain(String orderId){ + // 获取订单里面的商品是否有限购的,如果有则判断是否已经超过限购数量 + List<OrderItem> orderItemList = orderItemMapper.selectList(new QueryWrapper<OrderItem>() + .eq("order_id", orderId)); + + orderItemList.forEach(orderItem -> { + // 限购数量 鲜花数量校验 + Integer completeNumToday=orderService.getFlowerCompleteNumToday(orderItem.getCreateBy(),orderItem.getFlowerId()); + Integer tmp=completeNumToday+orderItem.getNum(); + Flower flower=flowerMapper.selectById(orderItem.getFlowerId()); + if(null!=flower.getLimited() && tmp.compareTo(flower.getLimited())>0){ + throw new ValidationException("商品:'"+flower.getName()+"' 昨天17:00到今天17:00 超过限售数量:"+flower.getLimited()+"!"); + } + + }); + + UserPayment up = userPaymentMapper.selectOne( new QueryWrapper<UserPayment>().eq("order_id", orderId)); if(StringUtils.isNotEmpty(up.getStatus())){ @@ -517,15 +540,6 @@ request.setTransactionId(o.getPaymentTrId()); request.setNotifyUrl(PyamentV3Configurer.notify_url_refund); - AmountReq amount = new AmountReq(); - int oa = prepareAmount(o.getPaymentAmount()); - amount.setTotal((long)oa); - amount.setRefund((long)oa); - amount.setCurrency("CNY"); - request.setAmount(amount); - // 调用接口 - refundService.create(request); - o.setRefundAmount(o.getPaymentAmount()); o.setRefundNo(request.getOutRefundNo()); o.setRefundTime(LocalDateTime.now()); @@ -539,6 +553,16 @@ deliveryOrderService.refundDelete(orderId); releasePrepayLock(o); + + //最后调用微信退款接口,防止回滚 + AmountReq amount = new AmountReq(); + int oa = prepareAmount(o.getPaymentAmount()); + amount.setTotal((long)oa); + amount.setRefund((long)oa); + amount.setCurrency("CNY"); + request.setAmount(amount); + // 调用接口 + refundService.create(request); } public String refundOrderSub(Order o, BigDecimal refundAmount){ -- Gitblit v1.9.3