From 831e3312572cf29dd91cbd882ef3dce809ac852d Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 14 六月 2023 20:58:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/1.1' into 1.1

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/OrderServiceImpl.java               |  533 ++++++++++------
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java                  |    3 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java                |    2 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java                       |    4 
 driver/guns-admin/src/main/resources/application.yml                                                                        |    4 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java              |    5 
 zuul/src/main/resources/redis.properties                                                                                    |    4 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java              |   66 +-
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java                                     |  166 ++++-
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java                        |    2 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java               |   12 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java                            |    5 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html                                        |   14 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java                                   |   35 +
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java             |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java                 |    5 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/OrderServiceImpl.java                   |  500 +++++++++------
 user/guns-admin/src/main/resources/application.yml                                                                          |   12 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/DriverController.java                        |    6 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java               |    2 
 zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java                                                    |   14 
 management/guns-admin/src/main/resources/application.yml                                                                    |    4 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java |   22 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java                 |    5 
 user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java                                            |   18 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java            |    7 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/CashWithdrawalServiceImpl.java      |   58 +
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java             |   17 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java                               |   37 +
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java                   |   10 
 driver/guns-admin/src/test/java/com/supersavedriving/driver/GunsApplicationTest.java                                        |    8 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java                                    |   16 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/DriverServiceImpl.java              |   40 +
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html                                            |   11 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java               |    2 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/AppUserServiceImpl.java                 |  158 +++-
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java                            |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java                 |    4 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/OrderController.java                                    |    5 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java                          |   27 
 user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java                                  |   23 
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml        |    6 
 zuul/src/main/resources/application.yml                                                                                     |    4 
 43 files changed, 1,221 insertions(+), 659 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 2e95e94..a022ae5 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
@@ -492,8 +492,8 @@
 
     @ResponseBody
     @PostMapping("/api/driver/queryCommissionList")
-//    @ServiceLog(name = "获取佣金记录", url = "/api/driver/queryCommissionList")
-    @ApiOperation(value = "获取佣金记录", tags = {"司机端-个人中心"}, notes = "")
+//    @ServiceLog(name = "获取收入记录", url = "/api/driver/queryCommissionList")
+    @ApiOperation(value = "获取收入记录", tags = {"司机端-个人中心"}, notes = "")
     @ApiImplicitParams({
             @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"),
             @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"),
@@ -623,7 +623,7 @@
     @ApiOperation(value = "获取司机钱包明细", tags = {"司机端-个人中心"}, notes = "")
     @ApiImplicitParams({
             @ApiImplicitParam(value = "日期", name = "time", required = true, dataType = "string"),
-            @ApiImplicitParam(value = "类型(1=收入,3=充值,4=支出,7=优惠券,8=保险)", name = "type", required = true, dataType = "int"),
+            @ApiImplicitParam(value = "类型(3=充值,8=保险,9=订单信息费)", name = "type", required = true, dataType = "int"),
             @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"),
             @ApiImplicitParam(value = "页条数", name = "pageSize", required = true, dataType = "int"),
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java
index 68facbb..e54b50c 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/auth/AuthIntercepter.java
@@ -25,7 +25,7 @@
 		String appid = req.getParameter("appid");
 		String sign = req.getParameter("sign");
         ResultUtil resultUtil = authService.checkSyncAuth(appid, sign, req);
-        if (resultUtil.getCode() != 200) {
+        if (resultUtil.getCode() != 10000) {
 			res.setStatus(HttpStatus.OK.value());
 			res.setHeader("Content-type", "text/html;charset=UTF-8");
 			res.getWriter().print(JSON.toJSONString(resultUtil));//Res.Failure("req timeout, please try again")
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
index 127d3a9..def4fea 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
@@ -43,7 +43,7 @@
         UNIX_TIMESTAMP(createTime) * 1000 as createTime,
         (newData - oldData) as money,
         newData as balance
-        from t_account_change_detail where changeType = 5 and userType = 2 and userId = #{driverId}
+        from t_account_change_detail where changeType not in (3, 4, 8, 9) and userType = 2 and `type` = 1 and userId = #{driverId}
         <if test="null != time and '' != time">
             and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
         </if>
@@ -57,7 +57,7 @@
         from (
             select
             (newData - oldData) as money
-            from t_account_change_detail where changeType = 5 and userType = 2 and userId = #{driverId}
+            from t_account_change_detail where changeType not in (3, 4, 8, 9) and userType = 2 and `type` = 1 and userId = #{driverId}
             <if test="null != time and '' != time">
                 and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
             </if>
@@ -72,7 +72,7 @@
         UNIX_TIMESTAMP(createTime) * 1000 as createTime,
         (newData - oldData) as amount,
         newData as balance
-        from t_account_change_detail where userType = 2 and userId = #{driverId} and changeType in (1, 3, 4, 7, 8)
+        from t_account_change_detail where userType = 2 and userId = #{driverId} and changeType in (3, 8, 9)
         <if test="null != time and '' != time">
             and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
         </if>
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
index 79bd20c..ab2841e 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/IOrderService.java
@@ -206,4 +206,8 @@
 
 
     ResultUtil fengzhang(Integer userType, Integer id, String merchantNumber, Long orderId, String merOrderId, Double amount, Integer sourceType);
+
+
+
+    void saveRevenue(Order order) throws Exception;
 }
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 c6679c0..e2ec610 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
@@ -134,17 +134,6 @@
 
             double d = num1.doubleValue();
             if(backgroundBalance > 0 && backgroundBalance < d){
-                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
-                accountChangeDetail.setUserType(2);
-                accountChangeDetail.setUserId(driver.getId());
-                accountChangeDetail.setType(1);
-                accountChangeDetail.setChangeType(8);
-                accountChangeDetail.setOldData(driver.getBackgroundBalance());
-                accountChangeDetail.setNewData(0D);
-                accountChangeDetail.setExplain("收取保险费");
-                accountChangeDetail.setCreateTime(new Date());
-                this.insert(accountChangeDetail);
                 d -= backgroundBalance;
                 driver.setBackgroundBalance(0D);
             }
@@ -155,18 +144,15 @@
                 accountChangeDetail.setUserId(driver.getId());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(8);
-                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance());
                 driver.setBackgroundBalance(driver.getBackgroundBalance() - d);
-                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
                 accountChangeDetail.setExplain("收取保险费");
                 accountChangeDetail.setCreateTime(new Date());
                 this.insert(accountChangeDetail);
                 d = 0;
             }
             if(d > 0){
-                if(balance > 0 && balance < d){
-                    continue;
-                }
                 if(balance > 0 && balance >= d){
                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                     accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
@@ -174,9 +160,9 @@
                     accountChangeDetail.setUserId(driver.getId());
                     accountChangeDetail.setType(1);
                     accountChangeDetail.setChangeType(8);
-                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                    accountChangeDetail.setOldData(all);
                     driver.setBalance(driver.getBalance() - d);
-                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
                     accountChangeDetail.setExplain("收取保险费");
                     accountChangeDetail.setCreateTime(new Date());
                     this.insert(accountChangeDetail);
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 5d425b6..5500602 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
@@ -89,13 +89,15 @@
         accountChangeDetail.setUserId(driver.getId());
         accountChangeDetail.setType(1);
         accountChangeDetail.setChangeType(type == 1 ? 4 : 6);
-        accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
         if(type == 1){
+            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance());
             driver.setBalance(driver.getBalance() - money);
+            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
         }else{
+            accountChangeDetail.setOldData(driver.getCommission() + driver.getCouponBalance());
             driver.setCommission(driver.getCommission() - money);
+            accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
         }
-        accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
         accountChangeDetail.setExplain(type == 1 ? "账户余额提现" : "佣金余额提现");
         driverService.updateById(driver);
         accountChangeDetailService.saveData(accountChangeDetail);
@@ -103,22 +105,38 @@
 
         if(type == 1){//余额提现,调用分账接口 -->确认收货--->提现
             fenzhang(driver, money, cashWithdrawal, 1);
-        }else{//佣金提现,调用充值接口数据进行分账
-            fenzhang(driver, money, cashWithdrawal, 2);
+        }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);
+                }
+                if(2 == status){
+                    System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg"));
+                }
+            }else{
+                System.err.println("结算接口异常【提现】:" + execute.getMsg());
+            }
         }
-
-//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
-//        String outDetailNo = sdf.format(new Date()) + cashWithdrawal.getId();
-//
-//        String s = payMoneyUtil.weixinTransferMoney(outDetailNo, money, driver.getOpenid(), driver.getName(), "【超省新代驾】提现付款!");
-//        if(ToolUtil.isEmpty(s)){
-//            return ResultUtil.error("提现异常,请联系管理员");
-//        }
-//        cashWithdrawal.setState(2);
-//        cashWithdrawal.setOrderNumber(s);
-//        this.updateById(cashWithdrawal);
         return ResultUtil.success();
     }
+
+
+
+
 
 
     /**
@@ -161,7 +179,7 @@
                 List<PamentOrderUser> splitList = new ArrayList<>();
                 PamentOrderUser pamentOrderUser = new PamentOrderUser();
                 pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
-                pamentOrderUser.setSplitAmount(amount.toString());
+                pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
                 pamentOrderUser.setSplitType("1");
                 splitList.add(pamentOrderUser);
                 complete.setSplitList(splitList);
@@ -213,7 +231,7 @@
                 List<PamentOrderUser> splitList = new ArrayList<>();
                 PamentOrderUser pamentOrderUser = new PamentOrderUser();
                 pamentOrderUser.setSplitUserId(driver.getMerchantNumber());
-                pamentOrderUser.setSplitAmount(surplusDividedAmount.toString());
+                pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(surplusDividedAmount * 100).intValue()));
                 pamentOrderUser.setSplitType("1");
                 splitList.add(pamentOrderUser);
                 complete.setSplitList(splitList);
@@ -263,11 +281,11 @@
         Receive receive = new Receive();
         receive.setOriginalMerOrderId(rechargeRecord.getOrderNumber());
         receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
-        receive.setRcvAmount(divisionRecord.getAmount().toString());
+        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
         List<ReceiveUser> splitList = new ArrayList<>();
         ReceiveUser receiveUser = new ReceiveUser();
         receiveUser.setSplitUserId(driver.getMerchantNumber());
-        receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString());
+        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
         splitList.add(receiveUser);
         receive.setSplitList(splitList);
         TrhRequest<Receive> request = new TrhRequest();
@@ -278,7 +296,7 @@
             if(ToolUtil.isNotEmpty(merOrderId)){
                 Withdraw withdraw = new Withdraw();
                 withdraw.setUserId(driver.getMerchantNumber());
-                withdraw.setAmount(divisionRecord.getAmount().toString());
+                withdraw.setAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
                 withdraw.setOrderName("账户余额提现");
                 withdraw.setRemark("账户余额提现");
                 withdraw.setNotifyUrl(callbackPath + "/base/driver/withdrawCashCallback");
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 2083d82..9629921 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
@@ -156,6 +156,29 @@
             }
             driver.setCreateTime(new Date());
             this.insert(driver);
+
+            //司机邀请注册奖励
+            if(null != driver.getInviterId()){
+                Driver driver1 = this.selectById(driver.getInviterId());
+                SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
+                if(null != systemConfig){
+                    Integer num7 = JSON.parseObject(systemConfig.getContent()).getInteger("num7");
+                    if(num7 > 0){
+                        AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                        accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                        accountChangeDetail.setUserType(2);
+                        accountChangeDetail.setUserId(driver1.getId());
+                        accountChangeDetail.setType(2);
+                        accountChangeDetail.setChangeType(5);
+                        accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
+                        driver1.setIntegral(driver1.getIntegral() + num7);
+                        accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
+                        accountChangeDetail.setExplain("邀请司机注册奖励");
+                        accountChangeDetailService.saveData(accountChangeDetail);
+                        this.updateById(driver1);
+                    }
+                }
+            }
         }
         return ResultUtil.success();
     }
@@ -175,6 +198,10 @@
         driver.setIdcardBack(driverRegisterWarpper.getIdcardBack());
         driver.setIdcardFront(driverRegisterWarpper.getIdcardFront());
         driver.setDriverLicense(driverRegisterWarpper.getDriverLicense());
+        if(ToolUtil.isNotEmpty(driverRegisterWarpper.getFirstCertificateTime())){
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            driver.setFirstCertificateTime(sdf.parse(driverRegisterWarpper.getFirstCertificateTime()));
+        }
         //注册地
         String code = driverRegisterWarpper.getCode();
         BranchOffice branchOffice = branchOfficeService.selectOne(new EntityWrapper<BranchOffice>().eq("districtCode", code).eq("status", 1));
@@ -574,7 +601,8 @@
         DriverInfoWarpper driverInfo = new DriverInfoWarpper();
         BeanUtils.copyProperties(driver, driverInfo);
         driverInfo.setWithdrawBalance(driver.getBalance());
-        driverInfo.setBalance(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+        driverInfo.setBalance(driver.getBalance() + driver.getBackgroundBalance());//司机充值+平台充值
+        driverInfo.setCommission(driver.getCommission() + driver.getCouponBalance());//司机订单收入+司机佣金收入+司机优惠券收入+司机折扣收入
         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){
@@ -704,7 +732,7 @@
         paymentOrderGood.setGoodsName("充值");
         goodsDetail.add(paymentOrderGood);
         paymentOrder.setGoodsDetail(goodsDetail);
-        paymentOrder.setFrontUrl("http://www.baidu.com");//前端回调地址
+        paymentOrder.setFrontUrl(callbackPath + "/base/driver/balanceRechargeCallback");//前端回调地址
         paymentOrder.setNotifyUrl(callbackPath + "/base/driver/balanceRechargeCallback");
         paymentOrder.setParameter1(out_trade_no);
 
@@ -757,9 +785,9 @@
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setCreateTime(new Date());
                                     accountChangeDetail.setExplain("账户充值");
-                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance());
                                     driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount());
-                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance());
                                     DriverServiceImpl.this.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -830,9 +858,9 @@
         accountChangeDetail.setType(1);
         accountChangeDetail.setCreateTime(new Date());
         accountChangeDetail.setExplain("账户充值");
-        accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+        accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance());
         driver1.setBalance(driver1.getBalance() + rechargeRecord1.getAmount());
-        accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+        accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance());
         this.updateById(driver1);
         accountChangeDetailService.saveData(accountChangeDetail);
 
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 11518dc..6a25374 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
@@ -229,6 +229,7 @@
      * @return
      */
     public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){
+        distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue();
         order = getOrderInitialPrice(order);
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
         if(null == systemConfig){
@@ -259,41 +260,57 @@
             Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11
 
             String[] split = num1.split(":");
+            Integer hour1 = Integer.valueOf(split[0]);
+            String[] split1 = num2.split(":");
+            Integer hour2 = Integer.valueOf(split1[0]);
+
             Calendar s = Calendar.getInstance();
             s.setTime(date);
-            s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+            s.set(Calendar.HOUR_OF_DAY, hour1);
             s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
             s.set(Calendar.SECOND, 0);
 
-            split = num2.split(":");
             Calendar e = Calendar.getInstance();
             e.setTime(date);
-            e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-            e.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+            e.set(Calendar.HOUR_OF_DAY, hour2);
+            e.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
             e.set(Calendar.SECOND, 0);
+
+            if(hour1 > hour2){
+                if(s.getTimeInMillis() > date.getTime()){
+                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1);
+                }else{
+                    e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
 
             if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
                 if(num3.compareTo(distance) >= 0){//起步里程内
                     order.setStartDistance(distance);//起步里程
                     order.setStartPrice(num4);//起步价
                 }else{
-                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程
-                    BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN));
+                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程
+                    BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN);
                     BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                     order.setStartDistance(num3);//起步里程
                     order.setStartPrice(num4);//起步价
                     order.setOverDriveDistance(subtract.doubleValue());//超出起步里程
                     order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费
 
-                    //计算长途费
+                    //计算长途费(超出长途起始公里,费用开始按照长途规则计算。)
                     if(distance.compareTo(num7) > 0){
+                        order.setStartDistance(0D);//起步里程
+                        order.setStartPrice(0D);//起步价
+                        order.setOverDriveDistance(0D);//超出起步里程
+                        order.setOverDrivePrice(0D);//超出起步里程费
+
                         order.setLongDistance(num7 + "-" + num8);//长途里程
                         order.setLongDistancePrice(num9);//长途费
                     }
                     //计算长途里程超出的部分
                     if(distance.compareTo(num8) > 0){
-                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8));
-                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN));
+                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN);
                         BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11));
                         order.setOverLongDistance(subtract1.doubleValue());//超出长途里程
                         order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费
@@ -390,7 +407,7 @@
         order.setLongDistancePrice(0D);//长途里程费
         order.setOverLongDistance(0D);//超出长途里程
         order.setOverLongDistancePrice(0d);//超出长途里程费
-        order.setWaitTime(0);//等待时长
+//        order.setWaitTime(0);//等待时长
         order.setWaitTimePrice(0D);//等待费
         order.setOutWaitTime(0);//超出等待时长
         order.setOutWaitTimePrice(0D);//超出等待时长费
