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/service/impl/order/OrderServiceImpl.java |   49 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 39 insertions(+), 10 deletions(-)

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 6ff0f42..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(),
@@ -3660,6 +3675,7 @@
         List<MgtMapBigTotalVo> goodsRankList = orderMapper.listMerOrderTotalGoodsRank(merTotalDto);
         if (goodsRankList != null && goodsRankList.size() > 0) {
             goodsRankList = bigListRemoveNull(goodsRankList);
+            Collections.reverse(goodsRankList);
             orderGoodsRankVo.setGoodsRankList(goodsRankList);
         }
         return orderGoodsRankVo;
@@ -3685,6 +3701,7 @@
         List<MgtMapBigTotalVo> orderFromList = orderMapper.listMerOrderTotalOrderFrom(merTotalDto);
         if (orderFromList != null && orderFromList.size() > 0) {
             orderFromList = bigListRemoveNull(orderFromList);
+            Collections.reverse(orderFromList);
             merOrderFromRankVo.setOrderFromRankList(orderFromList);
         }
         return merOrderFromRankVo;
@@ -3850,9 +3867,12 @@
     @Override
     @Transactional
     public void payBack(PartnerTransactionsResult transaction) {
-        // 更新订单状态
-        String orderId = transaction.getOutTradeNo();
-        Order order = this.getById(orderId);
+
+        // Order order = this.getById(orderId);
+        // 更新订单状态 订单编号,就是 微信outTradeNo
+        String orderNo = transaction.getOutTradeNo();
+        Order order = this.getByOrderNo(orderNo);
+        String orderId = order.getOrderId();
         order.setOrderStatus(2);
         order.setPayTime(new Date());
         this.saveOrUpdate(order);
@@ -3973,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);
@@ -3984,6 +4005,14 @@
         payRecordService.save(payRecord);
     }
 
+    @Override
+    public Order getByOrderNo(String orderNo) {
+        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Order::getOrderNo, orderNo)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
+
     /**
      * @param orderId
      * @return void

--
Gitblit v1.7.1