From ddd4919fdd5c5dd4fc96eb99e590403cad58bbd7 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 03 六月 2023 02:03:18 +0800
Subject: [PATCH] 更新支付

---
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java |  165 +++++++++++++++++++++++++++++++++---------------------
 1 files changed, 101 insertions(+), 64 deletions(-)

diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
index 5e7ddfb..8535c55 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -1009,7 +1009,7 @@
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("优惠券收入");
-                driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount());
+                driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
                 accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
@@ -1077,10 +1077,27 @@
                 payMoney = payMoney - coupon.getCouponPreferentialAmount();
                 order.setCouponId(coupon.getId());
                 order.setDiscountedPrice(coupon.getCouponPreferentialAmount());
+
+                Driver driver = driverService.selectById(order.getDriverId());
+                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setUserType(2);
+                accountChangeDetail.setUserId(order.getDriverId());
+                accountChangeDetail.setCreateTime(new Date());
+                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setType(1);
+                accountChangeDetail.setChangeType(7);
+                accountChangeDetail.setOrderId(order.getId());
+                accountChangeDetail.setExplain("优惠券收入");
+                driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
+                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                driverService.updateById(driver);
+                accountChangeDetailService.insert(accountChangeDetail);
             }
         }
         order.setPayType(1);
         order.setPayMoney(payMoney);
+        order.setBalancePayment(payMoney > appUser.getAccountBalance() ? appUser.getAccountBalance() : payMoney);
 
         payMoney = payMoney > appUser.getAccountBalance() ? payMoney - appUser.getAccountBalance() : 0D;
 
@@ -1110,7 +1127,7 @@
             paymentOrder.setPayType("WX_MINI");
             paymentOrder.setTransferType("0");
             paymentOrder.setAsynSplitFlag("1");
-            paymentOrder.setAppid("");
+            paymentOrder.setAppid(appletsAppid);
             paymentOrder.setOpenid(appUser.getOpenid());
             paymentOrder.setTerminalIp(InetAddress.getLocalHost().getHostAddress());
             List<PaymentOrderGood> goodsDetail = new ArrayList<>();
@@ -1121,7 +1138,7 @@
             paymentOrder.setFrontUrl(callbackPath + "/base/order/orderPayCallback");
             paymentOrder.setNotifyUrl(callbackPath + "/base/order/orderPayCallback");
             paymentOrder.setParameter1(order.getId().toString());
-            paymentOrder.setParameter2(payMoney.toString());
+            paymentOrder.setParameter2(accountChangeDetail.getId().toString());
 
             TrhRequest<PaymentOrder> request = new TrhRequest();
             InterfaceResponse execute = request.execute(paymentOrder, PaymentOrder.SERVICE_CODE);
@@ -1176,7 +1193,7 @@
                                         Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData();
                                         AppUser appUser1 = appUserService.selectById(order1.getUserId());
                                         appUser1.setAccountBalance(appUser1.getAccountBalance() + m);
-                                        appUserService.updateById(appUser1)
+                                        appUserService.updateById(appUser1);
                                         accountChangeDetailService.deleteById(accountChangeDetail.getId());
                                         break;
                                     }
@@ -1191,17 +1208,17 @@
                     }
                 }).start();
             }
-
-
-
             return ResultUtil.success(payCode);
+        }else{
+            order.setPayType(2);
+            order.setPayMoney(payMoney);
+            order.setPayTime(new Date());
+            order.setState(108);
+            this.updateById(order);
 
-
+            //处理佣金和收入记录
+            saveCommission(order);
         }
-//        order.setPayTime(new Date());
-//        this.updateById(order);
-
-
         return ResultUtil.success();
 
     }
