From 84620b593b9034bb28ba23c730392991cdf37a8b Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 03 七月 2023 18:05:38 +0800
Subject: [PATCH] 修改bug

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java                        |    2 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java               |  179 +++++++-----
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java |   20 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java      |  142 +++++----
 driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java                                        |   53 +++
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java              |   36 +-
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java                           |    5 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java                 |   18 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java                      |   32 +-
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java                         |   23 +
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java               |   23 +
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java                                    |   18 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java       |    8 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java                                |    4 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java        |    2 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java                   |  244 +++++++++--------
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java                                    |    4 
 17 files changed, 474 insertions(+), 339 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java
index a022ae5..6ab5c2d 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java
@@ -9,9 +9,7 @@
 import com.supersavedriving.driver.modular.system.model.JoiningRequirements;
 import com.supersavedriving.driver.modular.system.service.*;
 import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
-import com.supersavedriving.driver.modular.system.util.MallBook.model.Register;
 import com.supersavedriving.driver.modular.system.util.MallBook.util.RSASignature;
-import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
 import com.supersavedriving.driver.modular.system.util.PayMoneyUtil;
 import com.supersavedriving.driver.modular.system.util.huawei.OBSUtil;
 import com.supersavedriving.driver.modular.system.util.huawei.SMSUtil;
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
index ee7f73e..18c2ef5 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
@@ -35,6 +35,8 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -589,18 +591,31 @@
                     }
                     String merOrderId = jsonObject.getString("merOrderId");
                     String divisionRecordId = jsonObject.getString("parameter1");
+                    DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
+                    if(divisionRecord.getState() == 2){
+                        response.setStatus(200);
+                        PrintWriter out = response.getWriter();
+                        out.print("OK");
+                        out.flush();
+                        out.close();
+                        return;
+                    }
+                    divisionRecord.setMerOrderId(merOrderId);
+                    divisionRecord.setPayTime(new Date());
+                    divisionRecord.setState(2);
+                    divisionRecordService.updateById(divisionRecord);
+
                     //确认收货
                     new Timer().schedule(new TimerTask() {
                         @Override
                         public void run() {
-                            DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
                             Receive receive = new Receive();//确认收货
                             receive.setOriginalMerOrderId(merOrderId);
-                            receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+                            receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                             List<ReceiveUser> splitList = new ArrayList<>();
                             ReceiveUser receiveUser = new ReceiveUser();
                             receiveUser.setSplitUserId(divisionRecord.getMerchantNumber());
-                            receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+                            receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                             splitList.add(receiveUser);
                             receive.setSplitList(splitList);
                             TrhRequest<Receive> request1 = new TrhRequest();
@@ -617,7 +632,7 @@
                                 logger.warn("确认收货处理中");
                             }
                         }
-                    }, 15000);
+                    }, 60000);
                     response.setStatus(200);
                     PrintWriter out = response.getWriter();
                     out.print("OK");
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java
index 5b2ada5..0974101 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/model/Coupon.java
@@ -86,10 +86,10 @@
      * 优惠券数量
      */
     @TableField("coupon_count")
-    private Integer couponCount;
+    private Long couponCount;
     /**
      * 剩余数量
      */
     @TableField("remaining_quantity")
-    private Integer remainingQuantity;
+    private Long remainingQuantity;
 }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
index 2fb82ef..41c7c86 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -19,6 +19,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 
@@ -138,14 +140,14 @@
                 driver.setBackgroundBalance(0D);
             }else if(backgroundBalance >= d){
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(driver.getId());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(8);
-                accountChangeDetail.setOldData(all);
+                accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 driver.setBackgroundBalance(driver.getBackgroundBalance() - d);
-                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
+                accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 accountChangeDetail.setExplain("收取保险费");
                 accountChangeDetail.setCreateTime(new Date());
                 this.insert(accountChangeDetail);
@@ -154,14 +156,14 @@
             if(d > 0){
                 if(balance > 0 && balance >= d){
                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                     accountChangeDetail.setUserType(2);
                     accountChangeDetail.setUserId(driver.getId());
                     accountChangeDetail.setType(1);
                     accountChangeDetail.setChangeType(8);
-                    accountChangeDetail.setOldData(all);
-                    driver.setBalance(driver.getBalance() - d);
-                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
+                    accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                    driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                    accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                     accountChangeDetail.setExplain("收取保险费");
                     accountChangeDetail.setCreateTime(new Date());
                     this.insert(accountChangeDetail);
@@ -172,7 +174,7 @@
                         if(surplusDividedAmount.compareTo(d) >= 0){
                             ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", null, rechargeRecord.getId(), rechargeRecord.getOrderNumber(), d, 1);
                             if(fengzhang.getCode() == 10000){
-                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - d);
+                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                 rechargeRecordService.updateById(rechargeRecord);
                             }
                             break;
@@ -181,7 +183,7 @@
                             if(fengzhang.getCode() == 10000){
                                 rechargeRecord.setSurplusDividedAmount(0d);
                                 rechargeRecordService.updateById(rechargeRecord);
-                                d -= surplusDividedAmount;
+                                d = new BigDecimal(d).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                             }else{
                                 break;
                             }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
index 618cbaf..40fcfa2 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java
@@ -17,6 +17,8 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -74,7 +76,7 @@
         CashWithdrawal cashWithdrawal = new CashWithdrawal();
         cashWithdrawal.setType(2);
         cashWithdrawal.setUserDriverId(driverId);
-        cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        cashWithdrawal.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         cashWithdrawal.setBusinessType(type == 2 ? 11 : 12);
         cashWithdrawal.setBankId(bankId);
         cashWithdrawal.setAmount(money);
@@ -84,19 +86,19 @@
 
         //增加记录
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setUserType(2);
         accountChangeDetail.setUserId(driver.getId());
         accountChangeDetail.setType(1);
         accountChangeDetail.setChangeType(type == 1 ? 4 : 6);
         if(type == 1){
-            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance());
-            driver.setBalance(driver.getBalance() - money);
-            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
+            accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(money)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         }else{
-            accountChangeDetail.setOldData(driver.getCommission() + driver.getCouponBalance());
-            driver.setCommission(driver.getCommission() - money);
-            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            driver.setCommission(new BigDecimal(driver.getCommission()).subtract(new BigDecimal(money)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         }
         accountChangeDetail.setExplain(type == 1 ? "账户余额提现" : "佣金余额提现");
         driverService.updateById(driver);
@@ -129,30 +131,36 @@
                 }
             }
         }else{//佣金提现,直接提现到银行卡
-            Withdraw withdraw = new Withdraw();
-            withdraw.setUserId(driver.getMerchantNumber());
-            withdraw.setAmount(String.valueOf(Double.valueOf(money * 100).intValue()));
-            withdraw.setOrderName("账户余额提现");
-            withdraw.setRemark("账户余额提现");
-            withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
-            withdraw.setParameter1(cashWithdrawal.getId().toString());
-            TrhRequest<Withdraw> request1 = new TrhRequest();
-            InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
-            if("0000".equals(execute.getCode())){
-                JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
-                String merOrderId1 = jsonObject1.getString("merOrderId");
-                Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
-                if(1 == status){
-                    cashWithdrawal.setOrderNumber(merOrderId1);
-                    cashWithdrawal.setState(2);
-                    this.updateById(cashWithdrawal);
+            Double finalMoney = money;
+            new Timer().schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    Withdraw withdraw = new Withdraw();
+                    withdraw.setUserId(driver.getMerchantNumber());
+                    withdraw.setAmount(new BigDecimal(finalMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
+                    withdraw.setOrderName("账户余额提现");
+                    withdraw.setRemark("账户余额提现");
+                    withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
+                    withdraw.setParameter1(cashWithdrawal.getId().toString());
+                    TrhRequest<Withdraw> request1 = new TrhRequest();
+                    InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
+                    if("0000".equals(execute.getCode())){
+                        JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
+                        String merOrderId1 = jsonObject1.getString("merOrderId");
+                        Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
+                        if(1 == status){
+                            cashWithdrawal.setOrderNumber(merOrderId1);
+                            cashWithdrawal.setState(2);
+                            CashWithdrawalServiceImpl.this.updateById(cashWithdrawal);
+                        }
+                        if(2 == status){
+                            System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
+                        }
+                    }else{
+                        System.err.println("结算接口异常【提现】:" + execute.getMsg());
+                    }
                 }
-                if(2 == status){
-                    System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
-                }
-            }else{
-                System.err.println("结算接口异常【提现】:" + execute.getMsg());
-            }
+            }, 60000);
         }
         return ResultUtil.success();
     }
@@ -205,7 +213,7 @@
                 List<PamentOrderUser> splitList = new ArrayList<>();
                 PamentOrderUser pamentOrderUser = new PamentOrderUser();
                 pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
