From 496ef92b09b1be5dc1beb4ecf031cfc20edbeb94 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期一, 11 五月 2026 13:59:14 +0800
Subject: [PATCH] fix bugs

---
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java       |   68 +++++++++--
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java                                  |    2 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/IncomeServiceImpl.java               |    6 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java                              |    3 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/ITransactionDetailsService.java               |    2 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java                                |   15 ++
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemNoticeServiceImpl.java           |    2 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java                |   94 +++++++++++----
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java              |   10 +
 ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysReformist.html                              |   18 +-
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderListWarpper.java                     |   12 +
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemNoticeService.java                   |    2 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java    |    2 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/TransactionDetailsServiceImpl.java       |    2 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java   |   54 ++++++++
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   14 ++
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java                     |    8 
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java     |   10 
 UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml         |    1 
 19 files changed, 248 insertions(+), 77 deletions(-)

diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
index f916afc..aea27f5 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineShiftDriverServiceImpl.java
@@ -619,7 +619,7 @@
         if (lineShiftDriver == null) {
             return ResultUtil.error("班次信息不存在");
         }
-        if (lineShiftDriver.getLineShiftId() != null && lineShiftDriver.getLineShiftId() == -1) {
+        if (lineShiftDriver.getLineShiftId() != null && lineShiftDriver.getLineShiftId() <= -1) {
             return buildSelfTripDetail(lineShiftDriver);
         }
 
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index 73a3571..b85404c 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -254,11 +254,11 @@
                 serverMoney += income.getMoney();
             }
         }
-        if (orderCrossCity.getLineId() == -1) {
+        if (orderCrossCity.getLineId() <= -1) {
             LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId());
             DriverSelfTrip driverSelfTrip = driverSelfTripMapper.selectById(lineShiftDriver.getCustomerId());
             map.put("line", driverSelfTrip.getStartCityName() + "-" + driverSelfTrip.getEndCityName());
-            map.put("lineId", -1);
+            map.put("lineId", orderCrossCity.getLineId());
         } else {
             Line line = lineService.selectById(orderCrossCity.getLineId());
             map.put("line", line.getName());
@@ -1227,7 +1227,7 @@
             map.put("price", -1);
             return ResultUtil.success(map);
         }