@@ -411,27 +428,187 @@
      * @param order
      */
     public void pushOrder(Order order){
-        /**
-         * 1.先找最大推单范围内的优推司机 -》 距离最近
-         * 没有1 - 》
-         *      2.按照后台推送配置在范围内查找合适司机
-         *        合适司:积分 > 评分 > 距离
-         *      3.司机没有接单直接将订单置入大厅
-         */
-        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
-        if(null == systemConfig){
-            return;
+        try {
+            boolean lock = redisUtil.lock(5);
+            if(!lock){
+                int num1 = 1;
+                while (num1 <= 10){
+                    Thread.sleep(3000);//等待3秒
+                    lock = redisUtil.lock(5);
+                    if(lock){
+                        break;
+                    }else{
+                        num1++;
+                    }
+                }
+            }
+            /**
+             * 1.先找最大推单范围内的优推司机 -》 距离最近
+             * 没有1 - 》
+             *      2.按照后台推送配置在范围内查找合适司机
+             *        合适司:积分 > 评分 > 距离
+             *      3.司机没有接单直接将订单置入大厅
+             */
+            SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
+            if(null == systemConfig){
+                redisUtil.unlock();
+                return;
+            }
+            JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
+            Double num3 = jsonObject.getDouble("num3");//推单最大范围
+            Integer num4 = jsonObject.getInteger("num4");//接单时间
+            String startLat = order.getStartLat();
+            String startLng = order.getStartLng();
+
+            //1
+            //找到中心点
+            GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat));
+            Double num = num3 / 1000;//范围公里
+            //构造半径
+            Distance distanceR = new Distance(num, Metrics.KILOMETERS);
+            //画圆
+            Circle circle = new Circle(geoJsonPoint, distanceR);
+            // 构造query对象
+            Query query = Query.query(Criteria.where("location").withinSphere(circle));
+            List<Location> locations = mongoTemplate.find(query, Location.class);
+            List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
+            Integer driver = null;
+            YouTuiDriver youTuiDriver1 = null;
+            if(driverIds.size() > 0){
+                List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
+                        .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime"));
+                Double d = null;
+                for (YouTuiDriver youTuiDriver : youTuiDrivers) {
+                    String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
+                    if(ToolUtil.isEmpty(value)){
+                        continue;
+                    }
+                    DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", youTuiDriver.getDriverId()).eq("status", 1));
+                    if(null == driverWork){
+                        continue;
+                    }
+                    Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
+                    Double wgs84 = distance.get("WGS84");
+                    if(d == null || d.compareTo(wgs84) > 0){
+                        d = wgs84;
+                        driver = youTuiDriver.getDriverId();
+                        youTuiDriver1 = youTuiDriver;
+                    }
+                }
+            }
+
+            if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
+                youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
+                youTuiDriverService.updateById(youTuiDriver1);
+            }
+
+            //开始范围查找
+            if(null == driver){
+                for (int i = 1; i < 4; i++) {
+                    if(null != driver){
+                        break;
+                    }
+                    num = jsonObject.getDouble("num" + i) / 1000;//范围公里
+                    //构造半径
+                    distanceR = new Distance(num, Metrics.KILOMETERS);
+                    //画圆
+                    circle = new Circle(geoJsonPoint, distanceR);
+                    // 构造query对象
+                    query = Query.query(Criteria.where("location").withinSphere(circle));
+                    locations = mongoTemplate.find(query, Location.class);
+
+                    driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
+                    if(driverIds.size() > 0){
+                        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds));
+                        if(drivers.size() == 0){
+                            continue;
+                        }
+
+                        Integer integral = null;
+                        Double score = null;
+                        Double d = null;
+                        for (Driver driver1 : drivers) {
+                            String value = redisUtil.getValue("DRIVER" + driver1.getId());
+                            if(ToolUtil.isEmpty(value)){
+                                continue;
+                            }
+                            DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
+                            if(null == driverWork){
+                                continue;
+                            }
+                            if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
+                                integral = driver1.getIntegral();
+                                score = driver1.getScore();
+                                driver = driver1.getId();
+                                continue;
+                            }
+                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
+                                integral = driver1.getIntegral();
+                                score = driver1.getScore();
+                                driver = driver1.getId();
+                                continue;
+                            }
+                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
+                                String value1 = redisUtil.getValue("DRIVER" + driver1.getId());
+                                if(ToolUtil.isEmpty(value1)){
+                                    continue;
+                                }
+                                Map<String, Double> distance = GeodesyUtil.getDistance(value1, order.getStartLng() + "," + order.getStartLat());
+                                Double wgs84 = distance.get("WGS84");
+                                if(d == null || d.compareTo(wgs84) > 0){
+                                    d = wgs84;
+                                    driver = driver1.getId();
+                                    continue;
+                                }
+                            }
+                        }
+
+                    }
+                }
+            }
+
+            if(null != driver){
+                //防止多笔订单推给一个司机
+                Driver driver1 = driverService.selectById(driver);
+                driver1.setServerStatus(2);
+                driverService.updateById(driver1);
+                pushUtil.pushGrabOrder(driver, 2, order.getId(), num4);
+                //创建定时任务处理订单到大厅
+                new Timer().schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        Order order1 = OrderServiceImpl.this.selectById(order.getId());
+                        if(order1.getState() == 101 || order1.getState() == 201){
+                            order1.setHallOrder(1);
+                            OrderServiceImpl.this.updateById(order1);
+
+                            driver1.setServerStatus(1);
+                            driverService.updateById(driver1);
+                            ExtraPushOrder(order);
+                        }
+                    }
+                }, num4 * 1000);
+            }else{
+                order.setHallOrder(1);
+                this.updateById(order);
+                ExtraPushOrder(order);
+            }
+            redisUtil.unlock();
+        }catch (Exception e){
+            redisUtil.unlock();
+            e.printStackTrace();
         }
-        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
-        Double num3 = jsonObject.getDouble("num3");//推单最大范围
-        Integer num4 = jsonObject.getInteger("num4");//接单时间
+    }
+
+
+
+    public void ExtraPushOrder(Order order){
         String startLat = order.getStartLat();
         String startLng = order.getStartLng();
 
-        //1
         //找到中心点
         GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat));
-        Double num = num3 / 1000;//范围公里
+        Double num = 5D;//范围公里
         //构造半径
         Distance distanceR = new Distance(num, Metrics.KILOMETERS);
         //画圆
@@ -440,107 +617,26 @@
         Query query = Query.query(Criteria.where("location").withinSphere(circle));
         List<Location> locations = mongoTemplate.find(query, Location.class);
         List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
-        Integer driver = null;
-        YouTuiDriver youTuiDriver1 = null;
-        if(driverIds.size() > 0){
-            List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
-                    .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime"));
-            Double d = null;
-            for (YouTuiDriver youTuiDriver : youTuiDrivers) {
-                String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
-                if(ToolUtil.isEmpty(value)){
-                    continue;
-                }
-                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
-                Double wgs84 = distance.get("WGS84");
-                if(d == null || d.compareTo(wgs84) > 0){
-                    d = wgs84;
-                    driver = youTuiDriver.getDriverId();
-                    youTuiDriver1 = youTuiDriver;
-                }
+        if(driverIds.size() == 0){
+            return;
+        }
+        List<DriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<DriverWork>().in("driverId", driverIds).eq("status", 1));
+        driverIds = tDriverWorks.stream().map(DriverWork::getDriverId).collect(Collectors.toList());
+        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2)
+                .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds));
+        if(drivers.size() == 0){
+            return;
+        }
+        for (Driver driver1 : drivers) {
+            String value = redisUtil.getValue("DRIVER" + driver1.getId());
+            if (ToolUtil.isEmpty(value)) {
+                return;
             }
-        }
-
-        if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
-            youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
-            youTuiDriverService.updateById(youTuiDriver1);
-        }
-
-        //开始范围查找
-        if(null == driver){
-            for (int i = 1; i < 4; i++) {
-                if(null != driver){
-                    break;
-                }
-                num = jsonObject.getDouble("num" + i) / 1000;//范围公里
-                //构造半径
-                distanceR = new Distance(num, Metrics.KILOMETERS);
-                //画圆
-                circle = new Circle(geoJsonPoint, distanceR);
-                // 构造query对象
-                query = Query.query(Criteria.where("location").withinSphere(circle));
-                locations = mongoTemplate.find(query, Location.class);
-
-                driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
-                if(driverIds.size() > 0){
-                    List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("serverStatus", 1).eq("status", 1).in("id", driverIds));
-                    if(drivers.size() == 0){
-                        continue;
-                    }
-
-                    Integer integral = null;
-                    Double score = null;
-                    Double d = null;
-                    for (Driver driver1 : drivers) {
-                        if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
-                            integral = driver1.getIntegral();
-                            score = driver1.getScore();
-                            driver = driver1.getId();
-                            continue;
-                        }
-                        if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
-                            integral = driver1.getIntegral();
-                            score = driver1.getScore();
-                            driver = driver1.getId();
-                            continue;
-                        }
-                        if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
-                            String value = redisUtil.getValue("DRIVER" + driver1.getId());
-                            if(ToolUtil.isEmpty(value)){
-                                continue;
-                            }
-                            Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
-                            Double wgs84 = distance.get("WGS84");
-                            if(d == null || d.compareTo(wgs84) > 0){
-                                d = wgs84;
-                                driver = driver1.getId();
-                                continue;
-                            }
-                        }
-                    }
-
-                }
-            }
-        }
-
-        if(null != driver){
-            pushUtil.pushGrabOrder(driver, 2, order.getId(), num4);
-            //创建定时任务处理订单到大厅
-            new Timer().schedule(new TimerTask() {
-                @Override
-                public void run() {
-                    Order order1 = OrderServiceImpl.this.selectById(order.getId());
-                    if(order1.getState() == 101 || order1.getState() == 201){
-                        order1.setHallOrder(1);
-                        OrderServiceImpl.this.updateById(order1);
-                    }
-                }
-            }, num4 * 1000);
-        }else{
-            order.setHallOrder(1);
-            this.updateById(order);
+            pushUtil.pushGrabOrderExtras(driver1.getId(), 2);
         }
     }
+
+
 
 
 
@@ -643,9 +739,18 @@
             if(count > 0){
                 return ResultUtil.error("还有未完成的订单");
             }
-            boolean lock = redisUtil.lock();
+            boolean lock = redisUtil.lock(5);
             if(!lock){
-                return ResultUtil.error("请重试");
+                int num1 = 1;
+                while (num1 <= 10){
+                    Thread.sleep(3000);//等待3秒
+                    lock = redisUtil.lock(5);
+                    if(lock){
+                        break;
+                    }else{
+                        num1++;
+                    }
+                }
             }
             Order order = this.selectById(orderId);
             Integer state = order.getState();
@@ -799,7 +904,7 @@
                     order.setStartTime(new Date());
                 }
                 //计算等待用户时长
-                Integer w = Double.valueOf((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).intValue();
+                Integer w = new BigDecimal((System.currentTimeMillis() - order.getStartWaitTime().getTime()) / 60000).setScale(0, BigDecimal.ROUND_UP).intValue();
                 order.setWaitTime(order.getWaitTime() + w);
                 order.setStartWaitTime(null);
                 break;
@@ -859,6 +964,8 @@
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setType(2);
+                accountChangeDetail.setChangeType(5);
+                accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setOldData(driver.getIntegral().doubleValue());
                 driver.setIntegral(driver.getIntegral() + num5);
                 accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
@@ -866,52 +973,30 @@
                 accountChangeDetailService.saveData(accountChangeDetail);
             }
             //恶劣天气完成订单奖励
-            Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8");
-            if(num8 > 0){
-                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
-                accountChangeDetail.setUserType(2);
-                accountChangeDetail.setUserId(order.getDriverId());
-                accountChangeDetail.setType(2);
-                accountChangeDetail.setOldData(driver.getIntegral().doubleValue());
-                driver.setIntegral(driver.getIntegral() + num8);
-                accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
-                accountChangeDetail.setExplain("恶劣天气完成订单奖励");
-                accountChangeDetailService.saveData(accountChangeDetail);
+            String city = "";
+            District geocode = MapUtil.geocode(order.getEndLng(), order.getEndLat());
+            if(null != geocode){
+                WeatherCity weatherCity = weatherCityService.selectOne(new EntityWrapper<WeatherCity>()
+                        .where("'" + geocode.getCity() + "' like CONCAT('%', city, '%') and '" + geocode.getDistrict() + "' like CONCAT('%', district, '%') "));
+                city = null != weatherCity ? weatherCity.getId().toString() : "";
             }
-            driverService.updateById(driver);
-
-            if(null == order.getUserId()){
-                return;
-            }
-            //推荐用户首单完成奖励
-            Integer num4 = JSON.parseObject(systemConfig.getContent()).getInteger("num4");
-            if(num4 > 0){
-                List<Integer> state = Arrays.asList(105);
-                int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state));
-                if(count > 1){
-                    return;
-                }
-                AppUser appUser = appUserService.selectById(order.getUserId());
-                if(null != appUser && null != appUser.getInviterType()){
-                    if(appUser.getInviterType() == 1){
-                        return;
-                    }
-                    Driver driver1 = driverService.selectById(appUser.getInviterId());
+            boolean badWeather = WeatherUtil.isBadWeather(city);
+            if(badWeather){
+                Integer num8 = JSON.parseObject(systemConfig.getContent()).getInteger("num8");
+                if(num8 > 0){
                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                     accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                     accountChangeDetail.setUserType(2);
-                    accountChangeDetail.setUserId(driver1.getId());
+                    accountChangeDetail.setUserId(order.getDriverId());
                     accountChangeDetail.setType(2);
-                    accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
-                    driver1.setIntegral(driver1.getIntegral() + num4);
-                    accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
-                    accountChangeDetail.setExplain("推荐用户完成首单奖励");
+                    accountChangeDetail.setOldData(driver.getIntegral().doubleValue());
+                    driver.setIntegral(driver.getIntegral() + num8);
+                    accountChangeDetail.setNewData(driver.getIntegral().doubleValue());
+                    accountChangeDetail.setExplain("恶劣天气完成订单奖励");
                     accountChangeDetailService.saveData(accountChangeDetail);
-                    driverService.updateById(driver1);
                 }
             }
-
+            driverService.updateById(driver);
         }
     }
 
@@ -1193,13 +1278,13 @@
                     accountChangeDetail.setUserType(2);
                     accountChangeDetail.setUserId(order.getDriverId());
                     accountChangeDetail.setCreateTime(new Date());
-                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                    accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
                     accountChangeDetail.setType(1);
                     accountChangeDetail.setChangeType(7);
                     accountChangeDetail.setOrderId(order.getId());
                     accountChangeDetail.setExplain("优惠券收入");
                     driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
-                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                    accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
                     driverService.updateById(driver);
                     accountChangeDetailService.insert(accountChangeDetail);
 
@@ -1238,13 +1323,13 @@
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
-                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("折扣优惠收入");
                 driver.setCommission(driver.getCommission() + order.getDiscountAmount());
-                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
 
@@ -1304,7 +1389,7 @@
         Transfer transfer = new Transfer();
         transfer.setDepositMerOrderId(merOrderId);
         transfer.setToUserId(toUserId);
-        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100)));
+        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
         transfer.setOrderName("补贴");
         transfer.setNotifyUrl(notifyUrl);
         transfer.setParameter1(id.toString());
