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/api/OrderController.java                  |   54 +++++++------
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java                   |    7 +
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java |  165 +++++++++++++++++++++++++----------------
 3 files changed, 137 insertions(+), 89 deletions(-)

diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
index 4fcd34e..d440b13 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java
@@ -57,6 +57,9 @@
     @Autowired
     private IRechargeRecordService rechargeRecordService;
 
+    @Autowired
+    private IAccountChangeDetailService accountChangeDetailService;
+
 
 
 
@@ -351,34 +354,37 @@
      */
     @ResponseBody
     @PostMapping("/base/order/orderPayCallback")
-    public void orderPayCallback(HttpServletRequest request, HttpServletResponse response){
+    public void orderPayCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
         try {
-            String code = request.getParameter("code");
-            String version = request.getParameter("version");
-            String msg = request.getParameter("msg");
-            String date = request.getParameter("date");
-            String result = request.getParameter("result");
-            String sign = request.getParameter("sign");
-            InterfaceResponse interfaceResponse = new InterfaceResponse();
-            interfaceResponse.setCode(code);
-            interfaceResponse.setVersion(version);
-            interfaceResponse.setMsg(msg);
-            interfaceResponse.setDate(date);
-            interfaceResponse.setResult(result);
-            interfaceResponse.setSign(sign);
             // 验签
             boolean verify = RSASignature.validate(interfaceResponse.content(), interfaceResponse.getSign());
             if (verify) {//验签成功业务处理逻辑
-                JSONObject jsonObject = JSON.parseObject(result);
-                String merOrderId = jsonObject.getString("merOrderId");
-                String orderId = jsonObject.getString("parameter1");
-                ResultUtil resultUtil = orderService.orderPayCallback(orderId, merOrderId);
-                if(resultUtil.getCode() == 10000){
-                    response.setStatus(200);
-                    PrintWriter out = response.getWriter();
-                    out.print("OK");
-                    out.flush();
-                    out.close();
+                if("0000".equals(interfaceResponse.getCode())){
+                    JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult());
+                    Integer status = jsonObject.getInteger("status");
+                    String orderId = jsonObject.getString("parameter1");
+                    String parameter2 = jsonObject.getString("parameter2");
+                    if(2 == status){
+                        Order order = orderService.selectById(orderId);
+                        AccountChangeDetail accountChangeDetail = accountChangeDetailService.selectById(parameter2);
+                        Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData();
+                        AppUser appUser1 = appUserService.selectById(order.getUserId());
+                        appUser1.setAccountBalance(appUser1.getAccountBalance() + m);
+                        appUserService.updateById(appUser1);
+                        accountChangeDetailService.deleteById(accountChangeDetail.getId());
+                        System.err.println("支付失败");
+                    }
+                    if(1 == status){
+                        String merOrderId = jsonObject.getString("merOrderId");
+                        ResultUtil resultUtil = orderService.orderPayCallback(orderId, merOrderId);
+                        if(resultUtil.getCode() == 10000){
+                            response.setStatus(200);
+                            PrintWriter out = response.getWriter();
+                            out.print("OK");
+                            out.flush();
+                            out.close();
+                        }
+                    }
                 }
             } else {//验签失败业务处理逻辑
                 System.err.println("支付回调验签失败");
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java
index 4aa6a66..56f7a1c 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Order.java
@@ -258,7 +258,7 @@
     @TableField("discount")
     private Double discount;
     /**
-     * 支付类型(1=微信支付,2=余额支付,3=线下支付)
+     * 支付类型(1=微信支付,2=余额支付,3=线下支付,4=微信+余额)
      */
     @TableField("payType")
     private Integer payType;
@@ -268,6 +268,11 @@
     @TableField("payTime")
     private Date payTime;
     /**
+     * 账户余额支付金额
+     */
+    @TableField("balancePayment")
+    private Double balancePayment;
+    /**
      * 第三方支付流水号
      */
     @TableField("orderNo")
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