-        if (lineId != null && lineId == -1) {
+        if (lineId != null && lineId <= -1) {
             BigDecimal price = querySelfTripNearestPrice(lineShiftDriver, endLon, endLat);
             map.put("price", price == null ? -1 : multiplyPeopleNumber(price, peopleNumber).doubleValue());
             return ResultUtil.success(map);
@@ -1257,7 +1257,7 @@
             map.put("price", unitPrice == null ? -1 : multiplyPeopleNumber(unitPrice, peopleNumber).doubleValue());
             return ResultUtil.success(map);
         }
-        if (lineId != null && lineId == -1) {
+        if (lineId != null && lineId <= -1) {
             if (lineShiftDriverId == null) {
                 map.put("price", -1);
                 return ResultUtil.success(map);
@@ -1553,7 +1553,7 @@
 
         // 6. 获取线路班次信息
         LineSite lineSite;
-        if (lineShiftDriver.getLineShiftId() == -1) {
+        if (lineShiftDriver.getLineShiftId() <= -1) {
             lineSite = new LineSite();
             lineSite.setLineId(-1);
             if (lineShiftDriver.getCustomerId() != null) {
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 70ea14c..f89310e 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -25,6 +25,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 
 
@@ -516,10 +517,15 @@
                 return ResultUtil.error("当前订单不能操作");
             }
         }
+        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
         switch (state){
             case 3://出发前往预约点
                 orderPrivateCar.setState(3);
                 orderPrivateCar.setSetOutTime(new Date());
+                if (driver.getState() != 3) {
+                    driver.setState(3);
+                    driverService.updateById(driver);
+                }
                 systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderPrivateCar.getUserId(), 1);
                 break;
             case 4://到达预约点,等待客户上车
@@ -544,6 +550,10 @@
                 orderPrivateCar.setGetoffAddress(address);
                 orderPrivateCar.setGetoffTime(new Date());
                 orderPrivateCar.setEndServiceTime(new Date());
+                if (driver.getState() != 2) {
+                    driver.setState(2);
+                    driverService.updateById(driver);
+                }
                 break;
         }
         orderPrivateCar.setCancelType(2);
@@ -1016,12 +1026,12 @@
 
         Map<String, Object> map = new HashMap<>();
         if(orderPrivateCar.getState() == 5){
-            map.put("orderMoney", orderPrivateCar.getOrderMoney()==null?0:orderPrivateCar.getOrderMoney());//订单金额
+            map.put("orderMoney", orderPrivateCar.getOrderMoney()==null?BigDecimal.ZERO:new BigDecimal(orderPrivateCar.getOrderMoney().toString()).setScale(2,RoundingMode.HALF_UP));//订单金额
         }else{
             if(orderPrivateCar.getAbnormal() == 2 && orderPrivateCar.getResponsibilityType() > 2 && orderPrivateCar.getAbnormalStatus() == 2){
                 map.put("orderMoney", orderPrivateCar.getResponsibilityMoney());
             }else{
-                map.put("orderMoney", orderPrivateCar.getOrderMoney()==null?0:orderPrivateCar.getOrderMoney());//订单金额
+                map.put("orderMoney", orderPrivateCar.getOrderMoney()==null?BigDecimal.ZERO:new BigDecimal(orderPrivateCar.getOrderMoney().toString()).setScale(2,RoundingMode.HALF_UP));//订单金额
             }
         }
         map.put("startMileage", orderPrivateCar.getStartMileage());//起步价
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java
index 11e633a..f19adf5 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java
@@ -273,6 +273,11 @@
     @TableField("Taxi")
     private String Taxi;
     /**
+     * 跨城出行自主单抽成配置
+     */
+    @TableField("cross")
+    private String cross;
+    /**
      * 同城小件抽成配置
      */
     @TableField("SameLogistics")
@@ -757,7 +762,15 @@
     public void setEnterCode(String enterCode) {
         this.enterCode = enterCode;
     }
-    
+
+    public String getCross() {
+        return cross;
+    }
+
+    public void setCross(String cross) {
+        this.cross = cross;
+    }
+
     @Override
     public String toString() {
         return "Company{" +
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/IncomeServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/IncomeServiceImpl.java
index 51e76ad..13cd458 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/IncomeServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/IncomeServiceImpl.java
@@ -212,12 +212,12 @@
                 break;
             case 3:
                 OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId);
-                if (orderCrossCity.getLineId() == -1){
+                driverId = orderCrossCity.getDriverId();
+                if (orderCrossCity.getLineId() <= -1){
                     company = companyService.selectById(orderCrossCity.getCompanyId());
-                    jsonObject = JSON.parseObject(company.getTaxi());
+                    jsonObject = JSON.parseObject(company.getCross());
                 }else {
                     Line line = lineService.selectById(orderCrossCity.getLineId());
-                    driverId = orderCrossCity.getDriverId();
                     jsonObject = JSON.parseObject(line.getOutSetting());
                 }
                 rules = jsonObject.getJSONArray("rules");
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
index 353a243..eb8226f 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/WeChatUtil.java
@@ -186,7 +186,8 @@
     }
 
     public String getUnlimitQrcode(String appletPath, String scene){
-        InputStream inputStream = getwxacodeunlimit(appletPath, scene, activeProfile.equals("prod") ? "release" : "trial");
+//        InputStream inputStream = getwxacodeunlimit(appletPath, scene, activeProfile.equals("prod") ? "release" : "trial");
+        InputStream inputStream = getwxacodeunlimit(appletPath, scene, "trial");
         if (inputStream != null) {
             File file = FileUtil.writeFromStream(inputStream, new File(filePath + "/" + UUID.randomUUID().toString() + ".png"));
             HttpRequest post = HttpUtil.createPost(adminUrl + "/upload/image");
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
index 0d2618f..daea7a8 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/MoneyInfoWarpper.java
@@ -11,7 +11,7 @@
 @ApiModel("费用明细")
 public class MoneyInfoWarpper {
     @ApiModelProperty("订单总金额")
-    private Double orderMoney;
+    private String orderMoney;
     @ApiModelProperty("起步里程")
     private Double startMileage;
     @ApiModelProperty("起步价")
@@ -45,11 +45,11 @@
     @ApiModelProperty("折扣")
     private Double discount;
 
-    public Double getOrderMoney() {
+    public String getOrderMoney() {
         return orderMoney;
     }
 
-    public void setOrderMoney(Double orderMoney) {
+    public void setOrderMoney(String orderMoney) {
         this.orderMoney = orderMoney;
     }
 
@@ -206,7 +206,7 @@
     public static MoneyInfoWarpper getMoneyInfoWarpper(Map<String, Object> map){
         MoneyInfoWarpper moneyInfoWarpper = new MoneyInfoWarpper();
         if(null != map){
-            moneyInfoWarpper.setOrderMoney(null != map.get("orderMoney") ? Double.valueOf(map.get("orderMoney").toString()) : 0D);
+            moneyInfoWarpper.setOrderMoney(null != map.get("orderMoney") ? map.get("orderMoney").toString() : "0");
             moneyInfoWarpper.setStartMileage(null != map.get("startMileage") ? Double.valueOf(map.get("startMileage").toString()) : 0D);
             moneyInfoWarpper.setStartMoney(null != map.get("startMoney") ? Double.valueOf(map.get("startMoney").toString()) : 0D);
             moneyInfoWarpper.setMileage(null != map.get("mileageKilometers") ? Double.valueOf(map.get("mileageKilometers").toString()) : 0D);
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderListWarpper.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderListWarpper.java
index 6851717..48bc97e 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderListWarpper.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderListWarpper.java
@@ -259,7 +259,17 @@
                 orderListWarpper.setId(null != map.get("id") ? Integer.valueOf(String.valueOf(map.get("id"))) : 0);
                 orderListWarpper.setRideType(null != map.get("rideType") ? Integer.valueOf(String.valueOf(map.get("rideType"))) : 1);
                 orderListWarpper.setSpellSuccess(null != map.get("spellSuccess") ? Integer.valueOf(String.valueOf(map.get("spellSuccess"))) : 0);
-                orderListWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")) : "");
+                if (map.get("reservation") != null) {
+                    if (Integer.parseInt(map.get("reservation").toString()) == 1) {
+                        orderListWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")).replace("订单", "") + "即时订单" : "");
+                    } else if (Integer.parseInt(map.get("reservation").toString()) == 2) {
+                        orderListWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")).replace("订单", "") + "预约订单" : "");
+                    } else {
+                        orderListWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")) : "");
+                    }
+                } else {
+                    orderListWarpper.setName(null != map.get("name") ? String.valueOf(map.get("name")) : "");
+                }
                 orderListWarpper.setTime(null != map.get("time") ? String.valueOf(map.get("time")) : "");
                 orderListWarpper.setStartAddress(null != map.get("startAddress") ? String.valueOf(map.get("startAddress")) : "");
                 orderListWarpper.setEndAddress(null != map.get("endAddress") ? String.valueOf(map.get("endAddress")) : "");
diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index 5c3ad30..35f6b35 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -478,10 +478,15 @@
         if(10 == orderTaxi.getState()){
             return ResultUtil.error("订单已被取消,不能继续操作");
         }
+        Driver driver = driverService.selectById(orderTaxi.getDriverId());
         switch (state){
             case 3://出发前往预约点
                 orderTaxi.setState(3);
                 orderTaxi.setSetOutTime(new Date());
+                if (driver.getState() != 3) {
+                    driver.setState(3);
+                    driverService.updateById(driver);
+                }
                 systemNoticeService.addSystemNotice(1, "司机已出发,请耐心等待", orderTaxi.getUserId(), 1);
                 break;
             case 4://到达预约点,等待客户上车
@@ -506,7 +511,10 @@
                 orderTaxi.setGetoffTime(new Date());
                 orderTaxi.setState(6);
                 orderTaxi.setEndServiceTime(new Date());
-
+                if (driver.getState() != 2) {
+                    driver.setState(2);
+                    driverService.updateById(driver);
+                }
                 pushUtil.removeTask(orderId, 2);//删除定时任务,结束推送数据
                 systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderTaxi.getUserId(), 1);
                 break;
diff --git a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysReformist.html b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysReformist.html
index 8561403..c336e3a 100644
--- a/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysReformist.html
+++ b/ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysReformist.html
@@ -60,7 +60,7 @@
                         </div>
                         <div style="float: left;width: 1200px;margin-left: 50px;">
                             <div class="pushOrderSettings">
-                                <div class="form-group pushCarSettings">
+                                <div class="form-group">
                                     <label class="col-sm-2 control-label">推单设置:</label>
                                     <div class="col-sm-10">
                                         <div class="radio radio-danger">
@@ -154,7 +154,7 @@
                                         <br/>
                                     </div>
                                 </div>
-                                <div class="form-group">
+                                <div class="form-group pushCarSettings">
                                     <label class="col-sm-2 control-label">出租车推单:</label>
                                     <div class="col-sm-10">
                                         第一轮推单:推单距离为&nbsp;<input type="text" oninput="checkIsDouble(this)"
@@ -813,6 +813,12 @@
         var czc7 = null == $("#czc7").val() ? "0" : $("#czc7").val().trim();
         var czc8 = null == $("#czc8").val() ? "0" : $("#czc8").val().trim();
         var czc9 = null == $("#czc9").val() ? "0" : $("#czc9").val().trim();
+        var ajax = new $ax(Feng.ctxPath + "/tSysReformist/setUp", function(data){
+            Feng.success("操作成功!");
+            location.reload();
+        },function(data){
+            Feng.error("操作失败!" + data.responseJSON.message + "!");
+        });
         if(type == 'pushOrderSettings'){
             if (pushType == 2) {
                 ajax.set("pushType", pushType);
@@ -955,14 +961,6 @@
         if (dck2){dck2 = 1;} else {dck2 = 2;}
 
         var driverDays=$("#driverDay").val()
-
-        //提交信息
-        var ajax = new $ax(Feng.ctxPath + "/tSysReformist/setUp", function(data){
-            Feng.success("操作成功!");
-            location.reload();
-        },function(data){
-            Feng.error("操作失败!" + data.responseJSON.message + "!");
-        });
 
         if(type == 'integralSet'){
             ajax.set("two", two);
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
index c3306c9..7353c59 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -250,7 +250,7 @@
 		}
 
 		Integer lineShifDriverId = null;
-		if (lineId < 0 && lineDestinationId < 0) {
+		if (lineId < 0 && (lineDestinationId == null || lineDestinationId < 0)) {
 			lineShifDriverId = lineShiftDriverMapper.selectLineShiftDriverIdByCustomerId(-lineId);
 		}
 		ResultUtil<Map<String, Object>> result = this.getPriceV2(lineId, lineDestinationId, totalSeat, peopleNumber, endLon, endLat, lineShifDriverId);
@@ -831,7 +831,7 @@
 			}
 			String paymentCode = ToolUtil.isNotEmpty(cbyzxOrderPayHelper.extractRecordCode(response)) ? cbyzxOrderPayHelper.extractRecordCode(response) : outTradeNo;
 			resultUtil = ResultUtil.success(response);
-			paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, paymentCode, 1);//添加预支付数据
+			paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, outTradeNo, 1);//添加预支付数据
 		}
 		if (payType == 2) {//支付宝支付
 			resultUtil = payMoneyUtil.alipay("完成订单", "完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/aliPayOrderTaxi");
@@ -1079,7 +1079,7 @@
 			String paymentCode = ToolUtil.isNotEmpty(cbyzxOrderPayHelper.extractRecordCode(response)) ? cbyzxOrderPayHelper.extractRecordCode(response) : outTradeNo;
 			resultUtil = ResultUtil.success(response);
 			this.updateById(orderCrossCity);
-			paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, paymentCode, 1);//添加预支付数据
+			paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 1, orderMoney, outTradeNo, 1);//添加预支付数据
 		}
 		if (payType == 2) {//支付宝支付
 			if (orderMoney == 0) {
@@ -1214,7 +1214,7 @@
 			
 			
 			query.setState(2);
-			query.setCode(order_id);
+//			query.setCode(order_id);
 			paymentRecordService.updateById(query);
 			
 			// TODO: 2020/5/24 这里需要给司机和用户推送订单状态
@@ -1319,7 +1319,8 @@
 		orderCrossCity.setMileage(0D);
 
 		Integer lineShifDriverId = orderCrossCityWarpper.getLineShiftDriverId();
-		if (orderCrossCityWarpper.getLineId() < 0 && orderCrossCityWarpper.getLineDestinationId() < 0) {
+		Integer lineDestinationId = orderCrossCityWarpper.getLineDestinationId();
+		if (orderCrossCityWarpper.getLineId() < 0 && (lineDestinationId == null || lineDestinationId < 0)) {
 			lineShifDriverId = lineShiftDriverMapper.selectLineShiftDriverIdByCustomerId(-orderCrossCityWarpper.getLineId());
 		}
 		ResultUtil<Map<String, Object>> price = this.getPriceV2(orderCrossCityWarpper.getLineId(), orderCrossCityWarpper.getLineDestinationId(),
@@ -1332,6 +1333,7 @@
 		if (money < 0) {
 			return ResultUtil.error("计算价格失败");
 		}
+		orderCrossCity.setLineShiftDriverId(lineShifDriverId);
 		orderCrossCity.setOrderMoney(money);
 		Integer companyId = driver.getCompanyId();
 		orderCrossCity.setCompanyId(companyId);
@@ -1623,7 +1625,8 @@
 				}
 				String recordCode = cbyzxOrderPayHelper.extractRecordCode(response);
 				String paymentCode = ToolUtil.isNotEmpty(recordCode) ? recordCode : outTradeNo;
-				paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 1, query.getMoney(), paymentCode, 1);//添加预支付数据
+				paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, id, 3, 1, query.getMoney(), outTradeNo, 1);//添加预支付数据
+				resultUtil = ResultUtil.success(response);
 
 //                Map<String, String> map = icbcPayUtil.placeAnOrder(id + ",3", 9, 5, uid.toString(), "订单取消", query.getMoney(), callbackPath + "/base/wxCancelOrderTaxi", "", type, appletsOpenId);
 //                if(map.get("code").equals("200")){
@@ -1957,7 +1960,7 @@
 			this.updateById(orderCrossCity);
 			
 			query.setState(2);
-			query.setCode(order_id);
+//			query.setCode(order_id);
 			paymentRecordService.updateById(query);
 			
 			OrderCancel query1 = orderCancelService.query(query.getOrderId(), query.getOrderType(), query.getAmount(), query.getPayType(), 1);
@@ -2149,9 +2152,16 @@
 				}
 				
 				if (query.getPayType() == 1) {//微信
-					Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), id + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay");
-					if (!"SUCCESS".equals(map.get("return_code"))) {
-						return ResultUtil.error(map.get("return_msg"));
+					CbyzxPayUtil.ClosePayOrderRequest request = new CbyzxPayUtil.ClosePayOrderRequest();
+					request.setOutRequestNo(query.getCode());
+					request.setRefundOutRequestNo(buildPrepayRefundOutNo(orderCrossCity.getId()));
+
+					request.setRefundAmount(toFen(query.getAmount()));
+					request.setRefundDesc("跨城出行取消退款");
+					JSONObject response = CbyzxPayUtil.closePayOrder(request);
+					System.out.println("跨城出行取消退款退款结果:" + response.toJSONString());
+					if (!isTaxiPrepayRefundSuccess(response)) {
+						return ResultUtil.error(extractCrossCityRefundMessage(response), response);
 					}
 					transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, id);
 				} else if (query.getPayType() == 4) { // 云闪付
@@ -2183,8 +2193,38 @@
 		map.put("id", integer);
 		return ResultUtil.success(map);
 	}
-	
-	
+
+	private Integer toFen(Double amount) {
+		return new BigDecimal(String.valueOf(amount)).multiply(new BigDecimal("100")).setScale(0, RoundingMode.HALF_UP).intValue();
+	}
+
+	private String buildPrepayRefundOutNo(Integer orderId) {
+		return "CROSS_REFUND_1_" + orderId + ToolUtil.getRandomString(5);
+	}
+
+	private boolean isTaxiPrepayRefundSuccess(JSONObject response) {
+		if (response == null) {
+			return false;
+		}
+		Object code = response.get("code");
+		if (code == null || !"0".equals(String.valueOf(code))) {
+			return false;
+		}
+		JSONObject data = response.getJSONObject("data");
+		return data != null && Boolean.TRUE.equals(data.getBoolean("isSuccess"));
+	}
+
+	private String extractCrossCityRefundMessage(JSONObject response) {
+		if (response == null) {
+			return "微信跨城订单退款失败";
+		}
+		JSONObject data = response.getJSONObject("data");
+		if (data != null && ToolUtil.isNotEmpty(data.getString("failReason"))) {
+			return data.getString("failReason");
+		}
+		String msg = response.getString("msg");
+		return ToolUtil.isNotEmpty(msg) ? msg : "微信跨城订单退款失败";
+	}
 	/**
 	 * 获取服务中的订单数据
 	 *
@@ -2709,7 +2749,7 @@
 			}
 			String recordCode = cbyzxOrderPayHelper.extractRecordCode(response);
 			String paymentCode = ToolUtil.isNotEmpty(recordCode) ? recordCode : outTradeNo;
-			paymentRecordService.saveData(3, uid, 1, orderId, 3, 1, money, paymentCode, 1);//添加预支付数据
+			paymentRecordService.saveData(3, uid, 1, orderId, 3, 1, money, outTradeNo, 1);//添加预支付数据
 		}
 		if (payType == 2) {//支付宝支付
 			resultUtil = payMoneyUtil.alipay("感谢费", "感谢费", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), money.toString(), "/base/aliPayThankYouFee");
@@ -2761,7 +2801,7 @@
 		UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId());
 		PaymentRecord query = paymentRecordService.query(3, userInfo.getId(), 1, orderId, 3, payType, 1);
 		query.setState(2);
-		query.setCode(order_id);
+//		query.setCode(order_id);
 		paymentRecordService.updateById(query);
 		
 		OpenCity openCity = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString());
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
index 2368d14..fbbfc61 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/dao/mapping/OrderPrivateCarMapper.xml
@@ -405,6 +405,7 @@
 		left join t_order_evaluate g on (a.id = g.orderId and g.orderType = 1)
 		left join t_order_cancel h on (a.id = h.orderId and h.orderType = 1 and h.state = 2)
 		where a.id = #{orderId}
+        LIMIT 1
     </select>
 
 
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 980e3e1..0b3b1f4 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -1149,10 +1149,11 @@
 //				return ResultUtil.success(map);
 			}
 		}else if(!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isEmpty(orderPrivateCar.getPrepaySecondPayNo())){
-			UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
-			userInfo.setBalance(userInfo.getBalance() + orderPrivateCar.getPayMoney());
-			userInfoService.updateById(userInfo);
-
+			if (orderPrivateCar.getPayMoney() != null){
+				UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+				userInfo.setBalance(userInfo.getBalance() + orderPrivateCar.getPayMoney());
+				userInfoService.updateById(userInfo);
+			}
 		}
 		Integer number1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
 		Integer number2 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6));
@@ -2895,8 +2896,50 @@
 	}
 
 	private ResultUtil handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason, String remark, Integer uid) throws Exception {
+		System.out.println("快车退款!!!!");
 		if (!isPrivateCarPrepayMode(orderPrivateCar)) {
 			return null;
+		}
+		if (Integer.valueOf(3).equals(orderPrivateCar.getPayType())) {
+			Double refundAmount = orderPrivateCar.getPayMoney();
+			System.out.println("快车余额退款金额!!!!"+ refundAmount);
+			if (refundAmount == null || refundAmount <= 0) {
+				return ResultUtil.error("余额先付订单退款金额异常");
+			}
+			UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+			if (userInfo == null) {
+				return ResultUtil.error("用户信息不存在,无法退款");
+			}
+			userInfo.setBalance(new BigDecimal(null != userInfo.getBalance() ? userInfo.getBalance() : 0)
+					.add(new BigDecimal(refundAmount)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+			userInfoService.updateById(userInfo);
+			restorePrivateCarBenefits(orderPrivateCar);
+			transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId());
+			orderCancelService.saveData(orderPrivateCar.getId(), 1,
+					ToolUtil.isNotEmpty(reason) ? reason : "无司机接单",
+					ToolUtil.isNotEmpty(remark) ? remark : (ToolUtil.isNotEmpty(reason) ? reason : "无司机接单"),
+					1, refundAmount, 2, 1, uid);
+			orderPrivateCar.setState(10);
+			orderPrivateCar.setPrepayStage(5);
+			orderPrivateCar.setPrepayRefundNo("BALANCE_REFUND_1_" + orderPrivateCar.getId() + "_" + ToolUtil.getRandomString(5));
+			orderPrivateCar.setPrepayRefundAmount(refundAmount);
+			orderPrivateCar.setPrepayRefundTime(new Date());
+			this.updateById(orderPrivateCar);
+			if (orderPrivateCar.getDriverId() != null) {
+				this.deleteTask(orderPrivateCar.getId());
+				pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0);
+				Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+				if (driver != null) {
+					driver.setState(2);
+					driverService.updateById(driver);
+				}
+				if (orderPrivateCar.getBindId() != null) {
+					chinaMobileUtil.midAxbUnBindSend(orderPrivateCar.getBindId(), orderPrivateCar.getTelX(), (System.currentTimeMillis() + 600000));
+				}
+			}
+			System.out.println("余额退款通知940");
+			systemNoticeService.addSystemNotice(1, "您的快车余额先付订单已取消,退款已退回账户余额,请注意查收。", orderPrivateCar.getUserId(), 1);
+			return ResultUtil.success();
 		}
 		String outRequestNo = orderPrivateCar.getPrepaySecondPayNo();
 		if (ToolUtil.isEmpty(outRequestNo)) {
@@ -3500,12 +3543,13 @@
 
 							}else {
 								// 没找到车辆
+								Thread.sleep(5000);
 								ResultUtil refundResult = handlePrivateCarPrepayCancelRefund(orderPrivateCar, "无司机接单", "无司机接单", orderPrivateCar.getUserId());
 								if (refundResult == null) {
 									orderPrivateCar.setState(10);
 									orderPrivateCarMapper.updateById(orderPrivateCar);
 								}
-								pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, 1);
+								pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, 10);
 							}
 
 
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemNoticeService.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemNoticeService.java
index 6d7e663..7d31fa1 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemNoticeService.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ISystemNoticeService.java
@@ -16,7 +16,7 @@
      * @param userId
      * @throws Exception
      */
-    void addSystemNotice(Integer userType, String content, Integer userId, Integer noticeType) throws Exception;
+    void addSystemNotice(Integer userType, String content, Integer userId, Integer noticeType);
 
 
     /**
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemNoticeServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemNoticeServiceImpl.java
index 509814b..9bcb318 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemNoticeServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SystemNoticeServiceImpl.java
@@ -31,7 +31,7 @@
      * @throws Exception
      */
     @Override
-    public void addSystemNotice(Integer userType, String content, Integer userId, Integer noticeType) throws Exception {
+    public void addSystemNotice(Integer userType, String content, Integer userId, Integer noticeType) {
         SystemNotice systemNotice = new SystemNotice();
         systemNotice.setContent(content);
         systemNotice.setInsertTime(new Date());
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
index 311733b..1d32ccc 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -88,7 +88,7 @@
 		post.form(params);
 		HttpResponse execute = post.execute();
 		if (200 != execute.getStatus()) {
-			System.err.println("推送异常");
+			System.err.println("推送异常"+execute.body());
 		} else {
 			JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class);
 			if (jsonObject1.getIntValue("code") != 200) {
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/ITransactionDetailsService.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/ITransactionDetailsService.java
index 81ca3ba..cb9873a 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/ITransactionDetailsService.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/ITransactionDetailsService.java
@@ -19,5 +19,5 @@
      * @throws Exception
      */
     void saveData(Integer userId, String remark, Double money, Integer state,
-                  Integer type, Integer userType, Integer orderType, Integer orderId) throws Exception;
+                  Integer type, Integer userType, Integer orderType, Integer orderId);
 }
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
index e9d1bb2..e187ffb 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -29,6 +29,7 @@
 import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
 import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
 import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -52,6 +53,7 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 @Transactional(isolation = Isolation.READ_UNCOMMITTED, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
 public class OrderTaxiServiceImpl extends ServiceImpl<OrderTaxiMapper, OrderTaxi> implements IOrderTaxiService {
@@ -558,20 +560,7 @@
 		System.out.println("出租车退款111!!!!");
 		if (!Integer.valueOf(2).equals(orderTaxi.getPaymentMode()) && StrUtil.isNotEmpty(orderTaxi.getPrepaySecondPayNo())) {
 			System.out.println("出租车退款2222!!!!");
-			ResultUtil refundResult = handleTaxiPrepayCancelRefund(orderTaxi, reason, remark, uid);
-			if (refundResult != null) {
-				System.out.println("出租车退款3333!!!!"+refundResult.getCode());
-				if (!ResultUtil.SUCCESS.equals(refundResult.getCode())) {
-					return refundResult;
-				}
-				Map<String, Object> map = new HashMap<>();
-				map.put("id", null);
-				return ResultUtil.success(map);
-			}
-		}else if(!Integer.valueOf(2).equals(orderTaxi.getPaymentMode()) && StrUtil.isEmpty(orderTaxi.getPrepaySecondPayNo())){
-			UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
-			userInfo.setBalance(userInfo.getBalance() + orderTaxi.getPayMoney());
-			userInfoService.updateById(userInfo);
+			handleTaxiPrepayCancelRefund(orderTaxi, reason);
 		}
 		if (null == orderTaxi.getDriverId()) {//没有接单的情况
 			if (orderTaxi.getType() == 2) {//摆渡车
@@ -2308,7 +2297,7 @@
 		}
 	}
 
-	private void restoreTaxiBenefits(OrderTaxi orderTaxi) throws Exception {
+	private void restoreTaxiBenefits(OrderTaxi orderTaxi){
 		if (null != orderTaxi.getCouponId()) {
 			UserCouponRecord userCouponRecord = userCouponRecordService.selectById(orderTaxi.getCouponId());
 			if (userCouponRecord != null) {
@@ -2388,6 +2377,53 @@
 		return "PREPAY_REFUND_2_" + orderId+ ToolUtil.getRandomString(5);
 	}
 
+	private void handleTaxiPrepayCancelRefund(OrderTaxi orderTaxi, String reason){
+		if (Integer.valueOf(3).equals(orderTaxi.getPayType())) {
+			Double refundAmount = orderTaxi.getPayMoney();
+			if (refundAmount == null || refundAmount <= 0) {
+				throw new RuntimeException("余额先付订单退款金额异常");
+			}
+			UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
+			if (userInfo == null) {
+				throw new RuntimeException("用户信息不存在,无法退款");
+			}
+			userInfo.setBalance(new BigDecimal(null != userInfo.getBalance() ? userInfo.getBalance() : 0)
+					.add(new BigDecimal(refundAmount)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
+			userInfoService.updateById(userInfo);
+			restoreTaxiBenefits(orderTaxi);
+			transactionDetailsService.saveData(orderTaxi.getUserId(), "出租车取消订单退款", refundAmount, 1, 1, 1, 2, orderTaxi.getId());
+			orderTaxi.setState(10);
+			orderTaxi.setPrepayStage(5);
+			orderTaxi.setPrepayRefundNo("BALANCE_REFUND_2_" + orderTaxi.getId() + "_" + ToolUtil.getRandomString(5));
+			orderTaxi.setPrepayRefundAmount(refundAmount);
+			orderTaxi.setPrepayRefundTime(new Date());
+			this.updateById(orderTaxi);
+			systemNoticeService.addSystemNotice(1, "您的出租车余额先付订单已取消,退款已退回账户余额,请注意查收。", orderTaxi.getUserId(), 1);
+		}else {
+			String outRequestNo = orderTaxi.getPrepaySecondPayNo();
+			if (ToolUtil.isEmpty(outRequestNo)) {
+				throw new RuntimeException("微信先付订单缺少支付单号,无法关闭支付单");
+			}
+			Double refundAmount = orderTaxi.getPayMoney();
+			if (refundAmount == null || refundAmount <= 0) {
+				throw new RuntimeException("微信先付订单退款金额异常");
+			}
+			CbyzxPayUtil.ClosePayOrderRequest request = new CbyzxPayUtil.ClosePayOrderRequest();
+			request.setOutRequestNo(outRequestNo);
+			request.setRefundOutRequestNo(buildPrepayRefundOutNo(orderTaxi.getId()));
+			request.setRefundAmount(toFen(refundAmount));
+			request.setRefundDesc(ToolUtil.isNotEmpty(reason) ? reason : "出租车订单取消退款");
+			JSONObject response = CbyzxPayUtil.closePayOrder(request);
+			System.out.println("微信先付订单退款结果:" + response.toJSONString());
+			if (!isTaxiPrepayRefundSuccess(response)) {
+				throw new RuntimeException(extractTaxiRefundMessage(response));
+			}
+			restoreTaxiBenefits(orderTaxi);
+			transactionDetailsService.saveData(orderTaxi.getUserId(), "出租车取消订单退款", refundAmount, 1, 1, 1, 2, orderTaxi.getId());
+			systemNoticeService.addSystemNotice(1, "您的出租车微信先付订单已取消,退款已原路退回,请注意查收。", orderTaxi.getUserId(), 1);
+		}
+	}
+
 	private ResultUtil handleTaxiPrepayCancelRefund(OrderTaxi orderTaxi, String reason, String remark, Integer uid) throws Exception {
 		System.out.println("出租车退款!!!!");
 		if (orderTaxi == null || !Integer.valueOf(1).equals(orderTaxi.getPaymentMode())) {
@@ -2395,6 +2431,7 @@
 		}
 		if (Integer.valueOf(3).equals(orderTaxi.getPayType())) {
 			Double refundAmount = orderTaxi.getPayMoney();
+			System.out.println("余额退款金额!!!!"+ refundAmount);
 			if (refundAmount == null || refundAmount <= 0) {
 				return ResultUtil.error("余额先付订单退款金额异常");
 			}
@@ -2429,9 +2466,11 @@
 					chinaMobileUtil.midAxbUnBindSend(orderTaxi.getBindId(), orderTaxi.getTelX(), (System.currentTimeMillis() + 600000));
 				}
 			}
+			System.out.println("余额退款通知469");
 			systemNoticeService.addSystemNotice(1, "您的出租车余额先付订单已取消,退款已退回账户余额,请注意查收。", orderTaxi.getUserId(), 1);
 			return ResultUtil.success();
 		}
+		System.out.println("微信退款473");
 		String outRequestNo = orderTaxi.getPrepaySecondPayNo();
 		if (ToolUtil.isEmpty(outRequestNo)) {
 			return ResultUtil.error("微信先付订单缺少支付单号,无法关闭支付单");
@@ -2480,6 +2519,7 @@
 	}
 
 	private void handleTaxiPrepayFirstPaid(OrderTaxi orderTaxi, UserInfo userInfo, Double payAmount, Integer payType) throws Exception {
+		log.error("出租车预付回调-------519");
 		OpenCity openCity = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
 		SysIntegral query1 = sysIntegralMapper.query(openCity.getId());
 		if (null != query1) {
@@ -2533,12 +2573,13 @@
 		if (query == null) {
 			query = paymentRecordService.query(1, orderTaxi.getUserId(), 1, Integer.valueOf(id), 2, type, 1);
 		}
+		System.out.println("出租车预付回调-------572");
 		if (null != query && query.getState() == 1) {
 			UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
 			query.setState(2);
 			query.setCode(order_id);
 			paymentRecordService.updateById(query);
-
+			System.out.println("出租车预付回调-------579,"+orderTaxi);
 			if (isTaxiPrepayFirstStage(orderTaxi)) {
 				orderTaxi.setPrepaySecondPayNo(outTradeNo);
 				handleTaxiPrepayFirstPaid(orderTaxi, userInfo, query.getAmount(), type);
@@ -2567,7 +2608,7 @@
 			if (!isPrepaySpreadStage) {
 				consumeTaxiBenefits(orderTaxi);
 			}
-			
+			System.out.println("出租车预付回调-------608");
 			//非追缴单才添加收入记录
 			if(0 == orderTaxi.getRecoveryOrder() && (Integer.valueOf(2).equals(orderTaxi.getPaymentMode()) || Integer.valueOf(5).equals(orderTaxi.getPrepayStage()))){
 				//添加收入
@@ -2607,8 +2648,8 @@
 				}
 				redisTemplate.opsForValue().set("VEHICLE", jsonArray.toJSONString());
 			}
-			
-			
+
+			System.out.println("出租车预付回调-------649");
 			systemNoticeService.addSystemNotice(1, "您已使用" + (type == 1 ? "微信" : (type == 2 ? "支付宝" : "云闪付")) + "成功完成出行订单支付,谢谢使用!", orderTaxi.getUserId(), 1);
 		} else {
 			System.err.println("预支付数据异常(orderId = " + id + ")");
@@ -2691,14 +2732,18 @@
 					}
 					
 					OpenCity openCity = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
-
+					System.out.println("城市city732,"+openCity);
 					// 判断是否为智能派单
 					TSysPushType sysPushType = tSysPushTypeService.selectOne(new EntityWrapper<TSysPushType>().eq("openCityId", openCity.getId()));
+					System.out.println("推送方式735,"+sysPushType);
 					if(sysPushType!=null && sysPushType.getPushType()==2){
+						System.out.println("指派模式732");
 						OrderTaxi orderTaxi1 = orderTaxiMapper.selectById(orderTaxi.getId());
-						if (null == orderTaxi1 && orderTaxi1.getState() == 1) {
+						System.out.println("orderTaxi1,"+orderTaxi1);
+						if (null != orderTaxi1 && orderTaxi1.getState() == 1) {
 							// 获取5公里内司机抢单
 							List<Driver> listDriver = driverService.queryIdleDriver(2, orderTaxi1.getStartLon(), orderTaxi1.getStartLat(), 5.0, null);//查询5公里内空闲司机
+							System.out.println("指派模式743"+listDriver);
 							if (listDriver.size() > 0) {
 								Driver driver1 = listDriver.stream().sorted(Comparator.comparingDouble(Driver::getDistance).reversed()).findFirst().get();
 
@@ -2785,21 +2830,22 @@
 
 							}else {
 								// 没找到车辆
+								Thread.sleep(5000);
 								OrderTaxi orderTaxi2 = orderTaxiMapper.selectById(orderTaxi.getId());
+								System.out.println("指派模式830");
 								ResultUtil refundResult = handleTaxiPrepayCancelRefund(orderTaxi2, "\u65e0\u53f8\u673a\u63a5\u5355", "\u65e0\u53f8\u673a\u63a5\u5355", orderTaxi2.getUserId());
 								if (refundResult == null) {
 									orderTaxi2.setState(10);
 									orderTaxiMapper.updateById(orderTaxi2);
 								}
-								pushUtil.pushEndPush(1, orderTaxi2.getUserId(), orderTaxi2.getId(), 2, 1);
-
+								pushUtil.pushEndPush(1, orderTaxi2.getUserId(), orderTaxi2.getId(), 2, 10);
 							}
 
 
 						}
 
 					}else {
-
+						System.out.println("推单模式836");
 						List<PushOrder> querys = pushOrderService.querys(null, 2, openCity.getId());//查询推单配置
 						//整轮派单结束,若无司机接单,系统自动增加派单5轮,若增加5轮后仍无司机接单,则系统结束派单,乘客端显示无司机接单、是否再次打车
 						int num = 0;
diff --git a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/TransactionDetailsServiceImpl.java b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/TransactionDetailsServiceImpl.java
index c6c02c1..04080d6 100644
--- a/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/TransactionDetailsServiceImpl.java
+++ b/UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/TransactionDetailsServiceImpl.java
@@ -31,7 +31,7 @@
      */
     @Override
     public void saveData(Integer userId, String remark, Double money, Integer state, Integer type, Integer userType,
-                         Integer orderType, Integer orderId) throws Exception {
+                         Integer orderType, Integer orderId) {
 
         TransactionDetails transactionDetails = new TransactionDetails();
         transactionDetails.setInsertTime(new Date());

--
Gitblit v1.7.1