@@ -1326,7 +1411,7 @@
 
 
     /**
-     * 计算抽成和分佣
+     * 计算线下收款的抽成和分佣
      * @param order
      */
     public void saveRevenue(Order order) throws Exception{
@@ -1334,41 +1419,67 @@
         //司机分佣和司机推荐用户首单奖励都在平台的抽佣中扣除,剩余的为平台抽佣。
         Driver driver = driverService.selectById(order.getDriverId());
         AppUser appUser = appUserService.selectById(order.getUserId());
+
+        //司机推荐首单收入
+        List<Integer> state = Arrays.asList(107, 108, 109);
+        int count = this.selectCount(new EntityWrapper<Order>().eq("userId", order.getUserId()).eq("status", 1).in("state", state));
+        if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){
+            Driver driver1 = driverService.selectById(appUser.getInviterId());
+            //首单积分奖励
+            SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
+            JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent());
+            Integer num4 = jsonObject2.getInteger("num4");
+            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setUserType(2);
+            accountChangeDetail.setUserId(driver1.getId());
+            accountChangeDetail.setType(2);
+            accountChangeDetail.setChangeType(5);
+            accountChangeDetail.setOrderId(order.getId());
+            accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
+            accountChangeDetail.setExplain("邀请用户首单积分奖励");
+            accountChangeDetail.setCreateTime(new Date());
+            driver1.setIntegral(driver1.getIntegral() + num4);
+            accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
+            accountChangeDetailService.insert(accountChangeDetail);
+            driverService.updateById(driver1);
+        }
+
+
         Double payMoney = order.getPayMoney();
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3));
-        Double n = 0D;
         if(null != systemConfig){
             JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
             Double num2 = jsonObject.getDouble("num2");
             Double num3 = jsonObject.getDouble("num3");
-            n = num3;
-            if(order.getPayMoney() >= num2){
-                payMoney = payMoney - num3;//司机收入
+            if(order.getOrderMoney() >= num2){//订单金额大于num2才有抽佣金
+                payMoney = payMoney - num3;
+
+                //有分佣的情况,分佣的金额从司机充值金额中扣除转给平台,再由平台转账给各个分佣对象
                 SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2));
                 if(null != systemConfig1){
                     JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent());
                     //司机推荐首单收入
-                    List<Integer> state = Arrays.asList(108, 109);
-                    int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state));
                     if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){
                         Double num1 = jsonObject1.getDouble("num1");
                         num1 = (num3 >= num1 ? num1 : num3);
 
                         if(num1 > 0){
                             Driver driver1 = driverService.selectById(appUser.getInviterId());
+                            //首单积分奖励
                             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                             accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
                             accountChangeDetail.setUserType(2);
                             accountChangeDetail.setUserId(driver1.getId());
                             accountChangeDetail.setType(1);
                             accountChangeDetail.setChangeType(5);
-                            accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
-                            accountChangeDetail.setExplain("订单分佣收入");
+                            accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                            accountChangeDetail.setExplain("邀请用户首单奖励");
                             accountChangeDetail.setCreateTime(new Date());
                             driver1.setCommission(driver1.getCommission() + num1);
-                            accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
-                            driverService.updateById(driver1);
+                            accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                             accountChangeDetailService.saveData(accountChangeDetail);
+                            driverService.updateById(driver1);
 
                             Revenue revenue = new Revenue();
                             revenue.setType(2);
@@ -1407,7 +1518,7 @@
                     }
 
                     //开始处理层级抽佣
-                    if(null != driver.getInviterType() && driver.getInviterType() == 2){
+                    if(num3 > 0 && null != driver.getInviterType() && driver.getInviterType() == 2){
                         Driver driver1 = driverService.selectById(driver.getInviterId());//一级司机
                         if(null != driver1 && null != driver1.getInviterType() && driver1.getInviterType() == 2){
                             Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机
@@ -1433,11 +1544,11 @@
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver1.setCommission(driver1.getCommission() + num5);
-                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1483,11 +1594,11 @@
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver2.setCommission(driver2.getCommission() + num6);
-                                    accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1533,11 +1644,11 @@
                                     accountChangeDetail.setUserId(driver3.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
+                                    accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver3.setCommission(driver3.getCommission() + num7);
-                                    accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
+                                    accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission());
                                     driverService.updateById(driver3);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1586,11 +1697,11 @@
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver1.setCommission(driver1.getCommission() + num3_);
-                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1636,11 +1747,11 @@
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver2.setCommission(driver2.getCommission() + num4);
-                                    accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1689,11 +1800,11 @@
                                 accountChangeDetail.setUserId(driver1.getId());
                                 accountChangeDetail.setType(1);
                                 accountChangeDetail.setChangeType(5);
-                                accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                 accountChangeDetail.setExplain("订单分佣收入");
                                 accountChangeDetail.setCreateTime(new Date());
                                 driver1.setCommission(driver1.getCommission() + num2_);
-                                accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                 driverService.updateById(driver1);
                                 accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1760,8 +1871,9 @@
                 }
             }
         }
-        //司机余额扣减抽佣金额
+        //司机余额扣减抽佣金额,将金额先分账给平台
         if(order.getPayMoney() > payMoney){
+            driver = driverService.selectById(order.getDriverId());
             Double m = order.getPayMoney() - payMoney;
             AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
             accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
@@ -1770,11 +1882,11 @@
             accountChangeDetail.setType(1);
             accountChangeDetail.setChangeType(9);
             accountChangeDetail.setOrderId(order.getId());
-            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance());
             accountChangeDetail.setExplain("线下收款服务费支出");
             accountChangeDetail.setCreateTime(new Date());
             driver.setBalance(driver.getBalance() - m);
-            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance());
             driverService.updateById(driver);
             accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1829,7 +1941,7 @@
         List<PamentOrderUser> splitList = new ArrayList<>();
         PamentOrderUser pamentOrderUser = new PamentOrderUser();
         pamentOrderUser.setSplitUserId(merchantNumber);
-        pamentOrderUser.setSplitAmount(amount.toString());
+        pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
         pamentOrderUser.setSplitType("1");
         splitList.add(pamentOrderUser);
         complete.setSplitList(splitList);
@@ -1876,11 +1988,11 @@
         Receive receive = new Receive();
         receive.setOriginalMerOrderId(orderNumber);
         receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
-        receive.setRcvAmount(divisionRecord.getAmount().toString());
+        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
         List<ReceiveUser> splitList = new ArrayList<>();
         ReceiveUser receiveUser = new ReceiveUser();
         receiveUser.setSplitUserId(merchantNumber);
-        receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString());
+        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
         splitList.add(receiveUser);
         receive.setSplitList(splitList);
         TrhRequest<Receive> request = new TrhRequest();
@@ -1991,6 +2103,10 @@
             if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){
                 break;
             }
+            if(i == performanceRankingWarppers.size() - 1){
+                position = 0;
+                d = 0D;
+            }
         }
         MyAchievementWarpper myAchievementWarpper = new MyAchievementWarpper();
         myAchievementWarpper.setType("订单");
@@ -2012,6 +2128,10 @@
             }
             if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){
                 break;
+            }
+            if(i == performanceRankingWarppers.size() - 1){
+                position = 0;
+                d = 0D;
             }
         }
         myAchievementWarpper = new MyAchievementWarpper();
@@ -2035,6 +2155,10 @@
             if(performanceRankingWarpper.getDriverId().compareTo(driverId) == 0){
                 break;
             }
+            if(i == performanceRankingWarppers.size() - 1){
+                position = 0;
+                d = 0D;
+            }
         }
         myAchievementWarpper = new MyAchievementWarpper();
         myAchievementWarpper.setType("佣金");