-                pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+                pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                 pamentOrderUser.setSplitType("1");
                 splitList.add(pamentOrderUser);
                 complete.setSplitList(splitList);
@@ -231,7 +239,7 @@
                             public void run() {
                                 confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                             }
-                        }, 15000);
+                        }, 60000);
                     }
                 }else{
                     System.err.println("司机提现分账处理异常 :" + execute.getMsg());
@@ -260,7 +268,7 @@
                 List<PamentOrderUser> splitList = new ArrayList<>();
                 PamentOrderUser pamentOrderUser = new PamentOrderUser();
                 pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
-                pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(surplusDividedAmount * 100).intValue()));
+                pamentOrderUser.setSplitAmount(new BigDecimal(surplusDividedAmount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                 pamentOrderUser.setSplitType("1");
                 splitList.add(pamentOrderUser);
                 complete.setSplitList(splitList);
@@ -286,7 +294,7 @@
                             public void run() {
                                 confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                             }
-                        }, 15000);
+                        }, 60000);
                     }
                 }else{
                     System.err.println("司机提现分账处理异常 :" + execute.getMsg());
@@ -320,7 +328,7 @@
         List<PamentOrderUser> splitList = new ArrayList<>();
         PamentOrderUser pamentOrderUser = new PamentOrderUser();
         pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
-        pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         pamentOrderUser.setSplitType("1");
         splitList.add(pamentOrderUser);
         complete.setSplitList(splitList);
@@ -346,7 +354,7 @@
                     public void run() {
                         confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                     }
-                }, 15000);
+                }, 60000);
             }
         }else{
             System.err.println("司机提现分账处理异常 :" + execute.getMsg());
@@ -369,11 +377,11 @@
         Receive receive = new Receive();
         receive.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
         receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
-        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+        receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         List<ReceiveUser> splitList = new ArrayList<>();
         ReceiveUser receiveUser = new ReceiveUser();
         receiveUser.setSplitUserId(driver.getMerchantNumber());
-        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+        receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         splitList.add(receiveUser);
         receive.setSplitList(splitList);
         TrhRequest<Receive> request = new TrhRequest();
@@ -382,30 +390,35 @@
             JSONObject jsonObject = JSON.parseObject(execute1.getResult());
             String merOrderId = jsonObject.getString("merOrderId");
             if(ToolUtil.isNotEmpty(merOrderId)){
-                Withdraw withdraw = new Withdraw();
-                withdraw.setUserId(driver.getMerchantNumber());
-                withdraw.setAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
-                withdraw.setOrderName("账户余额提现");
-                withdraw.setRemark("账户余额提现");
-                withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
-                withdraw.setParameter1(cashWithdrawal.getId().toString());
-                TrhRequest<Withdraw> request1 = new TrhRequest();
-                InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
-                if("0000".equals(execute.getCode())){
-                    JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
-                    String merOrderId1 = jsonObject1.getString("merOrderId");
-                    Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
-                    if(1 == status){
-                        cashWithdrawal.setOrderNumber(merOrderId1);
-                        cashWithdrawal.setState(2);
-                        this.updateById(cashWithdrawal);
+                new Timer().schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        Withdraw withdraw = new Withdraw();
+                        withdraw.setUserId(driver.getMerchantNumber());
+                        withdraw.setAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
+                        withdraw.setOrderName("账户余额提现");
+                        withdraw.setRemark("账户余额提现");
+                        withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
+                        withdraw.setParameter1(cashWithdrawal.getId().toString());
+                        TrhRequest<Withdraw> request1 = new TrhRequest();
+                        InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
+                        if("0000".equals(execute.getCode())){
+                            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
+                            String merOrderId1 = jsonObject1.getString("merOrderId");
+                            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
+                            if(1 == status){
+                                cashWithdrawal.setOrderNumber(merOrderId1);
+                                cashWithdrawal.setState(2);
+                                CashWithdrawalServiceImpl.this.updateById(cashWithdrawal);
+                            }
+                            if(2 == status){
+                                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
+                            }
+                        }else{
+                            System.err.println("结算接口异常【提现】:" + execute.getMsg());
+                        }
                     }
-                    if(2 == status){
-                        System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
-                    }
-                }else{
-                    System.err.println("结算接口异常【提现】:" + execute.getMsg());
-                }
+                }, 60000);
             }
         }else{
             System.err.println("分账确认收货异常【提现】:" + execute1.getMsg());
@@ -434,6 +447,9 @@
                 String parameter1 = jsonObject.getString("parameter1");
                 String parameter2 = jsonObject.getString("parameter2");
                 DivisionRecord divisionRecord = divisionRecordService.selectById(parameter1);
+                if(divisionRecord.getState() == 2){
+                    return;
+                }
                 divisionRecord.setMerOrderId(merOrderId);
                 divisionRecord.setPayTime(new Date());
                 divisionRecord.setState(2);
@@ -449,7 +465,7 @@
                     public void run() {
                         confirmReceipt(driver, rechargeRecord, divisionRecord, cashWithdrawal);
                     }
-                }, 15000);
+                }, 60000);
             }
         }else{
             System.err.println("司机提现分账异常:" + interfaceResponse.getMsg());
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
index bb8f25a..cabe128 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -41,6 +41,8 @@
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.InetAddress;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -149,7 +151,7 @@
         //新账号
         if(null == driver){
             driver = new Driver();
-            driver.setCode(UUIDUtil.getNumberRandom(16));
+            driver.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
             try {
                 driver = setDriverParamete(driver, driverRegisterWarpper);
             }catch (Exception e){
@@ -166,7 +168,7 @@
                     Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7");
                     if(num7 > 0){
                         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                         accountChangeDetail.setUserType(2);
                         accountChangeDetail.setUserId(driver1.getId());
                         accountChangeDetail.setType(2);
@@ -584,7 +586,7 @@
             if(h > 0 && h > time){
                 Driver driver = this.selectById(driverId);
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(driverId);
                 accountChangeDetail.setType(2);
@@ -613,8 +615,8 @@
         DriverInfoWarpper driverInfo = new DriverInfoWarpper();
         BeanUtils.copyProperties(driver, driverInfo);
         driverInfo.setWithdrawBalance(driver.getBalance());
-        driverInfo.setBalance(driver.getBalance() + driver.getBackgroundBalance());//司机充值+平台充值
-        driverInfo.setCommission(driver.getCommission() + driver.getCouponBalance());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入
+        driverInfo.setBalance(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机充值+平台充值
+        driverInfo.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(driver.getCouponBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入
         YouTuiDriver youTuiDriver = youTuiDriverService.selectOne(new EntityWrapper<YouTuiDriver>().eq("driverId", uid)
                 .eq("state", 2).last(" and failureTime > now() order by failureTime limit 0, 1"));
         if(null != youTuiDriver){
@@ -693,7 +695,7 @@
         List<AccountChangeDetail> list = new ArrayList<>();
         for (Driver driver : drivers) {
             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
             accountChangeDetail.setUserType(2);
             accountChangeDetail.setUserId(driver.getId());
             accountChangeDetail.setCreateTime(new Date());
@@ -717,7 +719,7 @@
         Driver driver = this.selectById(uid);
         //调起微信
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-        String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3);
+        String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
         RechargeRecord rechargeRecord = new RechargeRecord();
         rechargeRecord.setType(2);
         rechargeRecord.setUserId(uid);
@@ -731,7 +733,7 @@
 
         PaymentOrder paymentOrder = new PaymentOrder();
         paymentOrder.setBizOrderId(out_trade_no);
-        paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        paymentOrder.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         paymentOrder.setOrderName("账户充值");
         paymentOrder.setPayType("WX_MINI");
         paymentOrder.setTransferType("0");
@@ -792,14 +794,14 @@
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver1.getId());
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setChangeType(3);
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setCreateTime(new Date());
                                     accountChangeDetail.setExplain("账户充值");
-                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance());
-                                    driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount());
-                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     DriverServiceImpl.this.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -865,14 +867,14 @@
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
         accountChangeDetail.setUserType(2);
         accountChangeDetail.setUserId(rechargeRecord1.getUserId());
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setChangeType(3);
         accountChangeDetail.setType(1);
         accountChangeDetail.setCreateTime(new Date());
         accountChangeDetail.setExplain("账户充值");
-        accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance());
-        driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount());
-        accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance());
+        accountChangeDetail.setOldData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+        driver1.setBalance(new BigDecimal(driver1.getBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+        accountChangeDetail.setNewData(new BigDecimal(driver1.getBalance()).add(new BigDecimal(driver1.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         this.updateById(driver1);
         accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -971,7 +973,7 @@
     public ResultUtil microenterprise(Integer uid, String name, String number, String phone, String notifyUrl) throws Exception {
         Driver driver = this.selectById(uid);
         Register registerVO = new Register();
-        registerVO.setMerUserId("driver_" + uid);
+        registerVO.setMerUserId(driver.getCode());//"driver_" + uid
         registerVO.setPhone(phone);
         registerVO.setUserType("0");
         registerVO.setUserName(name);
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java
index d34832b..9502b6e 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderPositionServiceImpl.java
@@ -70,7 +70,7 @@
             String toLonLat = orderPositionWarpper1.getLon() + "," + orderPositionWarpper1.getLat();
             Map<String, Double> distance = GeodesyUtil.getDistance(fromLonLat, toLonLat);
             Double wgs84 = distance.get("WGS84");
-            if(wgs84 >= 80){
+            if(wgs84 >= 50){
                 OrderPositionWarpper orderPositionWarpper = new OrderPositionWarpper();
                 BeanUtils.copyProperties(driverPositionWarpper, orderPositionWarpper);
                 orderPositionWarpper.setInsertTime(new Date());
@@ -103,7 +103,7 @@
         Order order = orderService.selectById(driverPositionWarpper.getOrderId());
         Double wgs84 = distance.get("WGS84");
         Integer num = map.get(order.getId().toString());
-        if(80 < wgs84){
+        if(50 < wgs84){
             order.setActualMileage(order.getActualMileage() + wgs84.intValue());
             orderService.updateById(order);
             map.put(order.getId().toString(), 0);
@@ -119,7 +119,7 @@
                 }
             }
         }
-        if(80 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据)
+        if(50 >= wgs84 && 12 <= (null == num ? 0 : num)){//1分钟(5秒上传一次数据)
             Integer integer = map.get(order.getId().toString());
             map.put(order.getId().toString(), null == integer ? 0 : integer++);
             //进入等待状态
@@ -132,7 +132,7 @@
                 e.printStackTrace();
             }
         }
-        if(80 >= wgs84 && 12 > (null == num ? 0 : num)){
+        if(50 >= wgs84 && 12 > (null == num ? 0 : num)){
             Integer integer = map.get(order.getId().toString());
             map.put(order.getId().toString(), null == integer ? 0 : integer++);
         }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
index f76f109..a25c1ad 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -163,7 +163,7 @@
             driver.setServerStatus(2);
             order.setOrderTakingTime(new Date());
         }
-        order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3));
+        order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5));
         order.setSource(2);
 
         AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>().eq("phone", addOrderWarpper.getPhone()).eq("status", 1));
@@ -732,7 +732,7 @@
             Integer num10 = JSON.parseObject(systemConfig.getContent()).getInteger("num10");
             if (num10 > 0) {
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(uid);
                 accountChangeDetail.setType(2);
@@ -1018,7 +1018,7 @@
             Integer num5 = JSON.parseObject(systemConfig.getContent()).getInteger("num5");
             if(num5 > 0){
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setType(2);
@@ -1043,7 +1043,7 @@
                 Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8");
                 if(num8 > 0){
                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                     accountChangeDetail.setUserType(2);
                     accountChangeDetail.setUserId(order.getDriverId());
                     accountChangeDetail.setType(2);
@@ -1304,6 +1304,18 @@
      */
     @Override
     public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception {
+        if(108 == state){
+            String value = redisUtil.getValue("repeat_" + orderId.toString());
+            if(ToolUtil.isEmpty(value)){
+                redisUtil.setStrValue("repeat_" + orderId, System.currentTimeMillis() + "", 10 * 60);
+            }else{
+                Long s = System.currentTimeMillis() - Long.valueOf(value);
+                if(s < 60000){//1分钟
+                    return ResultUtil.error("数据处理中");
+                }
+            }
+        }
+
         List<Integer> s = Arrays.asList(107, 108);
         if(!s.contains(state)){
             return ResultUtil.error("操作失败,请刷新订单");
@@ -1323,17 +1335,17 @@
 
                 Driver driver = driverService.selectById(order.getDriverId());
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
-                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("优惠券收入");
-                driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
-                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+                driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
 
@@ -1356,7 +1368,7 @@
                             Double remainAmount = zhaunzhang.getData();
                             rechargeRecord.setSurplusDividedAmount(remainAmount);
                             rechargeRecordService.updateById(rechargeRecord);
-                            discountedPrice -= surplusDividedAmount;
+                            discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                         }else{
                             break;
                         }
@@ -1378,6 +1390,9 @@
         if(null != order.getUserId()){
             pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState());
         }
+        if(108 == state){
+            redisUtil.remove("repeat_" + orderId.toString());
+        }
         return ResultUtil.success();
     }
 
@@ -1396,7 +1411,7 @@
         Transfer transfer = new Transfer();
         transfer.setDepositMerOrderId(merOrderId);
         transfer.setToUserId(toUserId);
-        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        transfer.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         transfer.setOrderName("补贴");
         transfer.setNotifyUrl(notifyUrl);
         transfer.setParameter1(id.toString());
@@ -1439,7 +1454,7 @@
                 JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent());
                 Integer num4 = jsonObject2.getInteger("num4");
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(driver1.getId());
                 accountChangeDetail.setType(2);
@@ -1464,17 +1479,17 @@
             if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金
                 driver = driverService.selectById(order.getDriverId());
                 AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
-                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail1.setUserType(2);
                 accountChangeDetail1.setUserId(driver.getId());
                 accountChangeDetail1.setType(1);
                 accountChangeDetail1.setChangeType(9);
                 accountChangeDetail1.setOrderId(order.getId());
-                accountChangeDetail1.setOldData(driver.getBalance() + driver.getBackgroundBalance());
+                accountChangeDetail1.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 accountChangeDetail1.setExplain("订单信息费");
                 accountChangeDetail1.setCreateTime(new Date());
-                driver.setBalance(driver.getBalance() - num3);
-                accountChangeDetail1.setNewData(driver.getBalance() + driver.getBackgroundBalance());
+                driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                accountChangeDetail1.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
                 accountChangeDetailService.saveData(accountChangeDetail1);
 
@@ -1492,16 +1507,16 @@
                             Driver driver1 = driverService.selectById(appUser.getInviterId());
                             //首单积分奖励
                             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                             accountChangeDetail.setUserType(2);
                             accountChangeDetail.setUserId(driver1.getId());
                             accountChangeDetail.setType(1);
                             accountChangeDetail.setChangeType(5);
-                            accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                            accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                             accountChangeDetail.setExplain("邀请用户奖励");
                             accountChangeDetail.setCreateTime(new Date());
-                            driver1.setCommission(driver1.getCommission() + num1);
-                            accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                            driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                            accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                             accountChangeDetailService.saveData(accountChangeDetail);
                             driverService.updateById(driver1);
 
@@ -1521,7 +1536,7 @@
                                 if(surplusDividedAmount.compareTo(num1_1) >= 0){
                                     ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3);
                                     if(fengzhang.getCode() == 10000){
-                                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num1_1);
+                                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                         rechargeRecordService.updateById(rechargeRecord);
                                     }
                                     break;
@@ -1530,7 +1545,7 @@
                                     if(fengzhang.getCode() == 10000){
                                         rechargeRecord.setSurplusDividedAmount(0d);
                                         rechargeRecordService.updateById(rechargeRecord);
-                                        num1_1 -= surplusDividedAmount;
+                                        num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                     }else{
                                         break;
                                     }
@@ -1538,7 +1553,8 @@
                             }
 
                         }
-                        num3 = (num3 >= num1 ? num3 - num1 : 0);
+                        double v = new BigDecimal(num3).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                        num3 = (num3 >= num1 ? v : 0);
                     }
 
                     //开始处理层级抽佣
