From f08b7e95bc941a72d4a7b7bc64c2086ed53f1565 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 21 十月 2024 15:48:27 +0800
Subject: [PATCH] 修改2.0 bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java |   82 +++++++++++++++++++++--------------------
 1 files changed, 42 insertions(+), 40 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
index 3cf4d62..d80ad15 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -32,6 +32,8 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -100,6 +102,9 @@
     
     @Autowired
     private ISettlementRecordService settlementRecordService;
+    
+    @Resource
+    private IBalanceUsageRecordService balanceUsageRecordService;
 
 
 
@@ -130,7 +135,7 @@
 //        List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(state, uid);
 //        datas.addAll(list2);
         //小件物流
-        List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language);
+        List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language);
         datas.addAll(list3);
 
         //分页
@@ -170,7 +175,7 @@
             List<Map<String, Object>> list2 = orderCrossCityService.queryOrderList(language, state, uid);
             datas.addAll(list2);
         }else{//小件物流
-            List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(uid, language);
+            List<Map<String, Object>> list3 = orderLogisticsService.queryOrderList(state, uid, language);
             datas.addAll(list3);
         }
 
@@ -208,11 +213,11 @@
         List<Map<String, Object>> list1 = orderPrivateCarService.queryMyAllOrder(state, uid, language);
         for (Map<String, Object> map : list1) {
             Integer id = Integer.valueOf(map.get("id").toString());
-            map.put("settleAccounts", 1);
+            map.put("settleAccounts", 0);
             SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 1));
             if(null != settlementDetail){
                 SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId());
-                map.put("settleAccounts", settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
+                map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
             }
         }
         datas.addAll(list1);
