From f58cca364b731eac2d60a440ffaa804be3cd43fd Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期五, 30 六月 2023 10:32:28 +0800
Subject: [PATCH] 修改bug

---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java        |    5 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java        |   27 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java    |   16 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java         |    2 
 management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html                                  |    2 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml  |    2 
 management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html                                           | 1162 ++++++++++++++++----------------
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/model/RechargeRecord.java                  |   10 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverWorkService.java            |    6 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java   |    4 
 user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java           |   16 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml       |    2 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java |    2 
 user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java             |  312 ++++---
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java                  |    4 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/TaskUtil.java                         |   12 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml              |  107 ++
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/UploadUtil.java             |    2 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java         |  327 +++++---
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java    |    9 
 driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java                     |   20 
 management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java                |    3 
 22 files changed, 1,143 insertions(+), 909 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java
index 37b1594..c801d00 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/api/DriverController.java
@@ -718,6 +718,8 @@
                 PrintWriter out;
                 out = response.getWriter();
                 out.println("success"); // 请不要修改或删除
+                out.flush();
+                out.close();
             }
         }catch (Exception e){
             e.printStackTrace();
@@ -863,7 +865,7 @@
                 return ResponseWarpper.success();
             }
             ResultUtil resultUtil = ResultUtil.success();
-            phone = phone.indexOf("+86") < 0 ? "+86" + phone : phone;
+            phone = "+86" + phone;
             String value = redisUtil.getValue(phone);
             if(ToolUtil.isEmpty(value) || !value.equals(code)){
                 resultUtil = ResultUtil.error("验证码无效");
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
index 8ec0e62..7a52677 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/AccountChangeDetailMapper.xml
@@ -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 (1, 3, 4, 7, 8, 9, 10)
         <if test="null != time and '' != time">
             and DATE_FORMAT(createTime, '%Y年%m月') = #{time}
         </if>
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml
index 520d446..76df853 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/dao/mapping/RechargeRecordMapper.xml
@@ -6,6 +6,7 @@
     <resultMap id="BaseResultMap" type="com.agentdriving.driver.modular.system.model.RechargeRecord">
         <id column="id" property="id" />
         <result column="type" property="type" />
+        <result column="payMethod" property="payMethod"/>
         <result column="userId" property="userId" />
         <result column="code" property="code" />
         <result column="amount" property="amount"/>
@@ -15,5 +16,6 @@
         <result column="orderNumber" property="orderNumber" />
         <result column="createTime" property="createTime" />
         <result column="agentId" property="agentId" />
+        <result column="remark" property="remark"/>
     </resultMap>
 </mapper>
\ No newline at end of file
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/model/RechargeRecord.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/model/RechargeRecord.java
index f8d5385..488acaa 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/model/RechargeRecord.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/model/RechargeRecord.java
@@ -27,6 +27,11 @@
     @TableField("type")
     private Integer type;
     /**
+     * 支付方式(1=微信,2=支付宝)
+     */
+    @TableField("payMethod")
+    private Integer payMethod;
+    /**
      * 用户id
      */
     @TableField("userId")
@@ -71,4 +76,9 @@
      */
     @TableField("agentId")
     private Integer agentId;
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
 }
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverWorkService.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverWorkService.java
index 8ab2299..c36c5d4 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverWorkService.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/IDriverWorkService.java
@@ -24,4 +24,10 @@
      * @throws Exception
      */
     ResultUtil driverOffWork(Integer driverId, Long onlineTime) throws Exception;
+
+
+    /**
+     * 定时任务检查司机余额是否充足
+     */
+    void taskDriverOffWork();
 }
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java
index 400320c..5e0516b 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverServiceImpl.java
@@ -127,11 +127,13 @@
         //账号审核拒绝后的处理
         if(null != driver && driver.getApprovalStatus() == 3){
             try {
+                driver = new Driver();
                 driver = setDriverParamete(driver, driverRegisterWarpper);
+                driver.setCreateTime(new Date());
             }catch (Exception e){
                 return ResultUtil.error(e.getMessage());
             }
-            this.updateAllColumnById(driver);
+            this.insert(driver);
         }
         //新账号
         if(null == driver){
@@ -188,7 +190,7 @@
         driver.setIdcard(driverRegisterWarpper.getIdcard());
         driver.setIdcardBack(driverRegisterWarpper.getIdcardBack());
         driver.setIdcardFront(driverRegisterWarpper.getIdcardFront());
-        driver.setDriverLicenseNumber(driverRegisterWarpper.getDriverLicenseNumber());
+        driver.setDriverLicenseNumber(driverRegisterWarpper.getIdcard());
         driver.setDriverLicense(driverRegisterWarpper.getDriverLicense());
         driver.setFirstCertificateTime(driverRegisterWarpper.getFirstCertificateTime());
         //注册地
@@ -227,6 +229,9 @@
      */
     @Override
     public ResultUtil<TokenWarpper> driverLogin(String receiver, String phone, String code) throws Exception {
+        if(ToolUtil.isEmpty(receiver)){
+            receiver = "+86";
+        }
         String value = redisUtil.getValue(receiver + phone);
         if(!"12345".equals(code) && ToolUtil.isEmpty(value)){
             return ResultUtil.error("短信验证码无效");
@@ -693,6 +698,7 @@
         String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3);
         RechargeRecord rechargeRecord = new RechargeRecord();
         rechargeRecord.setType(2);
+        rechargeRecord.setPayMethod(type);
         rechargeRecord.setUserId(uid);
         rechargeRecord.setCode(out_trade_no);
         rechargeRecord.setAmount(amount);
@@ -738,10 +744,14 @@
                                 String trade_state = map.get("trade_state");
                                 String transaction_id = map.get("transaction_id");
                                 if("REFUND".equals(trade_state) || "NOTPAY".equals(trade_state) || "CLOSED".equals(trade_state) || "REVOKED".equals(trade_state) || "PAYERROR".equals(trade_state)){
-                                    rechargeRecordService.deleteById(rechargeRecord1.getId());
+                                    rechargeRecord1.setRemark(trade_state);
+                                    rechargeRecordService.updateById(rechargeRecord1);
                                     return;
                                 }
                                 if("SUCCESS".equals(trade_state)){
+                                    rechargeRecord1.setRemark("SUCCESS");
+                                    rechargeRecordService.updateById(rechargeRecord1);
+
                                     Driver driver1 = DriverServiceImpl.this.selectById(uid);
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                     accountChangeDetail.setUserType(2);
@@ -772,7 +782,8 @@
                                 num++;
                             }
                             if(10 == num){
-                                rechargeRecordService.deleteById(rechargeRecord1.getId());
+                                rechargeRecord1.setRemark("支付超时");
+                                rechargeRecordService.updateById(rechargeRecord1);
                             }
                         }
                     }catch (Exception e){
@@ -814,10 +825,13 @@
                                 String tradeStatus = map.get("tradeStatus");
                                 String tradeNo = map.get("tradeNo");
                                 if("TRADE_CLOSED".equals(tradeStatus) || "TRADE_FINISHED".equals(tradeStatus)){
-                                    rechargeRecordService.deleteById(rechargeRecord1.getId());
+                                    rechargeRecord1.setRemark(tradeStatus);
+                                    rechargeRecordService.updateById(rechargeRecord1);
                                     return;
                                 }
                                 if("TRADE_SUCCESS".equals(tradeStatus)){
+                                    rechargeRecord1.setRemark("TRADE_SUCCESS");
+                                    rechargeRecordService.updateById(rechargeRecord1);
                                     Driver driver1 = DriverServiceImpl.this.selectById(uid);
                                     AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
                                     accountChangeDetail.setUserType(2);
@@ -848,7 +862,8 @@
                                 num++;
                             }
                             if(10 == num){
-                                rechargeRecordService.deleteById(rechargeRecord1.getId());
+                                rechargeRecord1.setRemark("支付超时");
+                                rechargeRecordService.updateById(rechargeRecord1);
                             }
                         }
                     }catch (Exception e){
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java
index d9526ad..97fd5c3 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/DriverWorkServiceImpl.java
@@ -116,4 +116,20 @@
         driverService.updateById(driver);
         return ResultUtil.success();
     }
+
+
+    @Override
+    public void taskDriverOffWork() {
+        SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 6));
+        Double num1 = JSON.parseObject(systemConfig.getContent()).getDouble("num1");
+        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1).lt("balance", num1));
+        for (Driver driver : drivers) {
+            DriverWork driverWork = this.selectOne(new EntityWrapper<DriverWork>().eq("driverId", driver.getId()).eq("status", 1));
+            if(null != driverWork){
+                driverWork.setStatus(2);
+                driverWork.setOffWorkTime(new Date());
+                this.updateById(driverWork);
+            }
+        }
+    }
 }
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java
index 921fe5f..182fda6 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/OrderServiceImpl.java
@@ -23,6 +23,8 @@
 import com.agentdriving.driver.modular.system.warpper.AddOrderWarpper;
 import com.agentdriving.driver.modular.system.warpper.HallOrderList;
 import com.agentdriving.driver.modular.system.warpper.OrderInfoWarpper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.geo.Circle;
@@ -48,6 +50,8 @@
 */
 @Service
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
+
+    Logger logger = LoggerFactory.getLogger(OrderServiceImpl.class);
 
     @Autowired
     private IDriverWorkService driverWorkService;
@@ -210,7 +214,7 @@
             new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    pushOrder(finalOrder);
+                    pushOrder(finalOrder.getId());
                 }
             }).start();
         }
@@ -461,17 +465,17 @@
 
     /**
      * 订单推送逻辑
-     * @param order
      */
-    public void pushOrder(Order order){
-        /**
-         * 1.先找最大推单范围内的优推司机 -》 距离最近
-         * 没有1 - 》
-         *      2.按照后台推送配置在范围内查找合适司机
-         *        合适司:积分 > 评分 > 距离
-         *      3.司机没有接单直接将订单置入大厅
-         */
+    public void pushOrder(Long orderId){
         try {
+            Order order = this.selectById(orderId);
+            /**
+             * 1.先找最大推单范围内的优推司机 -》 距离最近
+             * 没有1 - 》
+             *      2.按照后台推送配置在范围内查找合适司机
+             *        合适司:积分 > 评分 > 距离
+             *      3.司机没有接单直接将订单置入大厅
+             */
             boolean lock = redisUtil.lock(5);
             if(!lock){
                 int num1 = 1;
@@ -486,11 +490,10 @@
                 }
             }
             if(!lock){
-                redisUtil.unlock();
                 order.setHallOrder(1);
                 this.updateById(order);
                 ExtraPushOrder(order);
-                return;
+                redisUtil.unlock();
             }
             SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 1));
             if(null == systemConfig){
@@ -519,14 +522,18 @@
             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"));
+                        .eq("state", 2).last(" and surplusQuantity > 0 and 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));
+                    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;
                     }
@@ -539,7 +546,6 @@
                     }
                 }
             }
-
             if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
                 youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
                 youTuiDriverService.updateById(youTuiDriver1);
@@ -562,13 +568,14 @@
 
                     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));
