cloudroam
2024-09-27 15700b74778de49ba11745ca1dfd7bbf1356ba42
src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java
@@ -9,12 +9,14 @@
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;
import com.mzl.flower.mapper.payment.*;
import com.mzl.flower.mapper.system.UserWechatMapper;
import com.mzl.flower.service.BaseService;
import com.mzl.flower.service.coupon.CouponRecordService;
import com.mzl.flower.service.flower.FlowerService;
import com.mzl.flower.service.point.PointGoodsService;
import com.mzl.flower.utils.UUIDGenerator;
@@ -110,6 +112,12 @@
    @Autowired
    private PointGoodsService pointGoodsService;
    @Autowired
    private CouponRecordService couponRecordService;
    @Autowired
    private OrderService orderService;
    /**
     * 微信预支付
@@ -452,7 +460,11 @@
        //恢复积分商品兑换券
        revertPointGoodsRecord(order.getId());
        //TODO 恢复优惠券
        //恢复优惠券
        String memberCouponId = order.getMemberCouponId();
        if(StringUtils.isNotEmpty(memberCouponId)) {
            couponRecordService.cancelCouponUsage(order.getId());
        }
    }
    private void revertPointGoodsRecord(String orderId){
@@ -466,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())){
@@ -512,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());
@@ -534,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){