@@ -1563,16 +1579,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver1.setCommission(driver1.getCommission() + num5);
-                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1583,7 +1599,7 @@
                                         if(surplusDividedAmount.compareTo(num5_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3);
                                             if(fengzhang.getCode() == 10000){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num5_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1592,14 +1608,14 @@
                                             if(fengzhang.getCode() == 10000){
                                                 rechargeRecord.setSurplusDividedAmount(0d);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num5_1 -= surplusDividedAmount;
+                                                num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num5 ? num3 - num5 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num5 ? v : 0);
                                 }
                                 num6 = (num3 >= num6 ? num6 : num3);
                                 if(num6 > 0){
@@ -1613,16 +1629,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver2.setCommission(driver2.getCommission() + num6);
-                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
+                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1633,7 +1649,7 @@
                                         if(surplusDividedAmount.compareTo(num6_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3);
                                             if(fengzhang.getCode() == 10000){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num6_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1642,14 +1658,14 @@
                                             if(fengzhang.getCode() == 10000){
                                                 rechargeRecord.setSurplusDividedAmount(0d);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num6_1 -= surplusDividedAmount;
+                                                num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num6 ? num3 - num6 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num6 ? v : 0);
                                 }
                                 num7 = (num3 >= num7 ? num7 : num3);
                                 if(num7 > 0){
@@ -1663,16 +1679,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver3.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver3.setCommission(driver3.getCommission() + num7);
-                                    accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission());
+                                    driver3.setCommission(new BigDecimal(driver3.getCommission()).add(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver3);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1683,7 +1699,7 @@
                                         if(surplusDividedAmount.compareTo(num7_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3);
                                             if(fengzhang.getCode() == 10000){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num7_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1692,14 +1708,14 @@
                                             if(fengzhang.getCode() == 10000){
                                                 rechargeRecord.setSurplusDividedAmount(0d);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num7_1 -= surplusDividedAmount;
+                                                num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num7 ? num3 - num7 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num7 ? v : 0);
                                 }
                             }else{
                                 Double num3_ = jsonObject1.getDouble("num3");
@@ -1716,16 +1732,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver1.setCommission(driver1.getCommission() + num3_);
-                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1736,7 +1752,7 @@
                                         if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                             if(fengzhang.getCode() == 10000){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1745,14 +1761,14 @@
                                             if(fengzhang.getCode() == 10000){
                                                 rechargeRecord.setSurplusDividedAmount(0d);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num3_1 -= surplusDividedAmount;
+                                                num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num3_ ? num3 - num3_ : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num3_ ? v : 0);
                                 }
                                 num4 = (num3 >= num4 ? num4 : num3);
                                 if(num4 > 0){
@@ -1766,16 +1782,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver2.setCommission(driver2.getCommission() + num4);
-                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
+                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1786,7 +1802,7 @@
                                         if(surplusDividedAmount.compareTo(num4_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
                                             if(fengzhang.getCode() == 10000){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num4_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1795,14 +1811,14 @@
                                             if(fengzhang.getCode() == 10000){
                                                 rechargeRecord.setSurplusDividedAmount(0d);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num4_1 -= surplusDividedAmount;
+                                                num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num4 ? num3 - num4 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num4 ? v : 0);
                                 }
                             }
                         }else{
@@ -1819,16 +1835,16 @@
                                 revenueService.insert(revenue);
 
                                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                 accountChangeDetail.setUserType(2);
                                 accountChangeDetail.setUserId(driver1.getId());
                                 accountChangeDetail.setType(1);
                                 accountChangeDetail.setChangeType(5);
-                                accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                                accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                 accountChangeDetail.setExplain("订单分佣收入");
                                 accountChangeDetail.setCreateTime(new Date());
-                                driver1.setCommission(driver1.getCommission() + num2_);
-                                accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                                driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                 driverService.updateById(driver1);
                                 accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1839,7 +1855,7 @@
                                     if(surplusDividedAmount.compareTo(num2_1) >= 0){
                                         ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3);
                                         if(fengzhang.getCode() == 10000){
-                                            rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num2_1);
+                                            rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                             rechargeRecordService.updateById(rechargeRecord);
                                         }
                                         break;
@@ -1848,13 +1864,14 @@
                                         if(fengzhang.getCode() == 10000){
                                             rechargeRecord.setSurplusDividedAmount(0d);
                                             rechargeRecordService.updateById(rechargeRecord);
-                                            num2_1 -= surplusDividedAmount;
+                                            num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                         }else{
                                             break;
                                         }
                                     }
                                 }
-                                num3 = (num3 >= num2_ ? num3 - num2_ : 0);
+                                double v = new BigDecimal(num3).subtract(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                num3 = (num3 >= num2_ ? v : 0);
                             }
                         }
                     }
@@ -1876,7 +1893,7 @@
                             if(surplusDividedAmount.compareTo(num3) >= 0){
                                 ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3, 3);
                                 if(fengzhang.getCode() == 10000){
-                                    rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3);
+                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     rechargeRecordService.updateById(rechargeRecord);
                                 }
                                 break;
@@ -1885,7 +1902,7 @@
                                 if(fengzhang.getCode() == 10000){
                                     rechargeRecord.setSurplusDividedAmount(0d);
                                     rechargeRecordService.updateById(rechargeRecord);
-                                    num3 -= surplusDividedAmount;
+                                    num3 = new BigDecimal(num3).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                 }else{
                                     break;
                                 }
@@ -1925,7 +1942,7 @@
         List<PamentOrderUser> splitList = new ArrayList<>();
         PamentOrderUser pamentOrderUser = new PamentOrderUser();
         pamentOrderUser.setSplitUserId(merchantNumber);
-        pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         pamentOrderUser.setSplitType("1");
         splitList.add(pamentOrderUser);
         complete.setSplitList(splitList);
@@ -1944,14 +1961,14 @@
                 divisionRecord.setPayTime(new Date());
                 divisionRecord.setState(2);
                 divisionRecordService.updateById(divisionRecord);
-                //间隔10秒开始调用确认收货后开始提现
+                //间隔1分钟开始调用确认收货后开始提现
 
                 new Timer().schedule(new TimerTask() {//确认收货和提现
                     @Override
                     public void run() {
                         confirmReceipt(merchantNumber, merOrderId, divisionRecord);
                     }
-                }, 15000);
+                }, 60000);
                 return ResultUtil.success();
             }
         }else{
@@ -1973,11 +1990,11 @@
         Receive receive = new Receive();
         receive.setOriginalMerOrderId(orderNumber);
         receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
-        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+        receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         List<ReceiveUser> splitList = new ArrayList<>();
         ReceiveUser receiveUser = new ReceiveUser();
         receiveUser.setSplitUserId(merchantNumber);
-        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+        receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         splitList.add(receiveUser);
         receive.setSplitList(splitList);
         TrhRequest<Receive> request = new TrhRequest();
@@ -2171,17 +2188,17 @@
 
                 Driver driver = driverService.selectById(order.getDriverId());
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
-                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("优惠券收入");
-                driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
-                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+                driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(coupon.getCouponPreferentialAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
 
@@ -2204,7 +2221,7 @@
                             Double remainAmount = zhaunzhang.getData();
                             rechargeRecord.setSurplusDividedAmount(remainAmount);
                             rechargeRecordService.updateById(rechargeRecord);
-                            discountedPrice -= surplusDividedAmount;
+                            discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                         }else{
                             break;
                         }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java
index 1f958c6..93d0138 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/YouTuiDriverServiceImpl.java
@@ -125,7 +125,7 @@
         }
 
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setUserType(2);
         accountChangeDetail.setUserId(driverId);
         accountChangeDetail.setType(2);
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java
new file mode 100644
index 0000000..d65c884
--- /dev/null
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/model/QueryUser.java
@@ -0,0 +1,23 @@
+package com.supersavedriving.driver.modular.system.util.MallBook.model;
+
+/**
+ * @Author xiaogc
+ * @Date 2021/9/18 9:41
+ */
+public class QueryUser {
+    /**业务类型编号,必须和接口文档一致*/
+    public static String SERVICE_CODE = "queryUser";
+    /**
+     * 业务系统会员id
+     */
+
+    private String merUserId;
+
+    public String getMerUserId() {
+        return merUserId;
+    }
+
+    public void setMerUserId(String merUserId) {
+        this.merUserId = merUserId;
+    }
+}
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java
index cc801eb..9f2033b 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PayMoneyUtil.java
@@ -42,6 +42,7 @@
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.security.*;
@@ -718,14 +719,14 @@
         initiateBatchTransferRequest.setOutBatchNo(outDetailNo);
         initiateBatchTransferRequest.setBatchName("付款");
         initiateBatchTransferRequest.setBatchRemark(remark);
