From c7d71811b66792f2f465340617c772add4b10c8f Mon Sep 17 00:00:00 2001 From: wangqx Date: Fri, 26 Sep 2025 15:25:57 +0800 Subject: [PATCH] =?UTF-8?q?[fix]=E4=BF=AE=E6=94=B9=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/app/AppPayController.java | 13 +++--- .../soopin/order/service/OrderService.java | 2 + .../order/service/impl/OrderServiceImpl.java | 41 +++++++++++++++++++ .../kit/params/impl/OrderCashier.java | 9 ++-- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/ruoyi-admin/src/main/java/org/dromara/app/AppPayController.java b/ruoyi-admin/src/main/java/org/dromara/app/AppPayController.java index 2ae82ac7a..d42394e2e 100644 --- a/ruoyi-admin/src/main/java/org/dromara/app/AppPayController.java +++ b/ruoyi-admin/src/main/java/org/dromara/app/AppPayController.java @@ -73,11 +73,14 @@ public class AppPayController { if (user == null) { return R.notLogin(); } - //先生成充值订单 - chargeBO.setMemberId(user.getUserId()); - chargeBO.setMethod(paymentMethodEnum.getCode()); - chargeBusiness.charge(chargeBO); - payParam.setSn(chargeBO.getCode()); + if(payParam.getOrderType().equals("RECHARGE")){ + //先生成充值订单 + chargeBO.setMemberId(user.getUserId()); + chargeBO.setMethod(paymentMethodEnum.getCode()); + chargeBusiness.charge(chargeBO); + payParam.setSn(chargeBO.getCode()); + } + return cashierSupport.payment(paymentMethodEnum, paymentClientEnum, request, response, payParam); } catch (ServiceException se) { log.info("支付异常", se); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java index 4a2b958ea..fc1115fb2 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/OrderService.java @@ -50,4 +50,6 @@ public interface OrderService extends IService { void sendMessage(Long orderId); + void paySuccess(String orderNo,String payNo,Integer payType); + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java index 3e138c396..cc252bb72 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/wzj/soopin/order/service/impl/OrderServiceImpl.java @@ -3,6 +3,7 @@ package com.wzj.soopin.order.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.RandomUtil; @@ -530,5 +531,45 @@ public class OrderServiceImpl extends ServiceImpl implements } } + + @Override + public void paySuccess(String orderNo,String payNo,Integer payType) { + // 根据订单编号查询订单信息 + Order order = getByNo(orderNo); + Assert.notNull(order, "订单不存在"); + // 生成订单核销码信息 + verificationCodeService.generateVerificationCode(order); + // 更新订单信息 + this.updateById(Order.builder() + .id(order.getId()) + .status(OrderStatusEnum.VERIFY.getValue()) + .paymentTime(LocalDateTime.now()) + .payType(payType) + .build()); + + //发出消息 + MqUtil.sendIMMessage(buildMQMessage(order)); + } + + private MQMessage buildMQMessage(Order order) { + Map params = new HashMap<>(); + params.put("orderID", order.getId()); + params.put("amount", order.getTotalAmount()); + + //取订单的第一个商品 + List orderItems = orderItemMapper.findByOrderId(order.getId()); + if (CollectionUtil.isNotEmpty(orderItems)) { + params.put("name", orderItems.get(0).getProductName()); + params.put("pic", orderItems.get(0).getPic()); + params.put("price", orderItems.get(0).getSalePrice()); + params.put("amount", orderItems.get(0).getQuantity()); + } + MQMessage mqMessage = new MQMessage(); + mqMessage.setTag(MessageActionEnum.ORDER_PAY.name()); + mqMessage.setMessageType(MQMessageType.IM.name()); + mqMessage.setToUserId(order.getMemberId()); + mqMessage.setData(params); + return mqMessage; + } } diff --git a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/kit/params/impl/OrderCashier.java b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/kit/params/impl/OrderCashier.java index a7a4529b0..b1e4dc130 100644 --- a/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/kit/params/impl/OrderCashier.java +++ b/ruoyi-modules/ruoyi-transaction/src/main/java/com/wzj/soopin/transaction/kit/params/impl/OrderCashier.java @@ -54,14 +54,14 @@ public class OrderCashier implements CashierExecute { Order order = orderService.getByNo(payParam.getSn()); // //如果订单已支付,则不能发器支付 - if (!order.getStatus().equals(OrderStatusEnum.UNPAID.name())) { + if (!order.getStatus().equals(OrderStatusEnum.UNPAID.getValue())) { throw new ServiceException(ResultCode.PAY_DOUBLE_ERROR); } //如果订单状态不是待付款,则抛出异常 if (!order.getStatus().equals(OrderStatusEnum.UNPAID.getValue())) { throw new ServiceException(ResultCode.PAY_BAN); } - cashierParam.setPrice(order.getPayAmount().longValue()); + cashierParam.setPrice(order.getTotalAmount().longValue()); // // try { // BaseSetting baseSetting = JSONUtil.toBean(settingService.get(SettingEnum.BASE_SETTING.name()).getSettingValue(), BaseSetting.class); @@ -92,9 +92,8 @@ public class OrderCashier implements CashierExecute { PayParam payParam = paymentSuccessParams.getPayParam(); if (payParam.getOrderType().equals(CashierEnum.ORDER.name())) { -// orderService.payOrder(payParam.getSn(), -// paymentSuccessParams.getPaymentMethod(), -// paymentSuccessParams.getReceivableNo()); + orderService.paySuccess(payParam.getSn(), + paymentSuccessParams.getReceivableNo(),paymentSuccessParams.getPaymentMethod()); log.info("订单{}支付成功,金额{},方式{}", payParam.getSn(), paymentSuccessParams.getPaymentMethod(), paymentSuccessParams.getReceivableNo());