@@ -1384,11 +1401,11 @@
                                     }
                                     break;
                                 }else{
-                                    num1_ -= surplusDividedAmount;
                                     ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                     if(10000 == zhaunzhang.getCode()){
                                         rechargeRecord.setSurplusDividedAmount(0D);
                                         rechargeRecordService.updateById(rechargeRecord);
+                                        num1_ -= surplusDividedAmount;
                                     }else{
                                         break;
                                     }
@@ -1446,11 +1463,11 @@
                                             }
                                             break;
                                         }else{
-                                            num5_ -= surplusDividedAmount;
                                             ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                             if(10000 == zhaunzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
+                                                num5_ -= surplusDividedAmount;
                                             }else{
                                                 break;
                                             }
@@ -1497,11 +1514,11 @@
                                             }
                                             break;
                                         }else{
-                                            num6_ -= surplusDividedAmount;
                                             ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                             if(10000 == zhaunzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
+                                                num6_ -= surplusDividedAmount;
                                             }else{
                                                 break;
                                             }
@@ -1549,11 +1566,11 @@
                                             }
                                             break;
                                         }else{
-                                            num7_ -= surplusDividedAmount;
                                             ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver3.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                             if(10000 == zhaunzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
+                                                num7_ -= surplusDividedAmount;
                                             }else{
                                                 break;
                                             }
@@ -1603,11 +1620,11 @@
                                             }
                                             break;
                                         }else{
-                                            num3_1 -= surplusDividedAmount;
                                             ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                             if(10000 == zhaunzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
+                                                num3_1 -= surplusDividedAmount;
                                             }else{
                                                 break;
                                             }
@@ -1654,11 +1671,11 @@
                                             }
                                             break;
                                         }else{
-                                            num4_1 -= surplusDividedAmount;
                                             ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver2.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                             if(10000 == zhaunzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
+                                                num4_1 -= surplusDividedAmount;
                                             }else{
                                                 break;
                                             }
@@ -1708,11 +1725,11 @@
                                         }
                                         break;
                                     }else{
-                                        num2_1 -= surplusDividedAmount;
                                         ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver1.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                         if(10000 == zhaunzhang.getCode()){
                                             rechargeRecord.setSurplusDividedAmount(0D);
                                             rechargeRecordService.updateById(rechargeRecord);
+                                            num2_1 -= surplusDividedAmount;
                                         }else{
                                             break;
                                         }
@@ -1749,11 +1766,11 @@
                                 }
                                 break;
                             }else{
-                                num3_1 -= surplusDividedAmount;
                                 ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), agent.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                                 if(10000 == zhaunzhang.getCode()){
                                     rechargeRecord.setSurplusDividedAmount(0D);
                                     rechargeRecordService.updateById(rechargeRecord);
+                                    num3_1 -= surplusDividedAmount;
                                 }else{
                                     break;
                                 }
@@ -1783,9 +1800,8 @@
         accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
         accountChangeDetail.setExplain("订单收入");
         accountChangeDetail.setCreateTime(new Date());
-        driver.setCommission(driver.getCommission() + payMoney + order.getDiscountedPrice() + order.getDiscountAmount());
         if(null != order.getCouponId()){
-            driver.setCouponBalance(driver.getCouponBalance() + order.getDiscountedPrice());
+            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
             //补贴中分账
             Double discountedPrice = order.getDiscountedPrice();
             List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
@@ -1799,11 +1815,11 @@
                     }
                     break;
                 }else{
-                    discountedPrice -= surplusDividedAmount;
                     ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                     if(10000 == zhaunzhang.getCode()){
                         rechargeRecord.setSurplusDividedAmount(0D);
                         rechargeRecordService.updateById(rechargeRecord);
+                        discountedPrice -= surplusDividedAmount;
                     }else{
                         break;
                     }
@@ -1812,7 +1828,20 @@
 
         }
         if(null != order.getDiscountAmount() && 0 < order.getDiscountAmount()){
-            driver.setCouponBalance(driver.getCouponBalance() + order.getDiscountAmount());
+            accountChangeDetail = new AccountChangeDetail();
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setUserType(2);
+            accountChangeDetail.setUserId(order.getDriverId());
+            accountChangeDetail.setCreateTime(new Date());
+            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setType(1);
+            accountChangeDetail.setChangeType(7);
+            accountChangeDetail.setOrderId(order.getId());
+            accountChangeDetail.setExplain("折扣优惠收入");
+            driver.setCommission(driver.getCommission() + order.getDiscountAmount());
+            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+            driverService.updateById(driver);
+            accountChangeDetailService.insert(accountChangeDetail);
             //补贴中分账
             Double discountedPrice = order.getDiscountAmount();
             List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
@@ -1826,11 +1855,11 @@
                     }
                     break;
                 }else{
-                    discountedPrice -= surplusDividedAmount;
                     ResultUtil zhaunzhang = zhaunzhang(rechargeRecord.getId(), rechargeRecord.getOrderNumber(), driver.getMerchantNumber(), surplusDividedAmount, callbackPath + "/base/order/zhaunzhangCallback");
                     if(10000 == zhaunzhang.getCode()){
                         rechargeRecord.setSurplusDividedAmount(0D);
                         rechargeRecordService.updateById(rechargeRecord);
+                        discountedPrice -= surplusDividedAmount;
                     }else{
                         break;
                     }
@@ -1868,11 +1897,11 @@
                     }
                     break;
                 }else{
-                    payMoney -= surplusDividedAmount;
                     ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
                     if(10000 == fengzhang.getCode()){
                         rechargeRecord.setSurplusDividedAmount(0D);
                         rechargeRecordService.updateById(rechargeRecord);
+                        payMoney -= surplusDividedAmount;
                     }else{
                         break;
                     }
@@ -1897,11 +1926,11 @@
                         }
                         break;
                     }else{
-                        payMoney -= surplusDividedAmount;
                         ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
                         if(10000 == fengzhang.getCode()){
                             rechargeRecord.setSurplusDividedAmount(0D);
                             rechargeRecordService.updateById(rechargeRecord);
+                            payMoney -= surplusDividedAmount;
                         }else{
                             break;
                         }
@@ -1911,62 +1940,70 @@
         }
 
         if(order.getPayType() == 4){//微信+余额(使用用户的充值数据分账)
-            List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", order.getUserId())
-                    .eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
-            for (RechargeRecord rechargeRecord : rechargeRecords) {
-                Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
-                if(surplusDividedAmount.compareTo(payMoney) >= 0){
-                    //分账司机收入
-                    ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), payMoney, 1);
-                    if(10000 == fengzhang.getCode()){
-                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - payMoney);
-                        rechargeRecordService.updateById(rechargeRecord);
-                    }
-                    break;
-                }else{
-                    payMoney -= surplusDividedAmount;
-                    ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
-                    if(10000 == fengzhang.getCode()){
-                        rechargeRecord.setSurplusDividedAmount(0D);
-                        rechargeRecordService.updateById(rechargeRecord);
-                    }else{
-                        break;
-                    }
+            Double xj = order.getPayMoney() - order.getBalancePayment();
+            if(xj > 0){
+                //分账司机收入
+                fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), payMoney, 1);
+
+                if(payMoney.compareTo(order.getPayMoney()) < 0){//司机获取部分需将剩余的分给平台
+                    Double money = order.getPayMoney() - payMoney + order.getDiscountedPrice();
+                    fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1);
                 }