+                        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;
+                        Integer integral = null;//积分
+                        Double score = null;//评分
                         Double d = null;
                         for (Driver driver1 : drivers) {
                             String value = redisUtil.getValue("DRIVER" + driver1.getId());
@@ -579,24 +586,32 @@
                             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 == null || d.compareTo(wgs84) > 0){
+                                if(d.compareTo(wgs84) > 0){
                                     d = wgs84;
+                                    integral = driver1.getIntegral();
+                                    score = driver1.getScore();
                                     driver = driver1.getId();
                                     continue;
                                 }
@@ -608,25 +623,32 @@
             }
 
             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() {
-                        driver1.setServerStatus(1);
-                        driverService.updateById(driver1);
                         Order order1 = OrderServiceImpl.this.selectById(order.getId());
-                        if(order1.getState() == 101 || order1.getState() == 201){
+                        if(order1.getState() != 101 && order1.getState() != 201 && order1.getState() != 301 && order1.getDriverId().compareTo(driver1.getId()) != 0){
+                            driver1.setServerStatus(1);
+                            driverService.updateById(driver1);
+                        }
 
+                        if(order1.getState() == 201 || order1.getState() == 301 || (order1.getState() == 101 && null == order1.getDriverId())){
+                            driver1.setServerStatus(1);
+                            driverService.updateById(driver1);
+                        }
+                        if(order1.getState() == 201 || (order1.getState() == 101 && null == order1.getDriverId())){
                             order1.setHallOrder(1);
                             OrderServiceImpl.this.updateById(order1);
-
-                            ExtraPushOrder(order1);
+                            ExtraPushOrder(order);
                         }
+
+
                     }
                 }, num4 * 1000);
             }else{
@@ -636,10 +658,9 @@
             }
             redisUtil.unlock();
         }catch (Exception e){
-            redisUtil.unlock();
             e.printStackTrace();
+            redisUtil.unlock();
         }
-
     }
 
 
@@ -1142,7 +1163,7 @@
         new Thread(new Runnable() {
             @Override
             public void run() {
-                pushOrder(finalOrder);
+                pushOrder(finalOrder.getId());
             }
         }).start();
         return ResultUtil.success();
@@ -1297,6 +1318,17 @@
      */
     @Override
     public ResultUtil setOrderStatus(Integer uid, Long orderId, Integer payType, Integer state) throws Exception {
+        if(108 == state){
+            String value = redisUtil.getValue("repeat_" + orderId.toString());
+            if(ToolUtil.isEmpty(value)){
+                redisUtil.setStrValue("repeat_" + orderId, System.currentTimeMillis() + "", 10 * 60);
+            }else{
+                Long s = System.currentTimeMillis() - Long.valueOf(value);
+                if(s < 60000){//1分钟
+                    return ResultUtil.error("数据处理中");
+                }
+            }
+        }
         List<Integer> s = Arrays.asList(107, 108);
         if(!s.contains(state)){
             return ResultUtil.error("操作失败");
@@ -1356,6 +1388,9 @@
         if(null != order.getUserId()){
             pushUtil.pushOrderStatus(order.getUserId(), 1, order.getId(), order.getState());
         }
+        if(108 == state){
+            redisUtil.remove("repeat_" + orderId.toString());
+        }
         return ResultUtil.success();
     }
 
@@ -1370,63 +1405,113 @@
         Driver driver = driverService.selectById(order.getDriverId());
         AppUser appUser = appUserService.selectById(order.getUserId());
 
-        //司机推荐首单收入
-        List<Integer> state = Arrays.asList(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);
+        if(null != 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才有抽佣金
+                driver = driverService.selectById(order.getDriverId());
+                AccountChangeDetail accountChangeDetail1 = new AccountChangeDetail();
+                accountChangeDetail1.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail1.setUserType(2);
+                accountChangeDetail1.setUserId(driver.getId());
+                accountChangeDetail1.setType(1);
+                accountChangeDetail1.setChangeType(9);
+                accountChangeDetail1.setOrderId(order.getId());
+                accountChangeDetail1.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail1.setExplain("订单信息费");
+                accountChangeDetail1.setCreateTime(new Date());
+                driver.setBalance(driver.getBalance() - num3);
+                accountChangeDetail1.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
+                driverService.updateById(driver);
+                accountChangeDetailService.saveData(accountChangeDetail1);
+
+
+                //有分佣的情况,分佣的金额从司机充值金额中扣除转给分佣对象
                 SystemConfig systemConfig1 = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 2));
                 if(null != systemConfig1){
                     JSONObject jsonObject1 = JSON.parseObject(systemConfig1.getContent());
+                    //司机推荐用户收入
+                    if(null != appUser && null != appUser.getInviterType() && appUser.getInviterType() == 2){
+                        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.setCreateTime(new Date());
+                            driver1.setCommission(driver1.getCommission() + num1);
+                            accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
+                            accountChangeDetailService.saveData(accountChangeDetail);
+                            driverService.updateById(driver1);
+
+                            Revenue revenue = new Revenue();
+                            revenue.setType(2);
+                            revenue.setUserType(2);
+                            revenue.setUserId(driver1.getId());
+                            revenue.setOrderId(order.getId());
+                            revenue.setAmount(num1);
+                            revenue.setCreateTime(new Date());
+                            revenueService.insert(revenue);
+                        }
+                        num3 = (num3 >= num1 ? num3 - num1 : 0);
+                    }
+
                     //开始处理层级抽佣
-                    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());//二级司机
                             if(null != driver2 && null != driver2.getInviterType() && driver2.getInviterType() == 2){
                                 Driver driver3 = driverService.selectById(driver2.getInviterId());//三级级司机
-                                Double num4 = jsonObject1.getDouble("num4");
                                 Double num5 = jsonObject1.getDouble("num5");
                                 Double num6 = jsonObject1.getDouble("num6");
-                                num4 = (num3 >= num4 ? num4 : num3);
-                                if(num4 > 0){
+                                Double num7 = jsonObject1.getDouble("num7");
+                                num5 = (num3 >= num5 ? num5 : num3);
+                                if(num5 > 0){
                                     Revenue revenue = new Revenue();
                                     revenue.setType(2);
                                     revenue.setUserType(2);
                                     revenue.setUserId(driver1.getId());
                                     revenue.setOrderId(order.getId());
-                                    revenue.setAmount(num4);
+                                    revenue.setAmount(num5);
                                     revenue.setCreateTime(new Date());
                                     revenueService.insert(revenue);
 
@@ -1439,20 +1524,20 @@
                                     accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver1.setCommission(driver1.getCommission() + num4);
+                                    driver1.setCommission(driver1.getCommission() + num5);
                                     accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
-                                    num3 = (num3 >= num4 ? num3 - num4 : 0);
+                                    num3 = (num3 >= num5 ? num3 - num5 : 0);
                                 }
-                                num5 = (num3 >= num5 ? num5 : num3);
-                                if(num5 > 0){
+                                num6 = (num3 >= num6 ? num6 : num3);
+                                if(num6 > 0){
                                     Revenue revenue = new Revenue();
                                     revenue.setType(2);
                                     revenue.setUserType(2);
                                     revenue.setUserId(driver2.getId());
                                     revenue.setOrderId(order.getId());
-                                    revenue.setAmount(num5);
+                                    revenue.setAmount(num6);
                                     revenue.setCreateTime(new Date());
                                     revenueService.insert(revenue);
 
@@ -1465,20 +1550,21 @@
                                     accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver2.setCommission(driver2.getCommission() + num5);
+                                    driver2.setCommission(driver2.getCommission() + num6);
                                     accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
-                                    num3 = (num3 >= num5 ? num3 - num5 : 0);
+
+                                    num3 = (num3 >= num6 ? num3 - num6 : 0);
                                 }
-                                num6 = (num3 >= num6 ? num6 : num3);
-                                if(num6 > 0){
+                                num7 = (num3 >= num7 ? num7 : num3);
+                                if(num7 > 0){
                                     Revenue revenue = new Revenue();
                                     revenue.setType(2);
                                     revenue.setUserType(2);
                                     revenue.setUserId(driver3.getId());
                                     revenue.setOrderId(order.getId());
-                                    revenue.setAmount(num6);
+                                    revenue.setAmount(num7);
                                     revenue.setCreateTime(new Date());
                                     revenueService.insert(revenue);
 
@@ -1491,23 +1577,24 @@
                                     accountChangeDetail.setOldData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver3.setCommission(driver3.getCommission() + num6);
+                                    driver3.setCommission(driver3.getCommission() + num7);
                                     accountChangeDetail.setNewData(driver3.getBalance() + driver3.getBackgroundBalance() + driver3.getCouponBalance() + driver3.getCommission());
                                     driverService.updateById(driver3);
                                     accountChangeDetailService.saveData(accountChangeDetail);
-                                    num3 = (num3 >= num6 ? num3 - num6 : 0);
+
+                                    num3 = (num3 >= num7 ? num3 - num7 : 0);
                                 }
                             }else{
-                                Double num2_ = jsonObject1.getDouble("num2");
                                 Double num3_ = jsonObject1.getDouble("num3");
-                                num2_ = (num3 >= num2_ ? num2_ : num3);
-                                if(num2_ > 0){
+                                Double num4 = jsonObject1.getDouble("num4");
+                                num3_ = (num3 >= num3_ ? num3_ : num3);
+                                if(num3_ > 0){
                                     Revenue revenue = new Revenue();
                                     revenue.setType(2);
                                     revenue.setUserType(2);
                                     revenue.setUserId(driver1.getId());
                                     revenue.setOrderId(order.getId());
-                                    revenue.setAmount(num2_);
+                                    revenue.setAmount(num3_);
                                     revenue.setCreateTime(new Date());
                                     revenueService.insert(revenue);
 
@@ -1520,20 +1607,21 @@
                                     accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver1.setCommission(driver1.getCommission() + num2_);
+                                    driver1.setCommission(driver1.getCommission() + num3_);
                                     accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                     driverService.updateById(driver1);
                                     accountChangeDetailService.saveData(accountChangeDetail);
-                                    num3 = (num3 >= num2_ ? num3 - num2_ : 0);
+
+                                    num3 = (num3 >= num3_ ? num3 - num3_ : 0);
                                 }
-                                num3_ = (num3 >= num3_ ? num3_ : num3);
-                                if(num3_ > 0){
+                                num4 = (num3 >= num4 ? num4 : num3);
+                                if(num4 > 0){
                                     Revenue revenue = new Revenue();
                                     revenue.setType(2);
                                     revenue.setUserType(2);
                                     revenue.setUserId(driver2.getId());
                                     revenue.setOrderId(order.getId());
-                                    revenue.setAmount(num3_);
+                                    revenue.setAmount(num4);
                                     revenue.setCreateTime(new Date());
                                     revenueService.insert(revenue);
 
@@ -1546,23 +1634,23 @@
                                     accountChangeDetail.setOldData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                     accountChangeDetail.setExplain("订单分佣收入");
                                     accountChangeDetail.setCreateTime(new Date());
-                                    driver2.setCommission(driver2.getCommission() + num3_);
+                                    driver2.setCommission(driver2.getCommission() + num4);
                                     accountChangeDetail.setNewData(driver2.getBalance() + driver2.getBackgroundBalance() + driver2.getCouponBalance() + driver2.getCommission());
                                     driverService.updateById(driver2);
                                     accountChangeDetailService.saveData(accountChangeDetail);
-                                    num3 = (num3 >= num3_ ? num3 - num3_ : 0);
+                                    num3 = (num3 >= num4 ? num3 - num4 : 0);
                                 }
                             }
                         }else{
-                            Double num1_ = jsonObject1.getDouble("num1");
-                            num1_ = (num3 >= num1_ ? num1_ : num3);
-                            if(num1_ > 0){
+                            Double num2_ = jsonObject1.getDouble("num2");
+                            num2_ = (num3 >= num2_ ? num2_ : num3);
+                            if(num2_ > 0){
                                 Revenue revenue = new Revenue();
                                 revenue.setType(2);
                                 revenue.setUserType(2);
                                 revenue.setUserId(driver1.getId());
                                 revenue.setOrderId(order.getId());
-                                revenue.setAmount(num1_);
+                                revenue.setAmount(num2_);
                                 revenue.setCreateTime(new Date());
                                 revenueService.insert(revenue);
 
@@ -1575,11 +1663,11 @@
                                 accountChangeDetail.setOldData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                 accountChangeDetail.setExplain("订单分佣收入");
                                 accountChangeDetail.setCreateTime(new Date());
-                                driver1.setCommission(driver1.getCommission() + num1_);
+                                driver1.setCommission(driver1.getCommission() + num2_);
                                 accountChangeDetail.setNewData(driver1.getBalance() + driver1.getBackgroundBalance() + driver1.getCouponBalance() + driver1.getCommission());
                                 driverService.updateById(driver1);
                                 accountChangeDetailService.saveData(accountChangeDetail);
-                                num3 = (num3 >= num1_ ? num3 - num1_ : 0);
+                                num3 = (num3 >= num2_ ? num3 - num2_ : 0);
                             }
                         }
                     }
@@ -1596,24 +1684,6 @@
                     }
                 }
             }
-        }
-        //司机余额扣减抽佣金额
-        if(n > 0){
-            driver = driverService.selectById(order.getDriverId());
-            AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-            accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
-            accountChangeDetail.setUserType(2);
-            accountChangeDetail.setUserId(driver.getId());
-            accountChangeDetail.setType(1);
-            accountChangeDetail.setChangeType(9);
-            accountChangeDetail.setOrderId(order.getId());
-            accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
-            accountChangeDetail.setExplain("线下收款服务费支出");
-            accountChangeDetail.setCreateTime(new Date());
-            driver.setBalance(driver.getBalance() - n);
-            accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
-            driverService.updateById(driver);
-            accountChangeDetailService.saveData(accountChangeDetail);
         }
     }
 