-        initiateBatchTransferRequest.setTotalAmount(amount.longValue() * 100);
+        initiateBatchTransferRequest.setTotalAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue());
         initiateBatchTransferRequest.setTotalNum(1);
         {
             List<TransferDetailInput> transferDetailListList = new ArrayList<>();
             {
                 TransferDetailInput transferDetailInput = new TransferDetailInput();
                 transferDetailInput.setOutDetailNo(outDetailNo);
-                transferDetailInput.setTransferAmount(amount.longValue() * 100);
+                transferDetailInput.setTransferAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue());
                 transferDetailInput.setTransferRemark(remark);
                 transferDetailInput.setOpenid(openid);
                 if(amount > 0.3){
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java
index 04bf0a5..6a9780c 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/weChat/WeChatUtil.java
@@ -65,22 +65,22 @@
             @Override
             public void run() {
                 try {
-                    Thread.sleep(30000);
-                    new Timer().schedule(new TimerTask() {
-                        @Override
-                        public void run() {
-                            try {
-                                String wxAppletsAccessToken = getWxAppletsAccessToken();
-                                if(ToolUtil.isEmpty(wxAppletsAccessToken)){
-                                    System.err.println("获取微信小程序access_token失败");
-                                    return;
-                                }
-                                redisUtil.setStrValue("wxAppletsAccessToken", wxAppletsAccessToken, 7000);
-                            }catch (Exception e){
-                                e.printStackTrace();
-                            }
-                        }
-                    }, 0, 7000000);
+//                    Thread.sleep(30000);
+//                    new Timer().schedule(new TimerTask() {
+//                        @Override
+//                        public void run() {
+//                            try {
+//                                String wxAppletsAccessToken = getWxAppletsAccessToken();
+//                                if(ToolUtil.isEmpty(wxAppletsAccessToken)){
+//                                    System.err.println("获取微信小程序access_token失败");
+//                                    return;
+//                                }
+//                                redisUtil.setStrValue("wxAppletsAccessToken", wxAppletsAccessToken, 7000);
+//                            }catch (Exception e){
+//                                e.printStackTrace();
+//                            }
+//                        }
+//                    }, 0, 7000000);
                 }catch (Exception e){
                     e.printStackTrace();
                 }
diff --git a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
index 2ccf046..6b56cfa 100644
--- a/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
+++ b/driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java
@@ -5,10 +5,9 @@
 //        import com.baomidou.mybatisplus.mapper.EntityWrapper;
 //        import com.supersavedriving.driver.modular.system.model.*;
 //        import com.supersavedriving.driver.modular.system.service.*;
+//        import com.supersavedriving.driver.modular.system.service.impl.CashWithdrawalServiceImpl;
 //        import com.supersavedriving.driver.modular.system.service.impl.OrderServiceImpl;
-//        import com.supersavedriving.driver.modular.system.util.MallBook.model.Complete;
-//        import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
-//        import com.supersavedriving.driver.modular.system.util.MallBook.model.PamentOrderUser;
+//        import com.supersavedriving.driver.modular.system.util.MallBook.model.*;
 //        import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
 //        import com.supersavedriving.driver.modular.system.util.ResultUtil;
 //        import com.supersavedriving.driver.modular.system.util.UUIDUtil;
@@ -61,13 +60,57 @@
 //    @Autowired
 //    private IDivisionRecordService divisionRecordService;
 //
+//    @Autowired
+//    private ICashWithdrawalService cashWithdrawalService;
+//
 //
 //
 //
 //    @Test
 //    public void test() throws Exception {
-//        OrderPriceWarpper orderPriceWarpper = orderService.queryOrderPrice(1, 1136L);
-//        System.err.println(orderPriceWarpper);
+////        Withdraw withdraw = new Withdraw();
+////        withdraw.setUserId("79796121680");
+////        withdraw.setAmount(String.valueOf(Double.valueOf(54.48 * 100).intValue()));
+////        withdraw.setOrderName("账户余额提现");
+////        withdraw.setRemark("账户余额提现");
+////        withdraw.setNotifyUrl("https://chaoshengdaijia.com:443/driver/base/driver/withdrawCashCallback");
+////        withdraw.setParameter1("1");
+////        TrhRequest<Withdraw> request1 = new TrhRequest();
+////        InterfaceResponse execute = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
+////        if("0000".equals(execute.getCode())){
+////            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
+////            String merOrderId1 = jsonObject1.getString("merOrderId");
+////            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
+////            if(1 == status){
+////            }
+////            if(2 == status){
+////                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
+////            }
+////        }else{
+////            System.err.println("结算接口异常【提现】:" + execute.getMsg());
+////        }
+//
+//
+//
+////        QueryUser queryUser = new QueryUser();
+////        /**
+////         * 业务系统会员ID(必填) 字段长度最长:32位
+////         */
+////        queryUser.setMerUserId("driver_13");
+////        TrhRequest<QueryUser> request = new TrhRequest();
+////        InterfaceResponse execute = request.execute(queryUser, QueryUser.SERVICE_CODE);
+////        if("0000".equals(execute.getCode())){
+////            JSONObject jsonObject1 = JSON.parseObject(execute.getResult());
+////            String merOrderId1 = jsonObject1.getString("merOrderId");
+////            Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败
+////            if(1 == status){
+////            }
+////            if(2 == status){
+////                System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
+////            }
+////        }else{
+////            System.err.println("结算接口异常【提现】:" + execute.getMsg());
+////        }
 //    }
 //
 //}
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 d9ab0f3..bbc9e0c 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
@@ -26,6 +26,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -373,9 +375,9 @@
                     if(2 == status){
                         Order order = orderService.selectById(orderId);
                         AccountChangeDetail accountChangeDetail = accountChangeDetailService.selectById(parameter2);
-                        Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData();
+                        Double m = new BigDecimal(accountChangeDetail.getOldData()).subtract(new BigDecimal(accountChangeDetail.getNewData())).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                         AppUser appUser1 = appUserService.selectById(order.getUserId());
-                        appUser1.setAccountBalance(appUser1.getAccountBalance() + m);
+                        appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(m)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                         appUserService.updateById(appUser1);
                         accountChangeDetailService.deleteById(accountChangeDetail.getId());
                         System.err.println("支付失败");
@@ -456,18 +458,22 @@
                     }
                     String merOrderId = jsonObject.getString("merOrderId");
                     String divisionRecordId = jsonObject.getString("parameter1");
+                    DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
+                    if(divisionRecord.getState() == 2){
+
+                    }
+
                     //确认收货
                     new Timer().schedule(new TimerTask() {
                         @Override
                         public void run() {
-                            DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
                             Receive receive = new Receive();//确认收货
                             receive.setOriginalMerOrderId(merOrderId);
-                            receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+                            receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                             List<ReceiveUser> splitList = new ArrayList<>();
                             ReceiveUser receiveUser = new ReceiveUser();
                             receiveUser.setSplitUserId(divisionRecord.getMerchantNumber());
-                            receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+                            receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                             splitList.add(receiveUser);
                             receive.setSplitList(splitList);
                             TrhRequest<Receive> request1 = new TrhRequest();
@@ -484,7 +490,7 @@
                                 logger.warn("确认收货处理中");
                             }
                         }
-                    }, 15000);
+                    }, 60000);
                     response.setStatus(200);
                     PrintWriter out = response.getWriter();
                     out.print("OK");
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java
index 62fc95b..ec141b3 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Coupon.java
@@ -86,10 +86,10 @@
      * 优惠券数量
      */
     @TableField("coupon_count")