-            }
-
-
-
-            if(payMoney.compareTo(order.getPayMoney()) < 0){//司机获取部分需将剩余的分给平台
-                Double money = order.getPayMoney() - payMoney;
-
-                List<RechargeRecord> rechargeRecords1 = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", order.getUserId())
+            }else{
+                Double balancePayment = order.getBalancePayment();
+                List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", order.getUserId())
                         .eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
-                for (RechargeRecord rechargeRecord : rechargeRecords1) {
+                for (RechargeRecord rechargeRecord : rechargeRecords) {
                     Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
-                    if(surplusDividedAmount.compareTo(money) >= 0){
+                    if(surplusDividedAmount.compareTo(balancePayment) >= 0){
                         //分账司机收入
-                        ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1);
+                        ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), balancePayment, 1);
                         if(10000 == fengzhang.getCode()){
-                            rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money);
+                            rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - balancePayment);
                             rechargeRecordService.updateById(rechargeRecord);
                         }
                         break;
                     }else{
-                        payMoney -= surplusDividedAmount;
-                        ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
+                        ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
                         if(10000 == fengzhang.getCode()){
                             rechargeRecord.setSurplusDividedAmount(0D);
                             rechargeRecordService.updateById(rechargeRecord);
+                            balancePayment -= surplusDividedAmount;
                         }else{
                             break;
                         }
                     }
                 }
+
+                if(payMoney.compareTo(order.getPayMoney()) < 0){//司机获取部分需将剩余的分给平台
+                    Double money = order.getPayMoney() - payMoney;
+
+                    List<RechargeRecord> rechargeRecords1 = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", order.getUserId())
+                            .eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
+                    for (RechargeRecord rechargeRecord : rechargeRecords1) {
+                        Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
+                        if(surplusDividedAmount.compareTo(money) >= 0){
+                            //分账司机收入
+                            ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1);
+                            if(10000 == fengzhang.getCode()){
+                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money);
+                                rechargeRecordService.updateById(rechargeRecord);
+                            }
+                            break;
+                        }else{
+                            ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
+                            if(10000 == fengzhang.getCode()){
+                                rechargeRecord.setSurplusDividedAmount(0D);
+                                rechargeRecordService.updateById(rechargeRecord);
+                                payMoney -= surplusDividedAmount;
+                            }else{
+                                break;
+                            }
+                        }
+                    }
+                }
             }
         }
-
-
     }
 
 

--
Gitblit v1.7.1