@@ -1786,34 +1856,31 @@
     @Override
     public void completeCollection() {
         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())"));
+                .eq("payType", 3).last(" and UNIX_TIMESTAMP(getoffTime) + 600 <= UNIX_TIMESTAMP(now())"));
         for (Order order : orders) {
             order.setState(108);
             order.setPayTime(new Date());
             if(null != order.getCouponId()){
                 UserToCoupon userToCoupon = userToCouponService.selectById(order.getCouponId());
-                if(userToCoupon.getValidCount() > 0){
-                    userToCoupon.setValidCount(userToCoupon.getValidCount() - 1);
-                    userToCouponService.updateById(userToCoupon);
-                    Coupon coupon = couponService.selectById(userToCoupon.getCouponId());
+                Coupon coupon = couponService.selectById(userToCoupon.getCouponId());
 
-                    Driver driver = driverService.selectById(order.getDriverId());
-                    AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
-                    accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
-                    accountChangeDetail.setUserType(2);
-                    accountChangeDetail.setUserId(order.getDriverId());
-                    accountChangeDetail.setCreateTime(new Date());
-                    accountChangeDetail.setOldData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
-                    accountChangeDetail.setType(1);
-                    accountChangeDetail.setChangeType(7);
-                    accountChangeDetail.setOrderId(order.getId());
-                    accountChangeDetail.setExplain("优惠券收入");
-                    driver.setCouponBalance(driver.getCouponBalance() + coupon.getCouponPreferentialAmount());
-                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
-                    driverService.updateById(driver);
-                    accountChangeDetailService.insert(accountChangeDetail);
-                }
+                Driver driver = driverService.selectById(order.getDriverId());
+                AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
+                accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
+                accountChangeDetail.setUserType(2);
+                accountChangeDetail.setUserId(order.getDriverId());
+                accountChangeDetail.setCreateTime(new Date());
+                accountChangeDetail.setOldData(driver.getCouponBalance() + driver.getCommission());
+                accountChangeDetail.setType(1);
+                accountChangeDetail.setChangeType(7);
+                accountChangeDetail.setOrderId(order.getId());
+                accountChangeDetail.setExplain("优惠券收入");
+                driver.setCommission(driver.getCommission() + coupon.getCouponPreferentialAmount());
+                accountChangeDetail.setNewData(driver.getCouponBalance() + driver.getCommission());
+                driverService.updateById(driver);
+                accountChangeDetailService.insert(accountChangeDetail);
             }
+
             this.updateById(order);
 
             try {
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java
index 8e88eff..65d4bdb 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/PayMoneyUtil.java
@@ -169,9 +169,9 @@
         }
         //切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
         //boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
-        try {
-            boolean flag = AlipaySignature.rsaCheckV1(params, alipayPublicKey, "UTF-8","RSA2");
-            if(flag){
+//        try {
+//            boolean flag = AlipaySignature.rsaCheckV1(params, alipayPublicKey, "UTF-8","RSA2");
+//            if(flag){
                 Map<String, String> map = new HashMap<>();
                 String out_trade_no = params.get("out_trade_no");
                 String subject = params.get("subject");
@@ -182,12 +182,12 @@
                 map.put("total_amount", total_amount);
                 map.put("trade_no", trade_no);//支付宝交易号
                 return map;
-            }
+//            }
 
-        } catch (AlipayApiException e) {
-            e.printStackTrace();
-        }
-        return null;
+//        } catch (AlipayApiException e) {
+//            e.printStackTrace();
+//        }
+//        return null;
     }
 
 