-    private Integer couponCount;
+    private Long couponCount;
     /**
      * 剩余数量
      */
     @TableField("remaining_quantity")
-    private Integer remainingQuantity;
+    private Long remainingQuantity;
 }
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java
index 16448d2..a5810ad 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java
@@ -39,7 +39,9 @@
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.math.BigInteger;
+import java.math.RoundingMode;
 import java.net.InetAddress;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -241,7 +243,7 @@
         Transfer transfer = new Transfer();
         transfer.setDepositMerOrderId(merOrderId);
         transfer.setToUserId(toUserId);
-        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        transfer.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         transfer.setOrderName("补贴");
         transfer.setNotifyUrl(notifyUrl);
         transfer.setParameter1(id.toString());
@@ -274,7 +276,7 @@
                 .eq("coupon_state", 1).eq("status", 1).gt("remaining_quantity", 0));
         List<CouponWarpper> list = new ArrayList<>();
         for (Coupon coupon : coupons) {
-            Integer num = coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ?
+            Long num = coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ?
                     coupon.getRemainingQuantity() : coupon.getCouponSendQuantity();
             for (int i = 0; i < num; i++) {
                 UserToCoupon userToCoupon = new UserToCoupon();
@@ -372,7 +374,7 @@
             return ResultUtil.error("充值金额必须大于0");
         }
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-        String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3);
+        String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
         AppUser appUser = this.selectById(uid);
         RechargeRecord rechargeRecord = new RechargeRecord();
         rechargeRecord.setType(1);
@@ -386,7 +388,7 @@
 
         PaymentOrder paymentOrder = new PaymentOrder();
         paymentOrder.setBizOrderId(out_trade_no);
-        paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        paymentOrder.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         paymentOrder.setOrderName("账户充值");
         paymentOrder.setPayType("WX_MINI");
         paymentOrder.setTransferType("0");
@@ -447,13 +449,13 @@
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                     accountChangeDetail.setUserType(1);
                                     accountChangeDetail.setUserId(appUser1.getId());
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setChangeType(3);
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setCreateTime(new Date());
                                     accountChangeDetail.setExplain("账户充值");
                                     accountChangeDetail.setOldData(appUser1.getAccountBalance());
-                                    appUser1.setAccountBalance(appUser1.getAccountBalance() + rechargeRecord1.getAmount());
+                                    appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setNewData(appUser1.getAccountBalance());
                                     accountChangeDetailService.saveData(accountChangeDetail);
                                     SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6));
