From b879982d29cb2dbfe72482b46c8f6f2064d663a2 Mon Sep 17 00:00:00 2001
From: zhanglin8526 <852614290@qq.com>
Date: 星期六, 26 八月 2023 15:27:29 +0800
Subject: [PATCH] 支付调整

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java             |    8 ++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java          |    9 ++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java                      |    7 +++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java |   15 +++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java          |   31 ++++++++++++---
 5 files changed, 61 insertions(+), 9 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
index 93d22e0..9af071b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
@@ -8,6 +8,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 
+import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -59,6 +60,13 @@
      */
     @TableField("order_id")
     private String orderId;
+
+    /**
+     * 微信支付交易号
+     */
+    @TableField("out_trade_no")
+    private String outTradeNo;
+
     /**
      * 支付状态1发起支付2支付成功3支付失败4已关闭
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
index 177536d..3f2ea65 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
@@ -48,6 +48,13 @@
      */
     @TableField("order_no")
     private String orderNo;
+
+    /**
+     * 微信支付交易号
+     */
+    @TableField("out_trade_no")
+    private String outTradeNo;
+
     /**
      * 订单来源1.商城2.秒杀活动3.线下创建
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
index fbd9709..7a60bf4 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
@@ -28,7 +28,7 @@
      * @param goodsNames
      * @param prepayId
      */
-    void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime, String profitSharing, String openid, String goodsNames, String prepayId);
+    void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, String outTradeNo, BigDecimal payMoney, Date endTime, String profitSharing, String openid, String goodsNames, String prepayId);
 
     /**
      *
@@ -36,4 +36,11 @@
      * @return
      */
     OrderPayment getByOrderId(String orderId);
+
+    /**
+     *
+     * @param outTradeNo
+     * @param transactionId
+     */
+    void updatePaySuccess(String outTradeNo, String transactionId);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
index dcc4174..589996f 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.service.impl.account;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
@@ -24,7 +25,7 @@
 public class OrderPaymentServiceImpl extends ServiceImpl<OrderPaymentMapper, OrderPayment> implements OrderPaymentService {
 
     @Override
-    public void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime,
+    public void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, String outTradeNo, BigDecimal payMoney, Date endTime,
                                  String profitSharing, String openid, String goodsNames, String prepayId) {
         OrderPayment payment = new OrderPayment();
         payment.setPaymentId(IdUtils.simpleUUID());
@@ -34,6 +35,8 @@
         payment.setPayMoney(payMoney);
         payment.setTimeExpire(endTime);
         payment.setSubMchId(subMchId);
+        payment.setOutTradeNo(outTradeNo);
+        payment.setPayStatus(1);
         // 0 否 1、是
         payment.setProfitSharing("Y".equals(profitSharing) ? 1 : 0);
         payment.setUserOpenId(openid);
@@ -53,4 +56,14 @@
                 .last(" limit 1 ");
         return this.getOne(queryWrapper);
     }
+
+    @Override
+    public void updatePaySuccess(String outTradeNo, String transactionId) {
+        LambdaUpdateWrapper<OrderPayment> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(OrderPayment::getOutTradeNo, outTradeNo)
+                .set(OrderPayment::getPayStatus, 2)
+                .set(OrderPayment::getTransactionId, transactionId)
+                .set(OrderPayment::getBackTime, new Date());
+        this.update(updateWrapper);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 7b653eb..0971266 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -556,6 +556,7 @@
         BigDecimal orderPayMoney = new BigDecimal("0.00");
         // 创建订单ID和订单号
         String orderId = IdUtils.simpleUUID();
+
         String orderNo = CodeFactoryUtil.getShopOrderNo();
         OrderGoods orderGoods;
         String orderGoodsId;
@@ -753,8 +754,14 @@
         }
 
         if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+            String outTradeNo = IdUtils.simpleUUID();
+
+            // 保存订单 交易流水
+            order.setOutTradeNo(outTradeNo);
+            this.saveOrUpdate(order);
+
             // 小程序微信下单支付
-            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
+            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
                     orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
                     appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
         }
@@ -786,7 +793,7 @@
      * @param userId
      * @param shopId
      * @param goodsName
-     * @param orderNo
+     * @param outTradeNo
      * @param orderId
      * @param payMoney
      * @param openid
@@ -794,7 +801,7 @@
      * @param goodsNameList
      */
     public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
-                                 String goodsName, String orderNo,
+                                 String goodsName, String outTradeNo,
                                  String orderId, BigDecimal payMoney,
                                  String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){
         try {
@@ -815,7 +822,7 @@
             String description = goodsName + "-商品购买";
 
             request.setDescription(description);
-            request.setOutTradeNo(orderNo);
+            request.setOutTradeNo(outTradeNo);
             request.setNotifyUrl(config.getNotifyUrl());
             // 结算信息
             PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
@@ -866,9 +873,10 @@
             paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
 
             // 保存支付订单统一下单支付记录
-            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
+            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, outTradeNo, payMoney,
                     appPlaceOrderVo.getEndTime(), "Y", openid,
                     Joiner.on(";").join(goodsNameList), result.getPackageValue());
+
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
@@ -1144,6 +1152,13 @@
 
 
         if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+
+            String outTradeNo = IdUtils.simpleUUID();
+
+            // 保存订单 交易流水
+            order.setOutTradeNo(outTradeNo);
+            this.saveOrUpdate(order);
+
             // 小程序微信下单支付
             createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
                     orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
@@ -3852,6 +3867,7 @@
     @Override
     @Transactional
     public void payBack(PartnerTransactionsResult transaction) {
+
         // Order order = this.getById(orderId);
         // 更新订单状态 订单编号,就是 微信outTradeNo
         String orderNo = transaction.getOutTradeNo();
@@ -3977,8 +3993,9 @@
             request.setTransactionId(transaction.getTransactionId());
             profitsSharingService.applyProfitSharing(request);*/
         }
-        //生成支付记录
-        OrderPayment orderPayment = new OrderPayment();
+        //修改支付记录生成支付记录
+        orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId());
+
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
         payRecord.setOrderId(orderId);

--
Gitblit v1.7.1