@@ -223,11 +228,11 @@
         List<Map<String, Object>> list3 = orderLogisticsService.queryMyAllOrder(state, uid, language);
         for (Map<String, Object> map : list3) {
             Integer id = Integer.valueOf(map.get("id").toString());
-            map.put("settleAccounts", 1);
+            map.put("settleAccounts", 0);
             SettlementDetail settlementDetail = settlementDetailService.selectOne(new EntityWrapper<SettlementDetail>().eq("orderId", id).eq("orderType", 4));
             if(null != settlementDetail){
                 SettlementRecord settlementRecord = settlementRecordService.selectById(settlementDetail.getSettlementRecordId());
-                map.put("settleAccounts", settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
+                map.put("settleAccounts", null == settlementRecord || settlementRecord.getPaymentStatus() == 1 ? 0 : 1);
             }
         }
         datas.addAll(list3);
@@ -259,12 +264,14 @@
         switch (orderType){
             case 1://专车
                 map = orderPrivateCarService.queryPushOrder(orderId, language);
-                DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon));
-                map.put("startDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0);
+                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
+                String tripId = redisUtil.getValue("trip" + orderPrivateCar.getUserId());
+                DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon), tripId);
+                map.put("startDistance", null != distancematrix ? new BigDecimal(distancematrix.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
 
                 //总距离
-                distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()));
-                map.put("totalDistance", null != distancematrix ? distancematrix.getDistance() / 1000 : 0);
+                distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()), tripId);
+                map.put("totalDistance", null != distancematrix ? new BigDecimal(distancematrix.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
 
                 Integer orderSource = Integer.valueOf(String.valueOf(map.get("orderSource")));
                 if(orderSource == 1 || orderSource == 2 || orderSource == 3){
@@ -368,12 +375,14 @@
                 break;
             case 4://市内小件物流
                 map = orderLogisticsService.queryPushOrder(orderId, language);
-                DistancematrixVo distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon));
-                map.put("startDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0);
+                OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
+                String tripId1 = redisUtil.getValue("trip" + orderLogistics.getUserId());
+                DistancematrixVo distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(lat), Double.valueOf(lon), tripId1);
+                map.put("startDistance", null != distancematrix1 ? new BigDecimal(distancematrix1.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
 
                 //总距离
-                distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()));
-                map.put("totalDistance", null != distancematrix1 ? distancematrix1.getDistance() / 1000 : 0);
+                distancematrix1 = GoogleMapUtil.getDistancematrix(Double.valueOf(map.get("startLat").toString()), Double.valueOf(map.get("startLon").toString()), Double.valueOf(map.get("endLat").toString()), Double.valueOf(map.get("endLon").toString()), tripId1);
+                map.put("totalDistance", null != distancematrix1 ? new BigDecimal(distancematrix1.getDistance()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue() : 0);
 
                 Integer orderSource3 = Integer.valueOf(String.valueOf(map.get("orderSource")));
                 if(orderSource3 == 1 || orderSource3 == 2 || orderSource3 == 3){
@@ -518,13 +527,6 @@
         if(null != map.get("telX")){
             map.put("phone", map.get("telX"));
         }
-        Integer companyId = 1;
-        if(null != map.get("driverId")){
-            companyId = Integer.valueOf(String.valueOf(map.get("companyId")));
-        }
-        CancleOrder cancleOrder = cancleOrderService.selectOne(new EntityWrapper<CancleOrder>().eq("companyId", companyId));
-        JSONObject jsonObject = JSON.parseObject(cancleOrder.getContent());
-        map.put("timeOutCancel", jsonObject.getIntValue("driverTimeout"));
         return map;
     }
 
@@ -572,20 +574,15 @@
      */
     @Override
     public ResultUtil process(Integer orderId, Integer orderType, Integer state, Integer uid, Double lon, Double lat,String phone, String pickUpCode, Integer language) throws Exception {
-        ReverseGeocodeVo reverseGeocode = GoogleMapUtil.getReverseGeocode(lat, lon);
-        if(null == reverseGeocode){
-            return ResultUtil.error(language == 1 ? "无效的经纬度" : language == 2 ? "Invalid longitude and latitude" : "Longitude et latitude non valides");
-        }
-        String address = reverseGeocode.getAddress();
         switch (orderType){
             case 1://专车
-                return orderPrivateCarService.process(orderId, state, lon, lat, address, phone, language);
+                return orderPrivateCarService.process(orderId, state, lon, lat, phone, language, uid);
             case 2://出租
 //                return orderTaxiService.process(orderId, state, lon, lat, address);
             case 3://城际
 //                return orderCrossCityService.process(orderId, state, lon, lat, address);
             case 4://同城小件
-                return orderLogisticsService.process(orderId, state, lon, lat, address, pickUpCode, language);
+                return orderLogisticsService.process(orderId, state, lon, lat, pickUpCode, language, uid);
             case 5://跨城小件
 //                return orderLogisticsService.process(orderId, state, lon, lat, address);
             case 6:
@@ -607,16 +604,17 @@
      * @throws Exception
      */
     @Override
-    public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee) throws Exception {
+    public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee,
+                                  Double parkingFee, Double crossingFee, Integer uid) throws Exception {
         switch (orderType){
             case 1://专车
-                return orderPrivateCarService.confirmFees(language, orderId, type, parkingFee, crossingFee);
+                return orderPrivateCarService.confirmFees(language, orderId, type, parkingFee, crossingFee, uid);
             case 2://出租
                 return orderTaxiService.confirmFees(orderId, type, travelFee, parkingFee, crossingFee);
             case 3://城际(没有此流程)
                 break;
             case 4://
-                return orderLogisticsService.confirmFees(language, orderId, type, parkingFee, crossingFee);
+                return orderLogisticsService.confirmFees(language, orderId, type, parkingFee, crossingFee, uid);
             case 5:
                 break;
             case 6:
@@ -732,7 +730,7 @@
             case 3://城际
                 return orderCrossCityService.calculateMileage(orderPosition);
             case 4://
-                break;
+                return orderLogisticsService.calculateMileage(orderPosition.getOrderId(), orderPosition.getLon(), orderPosition.getLat());
             case 5:
                 break;
             case 6:
@@ -1041,8 +1039,8 @@
         new Thread(new Runnable() {
             @Override
             public void run() {
-                pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState);
-                pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState);
+                pushUtil.pushOrderState(1, finalUserId, orderId, orderType, finalState, 0, "");
+                pushUtil.pushOrderState(2, finalDriverId, orderId, orderType, finalState, 0, "");
             }
         }).start();
         return ResultUtil.success();
@@ -1168,8 +1166,8 @@
                 checkoutRequest.setRequestDescription("Travel completion payment");
                 checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
                 checkoutRequest.setPendingRedirectUrl("");
-                checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html");
-                checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html");
+                checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
+                checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
                 ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
                 if(resultUtil.getCode()==200){
                     paymentRecordService.saveData(1, uid, 2, orderId, orderType, 1, money, null, 1);//添加预支付数据
@@ -1194,8 +1192,8 @@
                 checkoutRequest.setRequestDescription("Travel completion payment");
                 checkoutRequest.setCallbackUrl(callbackPath + "/base/wxPayOrderTaxi");
                 checkoutRequest.setPendingRedirectUrl("");
-                checkoutRequest.setSuccessRedirectUrl("http://182.160.16.251:81/payMoney/pages/success.html");
-                checkoutRequest.setFailRedirectUrl("http://182.160.16.251:81/payMoney/pages/fail.html");
+                checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
+                checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
                 ResultUtil resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
 
                 if(resultUtil.getCode()==200){
@@ -1207,14 +1205,18 @@
             }
             if(payType == 3){//余额支付
                 driver.setBalance(driver.getBalance() - money);
-                if(driver.getLaveBusinessMoney().compareTo(money) < 0){
-                    double b = money - driver.getLaveBusinessMoney();
+                Double laveBusinessMoney = driver.getLaveBusinessMoney();
+                if(laveBusinessMoney.compareTo(money) < 0){
+                    double b = money - laveBusinessMoney;
                     driver.setLaveBusinessMoney(0D);
                     driver.setLaveActivityMoney(driver.getLaveActivityMoney() - b);
                     driverService.updateById(driver);
+                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 1, b, orderType == 1 ? 1 : 2);
+                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, laveBusinessMoney, orderType == 1 ? 1 : 2);
                 }else{
                     driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - money);
                     driverService.updateById(driver);
+                    balanceUsageRecordService.saveBalanceUsageRecord(driver.getId(), 2, money, orderType == 1 ? 1 : 2);
                 }
 
                 if(orderType == 1){//专车

--
Gitblit v1.7.1