@@ -506,13 +508,13 @@
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
         accountChangeDetail.setUserType(1);
         accountChangeDetail.setUserId(rechargeRecord1.getUserId());
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setChangeType(3);
         accountChangeDetail.setType(1);
         accountChangeDetail.setCreateTime(new Date());
         accountChangeDetail.setExplain("余额充值");
         accountChangeDetail.setOldData(appUser.getAccountBalance());
-        appUser.setAccountBalance(appUser.getAccountBalance() + rechargeRecord1.getAmount());
+        appUser.setAccountBalance(new BigDecimal(appUser.getAccountBalance()).add(new BigDecimal(rechargeRecord1.getAmount())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         accountChangeDetail.setNewData(appUser.getAccountBalance());
         accountChangeDetailService.saveData(accountChangeDetail);
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6));
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 5ce9591..fc8927c 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
@@ -482,7 +482,7 @@
 
         for (Integer i = 0; i < travelOrder.getDriverNum(); i++) {
             order.setId(null);
-            order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3));
+            order.setCode(UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(5));
             boolean insert = this.insert(order);
             if(insert){
                 //推送状态
@@ -990,7 +990,7 @@
             return ResultUtil.error("不允许支付");
         }
         if(orderPayment.getPayType() == 2){
-            Double payMoney = order.getOrderMoney() * (appUser.getHavDiscount() == 1 ? 0.9 : 1);
+            Double payMoney = order.getOrderMoney() * (appUser.getHavDiscount() == 1 ? 0.95 : 1);
             if(appUser.getAccountBalance() < payMoney){
                 return ResultUtil.error("账户余额不足");
             }
@@ -1027,7 +1027,7 @@
 
         PaymentOrder paymentOrder = new PaymentOrder();
         paymentOrder.setBizOrderId(out_trade_no);
-        paymentOrder.setAmount(String.valueOf(Double.valueOf(payMoney * 100).intValue()));
+        paymentOrder.setAmount(new BigDecimal(payMoney).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         paymentOrder.setOrderName("代驾服务费");
         paymentOrder.setPayType("WX_MINI");
         paymentOrder.setTransferType("0");
@@ -1139,7 +1139,7 @@
 
 
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setUserType(1);
         accountChangeDetail.setUserId(appUser.getId());
         accountChangeDetail.setCreateTime(new Date());
@@ -1148,7 +1148,7 @@
         accountChangeDetail.setChangeType(2);
         accountChangeDetail.setOrderId(order.getId());
         accountChangeDetail.setExplain("代驾服务费");
-        appUser.setAccountBalance(appUser.getAccountBalance() - payMoney);
+        appUser.setAccountBalance(new BigDecimal(appUser.getAccountBalance()).subtract(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         accountChangeDetail.setNewData(appUser.getAccountBalance());
         appUserService.updateById(appUser);
         accountChangeDetailService.insert(accountChangeDetail);
@@ -1172,7 +1172,7 @@
         order.setPayType(1);
 
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setUserType(1);
         accountChangeDetail.setUserId(appUser.getId());
         accountChangeDetail.setCreateTime(new Date());
@@ -1181,25 +1181,33 @@
         accountChangeDetail.setChangeType(2);
         accountChangeDetail.setOrderId(order.getId());
         accountChangeDetail.setExplain("代驾服务费");
-        appUser.setAccountBalance(appUser.getAccountBalance() > payMoney ? appUser.getAccountBalance() - payMoney : 0);
+
+        Double wx_p = 0D;
+        if(payMoney.compareTo(appUser.getAccountBalance()) > 0){//支付金额大于账户余额
+            wx_p = new BigDecimal(payMoney).subtract(new BigDecimal(appUser.getAccountBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+            order.setBalancePayment(appUser.getAccountBalance());
+            order.setWeChatPayment(wx_p);
+            appUser.setAccountBalance(0D);
+        }else{
+            order.setBalancePayment(payMoney);
+            order.setWeChatPayment(0D);
+            appUser.setAccountBalance(new BigDecimal(appUser.getAccountBalance()).subtract(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+        }
         accountChangeDetail.setNewData(appUser.getAccountBalance());
         appUserService.updateById(appUser);
         accountChangeDetailService.insert(accountChangeDetail);
 
-        order.setBalancePayment(payMoney > appUser.getAccountBalance() ? appUser.getAccountBalance() : payMoney);
-        payMoney = payMoney > appUser.getAccountBalance() ? payMoney - appUser.getAccountBalance() : 0D;
-        order.setWeChatPayment(payMoney);
         order.setResidueBalancePayment(order.getBalancePayment());
         order.setResidueWeChatPayment(order.getWeChatPayment());
 
-        if(0 < payMoney){//还需要调起微信支付
+        if(0 < wx_p){//还需要调起微信支付
             order.setPayType(4);
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             String out_trade_no = sdf.format(new Date()) + order.getId();
 
             PaymentOrder paymentOrder = new PaymentOrder();
             paymentOrder.setBizOrderId(out_trade_no);
-            paymentOrder.setAmount(String.valueOf(Double.valueOf(payMoney * 100).intValue()));
+            paymentOrder.setAmount(new BigDecimal(wx_p).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
             paymentOrder.setOrderName("代驾服务费");
             paymentOrder.setPayType("WX_MINI");
             paymentOrder.setTransferType("0");
@@ -1266,7 +1274,7 @@
                                     if("2".equals(status1) || 10 == num){//失败
                                         Double m = accountChangeDetail.getOldData() - accountChangeDetail.getNewData();
                                         AppUser appUser1 = appUserService.selectById(order1.getUserId());
-                                        appUser1.setAccountBalance(appUser1.getAccountBalance() + m);
+                                        appUser1.setAccountBalance(new BigDecimal(appUser1.getAccountBalance()).add(new BigDecimal(m)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                         appUserService.updateById(appUser1);
                                         accountChangeDetailService.deleteById(accountChangeDetail.getId());
                                         break;
@@ -1374,7 +1382,7 @@
 
                 //增加积分变动记录
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
@@ -1395,7 +1403,7 @@
 
                 //增加积分变动记录
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
@@ -1432,17 +1440,17 @@
         revenueService.insert(revenue);
 
         AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail.setUserType(2);
         accountChangeDetail.setUserId(driver.getId());
         accountChangeDetail.setType(1);
         accountChangeDetail.setChangeType(1);
         accountChangeDetail.setOrderId(order.getId());
-        accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
-        driver.setCommission(driver.getCommission() + order.getPayMoney());
+        accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+        driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getPayMoney())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         accountChangeDetail.setExplain("订单收入");
         accountChangeDetail.setCreateTime(new Date());
-        accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+        accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         driverService.updateById(driver);
         accountChangeDetailService.saveData(accountChangeDetail);
         //订单收入
@@ -1450,17 +1458,17 @@
 
         if(null != order.getCouponId()){
             accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
             accountChangeDetail.setUserType(2);
             accountChangeDetail.setUserId(driver.getId());
             accountChangeDetail.setType(1);
             accountChangeDetail.setChangeType(7);
             accountChangeDetail.setOrderId(order.getId());
-            accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
-            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
+            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getDiscountedPrice())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             accountChangeDetail.setExplain("优惠券收入");
             accountChangeDetail.setCreateTime(new Date());
-            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             driverService.updateById(driver);
             accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1483,7 +1491,7 @@
                         Double remainAmount = zhaunzhang.getData();
                         rechargeRecord.setSurplusDividedAmount(remainAmount);
                         rechargeRecordService.updateById(rechargeRecord);
-                        discountedPrice -= surplusDividedAmount;
+                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                     }else{
                         break;
                     }
@@ -1512,7 +1520,7 @@
             JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent());
             Integer num4 = jsonObject2.getInteger("num4");
             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
             accountChangeDetail.setUserType(2);
             accountChangeDetail.setUserId(driver1.getId());
             accountChangeDetail.setType(2);
@@ -1537,17 +1545,17 @@
             Double num3 = jsonObject.getDouble("num3");
             if(order.getOrderMoney().compareTo(num2) >= 0){//订单金额大于num2开始分佣
                 AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
-                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                 accountChangeDetail1.setUserType(2);
                 accountChangeDetail1.setUserId(driver.getId());
                 accountChangeDetail1.setType(1);
                 accountChangeDetail1.setChangeType(9);
                 accountChangeDetail1.setOrderId(order.getId());
-                accountChangeDetail1.setOldData(driver.getBalance() + driver.getBackgroundBalance());
+                accountChangeDetail1.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 accountChangeDetail1.setExplain("订单信息费");
                 accountChangeDetail1.setCreateTime(new Date());
-                driver.setBalance(driver.getBalance() - num3);
-                accountChangeDetail1.setNewData(driver.getBalance() + driver.getBackgroundBalance());
+                driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(num3)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                accountChangeDetail1.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
                 accountChangeDetailService.saveData(accountChangeDetail1);
 
@@ -1562,7 +1570,7 @@
                         if(num1 > 0){
                             Driver driver1 = driverService.selectById(appUser.getInviterId());
                             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                             accountChangeDetail.setUserType(2);
                             accountChangeDetail.setUserId(driver1.getId());
                             accountChangeDetail.setType(1);
@@ -1570,8 +1578,8 @@
                             accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                             accountChangeDetail.setExplain("邀请用户奖励");
                             accountChangeDetail.setCreateTime(new Date());
-                            driver1.setCommission(driver1.getCommission() + num1);
-                            accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                            driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                            accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                             driverService.updateById(driver1);
                             accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1592,7 +1600,7 @@
                                 if(surplusDividedAmount.compareTo(num1_1) >= 0){
                                     ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num1_1, 3);
                                     if(10000 == fengzhang.getCode()){
-                                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num1_1);
+                                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num1_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                         rechargeRecordService.updateById(rechargeRecord);
                                     }
                                     break;
@@ -1601,14 +1609,15 @@
                                     if(10000 == fengzhang.getCode()){
                                         rechargeRecord.setSurplusDividedAmount(0D);
                                         rechargeRecordService.updateById(rechargeRecord);
-                                        num1_1 -= surplusDividedAmount;
+                                        num1_1 = new BigDecimal(num1_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                     }else{
                                         break;
                                     }
                                 }
                             }
                         }
-                        num3 = (num3 >= num1 ? num3 - num1 : 0);
+                        double v = new BigDecimal(num3).subtract(new BigDecimal(num1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                        num3 = (num3 >= num1 ? v : 0);
                     }
 
                     //开始处理层级抽佣
@@ -1633,16 +1642,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver1.setCommission(driver1.getCommission() + num5);
-                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1654,7 +1663,7 @@
                                         if(surplusDividedAmount.compareTo(num5_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num5_1, 3);
                                             if(10000 == fengzhang.getCode()){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num5_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num5_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1663,14 +1672,14 @@
                                             if(10000 == fengzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num5_1 -= surplusDividedAmount;
+                                                num5_1 = new BigDecimal(num5_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num5 ? num3 - num5 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num5)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num5 ? v : 0);
                                 }
                                 num6 = (num3 >= num6 ? num6 : num3);
                                 if(num6 > 0 && null != driver2){
@@ -1684,16 +1693,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver2.setCommission(driver2.getCommission() + num6);
-                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
+                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1705,7 +1714,7 @@
                                         if(surplusDividedAmount.compareTo(num6_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num6_1, 3);
                                             if(10000 == fengzhang.getCode()){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num6_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num6_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1714,13 +1723,14 @@
                                             if(10000 == fengzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num6_1 -= surplusDividedAmount;
+                                                num6_1 = new BigDecimal(num6_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-                                    num3 = (num3 >= num6 ? num3 - num6 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num6)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num6 ? v : 0);
                                 }
                                 num7 = (num3 >= num7 ? num7 : num3);
                                 if(num7 > 0 && null != driver3){
@@ -1734,16 +1744,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver3.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver3.setCommission(driver3.getCommission() + num7);
-                                    accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission());
+                                    driver3.setCommission(new BigDecimal(driver3.getCommission()).add(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver3.getCouponBalance()).add(new BigDecimal(driver3.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver3);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1755,7 +1765,7 @@
                                         if(surplusDividedAmount.compareTo(num7_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver3.getId(), driver3.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num7_1, 3);
                                             if(10000 == fengzhang.getCode()){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num7_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num7_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1764,14 +1774,14 @@
                                             if(10000 == fengzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num7_1 -= surplusDividedAmount;
+                                                num7_1 = new BigDecimal(num7_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num7 ? num3 - num7 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num7)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num7 ? v : 0);
                                 }
                             }else{
                                 Double num3_ = jsonObject1.getDouble("num3");
@@ -1788,16 +1798,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver1.setCommission(driver1.getCommission() + num3_);
-                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                                    driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1809,7 +1819,7 @@
                                         if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                             if(10000 == fengzhang.getCode()){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1818,14 +1828,14 @@
                                             if(10000 == fengzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num3_1 -= surplusDividedAmount;
+                                                num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num3_ ? num3 - num3_ : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num3_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num3_ ? v : 0);
                                 }
                                 num4 = (num3 >= num4 ? num4 : num3);
                                 if(num4 > 0 && null != driver2){
@@ -1839,16 +1849,16 @@
                                     revenueService.insert(revenue);
 
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                     accountChangeDetail.setUserType(2);
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver2.setCommission(driver2.getCommission() + num4);
-                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
+                                    driver2.setCommission(new BigDecimal(driver2.getCommission()).add(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                    accountChangeDetail.setNewData(new BigDecimal(driver2.getCouponBalance()).add(new BigDecimal(driver2.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1860,7 +1870,7 @@
                                         if(surplusDividedAmount.compareTo(num4_1) >= 0){
                                             ResultUtil fengzhang = fengzhang(1, driver2.getId(), driver2.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num4_1, 3);
                                             if(10000 == fengzhang.getCode()){
-                                                rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num4_1);
+                                                rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num4_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                                 rechargeRecordService.updateById(rechargeRecord);
                                             }
                                             break;
@@ -1869,14 +1879,14 @@
                                             if(10000 == fengzhang.getCode()){
                                                 rechargeRecord.setSurplusDividedAmount(0D);
                                                 rechargeRecordService.updateById(rechargeRecord);
-                                                num4_1 -= surplusDividedAmount;
+                                                num4_1 = new BigDecimal(num4_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                             }else{
                                                 break;
                                             }
                                         }
                                     }
-
-                                    num3 = (num3 >= num4 ? num3 - num4 : 0);
+                                    double v = new BigDecimal(num3).subtract(new BigDecimal(num4)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                    num3 = (num3 >= num4 ? v : 0);
                                 }
                             }
                         }else{
@@ -1893,16 +1903,16 @@
                                 revenueService.insert(revenue);
 
                                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
                                 accountChangeDetail.setUserType(2);
                                 accountChangeDetail.setUserId(driver1.getId());
                                 accountChangeDetail.setType(1);
                                 accountChangeDetail.setChangeType(5);
-                                accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                                accountChangeDetail.setOldData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                 accountChangeDetail.setExplain("订单分佣收入");
                                 accountChangeDetail.setCreateTime(new Date());
-                                driver1.setCommission(driver1.getCommission() + num2_);
-                                accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
+                                driver1.setCommission(new BigDecimal(driver1.getCommission()).add(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+                                accountChangeDetail.setNewData(new BigDecimal(driver1.getCouponBalance()).add(new BigDecimal(driver1.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                 driverService.updateById(driver1);
                                 accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1914,7 +1924,7 @@
                                     if(surplusDividedAmount.compareTo(num2_1) >= 0){
                                         ResultUtil fengzhang = fengzhang(1, driver1.getId(), driver1.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num2_1, 3);
                                         if(10000 == fengzhang.getCode()){
-                                            rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num2_1);
+                                            rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num2_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                             rechargeRecordService.updateById(rechargeRecord);
                                         }
                                         break;
@@ -1923,14 +1933,14 @@
                                         if(10000 == fengzhang.getCode()){
                                             rechargeRecord.setSurplusDividedAmount(0D);
                                             rechargeRecordService.updateById(rechargeRecord);
-                                            num2_1 -= surplusDividedAmount;
+                                            num2_1 = new BigDecimal(num2_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                         }else{
                                             break;
                                         }
                                     }
                                 }
-
-                                num3 = (num3 >= num2_ ? num3 - num2_ : 0);
+                                double v = new BigDecimal(num3).subtract(new BigDecimal(num2_)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                                num3 = (num3 >= num2_ ? v : 0);
                             }
                         }
                     }
@@ -1954,7 +1964,7 @@
                             if(surplusDividedAmount.compareTo(num3_1) >= 0){
                                 ResultUtil fengzhang = fengzhang(2, agent.getId(), agent.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                                 if(10000 == fengzhang.getCode()){
-                                    rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
+                                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                                     rechargeRecordService.updateById(rechargeRecord);
                                 }
                                 break;
@@ -1963,7 +1973,7 @@
                                 if(10000 == fengzhang.getCode()){
                                     rechargeRecord.setSurplusDividedAmount(0D);
                                     rechargeRecordService.updateById(rechargeRecord);
-                                    num3_1 -= surplusDividedAmount;
+                                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                                 }else{
                                     break;
                                 }
@@ -1998,17 +2008,17 @@
         revenueService.insert(revenue);
 
         AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
-        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail1.setUserType(2);
         accountChangeDetail1.setUserId(driver.getId());
         accountChangeDetail1.setType(1);
         accountChangeDetail1.setChangeType(1);
         accountChangeDetail1.setOrderId(order.getId());
-        accountChangeDetail1.setOldData(driver.getCouponBalance() + driver.getCommission());
-        driver.setCommission(driver.getCommission() + order.getPayMoney());
+        accountChangeDetail1.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+        driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getPayMoney())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         accountChangeDetail1.setExplain("订单收入");
         accountChangeDetail1.setCreateTime(new Date());
-        accountChangeDetail1.setNewData(driver.getCouponBalance() + driver.getCommission());
+        accountChangeDetail1.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         driverService.updateById(driver);
         accountChangeDetailService.saveData(accountChangeDetail1);
 
@@ -2020,7 +2030,7 @@
             if(surplusDividedAmount.compareTo(num3_1) >= 0){
                 ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                 if(10000 == fengzhang.getCode()){
-                    rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
+                    rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                     rechargeRecordService.updateById(rechargeRecord);
                 }
                 break;
@@ -2029,7 +2039,7 @@
                 if(10000 == fengzhang.getCode()){
                     rechargeRecord.setSurplusDividedAmount(0D);
                     rechargeRecordService.updateById(rechargeRecord);
-                    num3_1 -= surplusDividedAmount;
+                    num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                 }else{
                     break;
                 }
@@ -2039,17 +2049,17 @@
 
         if(null != order.getCouponId()){
             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
             accountChangeDetail.setUserType(2);
             accountChangeDetail.setUserId(driver.getId());
             accountChangeDetail.setType(1);
             accountChangeDetail.setChangeType(7);
             accountChangeDetail.setOrderId(order.getId());
-            accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
-            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
+            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getDiscountedPrice())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             accountChangeDetail.setExplain("优惠券收入");
             accountChangeDetail.setCreateTime(new Date());
-            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             driverService.updateById(driver);
             accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -2072,7 +2082,7 @@
                         Double remainAmount = zhaunzhang.getData();
                         rechargeRecord.setSurplusDividedAmount(remainAmount);
                         rechargeRecordService.updateById(rechargeRecord);
-                        discountedPrice -= surplusDividedAmount;
+                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                     }else{
                         break;
                     }
@@ -2083,7 +2093,7 @@
         // TODO: 2023/6/25 折扣优惠由司机承担
 //        if(null != order.getDiscountAmount() && 0 < order.getDiscountAmount()){
 //            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-//            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+//            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
 //            accountChangeDetail.setUserType(2);
 //            accountChangeDetail.setUserId(driver.getId());
 //            accountChangeDetail.setType(1);
@@ -2143,17 +2153,17 @@
         revenueService.insert(revenue);
 
         AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
-        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+        accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
         accountChangeDetail1.setUserType(2);
         accountChangeDetail1.setUserId(driver.getId());
         accountChangeDetail1.setType(1);
         accountChangeDetail1.setChangeType(1);
         accountChangeDetail1.setOrderId(order.getId());
-        accountChangeDetail1.setOldData(driver.getCouponBalance() + driver.getCommission());
-        driver.setCommission(driver.getCommission() + order.getPayMoney());
+        accountChangeDetail1.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+        driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getPayMoney())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         accountChangeDetail1.setExplain("订单收入");
         accountChangeDetail1.setCreateTime(new Date());
-        accountChangeDetail1.setNewData(driver.getCouponBalance() + driver.getCommission());
+        accountChangeDetail1.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         driverService.updateById(driver);
         accountChangeDetailService.saveData(accountChangeDetail1);
 
@@ -2166,14 +2176,14 @@
             if(10000 != fengzhang.getCode()){
                 return;
             }
-            order.setResidueWeChatPayment(order.getResidueWeChatPayment() - num3_1);
+            order.setResidueWeChatPayment(new BigDecimal(order.getResidueWeChatPayment()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         }else{
             ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), null, order.getOrderNo(), residueWeChatPayment, 1);
             if(10000 != fengzhang.getCode()){
                 return;
             }
             order.setResidueWeChatPayment(0D);
-            num3_1 -= residueWeChatPayment;
+            num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(residueWeChatPayment)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
 
             //账户余额继续分账
             List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 1).eq("userId", appUser.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
@@ -2182,9 +2192,9 @@
                 if(surplusDividedAmount.compareTo(num3_1) >= 0){
                     ResultUtil fengzhang1 = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getId(), rechargeRecord.getOrderNumber(), num3_1, 3);
                     if(10000 == fengzhang1.getCode()){
-                        rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - num3_1);
+                        rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                         rechargeRecordService.updateById(rechargeRecord);
-                        order.setResidueBalancePayment(residueBalancePayment - num3_1);
+                        order.setResidueBalancePayment(new BigDecimal(residueBalancePayment).subtract(new BigDecimal(num3_1)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                     }
                     break;
                 }else{
@@ -2192,8 +2202,8 @@
                     if(10000 == fengzhang1.getCode()){
                         rechargeRecord.setSurplusDividedAmount(0D);
                         rechargeRecordService.updateById(rechargeRecord);
-                        num3_1 -= surplusDividedAmount;
-                        order.setResidueBalancePayment(residueBalancePayment - surplusDividedAmount);
+                        num3_1 = new BigDecimal(num3_1).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                        order.setResidueBalancePayment(new BigDecimal(residueBalancePayment).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                     }else{
                         break;
                     }
@@ -2204,17 +2214,17 @@
 
         if(null != order.getCouponId()){
             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5));
             accountChangeDetail.setUserType(2);
             accountChangeDetail.setUserId(driver.getId());
             accountChangeDetail.setType(1);
             accountChangeDetail.setChangeType(7);
             accountChangeDetail.setOrderId(order.getId());
-            accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
-            driver.setCommission(driver.getCommission() + order.getDiscountedPrice());
+            accountChangeDetail.setOldData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
+            driver.setCommission(new BigDecimal(driver.getCommission()).add(new BigDecimal(order.getDiscountedPrice())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             accountChangeDetail.setExplain("优惠券收入");
             accountChangeDetail.setCreateTime(new Date());
-            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setNewData(new BigDecimal(driver.getCouponBalance()).add(new BigDecimal(driver.getCommission())).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
             driverService.updateById(driver);
             accountChangeDetailService.saveData(accountChangeDetail);
             //补贴中分账
@@ -2236,7 +2246,7 @@
                         Double remainAmount = zhaunzhang.getData();
                         rechargeRecord.setSurplusDividedAmount(remainAmount);
                         rechargeRecordService.updateById(rechargeRecord);
-                        discountedPrice -= surplusDividedAmount;
+                        discountedPrice = new BigDecimal(discountedPrice).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
                     }else{
                         break;
                     }
@@ -2273,7 +2283,7 @@
         List<PamentOrderUser> splitList = new ArrayList<>();
         PamentOrderUser pamentOrderUser = new PamentOrderUser();
         pamentOrderUser.setSplitUserId(merchantNumber);
-        pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        pamentOrderUser.setSplitAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         pamentOrderUser.setSplitType("1");
         splitList.add(pamentOrderUser);
         complete.setSplitList(splitList);
@@ -2292,14 +2302,14 @@
                 divisionRecord.setPayTime(new Date());
                 divisionRecord.setState(2);
                 divisionRecordService.updateById(divisionRecord);
-                //间隔10秒开始调用确认收货后开始提现
+                //间隔1分钟开始调用确认收货后开始提现
 
                 new Timer().schedule(new TimerTask() {//确认收货和提现
                     @Override
                     public void run() {
                         confirmReceipt(merchantNumber, merOrderId, divisionRecord);
                     }
-                }, 15000);
+                }, 60000);
                 return ResultUtil.success();
             }
         }else{
@@ -2321,11 +2331,11 @@
         Receive receive = new Receive();
         receive.setOriginalMerOrderId(orderNumber);
         receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
-        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+        receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         List<ReceiveUser> splitList = new ArrayList<>();
         ReceiveUser receiveUser = new ReceiveUser();
         receiveUser.setSplitUserId(merchantNumber);
-        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+        receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         splitList.add(receiveUser);
         receive.setSplitList(splitList);
         TrhRequest<Receive> request = new TrhRequest();
@@ -2353,7 +2363,7 @@
         Transfer transfer = new Transfer();
         transfer.setDepositMerOrderId(merOrderId);
         transfer.setToUserId(toUserId);
-        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        transfer.setAmount(new BigDecimal(amount).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
         transfer.setOrderName("补贴");
         transfer.setNotifyUrl(notifyUrl);
         transfer.setParameter1(id.toString());

--
Gitblit v1.7.1