@@ -2051,7 +2175,8 @@
      */
     @Override
     public void completeCollection() {
-        List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1).eq("payType", 3));
+        List<Order> orders = this.selectList(new EntityWrapper<Order>().eq("state", 107).eq("status", 1)
+                .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 120 <= UNIX_TIMESTAMP(now())"));
         for (Order order : orders) {
             order.setPayTime(new Date());
             if(null != order.getCouponId()){
@@ -2067,13 +2192,13 @@
                     accountChangeDetail.setUserType(2);
                     accountChangeDetail.setUserId(order.getDriverId());
                     accountChangeDetail.setCreateTime(new Date());
-                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                    accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
                     accountChangeDetail.setType(1);
                     accountChangeDetail.setChangeType(7);
                     accountChangeDetail.setOrderId(order.getId());
                     accountChangeDetail.setExplain("优惠券收入");
                     driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
-                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                    accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
                     driverService.updateById(driver);
                     accountChangeDetailService.insert(accountChangeDetail);
 
@@ -2110,13 +2235,13 @@
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
-                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("折扣优惠收入");
                 driver.setCommission(driver.getCommission() + order.getDiscountAmount());
-                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
 
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
index 0bca408..7ebd975 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/RevenueServiceImpl.java
@@ -55,7 +55,7 @@
     @Override
     public List<CommissionListWarpper> queryCommissionList(Integer driverId, String time, Integer pageNum, Integer pageSize) throws Exception {
         pageNum = (pageNum - 1) * pageSize;
-        Wrapper<Revenue> wrapper = new EntityWrapper<Revenue>().eq("type", 2).eq("userType", 2)
+        Wrapper<Revenue> wrapper = new EntityWrapper<Revenue>().eq("userType", 2)
                 .eq("userId", driverId);
         if(ToolUtil.isNotEmpty(time)){
             wrapper.eq("DATE_FORMAT(createTime, '%Y年%m月')", time);
@@ -66,20 +66,7 @@
             CommissionListWarpper commissionListWarpper = new CommissionListWarpper();
             commissionListWarpper.setCreateTime(revenue.getCreateTime().getTime());
             commissionListWarpper.setAmount(revenue.getAmount());
-            commissionListWarpper.setUserType(2);
-            Order order = orderService.selectById(revenue.getOrderId());
-            if(null != order.getUserId()){
-                AppUser appUser = appUserService.selectById(order.getUserId());
-                if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && appUser.getInviterId().compareTo(driverId) == 0){
-                    commissionListWarpper.setUserType(1);
-                }
-            }
-            if(null == commissionListWarpper.getUserType()){
-                Driver driver = driverService.selectById(order.getDriverId());
-                if(null != driver.getInviterType() && driver.getInviterType() == 2 && driver.getInviterId().compareTo(driverId) == 0){
-                    commissionListWarpper.setUserType(2);
-                }
-            }
+            commissionListWarpper.setUserType(revenue.getType());
             list.add(commissionListWarpper);
         }
         return list;
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java
index bd61eeb..d69330f 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/MallBook/util/TrhRequest.java
@@ -7,6 +7,8 @@
 import com.supersavedriving.driver.modular.system.util.MallBook.config.ChannelConfig;
 import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceRequest;
 import com.supersavedriving.driver.modular.system.util.MallBook.model.InterfaceResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @Author xiaogc
@@ -14,17 +16,19 @@
  */
 public class TrhRequest<T> {
 
+    Logger logger = LoggerFactory.getLogger(TrhRequest.class);
+
     public InterfaceResponse execute(T t, String serverCode) {
         InterfaceRequest<T> request = new InterfaceRequest(t, serverCode);
-        System.out.println("mallbook请求参数:" + JSONUtil.toJsonStr(request));
+        logger.warn("mallbook请求参数:" + JSONUtil.toJsonStr(request));
         String result = HttpUtil.post(ChannelConfig.payUrl, BeanUtil.beanToMap(request));
-        System.out.println("mallbook响应参数:" + result);
+        logger.warn("mallbook响应参数:" + result);
         InterfaceResponse response = JSONUtil.toBean(result, InterfaceResponse.class);
         boolean verify = RSASignature.validate(response.content(), response.getSign());
         if (!verify) {
-            throw new ValidateException("签名验证失败");
+            logger.warn("签名验证失败");
         } else {
-            System.out.printf("签名验证通过");
+            logger.warn("签名验证通过");
         }
         return response;
     }
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java
index 91ff011..78fa9da 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/PushUtil.java
@@ -164,6 +164,43 @@
     }
 
 
+
+    /**
+     * 系统推单推送 附加(防止 用户推单后,范围内的司机20s 内接不到单的补充方法)
+     * @param id            接受对象id
+     * @param type          接受对象类型(1=用户,2=司机)
+     */
+    public void pushGrabOrderExtras(Integer id, Integer type){
+        JSONObject msg = new JSONObject();
+        msg.put("code", 200);
+        msg.put("msg", "SUCCESS");
+        msg.put("method", "PUSH_ORDER");
+
+        Map<String, Object> map = new HashMap<>();
+        msg.put("data", map);
+
+        //调用推送
+        HttpHeaders headers = new HttpHeaders();
+        // 以表单的方式提交
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        //将请求头部和参数合成一个请求
+        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+        params.add("msg", msg.toJSONString());
+        params.add("id", id.toString());
+        params.add("type", type.toString());
+        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
+        String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class);
+        JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
+        if(jsonObject1.getIntValue("code") != 200){
+            logger.debug(jsonObject1.getString("msg"));
+            System.err.println(jsonObject1.getString("msg"));
+        }
+    }
+
+
+
+
+
     /**
      * 推送订单数据
      * @param id
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java
index 359c6d8..b3c916f 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/BalanceDetailWarpper.java
@@ -15,7 +15,7 @@
     private String code;
     @ApiModelProperty("时间")
     private Long createTime;
-    @ApiModelProperty("类型(1=订单收入,3=充值,4=提现,7=优惠券收入,8=保险支付)")
+    @ApiModelProperty("类型(3=充值,8=保险支付,9=订单信息费)")
     private Integer type;
     @ApiModelProperty("金额")
     private Double amount;
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java
index a488b41..61bd464 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/CommissionListWarpper.java
@@ -13,7 +13,7 @@
 public class CommissionListWarpper {
     @ApiModelProperty("日期")
     private Long createTime;
-    @ApiModelProperty("推广类型(1=用户,2=司机)")
+    @ApiModelProperty("推广类型(1=线上收入,2=佣金,3=优惠券)")
     private Integer userType;
     @ApiModelProperty("获取佣金")
     private Double amount;
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java
index ff93e22..649f11c 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/warpper/DriverRegisterWarpper.java
@@ -26,6 +26,8 @@
     private String idcardFront;
     @ApiModelProperty(value = "身份证背面照", required = true, dataType = "string")
     private String idcardBack;
+    @ApiModelProperty(value = "驾驶证领证时间(2023-01-01)", required = true, dataType = "string")
+    private String firstCertificateTime;
     @ApiModelProperty(value = "驾驶证照片", required = true, dataType = "string")
     private String driverLicense;
     @ApiModelProperty(value = "邀约人类型(1=用户,2=司机)", required = false, dataType = "int")
diff --git a/driver/guns-admin/src/main/resources/application.yml b/driver/guns-admin/src/main/resources/application.yml
index f409d2c..b49df62 100644
--- a/driver/guns-admin/src/main/resources/application.yml
+++ b/driver/guns-admin/src/main/resources/application.yml
@@ -110,9 +110,9 @@
 
 #支付回调地址
 #正式环境
-#callbackPath: https://okyueche.com:443/user
+callbackPath: https://chaoshengdaijia.com:443/driver
 #测试环境
-callbackPath: http://121.37.15.157:80/driver
+#callbackPath: http://121.37.15.157:80/driver
 
 
 ---
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 884bbf1..7117d15 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
@@ -3,6 +3,7 @@
 //import com.alibaba.fastjson.JSON;
 //import com.baomidou.mybatisplus.mapper.EntityWrapper;
 //import com.supersavedriving.driver.modular.system.model.DriverBank;
+//import com.supersavedriving.driver.modular.system.model.Order;
 //import com.supersavedriving.driver.modular.system.model.WeatherCity;
 //import com.supersavedriving.driver.modular.system.service.*;
 //import com.supersavedriving.driver.modular.system.util.ResultUtil;
@@ -50,7 +51,10 @@
 ////        ResultUtil resultUtil1 = driverBankService.delDriverBank(1, 1);
 ////        System.err.println(JSON.toJSONString(resultUtil1));
 //
-//        ResultUtil resultUtil = driverService.balanceRecharge(1, 1D);
-//        System.err.println(JSON.toJSONString(resultUtil));
+////        ResultUtil resultUtil = driverService.balanceRecharge(1, 1D);
+////        System.err.println(JSON.toJSONString(resultUtil));
+//
+//        Order order = orderService.selectById(2019);
+//        orderService.saveRevenue(order);
 //    }
 //}
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
index 11fe076..42b93e5 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java
@@ -63,7 +63,7 @@
  * @Date 2023-02-20 09:18:08
  */
 @Controller
-@RequestMapping("/tAgent")
+@RequestMapping("")
 public class TAgentController extends BaseController {
 
     private String PREFIX = "/system/tAgent/";
@@ -96,7 +96,7 @@
     /**
      * 跳转到首页
      */
-    @RequestMapping("")
+    @RequestMapping("/tAgent")
     public String index(Model model) {
         model.addAttribute("userType", Objects.requireNonNull(ShiroKit.getUser()).getRoleType());
         return PREFIX + "tAgent.html";
@@ -105,7 +105,7 @@
     /**
      * 跳转到添加
      */
-    @RequestMapping("/tAgent_add")
+    @RequestMapping("/tAgent/tAgent_add")
     public String tAgentAdd() {
         return PREFIX + "tAgent_add.html";
     }
@@ -113,7 +113,7 @@
     /**
      * 跳转到修改
      */
-    @RequestMapping("/tAgent_update/{tAgentId}")
+    @RequestMapping("/tAgent/tAgent_update/{tAgentId}")
     public String tAgentUpdate(@PathVariable Integer tAgentId, Model model) {
         TAgent tAgent = tAgentService.selectById(tAgentId);
         model.addAttribute("item",tAgent);
@@ -124,7 +124,7 @@
     /**
      * 跳转详情页面
      */
-    @RequestMapping("/agentDetail")
+    @RequestMapping("/tAgent/agentDetail")
     public String agentDetail(Integer agentId, Model model) {
         tAgentService.detail(agentId,model);
         return PREFIX + "tAgentDetail.html";
@@ -133,7 +133,7 @@
     /**
      * 跳转区域页面
      */
-    @RequestMapping("/areaDetail")
+    @RequestMapping("/tAgent/areaDetail")
     public String areaDetail(String area,String areaId,Model model) {
 //        String[] split1 = areaId.split("/");
 //        List<TRegion> tRegions = tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
@@ -211,7 +211,7 @@
     /**
      * 获取列表
      */
-    @RequestMapping(value = "/list")
+    @RequestMapping(value = "/tAgent/list")
     @ResponseBody
     public Object list(String principal,String principalPhone,String createTime,Integer status) {
         EntityWrapper<TAgent> wrapper = tAgentService.getAgentWrapper(principal,principalPhone,createTime,status);
@@ -223,7 +223,7 @@
     /**
      * 获取列表
      */
-    @RequestMapping(value = "/list-back")
+    @RequestMapping(value = "/tAgent/list-back")
     @ResponseBody
     public Object listBack(String condition) {
         return tAgentService.selectList(null);
@@ -232,7 +232,7 @@
     /**
      * 新增
      */
-    @RequestMapping(value = "/add")
+    @RequestMapping(value = "/tAgent/add")
     @ResponseBody
     @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
     public Object add(TAgent tAgent) {
@@ -309,7 +309,7 @@
             registerVO.setUserType("0");
             registerVO.setUserName(tAgent.getMerchantName());
             registerVO.setCertId(tAgent.getMerchantIDCode());
-            registerVO.setNotifyUrl(callbackPath + "/tAgent/microenterpriseCallback");
+            registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback");
             TrhRequest<Register> request = new TrhRequest();
             InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE);
             if("0000".equals(execute.getCode())){
@@ -383,7 +383,7 @@
             registerVO.setProvCode(tAgent.getProvCodeEnterprise());
             registerVO.setAreaCode(tAgent.getAreaCodeEnterprise());
             registerVO.setFileNo(tAgent.getFileNo());
-            registerVO.setNotifyUrl(callbackPath + "/tAgent/microenterpriseCallback");
+            registerVO.setNotifyUrl(callbackPath + "/base/tAgent/microenterpriseCallback");
             registerVO.setParameter1(tAgent.getId().toString());
 
             TrhRequest<Register> request = new TrhRequest();
@@ -455,7 +455,7 @@
      * 注册商户回调
      */
     @ResponseBody
-    @PostMapping("/microenterpriseCallback")
+    @PostMapping("/base/tAgent/microenterpriseCallback")
     public void microenterpriseCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
         try {
             if("0000".equals(interfaceResponse.getCode())) {
@@ -532,7 +532,7 @@
     /**
      * 删除
      */
-    @RequestMapping(value = "/delete")
+    @RequestMapping(value = "/tAgent/delete")
     @ResponseBody
     public Object delete(@RequestParam Integer tAgentId) {
         tAgentService.deleteById(tAgentId);
@@ -542,7 +542,7 @@
     /**
      * 修改用户状态
      */
-    @RequestMapping(value = "/update-status")
+    @RequestMapping(value = "/tAgent/update-status")
     @ResponseBody
     public Object updateStatus(Integer id,Integer status) {
         TAgent tAgent = tAgentService.selectById(id);
@@ -586,7 +586,7 @@
     /**
      * 修改
      */
-    @RequestMapping(value = "/update")
+    @RequestMapping(value = "/tAgent/update")
     @ResponseBody
     public Object update(TAgent tAgent) {
         tAgent.setPrincipal(tAgent.getPrincipal().replace(" ",""));
@@ -597,7 +597,7 @@
     /**
      * 详情
      */
-    @RequestMapping(value = "/detail/{tAgentId}")
+    @RequestMapping(value = "/tAgent/detail/{tAgentId}")
     @ResponseBody
     public Object detail(@PathVariable("tAgentId") Integer tAgentId) {
         return tAgentService.selectById(tAgentId);
@@ -605,21 +605,21 @@
 
 
     @ApiOperation(value = "省市区查询",notes="省市区查询")
-    @RequestMapping(value = "/area")
+    @RequestMapping(value = "/tAgent/area")
     @ResponseBody
     public Object area() {
         return tRegionService.getAreaList();
     }
 
     @ApiOperation(value = "省查询",notes="省查询")
-    @RequestMapping(value = "/areaProvince")
+    @RequestMapping(value = "/tAgent/areaProvince")
     @ResponseBody
     public Object areaProvince(Model model) {
         return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id", 0));
     }
 
     @ApiOperation(value = "市区查询",notes="市区查询")
-    @RequestMapping(value = "/areaCity")
+    @RequestMapping(value = "/tAgent/areaCity")
     @ResponseBody
     public Object areaCity(Integer parentId) {
         return tRegionService.selectList(new EntityWrapper<TRegion>().eq("parent_id",parentId));
@@ -627,7 +627,7 @@
 
 
     @ApiOperation(value = "导出代理商列表",notes="导出代理商列表")
-    @RequestMapping(value = "/export")
+    @RequestMapping(value = "/tAgent/export")
     @ResponseBody
     public void export(String principal,String principalPhone,Integer status,String createTime, HttpServletResponse response) {
         try {
@@ -681,7 +681,7 @@
 
 
     @ResponseBody
-    @RequestMapping(value = "/uploadFile")
+    @RequestMapping(value = "/tAgent/uploadFile")
     public String uploadFile(MultipartFile file){
         File srcFile = null;
         String originalFilename = file.getOriginalFilename();
@@ -744,7 +744,7 @@
      * 跳转到企业信息页
      * @return
      */
-    @GetMapping("/showEnterprisePage")
+    @GetMapping("/tAgent/showEnterprisePage")
     public String showEnterprisePage(Model model){
         ShiroUser user = ShiroKit.getUser();
         Integer objectId = user.getObjectId();
@@ -764,7 +764,7 @@
         model.addAttribute("item", tAgent);
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         model.addAttribute("socialCreditCodeExpires", roleType == 1 ? "" :Objects.isNull(tAgent.getSocialCreditCodeExpires())?"": sdf.format(tAgent.getSocialCreditCodeExpires()));
-        model.addAttribute("certIdExpires", roleType == 1 ? "" : sdf.format(tAgent.getCertIdExpires()));
+        model.addAttribute("certIdExpires", roleType == 1 ? "" : null == tAgent.getCertIdExpires() ? "" : sdf.format(tAgent.getCertIdExpires()));
         Wrapper<SettlementRecord> settlementRecordWrapper = new EntityWrapper<SettlementRecord>().eq("type", roleType == 1 ? 1 : 2);
         if(roleType == 2){
             settlementRecordWrapper.eq("objectId", objectId);
@@ -794,7 +794,7 @@
      * @return
      */
     @ResponseBody
-    @PostMapping("/withdrawCash")
+    @PostMapping("/tAgent/withdrawCash")
     public ResultUtil withdrawCash(){
         ShiroUser user = ShiroKit.getUser();
         Integer objectId = user.getObjectId();
@@ -816,7 +816,7 @@
         InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE);
         if("0000".equals(execute.getCode())){
             JSONObject jsonObject = JSON.parseObject(execute.getResult());
-            double settledAmount = jsonObject.getDoubleValue("settledAmount");
+            Integer settledAmount = jsonObject.getInteger("settledAmount");
             if(0 == settledAmount){
                 return ResultUtil.error("余额不足");
             }
@@ -825,17 +825,17 @@
             if(roleType == 3){
                 settlementRecord.setObjectId(tAgent.getId());
             }
-            settlementRecord.setAmount(settledAmount);
+            settlementRecord.setAmount(Double.valueOf(settledAmount) / 100);
             settlementRecord.setInsertTime(new Date());
             settlementRecordService.insert(settlementRecord);
 
 
             Withdraw withdraw = new Withdraw();
             withdraw.setUserId(tAgent.getMerchantNumber());
-            withdraw.setAmount(settledAmount + "");
+            withdraw.setAmount(String.valueOf(settledAmount));
             withdraw.setOrderName("账户余额提现");
             withdraw.setRemark("账户余额提现");
-            withdraw.setNotifyUrl(callbackPath + "/tAgent/withdrawCashCallback");
+            withdraw.setNotifyUrl(callbackPath + "/base/tAgent/withdrawCashCallback");
             withdraw.setParameter1(settlementRecord.getId().toString());
             TrhRequest<Withdraw> request1 = new TrhRequest();
             InterfaceResponse execute1 = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现)
@@ -871,7 +871,7 @@
      * @param interfaceResponse
      */
     @ResponseBody
-    @PostMapping("/withdrawCashCallback")
+    @PostMapping("/base/tAgent/withdrawCashCallback")
     public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response) {
         try {
             if("0000".equals(interfaceResponse.getCode())){
@@ -908,7 +908,7 @@
      * @return
      */
     @ResponseBody
-    @PostMapping("/accountRecharge")
+    @PostMapping("/tAgent/accountRecharge")
     public ResultUtil accountRecharge(Double amount){
         try {
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
@@ -927,8 +927,8 @@
             deposit.setOrderName("补贴充值");
             deposit.setPayType("ALI_CB");
             deposit.setTerminalIp(InetAddress.getLocalHost().getHostAddress());
-            deposit.setFrontUrl(callbackPath + "/tAgent/accountRechargeCallback");
-            deposit.setNotifyUrl(callbackPath + "/tAgent/accountRechargeCallback");
+            deposit.setFrontUrl(callbackPath + "/base/tAgent/accountRechargeCallback");
+            deposit.setNotifyUrl(callbackPath + "/base/tAgent/accountRechargeCallback");
             deposit.setParameter1(rechargeRecord.getId().toString());
             TrhRequest<Deposit> request = new TrhRequest();
             InterfaceResponse execute = request.execute(deposit, Deposit.SERVICE_CODE);
@@ -1009,7 +1009,7 @@
      * @param interfaceResponse
      */
     @ResponseBody
-    @PostMapping("/accountRechargeCallback")
+    @PostMapping("/base/tAgent/accountRechargeCallback")
     public void accountRechargeCallback(@RequestBody InterfaceResponse interfaceResponse, HttpServletResponse response){
         try {
             if("0000".equals(interfaceResponse.getCode())){
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java
index 5eb8fac..bb8808f 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/DictController.java
@@ -59,7 +59,6 @@
     /**
      * 跳转到修改字典
      */
-    @Permission(Const.ADMIN_NAME)
     @RequestMapping("/dict_edit/{dictId}")
     public String deptUpdate(@PathVariable Integer dictId, Model model) {
         Dict dict = dictService.selectById(dictId);
@@ -77,7 +76,6 @@
      */
     @BussinessLog(value = "添加字典记录", key = "dictName,dictValues", dict = DictMap.class)
     @RequestMapping(value = "/add")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object add(String dictCode,String dictTips,String dictName, String dictValues) {
         if (ToolUtil.isOneEmpty(dictCode,dictName, dictValues)) {
@@ -91,7 +89,6 @@
      * 获取所有字典列表
      */
     @RequestMapping(value = "/list")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object list(String condition) {
         List<Map<String, Object>> list = this.dictService.list(condition);
@@ -102,7 +99,6 @@
      * 字典详情
      */
     @RequestMapping(value = "/detail/{dictId}")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object detail(@PathVariable("dictId") Integer dictId) {
         return dictService.selectById(dictId);
@@ -113,7 +109,6 @@
      */
     @BussinessLog(value = "修改字典", key = "dictName,dictValues", dict = DictMap.class)
     @RequestMapping(value = "/update")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object update(Integer dictId,String dictCode,String dictName, String dictTips,String dictValues) {
         if (ToolUtil.isOneEmpty(dictId, dictCode, dictName, dictValues)) {
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java
index ef4d1c8..77bd526 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LogController.java
@@ -49,7 +49,6 @@
      * 查询操作日志列表
      */
     @RequestMapping("/list")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName, @RequestParam(required = false) Integer logType) {
         Page<OperationLog> page = new PageFactory<OperationLog>().defaultPage();
@@ -62,7 +61,6 @@
      * 查询操作日志详情
      */
     @RequestMapping("/detail/{id}")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object detail(@PathVariable Integer id) {
         OperationLog operationLog = operationLogService.selectById(id);
@@ -75,7 +73,6 @@
      */
     @BussinessLog(value = "清空业务日志")
     @RequestMapping("/delLog")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object delLog() {
         SqlRunner.db().delete("delete from sys_operation_log");
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java
index 6cb2ee7..52bc385 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/LoginLogController.java
@@ -46,7 +46,6 @@
      * 查询登录日志列表
      */
     @RequestMapping("/list")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object list(@RequestParam(required = false) String beginTime, @RequestParam(required = false) String endTime, @RequestParam(required = false) String logName) {
         Page<LoginLog> page = new PageFactory<LoginLog>().defaultPage();
@@ -60,7 +59,6 @@
      */
     @BussinessLog("清空登录日志")
     @RequestMapping("/delLoginLog")
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Object delLog() {
         SqlRunner.db().delete("delete from sys_login_log");
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
index 9857aae..b3480f8 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/MenuController.java
@@ -66,7 +66,6 @@
     /**
      * 跳转到菜单详情列表页面
      */
-    @Permission(Const.ADMIN_NAME)
     @RequestMapping(value = "/menu_edit/{menuId}")
     public String menuEdit(@PathVariable Long menuId, Model model) {
         if (ToolUtil.isEmpty(menuId)) {
@@ -97,7 +96,6 @@
     /**
      * 修该菜单
      */
-    @Permission(Const.ADMIN_NAME)
     @RequestMapping(value = "/edit")
     @BussinessLog(value = "修改菜单", key = "name", dict = MenuDict.class)
     @ResponseBody
@@ -117,7 +115,6 @@
     /**
      * 获取菜单列表
      */
-    @Permission(Const.ADMIN_NAME)
     @RequestMapping(value = "/list")
     @ResponseBody
     public Object list(@RequestParam(required = false) String menuName, @RequestParam(required = false) String level) {
@@ -128,7 +125,6 @@
     /**
      * 新增菜单
      */
-    @Permission(Const.ADMIN_NAME)
     @RequestMapping(value = "/add")
     @BussinessLog(value = "菜单新增", key = "name", dict = MenuDict.class)
     @ResponseBody
@@ -156,7 +152,6 @@
     /**
      * 删除菜单
      */
-    @Permission(Const.ADMIN_NAME)
     @RequestMapping(value = "/remove")
     @BussinessLog(value = "删除菜单", key = "menuId", dict = MenuDict.class)
     @ResponseBody
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java
index d518886..565e11e 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/RoleController.java
@@ -117,7 +117,6 @@
      */
     @RequestMapping(value = "/add")
     @BussinessLog(value = "添加角色", key = "name", dict = RoleDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip add(@Valid Role role, BindingResult result) {
         if (result.hasErrors()) {
@@ -135,7 +134,6 @@
      */
     @RequestMapping(value = "/edit")
     @BussinessLog(value = "修改角色", key = "name", dict = RoleDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip edit(@Valid Role role, BindingResult result) {
         if (result.hasErrors()) {
@@ -154,7 +152,6 @@
      */
     @RequestMapping(value = "/remove")
     @BussinessLog(value = "删除角色", key = "roleId", dict = RoleDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip remove(@RequestParam Integer roleId) {
         if (ToolUtil.isEmpty(roleId)) {
@@ -196,7 +193,6 @@
      */
     @RequestMapping("/setAuthority")
     @BussinessLog(value = "配置权限", key = "roleId,ids", dict = RoleDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip setAuthority(@RequestParam("roleId") Integer roleId, @RequestParam("ids") String ids) {
         if (ToolUtil.isOneEmpty(roleId)) {
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
index 0e6227c..65d89a1 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/system/UserMgrController.java
@@ -232,7 +232,6 @@
      */
     @RequestMapping("/add")
     @BussinessLog(value = "添加管理员", key = "account", dict = UserDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip add(@Valid UserDto user, BindingResult result) {
         if (result.hasErrors()) {
@@ -334,7 +333,6 @@
      */
     @RequestMapping("/reset")
     @BussinessLog(value = "重置管理员密码", key = "userId", dict = UserDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip reset(@RequestParam Integer userId) {
         if (ToolUtil.isEmpty(userId)) {
@@ -357,7 +355,6 @@
      */
     @RequestMapping("/freeze")
     @BussinessLog(value = "冻结用户", key = "userId", dict = UserDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip freeze(@RequestParam Integer userId) {
         if (ToolUtil.isEmpty(userId)) {
@@ -397,7 +394,6 @@
      */
     @RequestMapping("/unfreeze")
     @BussinessLog(value = "解除冻结用户", key = "userId", dict = UserDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip unfreeze(@RequestParam Integer userId) {
         if (ToolUtil.isEmpty(userId)) {
@@ -433,7 +429,6 @@
      */
     @RequestMapping("/setRole")
     @BussinessLog(value = "分配角色", key = "userId,roleIds", dict = UserDict.class)
-    @Permission(Const.ADMIN_NAME)
     @ResponseBody
     public Tip setRole(@RequestParam("userId") Integer userId, @RequestParam("roleIds") String roleIds) {
         if (ToolUtil.isOneEmpty(userId, roleIds)) {
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
index 8df779d..222aba3 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -55,7 +55,9 @@
                 userToCoupon.setExpireCount(validCount);
                 userToCoupon.setValidCount(0);
             }
-            userToCouponService.updateBatchById(collect2);
+            if(collect2.size() > 0){
+                userToCouponService.updateBatchById(collect2);
+            }
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -107,7 +109,9 @@
                     tAppUser.setIsException(2);
                 }
             }
-            appUserService.updateBatchById(appUserList);
+            if(appUserList.size() > 0){
+                appUserService.updateBatchById(appUserList);
+            }
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -154,7 +158,9 @@
                     }
                 }
             }
-            driverService.updateBatchById(driverList);
+            if(driverList.size() > 0){
+                driverService.updateBatchById(driverList);
+            }
         }catch (Exception e){
             e.printStackTrace();
         }
@@ -178,7 +184,9 @@
                     driver.setIsException(1);
                 }
             }
-            driverService.updateBatchById(driverList);
+            if(driverList.size() > 0){
+                driverService.updateBatchById(driverList);
+            }
         }catch (Exception e){
             e.printStackTrace();
         }
diff --git a/management/guns-admin/src/main/resources/application.yml b/management/guns-admin/src/main/resources/application.yml
index b527cff..a31209a 100644
--- a/management/guns-admin/src/main/resources/application.yml
+++ b/management/guns-admin/src/main/resources/application.yml
@@ -15,8 +15,8 @@
 
 spring:
   profiles:
-    active: dev
-#    active: produce
+#    active: dev
+    active: produce
   mvc:
     static-path-pattern: /static/**
     view:
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html
index aa3076d..c96219d 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/enterprisePage.html
@@ -71,7 +71,7 @@
                         </div>
                     </div>
                     <div class="form-group">
-                        <label class="col-sm-3 control-label">*公司名称:</label>
+                        <label class="col-sm-3 control-label">*姓名:</label>
                         <div class="col-sm-9">
                             <input class="form-control" id="merchantName" name="merchantName" value="${item.merchantName}" type="text" maxlength="20" placeholder="请输入">
                         </div>
@@ -140,8 +140,8 @@
                             <input class="form-control" id="legalPerson" name="legalPerson" value="${item.legalPerson}" type="text" maxlength="20" placeholder="请输入">
                         </div>
                     </div>
-                    <div class="form-group qy">
-                        <label class="col-sm-3 control-label">*法人身份证号:</label>
+                    <div class="form-group">
+                        <label class="col-sm-3 control-label">*身份证号:</label>
                         <div class="col-sm-9">
                             <input class="form-control" id="merchantIDCode" name="merchantIDCode" value="${item.merchantIDCode}" type="text" maxlength="20" placeholder="请输入">
                         </div>
@@ -294,12 +294,16 @@
         if(userType == 0){
             $('.qy').hide();
             $('#bankAcctType').html('<option value="2">对私</option>')
+            $('#merchantIDCode').parent('div').siblings('label').text('*身份证号')
+            $('#merchantName').parent('div').siblings('label').text('*姓名')
         }else{
             $('.qy').show();
             $('#bankAcctType').html('<option value="1">对公</option>')
+            $('#merchantIDCode').parent('div').siblings('label').text('*法人身份证号')
+            $('#merchantName').parent('div').siblings('label').text('*公司名称')
         }
     })
-    $('#userType').click();
+
 
     function initCity(id) {
         let city = "";
@@ -439,6 +443,8 @@
         $('#provCodeEnterprise').val($('#provCodeEnterprise1').val());
         initArea($('#provCodeEnterprise'), 'areaCodeEnterprise');
         $('#areaCodeEnterprise').val($('#areaCodeEnterprise1').val());
+
+        $('#userType').change();
     })
 </script>
 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
index 8ba5537..c58875d 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tAgent/tAgent_add.html
@@ -68,7 +68,7 @@
                         </div>
                     </div>
                     <div class="form-group">
-                        <label class="col-sm-3 control-label">*公司名称:</label>
+                        <label class="col-sm-3 control-label">*姓名:</label>
                         <div class="col-sm-9">
                             <input class="form-control" id="merchantName" name="merchantName" type="text" maxlength="20" placeholder="请输入">
                         </div>
@@ -122,7 +122,6 @@
                         <label class="col-sm-3 control-label">*银行账户类型:</label>
                         <div class="col-sm-9">
                             <select class="form-control" id="bankAcctType">
-                                <option value="1">对公</option>
                                 <option value="2">对私</option>
                             </select>
                         </div>
@@ -137,8 +136,8 @@
                             <input class="form-control" id="legalPerson" name="legalPerson" type="text" maxlength="20" placeholder="请输入">
                         </div>
                     </div>
-                    <div class="form-group qy">
-                        <label class="col-sm-3 control-label">*法人身份证号:</label>
+                    <div class="form-group">
+                        <label class="col-sm-3 control-label">*身份证号:</label>
                         <div class="col-sm-9">
                             <input class="form-control" id="merchantIDCode" name="merchantIDCode" type="text" maxlength="20" placeholder="请输入">
                         </div>
@@ -253,9 +252,13 @@
         if(userType == 0){
             $('.qy').hide();
             $('#bankAcctType').html('<option value="2">对私</option>')
+            $('#merchantIDCode').parent('div').siblings('label').text('*身份证号')
+            $('#merchantName').parent('div').siblings('label').text('*姓名')
         }else{
             $('.qy').show();
             $('#bankAcctType').html('<option value="1">对公</option>')
+            $('#merchantIDCode').parent('div').siblings('label').text('*法人身份证号')
+            $('#merchantName').parent('div').siblings('label').text('*公司名称')
         }
     })
 
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java
index f039b71..d071914 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/api/AppUserController.java
@@ -16,6 +16,7 @@
 import com.supersavedriving.user.modular.system.util.UUIDUtil;
 import com.supersavedriving.user.modular.system.util.huawei.OBSUtil;
 import com.supersavedriving.user.modular.system.util.huawei.SMSUtil;
+import com.supersavedriving.user.modular.system.util.weChat.WeChatUtil;
 import com.supersavedriving.user.modular.system.warpper.*;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -63,6 +64,28 @@
     @Autowired
     private RedisUtil redisUtil;
 
+    @Autowired
+    private WeChatUtil weChatUtil;
+
+
+
+    @ResponseBody
+    @PostMapping("/base/appUser/getUrlLink")
+//    @ServiceLog(name = "获取跳转微信url_link", url = "/base/appUser/appUserLogin")
+    @ApiOperation(value = "获取跳转微信url_link", tags = {"用户端-首页"}, notes = "")
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "跳转小程序路径", name = "path", required = true, dataType = "string"),
+            @ApiImplicitParam(value = "跳转的附带参数", name = "query", required = false, dataType = "string"),
+    })
+    public ResponseWarpper<String> getUrlLink(String path, String query){
+        try {
+            String urlLink = weChatUtil.getUrlLink(path, query, "release");
+            return ResponseWarpper.success(urlLink);
+        }catch (Exception e){
+            e.printStackTrace();
+            return new ResponseWarpper(500, e.getMessage());
+        }
+    }
 
 
 
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 d440b13..f268da2 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
@@ -349,7 +349,6 @@
 
     /**
      * 订单微信支付回调处理
-     * @param request
      * @param response
      */
     @ResponseBody
@@ -458,13 +457,13 @@
                             List<Revenue> revenues = revenueService.selectList(new EntityWrapper<Revenue>().eq("userType", 2).eq("orderId", order.getId()));
                             Receive receive = new Receive();//确认收货
                             receive.setOriginalMerOrderId(merOrderId);
-                            receive.setRcvAmount(String.valueOf(order.getPayMoney() * 100));
+                            receive.setRcvAmount(String.valueOf(Double.valueOf(order.getPayMoney() * 100).intValue()));
                             List<ReceiveUser> splitList = new ArrayList<>();
                             for (Revenue revenue : revenues) {
                                 Driver driver = driverService.selectById(revenue.getUserId());
                                 ReceiveUser receiveUser = new ReceiveUser();
                                 receiveUser.setSplitUserId(driver.getMerchantNumber());
-                                receiveUser.setRcvSplitAmount(revenue.getAmount().toString());
+                                receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(revenue.getAmount() * 100).intValue()));
                                 splitList.add(receiveUser);
                             }
                             receive.setSplitList(splitList);
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java
index fe5bbb7..6479e28 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/auth/AuthIntercepter.java
@@ -25,7 +25,7 @@
 		String appid = req.getParameter("appid");
 		String sign = req.getParameter("sign");
         ResultUtil resultUtil = authService.checkSyncAuth(appid, sign, req);
-        if (resultUtil.getCode() != 200) {
+        if (resultUtil.getCode() != 10000) {
 			res.setStatus(HttpStatus.OK.value());
 			res.setHeader("Content-type", "text/html;charset=UTF-8");
 			res.getWriter().print(JSON.toJSONString(resultUtil));//Res.Failure("req timeout, please try again")
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java
index 5c54a54..40e672e 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/Agent.java
@@ -20,86 +20,180 @@
      * 主键
      */
     @TableId(value = "id", type = IdType.AUTO)
-    @TableField("id")
     private Integer id;
     /**
      * 负责人姓名
      */
-    @TableField("principal")
+    @TableField(value = "principal")
     private String principal;
     /**
      * 负责人电话
      */
-    @TableField("principalPhone")
+    @TableField(value = "principalPhone")
     private String principalPhone;
     /**
      * 邮箱
      */
-    @TableField("email")
+    @TableField(value = "email")
     private String email;
-    /**
-     * 代理区域省名称
-     */
-    @TableField("provinceName")
-    private String provinceName;
     /**
      * 代理区域省编号
      */
-    @TableField("provinceCode")
+    @TableField(value = "provinceCode")
     private String provinceCode;
+    /**
+     * 代理区域省名称
+     */
+    @TableField(value = "provinceName")
+    private String provinceName;
     /**
      * 代理区域市编号
      */
-    @TableField("cityCode")
+    @TableField(value = "cityCode")
     private String cityCode;
     /**
      * 代理区域市名称
      */
-    @TableField("cityName")
+    @TableField(value = "cityName")
     private String cityName;
     /**
      * 状态(1=正常,2=冻结,3=删除)
      */
-    @TableField("status")
+    @TableField(value = "status")
     private Integer status;
     /**
      * 添加时间
      */
-    @TableField("createTime")
+    @TableField(value = "createTime")
     private Date createTime;
-    /**
-     * 开户银行
-     */
-    @TableField("bankDeposit")
-    private String bankDeposit;
-    /**
-     * 银行账号
-     */
-    @TableField("bankAccount")
-    private String bankAccount;
     /**
      * 客服电话
      */
-    @TableField("serviceCalls")
+    @TableField(value = "serviceCalls")
     private String serviceCalls;
+    /**
+     * 商户类型(1=个体工商户,2=企业)
+     */
+    @TableField("userType")
+    private Integer userType;
+    /**
+     * 公司名称
+     */
+    @TableField("merchantName")
+    private String merchantName;
+    /**
+     * 经营范围
+     */
+    @TableField("businessScope")
+    private String businessScope;
+    /**
+     * 统一社会信用码
+     */
+    @TableField("socialCreditCode")
+    private String socialCreditCode;
+    /**
+     * 统一社会信用证有效期
+     */
+    @TableField("socialCreditCodeExpires")
+    private Date socialCreditCodeExpires;
+    /**
+     * 企业注册省编号
+     */
+    @TableField("provCodeEnterprise")
+    private String provCodeEnterprise;
+    /**
+     * 企业注册市编号
+     */
+    @TableField("cityCodeEnterprise")
+    private String cityCodeEnterprise;
+    /**
+     * 企业注册区编号
+     */
+    @TableField("areaCodeEnterprise")
+    private String areaCodeEnterprise;
+    /**
+     * 企业注册详细地址
+     */
+    @TableField("address")
+    private String address;
+    /**
+     * 法人姓名
+     */
+    @TableField("legalPerson")
+    private String legalPerson;
+    /**
+     * 法人身份证号码
+     */
+    @TableField("merchantIDCode")
+    private String merchantIDCode;
+    /**
+     * 法人身份证有效期
+     */
+    @TableField("certIdExpires")
+    private Date certIdExpires;
+    /**
+     * 法人手机号
+     */
+    @TableField("legalPhone")
+    private String legalPhone;
+    /**
+     * 附件编号
+     */
+    @TableField("fileNo")
+    private String fileNo;
+    /**
+     * 结算账户名
+     */
+    @TableField("cardName")
+    private String cardName;
+    /**
+     * 结算账户号
+     */
+    @TableField("cardNo")
+    private String cardNo;
+    /**
+     * 银行账户类型(1=对公,2=对私)
+     */
+    @TableField("bankAcctType")
+    private Integer bankAcctType;
+    /**
+     * 银行预留手机号
+     */
+    @TableField("phone")
+    private String phone;
+    /**
+     * 开户行编号
+     */
+    @TableField("bankCode")
+    private String bankCode;
+    /**
+     * 开户行地区省编号
+     */
+    @TableField("provCodeBank")
+    private String provCodeBank;
+    /**
+     * 开户行地区市编号
+     */
+    @TableField("cityCodeBank")
+    private String cityCodeBank;
+    /**
+     * 开户行地区区编号
+     */
+    @TableField("areaCodeBank")
+    private String areaCodeBank;
     /**
      * 商户号
      */
     @TableField("merchantNumber")
     private String merchantNumber;
     /**
-     * 商户姓名
+     * 商户状态(0=审核中,1=已成功,2=审核失败)
      */
-    @TableField("merchantName")
-    private String merchantName;
+    @TableField("merchantStatus")
+    private Integer merchantStatus;
     /**
-     * 商户电话
+     * 结算账户状态(0=审核中,1=已成功,2=审核失败)
      */
-    @TableField("merchantPhone")
-    private String merchantPhone;
-    /**
-     * 商户身份证号码
-     */
-    @TableField("merchantIDCode")
-    private String merchantIDCode;
+    @TableField("bankStatus")
+    private Integer bankStatus;
 }
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java
index 6658add..4fbce81 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/model/RechargeRecord.java
@@ -42,11 +42,6 @@
     @TableField("amount")
     private Double amount;
     /**
-     * 未分配金额
-     */
-    @TableField("unallocatedAmount")
-    private Double unallocatedAmount;
-    /**
      * 支付方式(1=微信,2=系统充值)
      */
     @TableField("payType")
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 59e5620..a34febb 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
@@ -17,6 +17,7 @@
 import com.supersavedriving.user.modular.system.util.MallBook.model.PaymentOrder;
 import com.supersavedriving.user.modular.system.util.MallBook.model.PaymentOrderGood;
 import com.supersavedriving.user.modular.system.util.MallBook.model.QueryOrder;
+import com.supersavedriving.user.modular.system.util.MallBook.util.Transfer;
 import com.supersavedriving.user.modular.system.util.MallBook.util.TrhRequest;
 import com.supersavedriving.user.modular.system.util.PayMoneyUtil;
 import com.supersavedriving.user.modular.system.util.RedisUtil;
@@ -38,6 +39,7 @@
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigInteger;
 import java.net.InetAddress;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -73,6 +75,12 @@
 
     @Autowired
     private IAccountChangeDetailService accountChangeDetailService;
+
+    @Autowired
+    private IDriverService driverService;
+
+    @Autowired
+    private ISystemConfigService systemConfigService;
 
     @Value("${callbackPath}")
     private String callbackPath;//支付回调网关地址
@@ -145,60 +153,112 @@
     @Override
     public ResultUtil<SignInToRegisterWarpper> signInToRegister(SignInToRegister signInToRegister) throws Exception {
         SignInToRegisterWarpper warpper = new SignInToRegisterWarpper();
-        if(ToolUtil.isEmpty(signInToRegister.getJscode())){
-            return ResultUtil.paranErr("jscode");
-        }
-        if(ToolUtil.isEmpty(signInToRegister.getEncryptedDataPhone())){
-            return ResultUtil.paranErr("encryptedDataPhone");
-        }
-        if(ToolUtil.isEmpty(signInToRegister.getIvPhone())){
-            return ResultUtil.paranErr("ivPhone");
-        }
-        Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode());
-        if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
-            return ResultUtil.error(code2Session.getErrmsg());
-        }
-        String openid = code2Session.getOpenid();
-        String session_key = code2Session.getSession_key();
-        String decrypt = WXCore.decrypt(signInToRegister.getEncryptedDataPhone(), session_key, signInToRegister.getIvPhone());
-        if(ToolUtil.isEmpty(decrypt)){
-            return ResultUtil.error("获取手机号失败");
-        }
-        JSONObject phone = JSON.parseObject(decrypt);
-        String purePhoneNumber = phone.getString("purePhoneNumber");
-        AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", purePhoneNumber).ne("status", 3));
-        if(null == appUser){
-            appUser = new AppUser();
-            appUser.setNickname("亲爱的用户");
-            appUser.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
-            appUser.setPhone(purePhoneNumber);
-            appUser.setOpenid(openid);
-            appUser.setUnionid(code2Session.getUnionid());
-            appUser.setAccountBalance(0D);
-            appUser.setStatus(1);
-            appUser.setCreateTime(new Date());
-            appUser.setIsException(1);
-            appUser.setInviterId(signInToRegister.getInviterId());
-            appUser.setInviterType(signInToRegister.getInviterType());
-            this.insert(appUser);
-            //发送优惠券
-            boolean lock = redisUtil.lock();
-            if(lock){
+        try {
+            if(ToolUtil.isEmpty(signInToRegister.getJscode())){
+                return ResultUtil.paranErr("jscode");
+            }
+            if(ToolUtil.isEmpty(signInToRegister.getEncryptedDataPhone())){
+                return ResultUtil.paranErr("encryptedDataPhone");
+            }
+            if(ToolUtil.isEmpty(signInToRegister.getIvPhone())){
+                return ResultUtil.paranErr("ivPhone");
+            }
+            Code2Session code2Session = weChatUtil.code2Session(signInToRegister.getJscode());
+            if(null != code2Session.getErrcode() && code2Session.getErrcode() != 0){
+                return ResultUtil.error(code2Session.getErrmsg());
+            }
+            String openid = code2Session.getOpenid();
+            String session_key = code2Session.getSession_key();
+            String decrypt = WXCore.decrypt(signInToRegister.getEncryptedDataPhone(), session_key, signInToRegister.getIvPhone());
+            if(ToolUtil.isEmpty(decrypt)){
+                return ResultUtil.error("获取手机号失败");
+            }
+            JSONObject phone = JSON.parseObject(decrypt);
+            String purePhoneNumber = phone.getString("purePhoneNumber");
+            AppUser appUser = this.selectOne(new EntityWrapper<AppUser>().eq("phone", purePhoneNumber).ne("status", 3));
+            if(null == appUser){
+                appUser = new AppUser();
+                appUser.setNickname("亲爱的用户");
+                appUser.setAvatar("https://csxdj.obs.cn-south-1.myhuaweicloud.com:443/66cc269703a84e4da87fb21e2c21ab1f.png");
+                appUser.setPhone(purePhoneNumber);
+                appUser.setOpenid(openid);
+                appUser.setUnionid(code2Session.getUnionid());
+                appUser.setAccountBalance(0D);
+                appUser.setStatus(1);
+                appUser.setCreateTime(new Date());
+                appUser.setIsException(1);
+                appUser.setInviterId(signInToRegister.getInviterId());
+                appUser.setInviterType(signInToRegister.getInviterType());
+                this.insert(appUser);
+                //发送优惠券
+                boolean lock = redisUtil.lock(5);
+                if(!lock){
+                    int num1 = 1;
+                    while (num1 <= 10){
+                        Thread.sleep(3000);//等待3秒
+                        lock = redisUtil.lock(5);
+                        if(lock){
+                            break;
+                        }else{
+                            num1++;
+                        }
+                    }
+                }
                 List<CouponWarpper> list = pushCoupon(appUser.getId());
                 redisUtil.unlock();
                 warpper.setCoupons(list);
             }
+            if(appUser.getStatus() == 2){
+                return ResultUtil.error("账号被冻结");
+            }
+            String token = getToken(appUser);
+            if(ToolUtil.isEmpty(token)){
+                return ResultUtil.error("获取身份凭证失败");
+            }
+            warpper.setToken(token);
+        }catch (Exception e){
+            e.printStackTrace();
+            redisUtil.unlock();
         }
-        if(appUser.getStatus() == 2){
-            return ResultUtil.error("账号被冻结");
-        }
-        String token = getToken(appUser);
-        if(ToolUtil.isEmpty(token)){
-            return ResultUtil.error("获取身份凭证失败");
-        }
-        warpper.setToken(token);
         return ResultUtil.success(warpper);
     }
+
+
+    /**
+     * 转账
+     * @param id
+     * @param merOrderId
+     * @param toUserId
+     * @param amount
+     * @param notifyUrl
+     * @return
+     */
+    public ResultUtil zhaunzhang(Integer id, String merOrderId, String toUserId, Double amount, String notifyUrl){
+        Transfer transfer = new Transfer();
+        transfer.setDepositMerOrderId(merOrderId);
+        transfer.setToUserId(toUserId);
+        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
+        transfer.setOrderName("补贴");
+        transfer.setNotifyUrl(notifyUrl);
+        transfer.setParameter1(id.toString());
+        TrhRequest<Transfer> request = new TrhRequest();
+        InterfaceResponse execute = request.execute(transfer, Transfer.SERVICE_CODE);
+        if("0000".equals(execute.getCode())){
+            JSONObject jsonObject = JSON.parseObject(execute.getResult());
+            Integer status = jsonObject.getInteger("status");//0:待处理;1:成功;2:失败
+            if(2 == status){
+                System.err.println("转账失败");
+                return ResultUtil.error("转账失败");
+            }
+            return ResultUtil.success();
+        }else{
+            System.err.println("转账失败:" + execute.getMsg());
+            return ResultUtil.error(execute.getMsg());
+        }
+    }
+
+
+
 
 
     /**
@@ -218,7 +278,7 @@
             userToCoupon.setCouponTotal(coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ?
                     coupon.getRemainingQuantity() : coupon.getCouponSendQuantity());
             userToCoupon.setValidCount(userToCoupon.getCouponTotal());
-            userToCoupon.setExpireTime(new Date(System.currentTimeMillis() + (coupon.getCouponValidity() * 24 * 60 * 60 * 1000)));
+            userToCoupon.setExpireTime(new Date(System.currentTimeMillis() + (coupon.getCouponValidity().longValue() * 24L * 60L * 60L * 1000L)));
             userToCouponService.insert(userToCoupon);
 
             coupon.setRemainingQuantity(coupon.getCouponSendQuantity() > coupon.getRemainingQuantity() ? 0 :
@@ -320,7 +380,7 @@
 
         PaymentOrder paymentOrder = new PaymentOrder();
         paymentOrder.setBizOrderId(out_trade_no);
-        paymentOrder.setAmount(String.valueOf(amount * 100));
+        paymentOrder.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
         paymentOrder.setOrderName("账户充值");
         paymentOrder.setPayType("WX_MINI");
         paymentOrder.setTransferType("0");
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 ec62628..967297b 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
@@ -187,6 +187,8 @@
 
 
 
+
+
     /**
      * 获取订单价格
      * @param type          计算类型(1=预估价,2=订单费)
@@ -197,6 +199,7 @@
      * @return
      */
     public Order getOrderPrice(Integer type, Double distance, Integer waitTime, Order order, String city){
+        distance = new BigDecimal(distance).setScale(0, BigDecimal.ROUND_UP).doubleValue();
         order = getOrderInitialPrice(order);
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 5));
         if(null == systemConfig){
@@ -212,7 +215,7 @@
         JSONArray chargeStandard = jsonObject.getJSONArray("ChargeStandard");
         JSONObject extraCost = jsonObject.getJSONObject("ExtraCost");
         Date date = new Date();
-        for (int i = 0; i < chargeStandard.size(); i++) {
+        for (int i = 0; i < chargeStandard.size(); i++) {//计算各个时段
             JSONObject jsonObject1 = chargeStandard.getJSONObject(i);
             String num1 = jsonObject1.getString("num1");
             String num2 = jsonObject1.getString("num2");
@@ -227,41 +230,57 @@
             Double num11 = jsonObject1.getDouble("num11");//超过num8每num10公里收取num11
 
             String[] split = num1.split(":");
+            Integer hour1 = Integer.valueOf(split[0]);
+            String[] split1 = num2.split(":");
+            Integer hour2 = Integer.valueOf(split1[0]);
+
             Calendar s = Calendar.getInstance();
             s.setTime(date);
-            s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
+            s.set(Calendar.HOUR_OF_DAY, hour1);
             s.set(Calendar.MINUTE, Integer.valueOf(split[1]));
             s.set(Calendar.SECOND, 0);
 
-            split = num2.split(":");
             Calendar e = Calendar.getInstance();
             e.setTime(date);
-            e.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0]));
-            e.set(Calendar.MINUTE, Integer.valueOf(split[1]));
+            e.set(Calendar.HOUR_OF_DAY, hour2);
+            e.set(Calendar.MINUTE, Integer.valueOf(split1[1]));
             e.set(Calendar.SECOND, 0);
+
+            if(hour1 > hour2){
+                if(s.getTimeInMillis() > date.getTime()){
+                    s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) - 1);
+                }else{
+                    e.set(Calendar.DAY_OF_YEAR, e.get(Calendar.DAY_OF_YEAR) + 1);
+                }
+            }
 
             if(date.getTime() >= s.getTimeInMillis() && date.getTime() < e.getTimeInMillis()){
                 if(num3.compareTo(distance) >= 0){//起步里程内
                     order.setStartDistance(distance);//起步里程
                     order.setStartPrice(num4);//起步价
                 }else{
-                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3));//超出起步里程
-                    BigDecimal divide = subtract.divide(new BigDecimal(num5), new MathContext(2, RoundingMode.HALF_EVEN));
+                    BigDecimal subtract = new BigDecimal(distance).subtract(new BigDecimal(num3)).setScale(2, BigDecimal.ROUND_HALF_EVEN);//超出起步里程
+                    BigDecimal divide = subtract.divide(new BigDecimal(num5), 2, BigDecimal.ROUND_HALF_EVEN);
                     BigDecimal multiply = divide.multiply(new BigDecimal(num6));
                     order.setStartDistance(num3);//起步里程
                     order.setStartPrice(num4);//起步价
                     order.setOverDriveDistance(subtract.doubleValue());//超出起步里程
                     order.setOverDrivePrice(multiply.doubleValue());//超出起步里程费
 
-                    //计算长途费
+                    //计算长途费(超出长途起始公里,费用开始按照长途规则计算。)
                     if(distance.compareTo(num7) > 0){
+                        order.setStartDistance(0D);//起步里程
+                        order.setStartPrice(0D);//起步价
+                        order.setOverDriveDistance(0D);//超出起步里程
+                        order.setOverDrivePrice(0D);//超出起步里程费
+
                         order.setLongDistance(num7 + "-" + num8);//长途里程
                         order.setLongDistancePrice(num9);//长途费
                     }
                     //计算长途里程超出的部分
                     if(distance.compareTo(num8) > 0){
-                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8));
-                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), new MathContext(2, RoundingMode.HALF_EVEN));
+                        BigDecimal subtract1 = new BigDecimal(distance).subtract(new BigDecimal(num8)).setScale(2, BigDecimal.ROUND_HALF_EVEN);
+                        BigDecimal divide1 = subtract1.divide(new BigDecimal(num10), 2, BigDecimal.ROUND_HALF_EVEN);
                         BigDecimal multiply1 = divide1.multiply(new BigDecimal(num11));
                         order.setOverLongDistance(subtract1.doubleValue());//超出长途里程
                         order.setOverLongDistancePrice(multiply1.doubleValue());//超出长途里程费
@@ -354,7 +373,7 @@
         order.setLongDistancePrice(0D);//长途里程费
         order.setOverLongDistance(0D);//超出长途里程
         order.setOverLongDistancePrice(0d);//超出长途里程费
-        order.setWaitTime(0);//等待时长
+//        order.setWaitTime(0);//等待时长
         order.setWaitTimePrice(0D);//等待费
         order.setOutWaitTime(0);//超出等待时长
         order.setOutWaitTimePrice(0D);//超出等待时长费
@@ -480,28 +499,198 @@
      * 订单推送逻辑
      */
     public void pushOrder(Long orderId){
-        Order order = this.selectById(orderId);
-        /**
-         * 1.先找最大推单范围内的优推司机 -》 距离最近
-         * 没有1 - 》
-         *      2.按照后台推送配置在范围内查找合适司机
-         *        合适司:积分 > 评分 > 距离
-         *      3.司机没有接单直接将订单置入大厅
-         */
-        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
-        if(null == systemConfig){
-            return;
+        try {
+            boolean lock = redisUtil.lock(5);
+            if(!lock){
+                int num1 = 1;
+                while (num1 <= 10){
+                    Thread.sleep(3000);//等待3秒
+                    lock = redisUtil.lock(5);
+                    if(lock){
+                        break;
+                    }else{
+                        num1++;
+                    }
+                }
+            }
+            Order order = this.selectById(orderId);
+            /**
+             * 1.先找最大推单范围内的优推司机 -》 距离最近
+             * 没有1 - 》
+             *      2.按照后台推送配置在范围内查找合适司机
+             *        合适司:积分 > 评分 > 距离
+             *      3.司机没有接单直接将订单置入大厅
+             */
+            SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
+            if(null == systemConfig){
+                redisUtil.unlock();
+                return;
+            }
+            JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
+            Double num3 = jsonObject.getDouble("num3");//推单最大范围
+            Integer num4 = jsonObject.getInteger("num4");//接单时间
+            String startLat = order.getStartLat();
+            String startLng = order.getStartLng();
+
+            //1
+            //找到中心点
+            GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat));
+            Double num = num3 / 1000;//范围公里
+            //构造半径
+            Distance distanceR = new Distance(num, Metrics.KILOMETERS);
+            //画圆
+            Circle circle = new Circle(geoJsonPoint, distanceR);
+            // 构造query对象
+            Query query = Query.query(Criteria.where("location").withinSphere(circle));
+            List<Location> locations = mongoTemplate.find(query, Location.class);
+            List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
+            Integer driver = null;
+            YouTuiDriver youTuiDriver1 = null;
+            if(driverIds.size() > 0){
+                List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
+                        .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime"));
+                Double d = null;
+                for (YouTuiDriver youTuiDriver : youTuiDrivers) {
+                    String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
+                    if(ToolUtil.isEmpty(value)){
+                        continue;
+                    }
+                    Driver driver1 = driverService.selectById(youTuiDriver.getDriverId());
+                    if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){
+                        continue;
+                    }
+                    DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
+                    if(null == driverWork){
+                        continue;
+                    }
+                    Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
+                    Double wgs84 = distance.get("WGS84");
+                    if(d == null || d.compareTo(wgs84) > 0){
+                        d = wgs84;
+                        driver = youTuiDriver.getDriverId();
+                        youTuiDriver1 = youTuiDriver;
+                    }
+                }
+            }
+            if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
+                youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
+                youTuiDriverService.updateById(youTuiDriver1);
+            }
+
+            //开始范围查找
+            if(null == driver){
+                for (int i = 1; i < 4; i++) {
+                    if(null != driver){
+                        break;
+                    }
+                    num = jsonObject.getDouble("num" + i) / 1000;//范围公里
+                    //构造半径
+                    distanceR = new Distance(num, Metrics.KILOMETERS);
+                    //画圆
+                    circle = new Circle(geoJsonPoint, distanceR);
+                    // 构造query对象
+                    query = Query.query(Criteria.where("location").withinSphere(circle));
+                    locations = mongoTemplate.find(query, Location.class);
+
+                    driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
+                    if(driverIds.size() > 0){
+                        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2)
+                                .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds));
+                        if(drivers.size() == 0){
+                            continue;
+                        }
+
+                        Integer integral = null;//积分
+                        Double score = null;//评分
+                        Double d = null;
+                        for (Driver driver1 : drivers) {
+                            String value = redisUtil.getValue("DRIVER" + driver1.getId());
+                            if(ToolUtil.isEmpty(value)){
+                                continue;
+                            }
+                            DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver1.getId()).eq("status", 1));
+                            if(null == driverWork){
+                                continue;
+                            }
+
+                            if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
+                                integral = driver1.getIntegral();
+                                score = driver1.getScore();
+                                driver = driver1.getId();
+                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
+                                Double wgs84 = distance.get("WGS84");
+                                d = wgs84;
+                                continue;
+                            }
+                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
+                                integral = driver1.getIntegral();
+                                score = driver1.getScore();
+                                driver = driver1.getId();
+                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
+                                Double wgs84 = distance.get("WGS84");
+                                d = wgs84;
+                                continue;
+                            }
+                            if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
+                                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
+                                Double wgs84 = distance.get("WGS84");
+                                if(d.compareTo(wgs84) > 0){
+                                    d = wgs84;
+                                    integral = driver1.getIntegral();
+                                    score = driver1.getScore();
+                                    driver = driver1.getId();
+                                    continue;
+                                }
+                            }
+                        }
+
+                    }
+                }
+            }
+
+            if(null != driver){
+                //防止多笔订单推给一个司机
+                Driver driver1 = driverService.selectById(driver);
+                driver1.setServerStatus(2);
+                driverService.updateById(driver1);
+                pushUtil.pushGrabOrder(driver, 2, order.getId(), num4);
+                //创建定时任务处理订单到大厅
+                new Timer().schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        Order order1 = OrderServiceImpl.this.selectById(order.getId());
+                        if(order1.getState() == 101 || order1.getState() == 201){
+                            order1.setHallOrder(1);
+                            OrderServiceImpl.this.updateById(order1);
+
+                            driver1.setServerStatus(1);
+                            driverService.updateById(driver1);
+                            ExtraPushOrder(order);
+                        }
+                    }
+                }, num4 * 1000);
+            }else{
+                order.setHallOrder(1);
+                this.updateById(order);
+                ExtraPushOrder(order);
+            }
+            redisUtil.unlock();
+        }catch (Exception e){
+            e.printStackTrace();
+            redisUtil.unlock();
         }
-        JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
-        Double num3 = jsonObject.getDouble("num3");//推单最大范围
-        Integer num4 = jsonObject.getInteger("num4");//接单时间
+
+    }
+
+
+
+    public void ExtraPushOrder(Order order){
         String startLat = order.getStartLat();
         String startLng = order.getStartLng();
 
-        //1
         //找到中心点
         GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(startLng), Double.valueOf(startLat));
-        Double num = num3 / 1000;//范围公里
+        Double num = 5D;//范围公里
         //构造半径
         Distance distanceR = new Distance(num, Metrics.KILOMETERS);
         //画圆
@@ -510,119 +699,25 @@
         Query query = Query.query(Criteria.where("location").withinSphere(circle));
         List<Location> locations = mongoTemplate.find(query, Location.class);
         List<Integer> driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
-        Integer driver = null;
-        YouTuiDriver youTuiDriver1 = null;
-        if(driverIds.size() > 0){
-            List<YouTuiDriver> youTuiDrivers = youTuiDriverService.selectList(new EntityWrapper<YouTuiDriver>().in("driverId", driverIds)
-                    .eq("state", 2).last(" and (surplusQuantity > 0 or now() < endTime) and now() < failureTime"));
-            Double d = null;
-            for (YouTuiDriver youTuiDriver : youTuiDrivers) {
-                String value = redisUtil.getValue("DRIVER" + youTuiDriver.getDriverId());
-                if(ToolUtil.isEmpty(value)){
-                    continue;
-                }
-                Driver driver1 = driverService.selectById(youTuiDriver.getDriverId());
-                if(driver1.getServerStatus() == 2 || driver1.getOpenOrderQRCode() == 1){
-                    continue;
-                }
-                Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
-                Double wgs84 = distance.get("WGS84");
-                if(d == null || d.compareTo(wgs84) > 0){
-                    d = wgs84;
-                    driver = youTuiDriver.getDriverId();
-                    youTuiDriver1 = youTuiDriver;
-                }
+        if(driverIds.size() == 0){
+            return;
+        }
+        List<DriverWork> tDriverWorks = driverWorkService.selectList(new EntityWrapper<DriverWork>().in("driverId", driverIds).eq("status", 1));
+        driverIds = tDriverWorks.stream().map(DriverWork::getDriverId).collect(Collectors.toList());
+        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2)
+                .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds));
+        if(drivers.size() == 0){
+            return;
+        }
+        for (Driver driver1 : drivers) {
+            String value = redisUtil.getValue("DRIVER" + driver1.getId());
+            if (ToolUtil.isEmpty(value)) {
+                return;
             }
-        }
-        if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
-            youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
-            youTuiDriverService.updateById(youTuiDriver1);
-        }
-
-        //开始范围查找
-        if(null == driver){
-            for (int i = 1; i < 4; i++) {
-                if(null != driver){
-                    break;
-                }
-                num = jsonObject.getDouble("num" + i) / 1000;//范围公里
-                //构造半径
-                distanceR = new Distance(num, Metrics.KILOMETERS);
-                //画圆
-                circle = new Circle(geoJsonPoint, distanceR);
-                // 构造query对象
-                query = Query.query(Criteria.where("location").withinSphere(circle));
-                locations = mongoTemplate.find(query, Location.class);
-
-                driverIds = locations.stream().map(Location::getDriverId).collect(Collectors.toList());
-                if(driverIds.size() > 0){
-                    List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2)
-                            .eq("serverStatus", 1).eq("openOrderQRCode", 0).eq("status", 1).in("id", driverIds));
-                    if(drivers.size() == 0){
-                        continue;
-                    }
-
-                    Integer integral = null;//积分
-                    Double score = null;//评分
-                    Double d = null;
-                    for (Driver driver1 : drivers) {
-                        String value = redisUtil.getValue("DRIVER" + driver1.getId());
-                        if(ToolUtil.isEmpty(value)){
-                            continue;
-                        }
-                        if(integral == null || integral.compareTo(driver1.getIntegral()) < 0){//积分大
-                            integral = driver1.getIntegral();
-                            score = driver1.getScore();
-                            driver = driver1.getId();
-                            Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
-                            Double wgs84 = distance.get("WGS84");
-                            d = wgs84;
-                            continue;
-                        }
-                        if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) < 0){//积分相同对比评分
-                            integral = driver1.getIntegral();
-                            score = driver1.getScore();
-                            driver = driver1.getId();
-                            Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
-                            Double wgs84 = distance.get("WGS84");
-                            d = wgs84;
-                            continue;
-                        }
-                        if(integral.compareTo(driver1.getIntegral()) == 0 && score.compareTo(driver1.getScore()) == 0){//积分相同/评分相同对比距离
-                            Map<String, Double> distance = GeodesyUtil.getDistance(value, order.getStartLng() + "," + order.getStartLat());
-                            Double wgs84 = distance.get("WGS84");
-                            if(d.compareTo(wgs84) > 0){
-                                d = wgs84;
-                                integral = driver1.getIntegral();
-                                score = driver1.getScore();
-                                driver = driver1.getId();
-                                continue;
-                            }
-                        }
-                    }
-
-                }
-            }
-        }
-
-        if(null != driver){
-            pushUtil.pushGrabOrder(driver, 2, order.getId(), num4);
-            //创建定时任务处理订单到大厅
-            new Timer().schedule(new TimerTask() {
-                @Override
-                public void run() {
-                    Order order1 = OrderServiceImpl.this.selectById(order.getId());
-                    if(order1.getState() == 101 || order1.getState() == 201){
-                        order1.setHallOrder(1);
-                        OrderServiceImpl.this.updateById(order1);
-                    }
-                }
-            }, num4 * 1000);
-        }else{
-            order.setHallOrder(1);
-            this.updateById(order);
+            pushUtil.pushGrabOrderExtras(driver1.getId(), 2);
         }
     }
+
 
 
     /**
@@ -754,8 +849,13 @@
     @Override
     public OrderPriceWarpper queryOrderPrice(Integer uid, Long orderId) throws Exception {
         Order order = this.selectById(orderId);
+        Coupon coupon = userToCouponService.queryCoupon(uid, order.getOrderMoney());
         OrderPriceWarpper orderPriceWarpper = new OrderPriceWarpper();
         BeanUtils.copyProperties(order, orderPriceWarpper);
+        if(null != coupon){
+            orderPriceWarpper.setCouponId(coupon.getId());
+            orderPriceWarpper.setDiscountedPrice(coupon.getCouponPreferentialAmount());
+        }
         orderPriceWarpper.setActualMileage(new BigDecimal(order.getActualMileage() / 1000).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
         orderPriceWarpper.setTravelTime(Double.valueOf((order.getGetoffTime().getTime() - order.getStartTime().getTime()) / 60000).intValue());
         return orderPriceWarpper;
@@ -895,7 +995,7 @@
 
         PaymentOrder paymentOrder = new PaymentOrder();
         paymentOrder.setBizOrderId(out_trade_no);
-        paymentOrder.setAmount(String.valueOf(payMoney * 100));
+        paymentOrder.setAmount(String.valueOf(Double.valueOf(payMoney * 100).intValue()));
         paymentOrder.setOrderName("代驾服务费");
         paymentOrder.setPayType("WX_MINI");
         paymentOrder.setTransferType("0");
@@ -921,9 +1021,6 @@
         String status = jsonObject.getString("status");
         if("2".equals(status)){
             return ResultUtil.error("失败");
-        }
-        if("0".equals(status)){
-            return ResultUtil.error("处理中");
         }
         String merOrderId = jsonObject.getString("merOrderId");
         String payCode = jsonObject.getString("payCode");
@@ -1004,13 +1101,13 @@
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
-                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("优惠券收入");
                 driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
-                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
             }
@@ -1084,13 +1181,13 @@
                 accountChangeDetail.setUserType(2);
                 accountChangeDetail.setUserId(order.getDriverId());
                 accountChangeDetail.setCreateTime(new Date());
-                accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
                 accountChangeDetail.setType(1);
                 accountChangeDetail.setChangeType(7);
                 accountChangeDetail.setOrderId(order.getId());
                 accountChangeDetail.setExplain("优惠券收入");
                 driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
-                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
                 driverService.updateById(driver);
                 accountChangeDetailService.insert(accountChangeDetail);
             }
@@ -1149,9 +1246,6 @@
             String status = jsonObject.getString("status");
             if("2".equals(status)){
                 return ResultUtil.error("失败");
-            }
-            if("0".equals(status)){
-                return ResultUtil.error("处理中");
             }
             String merOrderId = jsonObject.getString("merOrderId");
             String payCode = jsonObject.getString("payCode");
@@ -1292,7 +1386,7 @@
             if(null != systemConfig){
                 //{"num1":"10:00","num2":"14:00","num3":10,"num4":10,"num5":10,"num6":10,"num7":10,"num8":10,"num9":5,"num10":5}
                 JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
-                Integer num5 = jsonObject.getInteger("num5");
+                Integer num5 = jsonObject.getInteger("num6");
 
                 //增加积分变动记录
                 AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
@@ -1345,20 +1439,46 @@
         //司机分佣和司机推荐用户首单奖励都在平台的抽佣中扣除,剩余的为平台抽佣。
         Driver driver = driverService.selectById(order.getDriverId());
         AppUser appUser = appUserService.selectById(order.getUserId());
+
+        //首单积分奖励
+        //司机推荐首单收入
+        List<Integer> state = Arrays.asList(107, 108, 109);
+        int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state));
+        if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){
+            Driver driver1 = driverService.selectById(appUser.getInviterId());
+            SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 4));
+            JSONObject jsonObject2 = JSON.parseObject(systemConfig1.getContent());
+            Integer num4 = jsonObject2.getInteger("num4");
+            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+            accountChangeDetail.setUserType(2);
+            accountChangeDetail.setUserId(driver1.getId());
+            accountChangeDetail.setType(2);
+            accountChangeDetail.setChangeType(5);
+            accountChangeDetail.setOrderId(order.getId());
+            accountChangeDetail.setOldData(driver1.getIntegral().doubleValue());
+            accountChangeDetail.setExplain("邀请用户首单积分奖励");
+            accountChangeDetail.setCreateTime(new Date());
+            driver1.setIntegral(driver1.getIntegral() + num4);
+            accountChangeDetail.setNewData(driver1.getIntegral().doubleValue());
+            accountChangeDetailService.insert(accountChangeDetail);
+            driverService.updateById(driver1);
+        }
+
+
+
         Double payMoney = order.getPayMoney();//todo 司机订单收入归并到佣金中一起提现
         SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3));
         if(null != systemConfig){
             JSONObject jsonObject = JSON.parseObject(systemConfig.getContent());
             Double num2 = jsonObject.getDouble("num2");
             Double num3 = jsonObject.getDouble("num3");
-            if(order.getPayMoney() >= num2){
+            if(order.getOrderMoney().compareTo(num2) >= 0){//订单金额大于num2开始分佣
                 payMoney = payMoney - num3;//司机收入
                 SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2));
                 if(null != systemConfig1){
                     JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent());
                     //司机推荐首单收入
-                    List<Integer> state = Arrays.asList(108, 109);
-                    int count = this.selectCount(new EntityWrapper<Order>().eq("userId", appUser.getId()).eq("status", 1).in("state", state));
                     if(null != appUser.getInviterType() && appUser.getInviterType() == 2 && count == 1){
                         Double num1 = jsonObject1.getDouble("num1");
                         num1 = (num3 >= num1 ? num1 : num3);
@@ -1371,11 +1491,11 @@
                             accountChangeDetail.setUserId(driver1.getId());
                             accountChangeDetail.setType(1);
                             accountChangeDetail.setChangeType(5);
-                            accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
-                            accountChangeDetail.setExplain("订单分佣收入");
+                            accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
+                            accountChangeDetail.setExplain("邀请用户首单奖励");
                             accountChangeDetail.setCreateTime(new Date());
                             driver1.setCommission(driver1.getCommission() + num1);
-                            accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                            accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                             driverService.updateById(driver1);
                             accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1416,7 +1536,7 @@
                     }
 
                     //开始处理层级抽佣
-                    if(null != driver & null != driver.getInviterType() && driver.getInviterType() == 2){
+                    if(num3 > 0 &&  null != driver & null != driver.getInviterType() && driver.getInviterType() == 2){
                         Driver driver1 = driverService.selectById(driver.getInviterId());//一级司机
                         if(null != driver1 && null != driver1.getInviterType() && driver1.getInviterType() == 2){
                             Driver driver2 = driverService.selectById(driver1.getInviterId());//二级司机
@@ -1442,11 +1562,11 @@
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver1.setCommission(driver1.getCommission() + num5);
-                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1493,11 +1613,11 @@
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver2.setCommission(driver2.getCommission() + num6);
-                                    accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1545,11 +1665,11 @@
                                     accountChangeDetail.setUserId(driver3.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
+                                    accountChangeDetail.setOldData(driver3.getCouponBalance() + driver3.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver3.setCommission(driver3.getCommission() + num7);
-                                    accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
+                                    accountChangeDetail.setNewData(driver3.getCouponBalance() + driver3.getCommission());
                                     driverService.updateById(driver3);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1599,11 +1719,11 @@
                                     accountChangeDetail.setUserId(driver1.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver1.setCommission(driver1.getCommission() + num3_);
-                                    accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                    accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1650,11 +1770,11 @@
                                     accountChangeDetail.setUserId(driver2.getId());
                                     accountChangeDetail.setType(1);
                                     accountChangeDetail.setChangeType(5);
-                                    accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setOldData(driver2.getCouponBalance() + driver2.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
                                     driver2.setCommission(driver2.getCommission() + num4);
-                                    accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
+                                    accountChangeDetail.setNewData(driver2.getCouponBalance() + driver2.getCommission());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1704,11 +1824,11 @@
                                 accountChangeDetail.setUserId(driver1.getId());
                                 accountChangeDetail.setType(1);
                                 accountChangeDetail.setChangeType(5);
-                                accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                accountChangeDetail.setOldData(driver1.getCouponBalance() + driver1.getCommission());
                                 accountChangeDetail.setExplain("订单分佣收入");
                                 accountChangeDetail.setCreateTime(new Date());
                                 driver1.setCommission(driver1.getCommission() + num2_);
-                                accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                                accountChangeDetail.setNewData(driver1.getCouponBalance() + driver1.getCommission());
                                 driverService.updateById(driver1);
                                 accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1780,6 +1900,8 @@
                 }
             }
         }
+
+        driver = driverService.selectById(order.getDriverId());
         //司机订单收入
         Revenue revenue = new Revenue();
         revenue.setType(1);
@@ -1797,7 +1919,8 @@
         accountChangeDetail.setType(1);
         accountChangeDetail.setChangeType(1);
         accountChangeDetail.setOrderId(order.getId());
-        accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+        accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
+        driver.setCommission(driver.getCommission() + payMoney);
         accountChangeDetail.setExplain("订单收入");
         accountChangeDetail.setCreateTime(new Date());
         if(null != order.getCouponId()){
@@ -1828,20 +1951,7 @@
 
         }
         if(null != order.getDiscountAmount() && 0 < order.getDiscountAmount()){
-            accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
-            accountChangeDetail.setUserType(2);
-            accountChangeDetail.setUserId(order.getDriverId());
-            accountChangeDetail.setCreateTime(new Date());
-            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
-            accountChangeDetail.setType(1);
-            accountChangeDetail.setChangeType(7);
-            accountChangeDetail.setOrderId(order.getId());
-            accountChangeDetail.setExplain("折扣优惠收入");
             driver.setCommission(driver.getCommission() + order.getDiscountAmount());
-            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
-            driverService.updateById(driver);
-            accountChangeDetailService.insert(accountChangeDetail);
             //补贴中分账
             Double discountedPrice = order.getDiscountAmount();
             List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 4).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime"));
@@ -1866,7 +1976,7 @@
                 }
             }
         }
-        accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+        accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
         driverService.updateById(driver);
         accountChangeDetailService.saveData(accountChangeDetail);
 
@@ -1890,14 +2000,14 @@
                 Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                 if(surplusDividedAmount.compareTo(payMoney) >= 0){
                     //分账司机收入
-                    ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), payMoney, 1);
+                    ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), payMoney, 1);
                     if(10000 == fengzhang.getCode()){
                         rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - payMoney);
                         rechargeRecordService.updateById(rechargeRecord);
                     }
                     break;
                 }else{
-                    ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
+                    ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1);
                     if(10000 == fengzhang.getCode()){
                         rechargeRecord.setSurplusDividedAmount(0D);
                         rechargeRecordService.updateById(rechargeRecord);
@@ -1919,14 +2029,14 @@
                     Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                     if(surplusDividedAmount.compareTo(money) >= 0){
                         //分账司机收入
-                        ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1);
+                        ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), money, 1);
                         if(10000 == fengzhang.getCode()){
                             rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money);
                             rechargeRecordService.updateById(rechargeRecord);
                         }
                         break;
                     }else{
-                        ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
+                        ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1);
                         if(10000 == fengzhang.getCode()){
                             rechargeRecord.setSurplusDividedAmount(0D);
                             rechargeRecordService.updateById(rechargeRecord);
@@ -1957,14 +2067,14 @@
                     Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                     if(surplusDividedAmount.compareTo(balancePayment) >= 0){
                         //分账司机收入
-                        ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), balancePayment, 1);
+                        ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), balancePayment, 1);
                         if(10000 == fengzhang.getCode()){
                             rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - balancePayment);
                             rechargeRecordService.updateById(rechargeRecord);
                         }
                         break;
                     }else{
-                        ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
+                        ResultUtil fengzhang = fengzhang(1, driver.getId(), driver.getMerchantNumber(), order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1);
                         if(10000 == fengzhang.getCode()){
                             rechargeRecord.setSurplusDividedAmount(0D);
                             rechargeRecordService.updateById(rechargeRecord);
@@ -1984,14 +2094,14 @@
                         Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount();
                         if(surplusDividedAmount.compareTo(money) >= 0){
                             //分账司机收入
-                            ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), money, 1);
+                            ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), money, 1);
                             if(10000 == fengzhang.getCode()){
                                 rechargeRecord.setSurplusDividedAmount(rechargeRecord.getSurplusDividedAmount() - money);
                                 rechargeRecordService.updateById(rechargeRecord);
                             }
                             break;
                         }else{
-                            ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), order.getOrderNo(), surplusDividedAmount, 1);
+                            ResultUtil fengzhang = fengzhang(3, null, "553021440975", order.getId().longValue(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1);
                             if(10000 == fengzhang.getCode()){
                                 rechargeRecord.setSurplusDividedAmount(0D);
                                 rechargeRecordService.updateById(rechargeRecord);
@@ -2031,7 +2141,7 @@
         List<PamentOrderUser> splitList = new ArrayList<>();
         PamentOrderUser pamentOrderUser = new PamentOrderUser();
         pamentOrderUser.setSplitUserId(merchantNumber);
-        pamentOrderUser.setSplitAmount(amount.toString());
+        pamentOrderUser.setSplitAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
         pamentOrderUser.setSplitType("1");
         splitList.add(pamentOrderUser);
         complete.setSplitList(splitList);
@@ -2078,11 +2188,11 @@
         Receive receive = new Receive();
         receive.setOriginalMerOrderId(orderNumber);
         receive.setAsynMerOrderId(divisionRecord.getMerOrderId());
-        receive.setRcvAmount(divisionRecord.getAmount().toString());
+        receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
         List<ReceiveUser> splitList = new ArrayList<>();
         ReceiveUser receiveUser = new ReceiveUser();
         receiveUser.setSplitUserId(merchantNumber);
-        receiveUser.setRcvSplitAmount(divisionRecord.getAmount().toString());
+        receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
         splitList.add(receiveUser);
         receive.setSplitList(splitList);
         TrhRequest<Receive> request = new TrhRequest();
@@ -2110,7 +2220,7 @@
         Transfer transfer = new Transfer();
         transfer.setDepositMerOrderId(merOrderId);
         transfer.setToUserId(toUserId);
-        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100)));
+        transfer.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue()));
         transfer.setOrderName("补贴");
         transfer.setNotifyUrl(notifyUrl);
         transfer.setParameter1(id.toString());
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java
index 17eed7b..6bcab9e 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/service/impl/SystemConfigServiceImpl.java
@@ -85,7 +85,12 @@
             Map<String, Object> map = new HashMap<>();
             map.put("waitTime", num1 + "分钟/" + num2 + "元");
             map.put("exceedWaitTime", "超出" + num3 + "分钟,收取" + num4 + "元/分钟");
-            map.put("badWeather", "雨天、恶劣天气时代驾里程在" + num5 + "公里内加" + num6 + "元/单,达" + num7 + "公里或以上的订单按总价加" + num8 + "倍计费,封顶加" + num9 + "元");
+            systemConfig = this.selectOne(new EntityWrapper<SystemConfig>().eq("type", 8));
+            JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent());
+            Integer num11 = jsonObject1.getInteger("num1");//开启恶劣天气计价
+            if(1 == num11){
+                map.put("badWeather", "雨天、恶劣天气时代驾里程在" + num5 + "公里内加" + num6 + "元/单,达" + num7 + "公里或以上的订单按总价加" + num8 + "倍计费,封顶加" + num9 + "元");
+            }
             priceRulesWarpper.setAdditionalFee(JSON.toJSONString(map));
         }
         return priceRulesWarpper;
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java
index dcff13d..b172d2a 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/MallBook/util/TrhRequest.java
@@ -7,6 +7,8 @@
 import com.supersavedriving.user.modular.system.util.MallBook.config.ChannelConfig;
 import com.supersavedriving.user.modular.system.util.MallBook.model.InterfaceRequest;
 import com.supersavedriving.user.modular.system.util.MallBook.model.InterfaceResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @Author xiaogc
@@ -14,17 +16,19 @@
  */
 public class TrhRequest<T> {
 
+    Logger logger = LoggerFactory.getLogger("ServiceLog");
+
     public InterfaceResponse execute(T t, String serverCode) {
         InterfaceRequest<T> request = new InterfaceRequest(t, serverCode);
-        System.out.println("mallbook请求参数:" + JSONUtil.toJsonStr(request));
+        logger.warn("mallbook请求参数:" + JSONUtil.toJsonStr(request));
         String result = HttpUtil.post(ChannelConfig.payUrl, BeanUtil.beanToMap(request));
-        System.out.println("mallbook响应参数:" + result);
+        logger.warn("mallbook响应参数:" + result);
         InterfaceResponse response = JSONUtil.toBean(result, InterfaceResponse.class);
         boolean verify = RSASignature.validate(response.content(), response.getSign());
         if (!verify) {
             throw new ValidateException("签名验证失败");
         } else {
-            System.out.printf("签名验证通过");
+            logger.warn("签名验证通过");
         }
         return response;
     }
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java
index 8d506ad..6249209 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/PushUtil.java
@@ -206,6 +206,41 @@
 
 
     /**
+     * 系统推单推送 附加(防止 用户推单后,范围内的司机20s 内接不到单的补充方法)
+     * @param id            接受对象id
+     * @param type          接受对象类型(1=用户,2=司机)
+     */
+    public void pushGrabOrderExtras(Integer id, Integer type){
+        JSONObject msg = new JSONObject();
+        msg.put("code", 200);
+        msg.put("msg", "SUCCESS");
+        msg.put("method", "PUSH_ORDER");
+
+        Map<String, Object> map = new HashMap<>();
+        msg.put("data", map);
+
+        //调用推送
+        HttpHeaders headers = new HttpHeaders();
+        // 以表单的方式提交
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        //将请求头部和参数合成一个请求
+        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+        params.add("msg", msg.toJSONString());
+        params.add("id", id.toString());
+        params.add("type", type.toString());
+        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
+        String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class);
+        JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
+        if(jsonObject1.getIntValue("code") != 200){
+            logger.debug(jsonObject1.getString("msg"));
+            System.err.println(jsonObject1.getString("msg"));
+        }
+    }
+
+
+
+
+    /**
      * 转单成功推送
      * @param id
      * @param type
diff --git a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java
index c23f490..70aeb6a 100644
--- a/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java
+++ b/user/guns-admin/src/main/java/com/supersavedriving/user/modular/system/util/weChat/WeChatUtil.java
@@ -412,4 +412,31 @@
         String body1 = exchange.getBody();
         return body1;
     }
+
+
+
+
+    /**
+     * 获取小程序urllink码
+     * env_version 默认值"release"。要打开的小程序版本。正式版为 "release",体验版为"trial",开发版为"develop",仅在微信外打开时生效。
+     * @return
+     */
+    public String getUrlLink(String path, String query, String env_version) throws Exception{
+        String wxAppletsAccessToken = redisUtil.getValue("wxAppletsAccessToken");
+        String url = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + wxAppletsAccessToken;
+        Map<String, Object> param = new HashMap<>();
+        param.put("path", path);
+        param.put("query", query);
+        param.put("is_expire", true);
+        param.put("expire_type", 0);
+        param.put("expire_time", System.currentTimeMillis() + 60 * 60 * 1000);
+        param.put("env_version", env_version);
+        HttpHeaders httpHeaders = new HttpHeaders();
+        MediaType type=MediaType.parseMediaType("application/json;charset=UTF-8");
+        httpHeaders.setContentType(type);
+        HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param, httpHeaders);
+        ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);
+        String body1 = exchange.getBody();
+        return body1;
+    }
 }
diff --git a/user/guns-admin/src/main/resources/application.yml b/user/guns-admin/src/main/resources/application.yml
index 21d0d30..5f9c801 100644
--- a/user/guns-admin/src/main/resources/application.yml
+++ b/user/guns-admin/src/main/resources/application.yml
@@ -121,9 +121,9 @@
 
 #支付回调地址
 #正式环境
-#callbackPath: http://121.37.15.157:80/user
+callbackPath: https://chaoshengdaijia.com:443/user
 #正式测试环境
-callbackPath: http://121.37.15.157:80/user
+#callbackPath: http://121.37.15.157:80/user
 
 ---
 
@@ -137,15 +137,15 @@
 #  mallbook 调起接口参数配置
 mallbook:
   # pay_url:mallbook接口地址    测试环境: https://uat.mallbook.cn/api   生产环境:https://cloudpay.mallbook.cn/api
-  pay_url: https://uat.mallbook.cn/api
+  pay_url: https://cloudpay.mallbook.cn/api
   # merchant_no 业务系统商户平台编号,需替换为mallbook工作人员提供的商户编号
-  merchant_no: HF2023041901
+  merchant_no: MBH23056
   # version 接口版本号
   version: 1.0.0
   # channel_type 渠道类型 HF:汇付
   channel_type: HF
   # merchant_private_key 商户平台私钥,需要替换成商户平台自己生成的私钥
-  merchant_private_key: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIDGadl1oxP7EJg+/o32vpAMa8cwFevD6xu3FjIh04TOuVTpC9hbAwiyX/9OKQi3nHEISyrtnF6Y49tkmb7X8nDwOahvsyOjgNYp+NtSLAdgPAbd6lv2DPC1lVYYu5IkMz7PRifntROFH6OvE5fpj6GinaFY3TYBjyDcC2VVbq/LAgMBAAECgYATdmlvDWF9Vpe2eubcK+u3N7leXH0jqfOxt6UqJISkcN3/4E0DARZfTR5HJtf60k1ZpAhAT7MvdOoTMYwvFNI2WEFRwND5wBl+OdEN/lyWeISjjg1EnnTLj/azGLgE8Z2q/FodGikqrGrc2tSNIy75afeW2gUTF3DHiwcG76SYeQJBAPOyIzpT3yMfM7iVhjaPfmyxvDXq0cLwiAF0eUbrebPO0EevI+PKYhmN2oRMis6wSJbv+sbkElOXQzDefjw0ieUCQQCHRuFlX9JQYUOoyyirKxpu30uys+ygZqmo4PiKgIaaJJPm2p2o7vzZJANGmkmdwFf2LLzij70InKGvqGTEnvfvAkEAnJOMRuG0sOBPXv3TaiLwW+4mu43QkKvy9txbP9H0NC9ha22AZc+XEEwwZmi3lu109mXifv/zNnot1axe91facQJALExcwQqo32OKeXrVvX+m70m2CzX6NeiIhGHvYcOG0HFL8ZwDZu+j4yN04yjhFISJCXdK/1Icj/ZiyBf3r59zBwJACl7Sya9BcqRo5XJ/A7+T2E3VQT2nIopy0hPRLKWFaOzrCIsn3gcC58KSACXl2QMiG5kp1192QOC26b3o57ZecA==
+  merchant_private_key: MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALHmyTrxPYcAwABnX+3VW9vxUftm57zBpnbfOT4vizMnKdpfCkIgtdbfdnSCtt637yWM2fxnZfItnhTeQA2lL8f4SXgZt/bVXfmAWi4IxQ+HJy0Qs8nNy2nnjICPBPcpWzHwUxQ/THHqU0a7b9B91J5DFcbQb25BHeRpHwkBw6A/AgMBAAECgYAmcWq2s/7Jt53F+JDAQkTRaHqAyyH0phwkv+QMzhVUfngK2lLLK2pf/nYIg16lDjY9dQx+AJIFHVp1w/kveayzOz3BIqPoznyIVYPolRGZCWPo+2vdp0CIdBh7zahST5g5Gem4cU47wO5hPYs1kXKPG4mUPtaIAMHFxhyLvIagAQJBAOS63AIZrRrldeNCVVNXbpAT52JuWLCgravM9coOh6scmG6UQwxxcott8hneHr9fazk2LHbHMxlG8F+dQPA0+D8CQQDHHJN7Dnske8oJ+1sq4uhQP3HMsmNIgth+ZcaZpiPcxnNKYVGhzAwTVV2ruFJle5ajebo6zfWuqJhtZGRNh1gBAkA/lRoXk1+lfGfa9tOVSVa4wm+t0xLgdqoQefdRZdyc2mQdSSWiTd8Tl0qXmkFd3X6G9uJBWnp/6lJjoektXOwtAkBsZTQsw99qJzIAaSRinpDWTxPG2j6OlR0DAqkxsG7JnAfbsEteh9TzGYAbIgdJVBTX/kbSCJn9ca85rnOkeVABAkAUbDfU3Z702z20NtwAxc1IkrtQ1lKuqSpj9/LuR1/6KRkYQsUWnUiOO9hu5YDWIcflFrnCenF8j8OnvGghltxT
   # mall_book_public_key mallbook测试环境公钥 不需要替换
-  mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD0L2DaHOO8ekhktB6RoHxIcki/0v7OUeOn9tX9VBE+jv6PRjqlZRWL3Qezxz5ADtHEyLv+RFFaceXSep6rWyoQ6DRlvLv5CySUAxAM42LLVe4DI3l/0ccEAIuU5NCpwAAj1zkm2X01DwUCZwymLjlqbDlBvQhpq+1fddtTtA/QLQIDAQAB
+  mall_book_public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq6OLZKgUHH5wOk9xSBgN7yC17r3PQwMlY9/IorqrOlaIqrU0eAVZ5+dWrJD/3bdu7Ctq8n8trTm/IUYs7wtMg5SKwyX4/N+KQc2N7LL4yCq4vNl41q9sYgrtA0QnZoucIZcq1mwyu7RTDC8Wp7LGddnlkJsmL8masgMxA6cc9NwIDAQAB
 
diff --git a/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java b/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java
index ce79b7d..5ba49aa 100644
--- a/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java
+++ b/user/guns-admin/src/test/java/com/supersavedriving/user/GunsApplicationTest.java
@@ -1,6 +1,10 @@
 //package com.supersavedriving.user;
 //
+//import com.supersavedriving.user.modular.system.service.IOrderService;
+//import com.supersavedriving.user.modular.system.warpper.OrderPriceWarpper;
+//import org.junit.Test;
 //import org.junit.runner.RunWith;
+//import org.springframework.beans.factory.annotation.Autowired;
 //import org.springframework.boot.test.context.SpringBootTest;
 //import org.springframework.test.context.junit4.SpringRunner;
 //
@@ -12,8 +16,20 @@
 //@SpringBootTest
 //public class GunsApplicationTest {
 //
+//    @Autowired
+//    private IOrderService orderService;
 //
-////    public void
+//
+//    @Test
+//    public void test(){
+//        OrderPriceWarpper orderPriceWarpper = null;
+//        try {
+//            orderPriceWarpper = orderService.calculationOfExpenses(14, 133L, null, 1, 0D);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        System.err.println(orderPriceWarpper);
+//    }
 //
 //
 //
diff --git a/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java b/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java
index d7c315b..c98f607 100644
--- a/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java
+++ b/zuul/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java
@@ -14,13 +14,13 @@
     @Override
     protected void initChannel(SocketChannel socketChannel) throws Exception {
 //        String path = "C:\\Program Files\\Apache Software Foundation\\Tomcat 8.5\\cert\\SHA256withRSA_lzhyc.cn.pfx";
-//        String path = "/usr/local/server/app/cert/tomcat/scs1680576839056_chaoshengdaijia.com_server.jks";
-//        SSLContext sslContext = createSSLContext.createSSLContext("JKS"
-//                , path, "Zf3^5v6OoWmOVgeQ");
-//        //SSLEngine 此类允许使用ssl安全套接层协议进行安全通信
-//        SSLEngine engine = sslContext.createSSLEngine();
-//        engine.setUseClientMode(false);
-//        socketChannel.pipeline().addLast("ssl", new SslHandler(engine));
+        String path = "/usr/local/server/app/cert/tomcat/scs1680576839056_chaoshengdaijia.com_server.jks";
+        SSLContext sslContext = createSSLContext.createSSLContext("JKS"
+                , path, "Zf3^5v6OoWmOVgeQ");
+        //SSLEngine 此类允许使用ssl安全套接层协议进行安全通信
+        SSLEngine engine = sslContext.createSSLEngine();
+        engine.setUseClientMode(false);
+        socketChannel.pipeline().addLast("ssl", new SslHandler(engine));
 
         // 设置30秒没有读到数据,则触发一个READER_IDLE事件。
         // pipeline.addLast(new IdleStateHandler(30, 0, 0));
diff --git a/zuul/src/main/resources/application.yml b/zuul/src/main/resources/application.yml
index b14faa5..51d6bdd 100644
--- a/zuul/src/main/resources/application.yml
+++ b/zuul/src/main/resources/application.yml
@@ -4,6 +4,10 @@
 spring:
   application:
     name: zuul-gateway #服务名称
+  servlet:
+    multipart:
+      max-request-size: 500MB
+      max-file-size: 500MB
 
 eureka:
   client:
diff --git a/zuul/src/main/resources/redis.properties b/zuul/src/main/resources/redis.properties
index 5d9655f..1a943f9 100644
--- a/zuul/src/main/resources/redis.properties
+++ b/zuul/src/main/resources/redis.properties
@@ -1,6 +1,7 @@
 #redis���ÿ�ʼ
 # Redis���ݿ�������Ĭ��Ϊ0��
 spring.redis.database=0
+
 # Redis��������ַ
 spring.redis.host=127.0.0.1
 # Redis���������Ӷ˿�
@@ -8,12 +9,13 @@
 # Redis�������������루Ĭ��Ϊ�գ�
 spring.redis.password=cKsEeyffDXG5PzNg8CIbrWxFluXrCprZ
 
-## Redis��������ַ
+# Redis��������ַ
 #spring.redis.host=127.0.0.1
 ## Redis���������Ӷ˿�
 #spring.redis.port=6379
 ## Redis�������������루Ĭ��Ϊ�գ�
 #spring.redis.password=123456
+
 # ���ӳ������������ʹ�ø�ֵ��ʾû�����ƣ�
 spring.redis.jedis.pool.max-active=1024
 # ���ӳ���������ȴ�ʱ�䣨ʹ�ø�ֵ��ʾû�����ƣ�

--
Gitblit v1.7.1