@@ -201,8 +201,8 @@
         AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aliAppid, appPrivateKey,"json","UTF-8", alipay_public_key,"RSA2");
         AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
         request.setBizContent("{" +
-                "\"out_trade_no\":" + out_trade_no +
-                "  }");
+                "\"out_trade_no\":\"" + out_trade_no +
+                "\"}");
         AlipayTradeQueryResponse response = alipayClient.execute(request);
         if(response.isSuccess()){
             String tradeStatus = response.getTradeStatus();//交易状态:WAIT_BUYER_PAY(交易创建,等待买家付款)、TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、TRADE_SUCCESS(交易支付成功)、TRADE_FINISHED(交易结束,不可退款)
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/TaskUtil.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/TaskUtil.java
index 6d1bc14..35cd076 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/TaskUtil.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/util/TaskUtil.java
@@ -1,10 +1,7 @@
 package com.agentdriving.driver.modular.system.util;
 
 
-import com.agentdriving.driver.modular.system.service.IAccountChangeDetailService;
-import com.agentdriving.driver.modular.system.service.IDriverService;
-import com.agentdriving.driver.modular.system.service.IOrderService;
-import com.agentdriving.driver.modular.system.service.IYouTuiDriverService;
+import com.agentdriving.driver.modular.system.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -28,6 +25,9 @@
     @Autowired
     private IYouTuiDriverService youTuiDriverService;
 
+    @Autowired
+    private IDriverWorkService driverWorkService;
+
 
 
 
@@ -37,7 +37,7 @@
     @Scheduled(fixedRate = 1000 * 60)
     public void taskMinute(){
         try {
-            orderService.completeCollection();
+            driverWorkService.taskDriverOffWork();
             youTuiDriverService.editState();
         } catch (Exception e) {
             e.printStackTrace();
@@ -51,7 +51,7 @@
     @Scheduled(cron = "0 0 0 * * *")
     public void taskDay(){
         try {
-
+            orderService.completeCollection();
         }catch (Exception e){
             e.printStackTrace();
         }
diff --git a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java
index 2e92c3c..0d97b93 100644
--- a/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java
+++ b/driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/warpper/DriverRegisterWarpper.java
@@ -34,8 +34,6 @@
     private String idcardFront;
     @ApiModelProperty(value = "身份证背面照", required = true, dataType = "string")
     private String idcardBack;
-    @ApiModelProperty(value = "驾驶证号码", required = true, dataType = "string")
-    private String driverLicenseNumber;
     @ApiModelProperty(value = "初领驾驶证时间", required = true, dataType = "string")
     private Date firstCertificateTime;
     @ApiModelProperty(value = "驾驶证照片", required = true, dataType = "string")
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
index ada1971..10b742e 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TDriverController.java
@@ -353,7 +353,7 @@
     @RequestMapping(value = "/commission/list")
     @ResponseBody
     public Object commissionList(String name,String phone,Integer status) {
-        EntityWrapper<TDriver> wrapper = tDriverService.getCommissionPageList(name,phone,status);
+        Wrapper<TDriver> wrapper = tDriverService.getCommissionPageList(name,phone,status);
         List<TDriver> tDrivers = tDriverService.selectList(wrapper);
         List<TDriverCommissionResp> commissionResp = tDriverService.getTDriverCommissionResp(tDrivers);
         for (TDriverCommissionResp tDriverCommissionResp : commissionResp) {
@@ -848,7 +848,7 @@
             String fileName = "CommissionInfo"+time1+".xls";
             String[] title = new String[] {"姓名","手机号","所属代理商","推广人数","关联人数",
                     "累计获得佣金","可提现佣金","已提现金额","状态"};
-            EntityWrapper<TDriver> wrapper = tDriverService.getCommissionPageList(name,phone,status);
+            Wrapper<TDriver> wrapper = tDriverService.getCommissionPageList(name,phone,status);
 //            wrapper.ne("isException",2);
             // 是否异常
             List<TDriver> list = tDriverService.selectList(wrapper);
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
index 8a958dd..5b06e17 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/THomePageController.java
@@ -652,7 +652,7 @@
             }
         }else {
             // 业绩排名 performanceTable
-            List<TAgent> tAgentList = tAgentService.selectList(null);
+            List<TAgent> tAgentList = tAgentService.selectList(new EntityWrapper<TAgent>().eq("status", 1));
             List<Integer> ids = tAgentList.stream().map(TAgent::getId).collect(Collectors.toList());
             if (1 == type){
                 // 单量
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
index 81cec52..118859d 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TOrderController.java
@@ -23,6 +23,7 @@
 import com.stylefeng.guns.modular.system.model.TOrderPosition;
 import com.stylefeng.guns.modular.system.service.ITAppUserService;
 import com.stylefeng.guns.modular.system.service.ITCancelOrderService;
+import com.stylefeng.guns.modular.system.service.ITDriverService;
 import com.stylefeng.guns.modular.system.service.ITOrderService;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
 import io.swagger.annotations.ApiImplicitParam;
@@ -70,6 +71,9 @@
     private ITCancelOrderService tCancelOrderService;
     @Resource
     private TCancelOrderMapper tCancelOrderMapper;
+
+    @Autowired
+    private ITDriverService driverService;
 
     @Value("${filePath}")
     private String filePath;
@@ -497,6 +501,11 @@
         TOrder tOrder = tOrderService.selectById(tOrderId);
         tOrder.setState(OrderStateEnum.CANCELED.getCode());
         tOrderService.updateById(tOrder);
+        if(null != tOrder.getDriverId()){
+            TDriver tDriver = driverService.selectById(tOrder.getDriverId());
+            tDriver.setServerStatus(1);
+            driverService.updateById(tDriver);
+        }
         return SUCCESS_TIP;
     }
 }
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/UploadUtil.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/UploadUtil.java
index 6a65ab2..4003131 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/UploadUtil.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/util/UploadUtil.java
@@ -29,7 +29,7 @@
  * 上传文件
  */
 @RestController
-@RequestMapping("/image")
+@RequestMapping("/upload")
 public class UploadUtil extends BaseController {
     private final static Logger log = LoggerFactory.getLogger(UploadUtil.class);
 
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
index 4410ba6..7c16af5 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TRevenueMapper.xml
@@ -127,25 +127,47 @@
             cw.type = 2 AND cw.businessType = #{type} AND cw.code = #{code}
     </select>
     <select id="getDataStatisticsIncomeOrCommission" resultType="com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp">
-        SELECT date_format(r.createTime, '%Y-%m') AS monthTime,SUM(r.amount) AS amount,d.userName
-        FROM t_revenue r
-        LEFT JOIN (SELECT id,name AS userName from t_driver) d ON r.userId = d.id
-        LEFT JOIN t_order o ON r.orderId = o.id
-        <where>
+        <if test="type == 1">
+            select aa.monthTime,aa.userName,sum(aa.amount) as amount from (
+            select
+            DATE_FORMAT(a.createTime, '%Y-%m') as monthTime,
+            b.id as driverId,
+            a.payMoney as amount,
+            b.`name` as userName
+            from t_order a
+            left join t_driver b on (a.driverId = b.id)
+            where a.payMoney > 0
             <if test="agentId != null">
-                AND o.agentId = #{agentId}
+                and a.agentId = #{agentId}
             </if>
             <if test="monthDate != null and monthDate != ''">
-                AND date_format(r.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+                AND date_format(a.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
             </if>
-            <if test="type != null">
-                AND r.type = #{type}
-            </if>
-            AND r.userType = 2
-        </where>
-        GROUP BY monthTime,userName
-        ORDER BY amount DESC
-        LIMIT 10
+            ) as aa GROUP BY aa.monthTime,aa.driverId
+            ORDER BY amount DESC
+            LIMIT 10
+        </if>
+        <if test="2 == type">
+            SELECT date_format(r.createTime, '%Y-%m') AS monthTime,SUM(r.amount) AS amount,d.userName
+            FROM t_revenue r
+            LEFT JOIN (SELECT id,name AS userName from t_driver) d ON r.userId = d.id
+            LEFT JOIN t_order o ON r.orderId = o.id
+            <where>
+                <if test="agentId != null">
+                    AND o.agentId = #{agentId}
+                </if>
+                <if test="monthDate != null and monthDate != ''">
+                    AND date_format(r.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+                </if>
+                <if test="type != null">
+                    AND r.type = #{type}
+                </if>
+                AND r.userType = 2
+            </where>
+            GROUP BY monthTime,userName
+            ORDER BY amount DESC
+            LIMIT 10
+        </if>
     </select>
 
     <select id="getDataStatisticsCommission" resultType="com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp">
@@ -169,28 +191,53 @@
         ORDER BY amount DESC
     </select>
     <select id="getDataStatisticsIncomeOrCommissionByIds" resultType="com.stylefeng.guns.modular.system.controller.resp.PerformanceTableResp">
-        SELECT date_format(r.createTime, '%Y-%m') AS monthTime,SUM(r.amount) AS amount,d.userName
-        FROM t_revenue r
-        LEFT JOIN (SELECT id,name AS userName from t_driver) d ON r.userId = d.id
-        LEFT JOIN t_order o ON r.orderId = o.id
-        <where>
+        <if test="type == 1">
+            select aa.monthTime,aa.userName,sum(aa.amount) as amount from (
+            select
+            DATE_FORMAT(a.createTime, '%Y-%m') as monthTime,
+            b.id as driverId,
+            a.payMoney as amount,
+            b.`name` as userName
+            from t_order a
+            left join t_driver b on (a.driverId = b.id)
+            where a.payMoney > 0
             <if test="ids != null and ids.size() > 0">
-                AND o.agentId IN
+                AND a.agentId IN
                 <foreach collection="ids" close=")" open="(" item="id" separator=",">
                     #{id}
                 </foreach>
             </if>
             <if test="monthDate != null and monthDate != ''">
-                AND date_format(r.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+                AND date_format(a.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
             </if>
-            <if test="type != null">
-                AND r.type = #{type}
-            </if>
-            AND r.userType = 2
-        </where>
-        GROUP BY monthTime,userName
-        ORDER BY amount DESC
-        LIMIT 10
+            ) as aa GROUP BY aa.monthTime,aa.driverId
+            ORDER BY amount DESC
+            LIMIT 10
+        </if>
+        <if test="type == 2">
+            SELECT date_format(r.createTime, '%Y-%m') AS monthTime,SUM(r.amount) AS amount,d.userName
+            FROM t_revenue r
+            LEFT JOIN (SELECT id,name AS userName from t_driver) d ON r.userId = d.id
+            LEFT JOIN t_order o ON r.orderId = o.id
+            <where>
+                <if test="ids != null and ids.size() > 0">
+                    AND o.agentId IN
+                    <foreach collection="ids" close=")" open="(" item="id" separator=",">
+                        #{id}
+                    </foreach>
+                </if>
+                <if test="monthDate != null and monthDate != ''">
+                    AND date_format(r.createTime, '%Y-%m') LIKE concat('',#{monthDate},'%')
+                </if>
+                <if test="type != null">
+                    AND r.type = #{type}
+                </if>
+                AND r.userType = 2
+            </where>
+            GROUP BY monthTime,userName
+            ORDER BY amount DESC
+            LIMIT 10
+        </if>
     </select>
 
 </mapper>
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
index ef3ac5f..bd7b598 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITDriverService.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.stylefeng.guns.modular.system.controller.resp.TDriverCommissionResp;
 import com.stylefeng.guns.modular.system.controller.resp.TDriverResp;
 import com.stylefeng.guns.modular.system.model.TDriver;
@@ -65,7 +66,7 @@
      * @param status
      * @return
      */
-    EntityWrapper<TDriver> getCommissionPageList(String name, String phone, Integer status);
+    Wrapper<TDriver> getCommissionPageList(String name, String phone, Integer status);
 
     /**
      * 封装佣金集合
diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
index a04eb37..47ae0bd 100644
--- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
+++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TDriverServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.stylefeng.guns.core.base.tips.SuccessTip;
 import com.stylefeng.guns.core.shiro.ShiroKit;
 import com.stylefeng.guns.core.util.DateUtil;
@@ -387,8 +388,8 @@
     }
 
     @Override
-    public EntityWrapper<TDriver> getCommissionPageList(String name, String phone, Integer status) {
-        EntityWrapper<TDriver> wrapper = new EntityWrapper<>();
+    public Wrapper<TDriver> getCommissionPageList(String name, String phone, Integer status) {
+        Wrapper<TDriver> wrapper = new EntityWrapper<TDriver>().eq("approvalStatus", 2).eq("status", 1);
         // 手机号
         if(StringUtils.hasLength(phone)){
             wrapper.like("phone",phone);
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html b/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html
index d7a3c2f..de8f14f 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/blackboardBlank.html
@@ -328,611 +328,625 @@
 </style>
 <script type="text/javascript">
 
-	$(function (){
+    $(function (){
 
-		$('#mapDiv').hide()
-		$('#orderDiv').hide()
-		loading()
-		orderByMonth(new Date().getMonth() + 1)
-		orderByYear(new Date().getFullYear())
-		queryOrderCount()
+        $('#mapDiv').hide()
+        $('#orderDiv').hide()
+        loading()
+        orderByMonth(new Date().getMonth() + 1)
+        orderByYear(new Date().getFullYear())
+        queryOrderCount()
 
-		var first = $('.breadcrumb').children('li:first').children('a');
-		first.css({
-			'color': '#AB2626'
-		})
-		var className = first.attr('class');
-		$('.content').hide();
-		$('#' + className + 'Div').show();
+        var first = $('.breadcrumb').children('li:first').children('a');
+        first.css({
+            'color': '#AB2626'
+        })
+        var className = first.attr('class');
+        $('.content').hide();
+        $('#' + className + 'Div').show();
 
-		$('.breadcrumb').find('a').on('click', function () {
-			$('.breadcrumb').children('li').each(function () {
-				$(this).children('a').removeAttr('style');
-			})
+        $('.breadcrumb').find('a').on('click', function () {
+            $('.breadcrumb').children('li').each(function () {
+                $(this).children('a').removeAttr('style');
+            })
 
-			$(this).css({
-				'color': '#AB2626'
-			});
-			var className = $(this).attr('class');
-			$('.content').hide();
-			$('#' + className + "Div").show();
-			switch (className) {
-				case "statistics":
-					$('#mapDiv').hide()
-					$('#orderDiv').hide()
-					loading()
-					orderByMonth(new Date().getMonth() + 1)
-					orderByYear(new Date().getFullYear())
-					queryOrderCount()
-					break;
-				case "map":
-					map("",102.709,25.0635);
-					break;
-				case "order":
-					mapOrder("");
-					getOrderData();
-					break;
-			}
+            $(this).css({
+                'color': '#AB2626'
+            });
+            var className = $(this).attr('class');
+            $('.content').hide();
+            $('#' + className + "Div").show();
+            switch (className) {
+                case "statistics":
+                    $('#mapDiv').hide()
+                    $('#orderDiv').hide()
+                    loading()
+                    orderByMonth(new Date().getMonth() + 1)
+                    orderByYear(new Date().getFullYear())
+                    queryOrderCount()
+                    break;
+                case "map":
+                    map("",113.264434,23.129162);
+                    break;
+                case "order":
+                    mapOrder("");
+                    getOrderData();
+                    break;
+            }
 
-		})
-		// $('#mapDiv').hide()
-		// $('#orderDiv').hide()
-		// loading()
-		// orderByMonth(new Date().getMonth() + 1)
-		// orderByYear(new Date().getFullYear())
-		// queryOrderCount()
-	})
+        })
+        // $('#mapDiv').hide()
+        // $('#orderDiv').hide()
+        // loading()
+        // orderByMonth(new Date().getMonth() + 1)
+        // orderByYear(new Date().getFullYear())
+        // queryOrderCount()
+        setInterval(function () {
+            console.log(1111111111)
+            getData()
+        }, 30000);
+    })
 
-	function selectYear(e){
-		orderByYear(e)
-	}
-	function selectMonth(e){
-		// 查询排行榜
-		if($('#btn1').val() != null && $('#btn1').val() != ''){
-			console.log(11111)
-			getOrder($('#btn1').val(),e)
-		}
-		if($('#btn2').val() != null && $('#btn2').val() != ''){
-			console.log(22222)
-			getOrder($('#btn2').val(),e)
-		}
-		if($('#btn3').val() != null && $('#btn3').val() != ''){
-			console.log(33333)
-			getOrder($('#btn3').val(),e)
-		}
-	}
-	laydate.render({
-		elem: '#insertTime',
-		range: false,
-		type: "year",
-		change:function(value,date) {
-			selectYear(value)// change 每点一次都会监听一遍
-		}
-	});
-	laydate.render({
-		elem: '#insertTimeMonth',
-		range: false,
-		type: "month",
-		change:function(value,date) {
-			selectMonth(value)// change 每点一次都会监听一遍
-		}
-	});
+    function selectYear(e){
+        orderByYear(e)
+    }
+    function selectMonth(e){
+        // 查询排行榜
+        if($('#btn1').val() != null && $('#btn1').val() != ''){
+            console.log(11111)
+            getOrder($('#btn1').val(),e)
+        }
+        if($('#btn2').val() != null && $('#btn2').val() != ''){
+            console.log(22222)
+            getOrder($('#btn2').val(),e)
+        }
+        if($('#btn3').val() != null && $('#btn3').val() != ''){
+            console.log(33333)
+            getOrder($('#btn3').val(),e)
+        }
+    }
+    laydate.render({
+        elem: '#insertTime',
+        range: false,
+        type: "year",
+        change:function(value,date) {
+            selectYear(value)// change 每点一次都会监听一遍
+        }
+    });
+    laydate.render({
+        elem: '#insertTimeMonth',
+        range: false,
+        type: "month",
+        change:function(value,date) {
+            selectMonth(value)// change 每点一次都会监听一遍
+        }
+    });
+    laydate.render({
+        elem: '#createTime',
+        type: 'date',
+        range: true
+    });
 
-	// 进度条加载
-	function loading(){
-		var options = $.extend({
-			percentage : $('#agentTotal').text(),
-			ShowProgressCount: false,
-			duration: 10,
+    // 进度条加载
+    function loading(){
+        var options = $.extend({
+            percentage : $('#agentTotal').text()<100?$('#agentTotal').text():($('#agentTotal').text()>1000?$('#agentTotal').text()/100:$('#agentTotal').text()/10),
+            ShowProgressCount: false,
+            duration: 10,
 
-			// Styling Options
-			fillBackgroundColor: '#3498db',
-			backgroundColor: '#EEEEEE',
-			radius: '10px',
-			height: '20px',
-			width: '80%'
-		});
-		$('#pro1').LineProgressbar(options);
-		var options = $.extend({
-			percentage : $('#agentMonthTotal').text(),
-			ShowProgressCount: false,
-			duration: 10,
+            // Styling Options
+            fillBackgroundColor: '#3498db',
+            backgroundColor: '#EEEEEE',
+            radius: '10px',
+            height: '20px',
+            width: '80%'
+        });
+        $('#pro1').LineProgressbar(options);
+        var options = $.extend({
+            percentage : $('#agentMonthTotal').text()<100?$('#agentMonthTotal').text():($('#agentMonthTotal').text()>1000?$('#agentMonthTotal').text()/100:$('#agentMonthTotal').text()/10),
+            ShowProgressCount: false,
+            duration: 10,
 
-			// Styling Options
-			fillBackgroundColor: '#3498db',
-			backgroundColor: '#EEEEEE',
-			radius: '10px',
-			height: '20px',
-			width: '80%'
-		});
-		$('#pro2').LineProgressbar(options);
-		var options = $.extend({
-			percentage : $('#driverTotal').text(),
-			ShowProgressCount: false,
-			duration: 10,
+            // Styling Options
+            fillBackgroundColor: '#3498db',
+            backgroundColor: '#EEEEEE',
+            radius: '10px',
+            height: '20px',
+            width: '80%'
+        });
+        $('#pro2').LineProgressbar(options);
+        var options = $.extend({
+            percentage : $('#driverTotal').text()<100?$('#driverTotal').text():($('#driverTotal').text()>1000?$('#driverTotal').text()/100:$('#driverTotal').text()/10),
+            ShowProgressCount: false,
+            duration: 10,
 
-			// Styling Options
-			fillBackgroundColor: '#3498db',
-			backgroundColor: '#EEEEEE',
-			radius: '10px',
-			height: '20px',
-			width: '80%'
-		});
-		$('#pro3').LineProgressbar(options);
-		var options = $.extend({
-			percentage : $('#driverMonthTotal').text(),
-			ShowProgressCount: false,
-			duration: 10,
+            // Styling Options
+            fillBackgroundColor: '#3498db',
+            backgroundColor: '#EEEEEE',
+            radius: '10px',
+            height: '20px',
+            width: '80%'
+        });
+        $('#pro3').LineProgressbar(options);
+        var options = $.extend({
+            percentage : $('#driverMonthTotal').text()<100?$('#driverMonthTotal').text():($('#driverMonthTotal').text()>1000?$('#driverMonthTotal').text()/100:$('#driverMonthTotal').text()/10),
+            ShowProgressCount: false,
+            duration: 10,
 
-			// Styling Options
-			fillBackgroundColor: '#3498db',
-			backgroundColor: '#EEEEEE',
-			radius: '10px',
-			height: '20px',
-			width: '80%'
-		});
-		$('#pro4').LineProgressbar(options);
-	}
+            // Styling Options
+            fillBackgroundColor: '#3498db',
+            backgroundColor: '#EEEEEE',
+            radius: '10px',
+            height: '20px',
+            width: '80%'
+        });
+        $('#pro4').LineProgressbar(options);
+    }
 
-	// 单量
-	function queryOrderCount(){
-		$('#btn1').css("backgroundColor","dodgerblue")
-		$('#btn1').css("borderColor","dodgerblue")
-		$('#btn1').css("color","#FFFFFF")
-		$('#btn2').css("backgroundColor","#FFFFFF")
-		$('#btn2').css("borderColor","dodgerblue")
-		$('#btn2').css("color","black")
-		$('#btn3').css("backgroundColor","#FFFFFF")
-		$('#btn3').css("borderColor","dodgerblue")
-		$('#btn3').css("color","black")
-		$('#btn1').val(1)
-		$('#btn2').val('')
-		$('#btn3').val('')
-		getOrder($('#btn1').val(),$('#insertTimeMonth').val())
-	}
-	// 收入
-	function queryIncome(){
-		$('#btn1').css("backgroundColor","#FFFFFF")
-		$('#btn1').css("borderColor","dodgerblue")
-		$('#btn1').css("color","black")
-		$('#btn2').css("backgroundColor","dodgerblue")
-		$('#btn2').css("borderColor","dodgerblue")
-		$('#btn2').css("color","#FFFFFF")
-		$('#btn3').css("backgroundColor","#FFFFFF")
-		$('#btn3').css("borderColor","dodgerblue")
-		$('#btn3').css("color","black")
-		$('#btn1').val('')
-		$('#btn2').val(2)
-		$('#btn3').val('')
-		getOrder($('#btn2').val(),$('#insertTimeMonth').val())
-	}
-	// 佣金
-	function queryCommission(){
-		$('#btn1').css("backgroundColor","#FFFFFF")
-		$('#btn1').css("borderColor","dodgerblue")
-		$('#btn1').css("color","black")
-		$('#btn2').css("backgroundColor","#FFFFFF")
-		$('#btn2').css("borderColor","dodgerblue")
-		$('#btn2').css("color","black")
-		$('#btn3').css("backgroundColor","dodgerblue")
-		$('#btn3').css("borderColor","dodgerblue")
-		$('#btn3').css("color","#FFFFFF")
-		$('#btn1').val('')
-		$('#btn2').val('')
-		$('#btn3').val(3)
-		getOrder($('#btn3').val(),$('#insertTimeMonth').val())
-	}
+    // 单量
+    function queryOrderCount(){
+        $('#btn1').css("backgroundColor","dodgerblue")
+        $('#btn1').css("borderColor","dodgerblue")
+        $('#btn1').css("color","#FFFFFF")
+        $('#btn2').css("backgroundColor","#FFFFFF")
+        $('#btn2').css("borderColor","dodgerblue")
+        $('#btn2').css("color","black")
+        $('#btn3').css("backgroundColor","#FFFFFF")
+        $('#btn3').css("borderColor","dodgerblue")
+        $('#btn3').css("color","black")
+        $('#btn1').val(1)
+        $('#btn2').val('')
+        $('#btn3').val('')
+        getOrder($('#btn1').val(),$('#insertTimeMonth').val())
+    }
+    // 收入
+    function queryIncome(){
+        $('#btn1').css("backgroundColor","#FFFFFF")
+        $('#btn1').css("borderColor","dodgerblue")
+        $('#btn1').css("color","black")
+        $('#btn2').css("backgroundColor","dodgerblue")
+        $('#btn2').css("borderColor","dodgerblue")
+        $('#btn2').css("color","#FFFFFF")
+        $('#btn3').css("backgroundColor","#FFFFFF")
+        $('#btn3').css("borderColor","dodgerblue")
+        $('#btn3').css("color","black")
+        $('#btn1').val('')
+        $('#btn2').val(2)
+        $('#btn3').val('')
+        getOrder($('#btn2').val(),$('#insertTimeMonth').val())
+    }
+    // 佣金
+    function queryCommission(){
+        $('#btn1').css("backgroundColor","#FFFFFF")
+        $('#btn1').css("borderColor","dodgerblue")
+        $('#btn1').css("color","black")
+        $('#btn2').css("backgroundColor","#FFFFFF")
+        $('#btn2').css("borderColor","dodgerblue")
+        $('#btn2').css("color","black")
+        $('#btn3').css("backgroundColor","dodgerblue")
+        $('#btn3').css("borderColor","dodgerblue")
+        $('#btn3').css("color","#FFFFFF")
+        $('#btn1').val('')
+        $('#btn2').val('')
+        $('#btn3').val(3)
+        getOrder($('#btn3').val(),$('#insertTimeMonth').val())
+    }
 
-	// 通过年查询订单数量(查询每月)
-	function orderByYear(e){
-		var dom = document.getElementById('chart1');
-		var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsYearByAgentId",function(data){
-			data = data.yearResp
-			var myChart = echarts.init(dom, null, {
-				renderer: 'canvas',
-				useDirtyRect: false
-			});
-			var option;
-			option = {
-				tooltip: {
-					trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
-					axisPointer: {// 坐标轴指示器,坐标轴触发有效
-						type: 'line' // 默认为直线,可选为:'line' | 'shadow'
-					},
-					formatter: '日期: {b} <br/>订单数量 : {c}'
-				},
-				xAxis: {
-					type: 'category',
-					data: [data[0].month+'月',data[1].month+'月', data[2].month+'月', data[3].month+'月',data[4].month+'月',data[5].month+'月',data[6].month+'月',data[7].month+'月',data[8].month+'月',data[9].month+'月',data[10].month+'月',data[11].month+'月']
-				},
-				yAxis: {
-					type: 'value'
-				},
-				series: [
-					{
-						data: [data[0].orderCount,data[1].orderCount, data[2].orderCount, data[3].orderCount,data[4].orderCount,data[5].orderCount,data[6].orderCount,data[7].orderCount,data[8].orderCount,data[9].orderCount,data[10].orderCount,data[11].orderCount],
-						type: 'line',
-						color: '#00b7ee'
-					}
-				]
-			};
-			option && myChart.setOption(option);
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentName").val());
-		if(e==''){
-			ajax.set("yearDate",$("#year").val());
-		}else{
-			ajax.set("yearDate",e);
-		}
+    // 通过年查询订单数量(查询每月)
+    function orderByYear(e){
+        var dom = document.getElementById('chart1');
+        var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsYearByAgentId",function(data){
+            data = data.yearResp
+            var myChart = echarts.init(dom, null, {
+                renderer: 'canvas',
+                useDirtyRect: false
+            });
+            var option;
+            option = {
+                tooltip: {
+                    trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
+                    axisPointer: {// 坐标轴指示器,坐标轴触发有效
+                        type: 'line' // 默认为直线,可选为:'line' | 'shadow'
+                    },
+                    formatter: '日期: {b} <br/>订单数量 : {c}'
+                },
+                xAxis: {
+                    type: 'category',
+                    data: [data[0].month+'月',data[1].month+'月', data[2].month+'月', data[3].month+'月',data[4].month+'月',data[5].month+'月',data[6].month+'月',data[7].month+'月',data[8].month+'月',data[9].month+'月',data[10].month+'月',data[11].month+'月']
+                },
+                yAxis: {
+                    type: 'value'
+                },
+                series: [
+                    {
+                        data: [data[0].orderCount,data[1].orderCount, data[2].orderCount, data[3].orderCount,data[4].orderCount,data[5].orderCount,data[6].orderCount,data[7].orderCount,data[8].orderCount,data[9].orderCount,data[10].orderCount,data[11].orderCount],
+                        type: 'line',
+                        color: '#00b7ee'
+                    }
+                ]
+            };
+            option && myChart.setOption(option);
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentName").val());
+        if(e==''){
+            ajax.set("yearDate",$("#year").val());
+        }else{
+            ajax.set("yearDate",e);
+        }
 
-		ajax.start();
-	}
+        ajax.start();
+    }
 
-	// 通过本月查询订单数量(查询本月每天)
-	function orderByMonth(){
-		var dom = document.getElementById('chart2');
-		var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsMonthByAgentId",function(data){
-			data = data.monthResp
-			var mon = new Date().getMonth()+1;
-			if(mon < 10){
-				mon = '0'+mon;
-			}
-			var yResp = [];
-			var xResp = [];
-			for (var i =0;i<data.length;i++){
-				yResp.push({
-					value:data[i].orderCount,
-				})
-				xResp.push({
-					value:mon+'-'+data[i].month,
-				})
-			}
-			var myChart = echarts.init(dom, null, {
-				renderer: 'canvas',
-				useDirtyRect: false
-			});
-			var option;
-			option = {
-				tooltip: {
-					trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
-					axisPointer: {// 坐标轴指示器,坐标轴触发有效
-						type: 'line' // 默认为直线,可选为:'line' | 'shadow'
-					},
-					formatter: '日期: {b} <br/>订单数量 : {c}'
-				},
+    // 通过本月查询订单数量(查询本月每天)
+    function orderByMonth(){
+        var dom = document.getElementById('chart2');
+        var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsMonthByAgentId",function(data){
+            data = data.monthResp
+            var mon = new Date().getMonth()+1;
+            if(mon < 10){
+                mon = '0'+mon;
+            }
+            var yResp = [];
+            var xResp = [];
+            for (var i =0;i<data.length;i++){
+                yResp.push({
+                    value:data[i].orderCount,
+                })
+                xResp.push({
+                    value:mon+'-'+data[i].month,
+                })
+            }
+            var myChart = echarts.init(dom, null, {
+                renderer: 'canvas',
+                useDirtyRect: false
+            });
+            var option;
+            option = {
+                tooltip: {
+                    trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
+                    axisPointer: {// 坐标轴指示器,坐标轴触发有效
+                        type: 'line' // 默认为直线,可选为:'line' | 'shadow'
+                    },
+                    formatter: '日期: {b} <br/>订单数量 : {c}'
+                },
 
-				xAxis: {
-					type: 'category',
-					data: xResp
-				},
-				yAxis: {
-					type: 'value'
-				},
-				series: [
-					{
-						data: yResp,
-						type: 'line',
-						color: '#00b7ee'
-					}
-				]
-			};
-			option && myChart.setOption(option);
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentName").val());
-		ajax.start();
-	}
+                xAxis: {
+                    type: 'category',
+                    data: xResp
+                },
+                yAxis: {
+                    type: 'value'
+                },
+                series: [
+                    {
+                        data: yResp,
+                        type: 'line',
+                        color: '#00b7ee'
+                    }
+                ]
+            };
+            option && myChart.setOption(option);
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentName").val());
+        ajax.start();
+    }
 
-	function getOrder(type,e){
-		$.ajax({
-			url: Feng.ctxPath + '/tHomePage/statisticsOrderByAgentId',
-			type: 'POST',
-			data: {
-				agentId: $("#agentName").val(),
-				monthDate: e,
-				type: type
-			},
-			success: function (res) {
-				var str = '<table border="1" style="border: #c2ccd1;border-radius: 1px;height: 90%;width: 100%;text-align:center;table-layout:fixed;tword-break:break-all;">\n' +
-						'                                        <tr style="text-align: center;width:100px;height:40px">\n' +
-						'                                            <th class="orderTh">排名</th>\n' +
-						'                                            <th class="orderTh">时间</th>\n' +
-						'                                            <th class="orderTh">姓名</th>\n';
-				if(type == 1){
-					str +=  '                                            <th class="orderTh">单量</th>\n' +
-							'                                        </tr>';
-				}
-				if(type == 2){
-					str +=  '                                            <th class="orderTh">收入</th>\n' +
-							'                                        </tr>';
-				}
-				if(type == 3){
-					str +=  '                                            <th class="orderTh">佣金</th>\n' +
-							'                                        </tr>';
-				}
-				if(!$.isEmptyObject(res)){
-					var order = res.performanceResp
-					if(order.length > 0){
-						for(var i in order){
-							var a=parseInt(i)+1
-							str +=
-									'<tr><td class="orderTd">' + a + '</td><td class="orderTd">' + order[i].monthTime + '</td><td class="orderTd">' + order[i].userName + '</td><td class="orderTd">' + order[i].amount + '</td></tr>';
-						}
-					}
-				}
-				str += '</table>';
-				$('#performanceResp').html('');
-				$('#performanceResp').html(str);
-			}
-		});
-	}
+    function getOrder(type,e){
+        $.ajax({
+            url: Feng.ctxPath + '/tHomePage/statisticsOrderByAgentId',
+            type: 'POST',
+            data: {
+                agentId: $("#agentName").val(),
+                monthDate: e,
+                type: type
+            },
+            success: function (res) {
+                var str = '<table border="1" style="border: #c2ccd1;border-radius: 1px;height: 90%;width: 100%;text-align:center;table-layout:fixed;tword-break:break-all;">\n' +
+                    '                                        <tr style="text-align: center;width:100px;height:40px">\n' +
+                    '                                            <th class="orderTh">排名</th>\n' +
+                    '                                            <th class="orderTh">时间</th>\n' +
+                    '                                            <th class="orderTh">姓名</th>\n';
+                if(type == 1){
+                    str +=  '                                            <th class="orderTh">单量</th>\n' +
+                        '                                        </tr>';
+                }
+                if(type == 2){
+                    str +=  '                                            <th class="orderTh">收入</th>\n' +
+                        '                                        </tr>';
+                }
+                if(type == 3){
+                    str +=  '                                            <th class="orderTh">佣金</th>\n' +
+                        '                                        </tr>';
+                }
+                if(!$.isEmptyObject(res)){
+                    var order = res.performanceResp
+                    if(order.length > 0){
+                        for(var i in order){
+                            var a=parseInt(i)+1
+                            str +=
+                                '<tr><td class="orderTd">' + a + '</td><td class="orderTd">' + order[i].monthTime + '</td><td class="orderTd">' + order[i].userName + '</td><td class="orderTd">' + order[i].amount + '</td></tr>';
+                        }
+                    }
+                }
+                str += '</table>';
+                $('#performanceResp').html('');
+                $('#performanceResp').html(str);
+            }
+        });
+    }
 
-	// 动态查询代理商司机数量
-	function getInfo(){
-		var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsDriverByAgentId",function(data){
-			$("#agentTotal").text(data.agentTotal)
-			$("#agentMonthTotal").text(data.agentMonthTotal)
-			$("#driverTotal").text(data.driverTotal)
-			$("#driverMonthTotal").text(data.driverMonthTotal)
-			loading()
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentName").val());
-		ajax.start();
-	}
+    // 动态查询代理商司机数量
+    function getInfo(){
+        var ajax = new $ax(Feng.ctxPath+"/tHomePage/statisticsDriverByAgentId",function(data){
+            $("#agentTotal").text(data.agentTotal)
+            $("#agentMonthTotal").text(data.agentMonthTotal)
+            $("#driverTotal").text(data.driverTotal)
+            $("#driverMonthTotal").text(data.driverMonthTotal)
+            loading()
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentName").val());
+        ajax.start();
+    }
 
-	// 代理商选择事件
-	$('#agentName').change(function(){
-		// 查询代理商 查询司机
-		getInfo()
-		// 查询月度报表
-		orderByMonth()
-		// 通过年查询订单报表
-		orderByYear($('#insertTime').val())
-		// 查询排行榜
-		if($('#btn1').val() != null && $('#btn1').val() != ''){
-			console.log(111)
-			getOrder($('#btn1').val(),$('#insertTimeMonth').val())
-		}
-		if($('#btn2').val() != null && $('#btn2').val() != ''){
-			console.log(222)
-			getOrder($('#btn2').val(),$('#insertTimeMonth').val())
-		}
-		if($('#btn3').val() != null && $('#btn3').val() != ''){
-			console.log(333)
-			getOrder($('#btn3').val(),$('#insertTimeMonth').val())
-		}
-	})
-
-
-    /**
-	 * 定时器
-     */
-    setInterval(function () {
-        getData();
-    }, 30000);
+    // 代理商选择事件
+    $('#agentName').change(function(){
+        // 查询代理商 查询司机
+        getInfo()
+        // 查询月度报表
+        orderByMonth()
+        // 通过年查询订单报表
+        orderByYear($('#insertTime').val())
+        // 查询排行榜
+        if($('#btn1').val() != null && $('#btn1').val() != ''){
+            console.log(111)
+            getOrder($('#btn1').val(),$('#insertTimeMonth').val())
+        }
+        if($('#btn2').val() != null && $('#btn2').val() != ''){
+            console.log(222)
+            getOrder($('#btn2').val(),$('#insertTimeMonth').val())
+        }
+        if($('#btn3').val() != null && $('#btn3').val() != ''){
+            console.log(333)
+            getOrder($('#btn3').val(),$('#insertTimeMonth').val())
+        }
+    })
 
 
 
-	function getData(){
-		var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
-			document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
-			document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
-			document.getElementById("serverCount").innerText=data.serverCount
-			document.getElementById("finishCount").innerText=data.finishCount
-			document.getElementById("cancelCount").innerText=data.cancelCount
-			$('#allList').val(data.allList);
-			console.log(data.allList)
-			map(data.allList,data.addressLon,data.addressLat)
-			getOrderData()
 
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentId").val());
-		ajax.set("type",$("#orderType").val());
-		ajax.start();
-	}
-	function reset(){
-		$("#agentId").val('')
-		$("#orderType").val('')
-		var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
-			document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
-			document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
-			document.getElementById("serverCount").innerText=data.serverCount
-			document.getElementById("finishCount").innerText=data.finishCount
-			document.getElementById("cancelCount").innerText=data.cancelCount
-			$('#allList').val(data.allList);
-			map(data.allList,data.addressLon,data.addressLat)
-			getOrderData()
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentId").val());
-		ajax.set("type",$("#orderType").val());
-		ajax.start();
-	}
+    function getData(){
+        var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
+            document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
+            document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
+            document.getElementById("serverCount").innerText=data.serverCount
+            document.getElementById("finishCount").innerText=data.finishCount
+            document.getElementById("cancelCount").innerText=data.cancelCount
+            $('#onLineDriver').val(data.onLineDriver);
+            console.log(data.onLineDriver)
+            map(data.onLineDriver,data.addressLon,data.addressLat)
+            getOrderData()
 
-	function getDataOrder(){
-		var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
-			document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
-			document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
-			document.getElementById("serverCount").innerText=data.serverCount
-			document.getElementById("finishCount").innerText=data.finishCount
-			document.getElementById("cancelCount").innerText=data.cancelCount
-			$('#allList').val(data.allList);
-			console.log(data.allList)
-			mapOrder(data.allList)
-			getOrderData()
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentId").val());
+        ajax.set("type",$("#orderType").val());
+        ajax.start();
+    }
+    function reset(){
+        $("#agentId").val('')
+        $("#orderType").val('')
+        var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
+            document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
+            document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
+            document.getElementById("serverCount").innerText=data.serverCount
+            document.getElementById("finishCount").innerText=data.finishCount
+            document.getElementById("cancelCount").innerText=data.cancelCount
+            $('#onLineDriver').val(data.onLineDriver);
+            map(data.onLineDriver,data.addressLon,data.addressLat)
+            getOrderData()
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentId").val());
+        ajax.set("type",$("#orderType").val());
+        ajax.start();
+    }
 
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentId").val());
-		ajax.set("type",$("#orderType").val());
-		ajax.start();
-	}
-	function resetOrder(){
-		$("#agentId").val('')
-		$("#orderType").val('')
-		var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
-			document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
-			document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
-			document.getElementById("serverCount").innerText=data.serverCount
-			document.getElementById("finishCount").innerText=data.finishCount
-			document.getElementById("cancelCount").innerText=data.cancelCount
-			$('#allList').val(data.allList);
-			mapOrder(data.allList)
-			getOrderData()
-		}, function (data) {
-		});
-		ajax.set("agentId",$("#agentId").val());
-		ajax.set("type",$("#orderType").val());
-		ajax.start();
-	}
+    function getDataOrder(){
+        var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
+            document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
+            document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
+            document.getElementById("serverCount").innerText=data.serverCount
+            document.getElementById("finishCount").innerText=data.finishCount
+            document.getElementById("cancelCount").innerText=data.cancelCount
+            $('#allList').val(data.allList);
+            console.log(data.allList)
+            mapOrder(data.allList)
+            getOrderData()
+
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentId").val());
+        ajax.set("type",$("#orderType").val());
+        ajax.start();
+    }
+    function resetOrder(){
+        $("#agentId").val('')
+        $("#orderType").val('')
+        var ajax = new $ax(Feng.ctxPath + "/tHomePage/getMap", function (data) {
+            document.getElementById("onLineDriverCount").innerText=data.onLineDriverCount
+            document.getElementById("pendingOrderCount").innerText=data.pendingOrderCount
+            document.getElementById("serverCount").innerText=data.serverCount
+            document.getElementById("finishCount").innerText=data.finishCount
+            document.getElementById("cancelCount").innerText=data.cancelCount
+            $('#allList').val(data.allList);
+            mapOrder(data.allList)
+            getOrderData()
+        }, function (data) {
+        });
+        ajax.set("agentId",$("#agentId").val());
+        ajax.set("type",$("#orderType").val());
+        ajax.start();
+    }
 
 
-	function map(e,addressLon,addressLat){
-		window._AMapSecurityConfig = {
-			securityJsCode:'b62d9146929db08c4c2f4537d045320d',
-		};
-		laydate.render({
-			elem: '#createTime',
-			type: 'date',
-			range: true
-		});
+    function map(e,addressLon,addressLat){
+        window._AMapSecurityConfig = {
+            securityJsCode:'b62d9146929db08c4c2f4537d045320d',
+        };
 
-		AMapLoader.reset() // 需要把这个reset一下
-		AMapLoader.load({
-			"key": "1d43098bcd98ab124623e7e4bcc9595e",              // 申请好的Web端开发者Key,首次调用 load 时必填
-			"version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
-			"plugins": ['AMap.Driving'],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
-			"AMapUI": {             // 是否加载 AMapUI,缺省不加载
-				"version": '1.1',   // AMapUI 版本
-				"plugins":['overlay/SimpleMarker'],       // 需要加载的 AMapUI ui插件
-			},
-			"Loca":{                // 是否加载 Loca, 缺省不加载
-				"version": '2.0'  // Loca 版本
-			},
-		}).then((AMap)=>{
-			//初始化地图对象,加载地图
-			var map = new AMap.Map('container', {
-				viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
-				zoom:10, //初始化地图层级
-				center: [addressLon,addressLat] //初始化地图中心点
-			});
-			// map.clearMap();  // 清除地图覆盖物
-			// 经纬度坐标数组
-			const  onLineDriver = $('#onLineDriver').val();
-			var list1 = JSON.stringify(onLineDriver)
-			const jsonArr = JSON.parse(list1)
-			const jsonArr1 = JSON.parse(jsonArr);
-			console.log(jsonArr1)
-			M = jsonArr1;
-			M.forEach(function(marker) {
-				new AMap.Marker({
-					map: map,
-					icon: marker[2]==1?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/c1d2f38187de40daa353fcc70993288e.png':'https://csxdj.obs.cn-south-1.myhuaweicloud.com/c1d2f38187de40daa353fcc70993288e.png',
-					position: [marker[0], marker[1]],
-					offset: new AMap.Pixel(-13, -30)
-				});
-			});
+        AMapLoader.reset() // 需要把这个reset一下
+        AMapLoader.load({
+            "key": "1d43098bcd98ab124623e7e4bcc9595e",              // 申请好的Web端开发者Key,首次调用 load 时必填
+            "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+            "plugins": ['AMap.Driving'],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+            "AMapUI": {             // 是否加载 AMapUI,缺省不加载
+                "version": '1.1',   // AMapUI 版本
+                "plugins":['overlay/SimpleMarker'],       // 需要加载的 AMapUI ui插件
+            },
+            "Loca":{                // 是否加载 Loca, 缺省不加载
+                "version": '2.0'  // Loca 版本
+            },
+        }).then((AMap)=>{
+            //初始化地图对象,加载地图
+            var map = new AMap.Map('container', {
+                viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
+                zoom:10, //初始化地图层级
+                center: [addressLon,addressLat] //初始化地图中心点
+            });
+            // map.clearMap();  // 清除地图覆盖物
+            // 经纬度坐标数组
 
-			// var center = map.getCenter();
-			// var centerText = '当前中心点坐标:' + center.getLng() + ',' + center.getLat();
-			// 添加事件监听, 使地图自适应显示到合适的范围
-			AMap.event.addDomListener(document.getElementById('container'), 'click', function() {
-				var newCenter = map.setFitView();
-			});
-		}).catch((e)=>{
-			console.error(e);  //加载错误提示
-		});
-	}
+            var  onLineDriver;
+            if(e==""){
+                onLineDriver = $('#onLineDriver').val();
+                console.log("onLineDriver========================")
+                console.log(onLineDriver)
+                var list1 = JSON.stringify(onLineDriver)
+                console.log("list1========================")
+                console.log(list1)
+                const jsonArr = JSON.parse(list1)
+                console.log("jsonArr========================")
+                console.log(jsonArr)
+                const jsonArr1 = JSON.parse(jsonArr);
+                console.log("jsonArr1========================")
+                console.log(jsonArr1)
+                M = jsonArr1;
+            }else{
+                M=e;
+            }
+            console.log("M =========================")
+            console.log(M)
+            M.forEach(function(marker) {
+                console.log("========================")
+                console.log(marker)
+                new AMap.Marker({
+                    map: map,
+                    icon: marker[2]==1?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/c1d2f38187de40daa353fcc70993288e.png':'https://csxdj.obs.cn-south-1.myhuaweicloud.com/c1d2f38187de40daa353fcc70993288e.png',
+                    position: [marker[0], marker[1]],
+                    offset: new AMap.Pixel(-13, -30)
+                });
+            });
 
-	function mapOrder(e){
-		window._AMapSecurityConfig = {
-			securityJsCode:'b62d9146929db08c4c2f4537d045320d',
-		};
-		AMapLoader.reset() // 需要把这个reset一下
-		AMapLoader.load({
-			"key": "1d43098bcd98ab124623e7e4bcc9595e",              // 申请好的Web端开发者Key,首次调用 load 时必填
-			"version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
-			"plugins": ['AMap.Driving'],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
-			"AMapUI": {             // 是否加载 AMapUI,缺省不加载
-				"version": '1.1',   // AMapUI 版本
-				"plugins":['overlay/SimpleMarker'],       // 需要加载的 AMapUI ui插件
-			},
-			"Loca":{                // 是否加载 Loca, 缺省不加载
-				"version": '2.0'  // Loca 版本
-			},
-		}).then((AMap)=>{
-			//初始化地图对象,加载地图
-			var map = new AMap.Map('containerOrder', {
-				viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
-				zoom:10, //初始化地图层级
-				center: [102.709,25.0635] //初始化地图中心点
-			});
-			// map.clearMap();  // 清除地图覆盖物
-			// 经纬度坐标数组
-			var  allList;
-			if(e==""){
-				allList = $('#allList').val();
-				var list = JSON.stringify(allList)
-				const jsonArray = JSON.parse(list)
-				const jsonArray1 = JSON.parse(jsonArray);
-				console.log(jsonArray1)
-				M = jsonArray1;
-			}else{
-				M=e;
-			}
-			console.log(M)
-			M.forEach(function(marker) {
-				new AMap.Marker({
-					map: map,
-					icon: marker[2]==301?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/8a6bb84da305438faba9fa1552c59f64.png':((marker[2]==109||marker[2]==107||marker[2]==108)?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/6132e18884e24916a507b4b55d38d07b.png':
-									(marker[2]==101?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/7461e4a7e4004c548e91aafa538246a1.png':'https://csxdj.obs.cn-south-1.myhuaweicloud.com/d8739241fa36482b80df7cacac2cc3d1.png')
-					),
-					position: [marker[0], marker[1]],
-					offset: new AMap.Pixel(-13, -30)
-				});
-			});
-			// var center = map.getCenter();
-			// var centerText = '当前中心点坐标:' + center.getLng() + ',' + center.getLat();
-			// 添加事件监听, 使地图自适应显示到合适的范围
-			AMap.event.addDomListener(document.getElementById('containerOrder'), 'click', function() {
-				var newCenter = map.setFitView();
-			});
-		}).catch((e)=>{
-			console.error(e);  //加载错误提示
-		});
-	}
+            // var center = map.getCenter();
+            // var centerText = '当前中心点坐标:' + center.getLng() + ',' + center.getLat();
+            // 添加事件监听, 使地图自适应显示到合适的范围
+            AMap.event.addDomListener(document.getElementById('container'), 'click', function() {
+                var newCenter = map.setFitView();
+            });
+        }).catch((e)=>{
+            console.error(e);  //加载错误提示
+        });
+    }
 
-	function getOrderData(){
-		$.ajax({
-			url: Feng.ctxPath + '/tHomePage/getServerOrder',
-			type: 'POST',
-			data: {
-				agentId: $("#agentId").val()
-			},
-			success: function (res) {
-				var order = res.serverList
-				var str = '<table><tr><h3>服务中</h3></tr><hr/><br>';
-				if(order.length > 0){
-					for(var i in order){
-						console.log(order[i].startTime)
-						str +=
-								'<tr><img src=' + order[i].avatar + ' style="height: 40px;width: 40px"></img>' + order[i].driverName +'</tr><br>' +
-								'<table><tr><td class="name1">驾龄</td><td class="name1">' + order[i].drivingExperience + '年'+'</td><td class="name1">代驾次数</td><td class="name1">' + order[i].valetDrivingCount + '次'+'</td></tr><br></table>' +
-								'<table><br><tr><td class="name1">出行时间</td><td class="name1">' + order[i].startTime + '</td></tr>' +
-								'<tr><td class="name1">起点</td><td class="name1">' + order[i].startAddress + '</td></tr>' +
-								'<tr><td class="name1">终点</td><td class="name1">' + order[i].endAddress + '</td></tr></table><br>' +
-								'<table><tr><td class="name1">预估费用</td><td class="name1">' + order[i].estimatedPrice + '元'+'</td><td class="name1">行驶里程</td><td class="name1">' + order[i].mileageTraveled + '公里'+'</td></tr>' +
-								'<tr><td class="name1">等待时间</td><td class="name1">' + order[i].waitTime + '分钟'+'</td><td class="name1">行驶时间</td><td class="name1">' + order[i].goTime + '分钟'+'</td></tr></table><hr/>';
-					}
-				}
-				str += '</table>';
-				$('#serverOrder').html(str);
-			}
-		});
-	}
+    function mapOrder(e){
+        window._AMapSecurityConfig = {
+            securityJsCode:'b62d9146929db08c4c2f4537d045320d',
+        };
+        AMapLoader.reset() // 需要把这个reset一下
+        AMapLoader.load({
+            "key": "1d43098bcd98ab124623e7e4bcc9595e",              // 申请好的Web端开发者Key,首次调用 load 时必填
+            "version": "2.0",   // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
+            "plugins": ['AMap.Driving'],           // 需要使用的的插件列表,如比例尺'AMap.Scale'等
+            "AMapUI": {             // 是否加载 AMapUI,缺省不加载
+                "version": '1.1',   // AMapUI 版本
+                "plugins":['overlay/SimpleMarker'],       // 需要加载的 AMapUI ui插件
+            },
+            "Loca":{                // 是否加载 Loca, 缺省不加载
+                "version": '2.0'  // Loca 版本
+            },
+        }).then((AMap)=>{
+            //初始化地图对象,加载地图
+            var map = new AMap.Map('containerOrder', {
+                viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
+                zoom:10, //初始化地图层级
+                center: [113.264434,23.129162] //初始化地图中心点
+            });
+            // map.clearMap();  // 清除地图覆盖物
+            // 经纬度坐标数组
+            var  allList;
+            if(e==""){
+                allList = $('#allList').val();
+                var list = JSON.stringify(allList)
+                const jsonArray = JSON.parse(list)
+                const jsonArray1 = JSON.parse(jsonArray);
+                console.log(jsonArray1)
+                M = jsonArray1;
+            }else{
+                M=e;
+            }
+            console.log(M)
+            M.forEach(function(marker) {
+                new AMap.Marker({
+                    map: map,
+                    icon: marker[2]==301?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/8a6bb84da305438faba9fa1552c59f64.png':((marker[2]==109||marker[2]==107||marker[2]==108)?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/6132e18884e24916a507b4b55d38d07b.png':
+                            (marker[2]==101?'https://csxdj.obs.cn-south-1.myhuaweicloud.com/7461e4a7e4004c548e91aafa538246a1.png':'https://csxdj.obs.cn-south-1.myhuaweicloud.com/d8739241fa36482b80df7cacac2cc3d1.png')
+                    ),
+                    position: [marker[0], marker[1]],
+                    offset: new AMap.Pixel(-13, -30)
+                });
+            });
+            // var center = map.getCenter();
+            // var centerText = '当前中心点坐标:' + center.getLng() + ',' + center.getLat();
+            // 添加事件监听, 使地图自适应显示到合适的范围
+            AMap.event.addDomListener(document.getElementById('containerOrder'), 'click', function() {
+                var newCenter = map.setFitView();
+            });
+        }).catch((e)=>{
+            console.error(e);  //加载错误提示
+        });
+    }
+
+    function getOrderData(){
+        $.ajax({
+            url: Feng.ctxPath + '/tHomePage/getServerOrder',
+            type: 'POST',
+            data: {
+                agentId: $("#agentId").val()
+            },
+            success: function (res) {
+                var order = res.serverList
+                var str = '<table><tr><h3>服务中</h3></tr><hr/><br>';
+                if(order.length > 0){
+                    for(var i in order){
+                        console.log(order[i].startTime)
+                        str +=
+                            '<tr><img src=' + order[i].avatar + ' style="height: 40px;width: 40px"></img>' + order[i].driverName +'</tr><br>' +
+                            '<table><tr><td class="name1">驾龄</td><td class="name1">' + order[i].drivingExperience + '年'+'</td><td class="name1">代驾次数</td><td class="name1">' + order[i].valetDrivingCount + '次'+'</td></tr><br></table>' +
+                            '<table><br><tr><td class="name1">出行时间</td><td class="name1">' + order[i].startTime + '</td></tr>' +
+                            '<tr><td class="name1">起点</td><td class="name1">' + order[i].startAddress + '</td></tr>' +
+                            '<tr><td class="name1">终点</td><td class="name1">' + order[i].endAddress + '</td></tr></table><br>' +
+                            '<table><tr><td class="name1">预估费用</td><td class="name1">' + order[i].estimatedPrice + '元'+'</td><td class="name1">行驶里程</td><td class="name1">' + order[i].mileageTraveled + '公里'+'</td></tr>' +
+                            '<tr><td class="name1">等待时间</td><td class="name1">' + order[i].waitTime + '分钟'+'</td><td class="name1">行驶时间</td><td class="name1">' + order[i].goTime + '分钟'+'</td></tr></table><hr/>';
+                    }
+                }
+                str += '</table>';
+                $('#serverOrder').html(str);
+            }
+        });
+    }
 
 </script>
 @}
diff --git a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html
index 20ddd02..7d8b337 100644
--- a/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html
+++ b/management/guns-admin/src/main/webapp/WEB-INF/view/system/tOrder/tOrder_add.html
@@ -75,7 +75,6 @@
     //地图加载
     var map1 = new AMap.Map("container1", {
         zoom: 13,
-        center: [104.064, 30.6576],
         resizeEnable: true
     });
 
@@ -168,7 +167,6 @@
 
     var map2 = new AMap.Map("container2", {
         zoom: 13,
-        center: [104.064, 30.6576],
         resizeEnable: true
     });
 
diff --git a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java
index 89b4eb3..7100c72 100644
--- a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java
@@ -176,7 +176,19 @@
             appUser.setInviterType(signInToRegister.getInviterType());
             this.insert(appUser);
             //发送优惠券
-            boolean lock = redisUtil.lock();
+            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++;
+                    }
+                }
+            }
             if(lock){
                 List<CouponWarpper> list = pushCoupon(appUser.getId());
                 redisUtil.unlock();
@@ -212,7 +224,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 :
diff --git a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java
index ad3f375..e1a860b 100644
--- a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java
+++ b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/OrderServiceImpl.java
@@ -554,163 +554,199 @@
      * 订单推送逻辑
      */
     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;
-        }
-        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());
-        logger.warn("范围内司机--》" + JSON.toJSONString(driverIds));
-        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;
-            logger.warn("优推司机--》" + JSON.toJSONString(youTuiDrivers));
-            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;
-                    logger.warn("最优优推司机--》" + JSON.toJSONString(driver));
+        try {
+            Order order = this.selectById(orderId);
+            /**
+             * 1.先找最大推单范围内的优推司机 -》 距离最近
+             * 没有1 - 》
+             *      2.按照后台推送配置在范围内查找合适司机
+             *        合适司:积分 > 评分 > 距离
+             *      3.司机没有接单直接将订单置入大厅
+             */
+            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++;
+                    }
                 }
             }
-        }
-        if(null != youTuiDriver1 && youTuiDriver1.getType() == 1){
-            youTuiDriver1.setSurplusQuantity(youTuiDriver1.getSurplusQuantity() - 1);
-            youTuiDriverService.updateById(youTuiDriver1);
-        }
+            if(!lock){
+                order.setHallOrder(1);
+                this.updateById(order);
+                ExtraPushOrder(order);
+                redisUtil.unlock();
+            }
+            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();
 
-        //开始范围查找
-        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());
-                logger.warn("范围内司机--》" + JSON.toJSONString(driverIds));
-                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));
-                    logger.warn("范围内空闲司机--》" + JSON.toJSONString(drivers));
-                    if(drivers.size() == 0){
+            //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 and 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);
+            }
 
-                    Integer integral = null;//积分
-                    Double score = null;//评分
-                    Double d = null;
-                    for (Driver driver1 : drivers) {
-                        String value = redisUtil.getValue("DRIVER" + driver1.getId());
-                        if(ToolUtil.isEmpty(value)){
+            //开始范围查找
+            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;
                         }
-                        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;
+
+                        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;
+                                }
+                            }
                         }
-                    }
 
+                    }
                 }
             }
-        }
-        logger.warn("最终的司机--》" + JSON.toJSONString(driver));
-        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);
-                        ExtraPushOrder(order1);
+
+            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.getState() != 301 && order1.getDriverId().compareTo(driver1.getId()) != 0){
+                            driver1.setServerStatus(1);
+                            driverService.updateById(driver1);
+                        }
+
+                        if(order1.getState() == 201 || order1.getState() == 301 || (order1.getState() == 101 && null == order1.getDriverId())){
+                            driver1.setServerStatus(1);
+                            driverService.updateById(driver1);
+                        }
+                        if(order1.getState() == 201 || (order1.getState() == 101 && null == order1.getDriverId())){
+                            order1.setHallOrder(1);
+                            OrderServiceImpl.this.updateById(order1);
+                            ExtraPushOrder(order);
+                        }
                     }
-                }
-            }, num4 * 1000);
-        }else{
-            order.setHallOrder(1);
-            this.updateById(order);
-            ExtraPushOrder(order);
+                }, num4 * 1000);
+            }else{
+                order.setHallOrder(1);
+                this.updateById(order);
+                ExtraPushOrder(order);
+            }
+            redisUtil.unlock();
+        }catch (Exception e){
+            e.printStackTrace();
+            redisUtil.unlock();
         }
+
     }
 
     public void ExtraPushOrder(Order order){

--
Gitblit v1.7.1