From b1f2f102034b4433201225b67a9fc78c08e532f0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 06 六月 2025 18:35:03 +0800
Subject: [PATCH] 修改bug和管理后台报表

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |  193 ++++++++++++++++++++++++-----------------------
 1 files changed, 98 insertions(+), 95 deletions(-)

diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 88656cf..5cd66b3 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -1,5 +1,6 @@
 package com.stylefeng.guns.modular.specialTrain.server.impl;
 
+import cn.hutool.db.nosql.redis.RedisDS;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -59,6 +60,7 @@
 import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 
@@ -147,7 +149,7 @@
 
     @Resource
     private IUserActivityRedenvelopeService userActivityRedenvelopeService;
-
+    
     @Resource
     private RedisUtil redisUtil;
 
@@ -349,8 +351,7 @@
             }
 
             orderPrivateCar.setDriverId(driverId);
-            orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
-                    driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
+            orderPrivateCar.setCompanyId(driver.getCompanyId());
             orderPrivateCar.setState(2);
             orderPrivateCar.setCarId(driver.getCarId());
             CarService query1 = carServiceMapper.query(1, driver.getCarId());
@@ -501,8 +502,8 @@
             new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0, "");
-                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0, finalAudioUrl);
+                    pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0, "", "user");
+                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0, finalAudioUrl, "user");
                 }
             }).start();
         }
@@ -566,8 +567,7 @@
                             .eq("state", 1).like("type", "1"));
                     if(driver.getState() == 2 && null != driverWork){
                         orderPrivateCar.setDriverId(dr.getId());
-                        orderPrivateCar.setCompanyId(dr.getFranchiseeId() != null && dr.getFranchiseeId() != 0 ? dr.getFranchiseeId() : (
-                                dr.getCompanyId() != null && dr.getCompanyId() != 0 ? dr.getCompanyId() : 1));
+                        orderPrivateCar.setCompanyId(dr.getCompanyId());
                         orderPrivateCar.setState(2);
                         orderPrivateCar.setCarId(dr.getCarId());
                         CarService query1 = carServiceMapper.query(1, dr.getCarId());
@@ -636,8 +636,8 @@
                         new Thread(new Runnable() {
                             @Override
                             public void run() {
-                                pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0, "");
-                                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0, finalAudioUrl);
+                                pushUtil.pushOrderState(1, uid, orderPrivateCar.getId(), 1, 2, 0, "", "user");
+                                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, 2, 0, finalAudioUrl, "user");
                             }
                         }).start();
                     }
@@ -915,8 +915,8 @@
                             }
                             break;
                     }
-                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
-                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState() == 12 ? orderPrivateCar.getState() : 10, 0, audioUrl);
+                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
+                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState() == 12 ? orderPrivateCar.getState() : 10, 0, audioUrl, "user");
                     System.err.println("推送取消操作---------------------");
                 }
             }).start();
@@ -1082,11 +1082,11 @@
                     }
     
                     this.deleteTask(id);//删除定时任务
-                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
                 }else{
                     incomeService.saveData(1, orderPrivateCar.getCompanyId(), 3, orderPrivateCar.getId(), 1, amount.doubleValue());
                 }
-                pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+                pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
 
                 //添加消息
                 systemNoticeService.addSystemNotice(1, language == 1 ? "您已使用余额成功支付取消订单费用,谢谢使用!" : language == 2
@@ -1188,7 +1188,7 @@
                                     }
                                 }, 30000);
                                 
-                                pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime(), audioUrl);
+                                pushUtil.pushOrderState(2, driver.getId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), pushOrder.getPushTime(), audioUrl, "user");
                             }
                         }
                         Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
@@ -1301,7 +1301,7 @@
         ResultUtil resultUtil = ResultUtil.success("");
         orderPrivateCar.setCouponMoney(0D);//初始化历史数据
         orderPrivateCar.setCouponId(null);
-
+    
         //计算折扣
         UserActivityDiscount1 query2 = userActivityDiscount1Mapper.query(orderPrivateCar.getCompanyId());
         if(null != query2){
@@ -1320,7 +1320,7 @@
                 }
             }
         }
-
+    
         //计算优惠券
         UserCouponRecord userCouponRecord = null;
         if(null != couponId){
@@ -1343,11 +1343,11 @@
             if(userCouponRecord.getCouponType() == 2 && orderMoney.compareTo(new BigDecimal(userCouponRecord.getFullMoney())) < 0){
                 return ResultUtil.error(language == 1 ? "优惠券不能用于此订单" : language == 2 ? "Coupon cannot be used for this order." : "Le coupon ne peut pas être utilisé pour cette commande.", "");
             }
-            orderMoney = orderMoney.subtract(new BigDecimal(userCouponRecord.getMoney())).setScale(2, RoundingMode.HALF_EVEN);
+            orderMoney = orderMoney.subtract(new BigDecimal(userCouponRecord.getMoney()));
             orderPrivateCar.setCouponMoney(userCouponRecord.getMoney());
             orderPrivateCar.setCouponId(couponId);
         }
-
+    
         //计算红包
         if(null != redDeduction && 1 == redDeduction && null == orderPrivateCar.getRedPacketId()){
             RedEnvelopePaymentSettings redEnvelopePaymentSettings = redEnvelopePaymentSettingsService.getRedEnvelopePaymentSettings();
@@ -1359,15 +1359,15 @@
                 BigDecimal multiply1 = orderMoney.multiply(deductionRatio.divide(new BigDecimal(100))).setScale(2, RoundingMode.HALF_EVEN);
                 if(total > 0 && multiply1.doubleValue() > 0 && total.compareTo(multiply1.doubleValue()) >= 0){
                     orderPrivateCar.setRedPacketMoney(multiply1.doubleValue());
-                    orderMoney = orderMoney.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN);
-                    
+                    orderMoney = orderMoney.subtract(multiply1);
+                
                     //获取红包id
                     JSONArray jsonArray = new JSONArray();
                     for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
                         JSONObject jsonObject = new JSONObject();
                         jsonObject.put("id", userRedPacketRecord.getId());
                         BigDecimal remainingAmount = new BigDecimal(userRedPacketRecord.getRemainingAmount());
-                        
+                    
                         if(multiply1.compareTo(remainingAmount) >= 0){
                             userRedPacketRecord.setRemainingAmount(0D);
                             userRedPacketRecord.setEndTime(new Date());
@@ -1389,7 +1389,7 @@
                     orderPrivateCar.setRedPacketId(jsonArray.toJSONString());
                 }else if(total > 0 && total.compareTo(multiply1.doubleValue()) < 0){
                     orderPrivateCar.setRedPacketMoney(total);
-                    orderMoney = orderMoney.subtract(new BigDecimal(total)).setScale(2, RoundingMode.HALF_EVEN);
+                    orderMoney = orderMoney.subtract(new BigDecimal(total));
                     //获取红包id
                     JSONArray jsonArray = new JSONArray();
                     for (UserRedPacketRecord userRedPacketRecord : userRedPacketRecords) {
@@ -1397,7 +1397,7 @@
                         jsonObject.put("id", userRedPacketRecord.getId());
                         jsonObject.put("money", userRedPacketRecord.getRemainingAmount());
                         jsonArray.add(jsonObject);
-    
+                    
                         userRedPacketRecord.setRemainingAmount(0D);
                         userRedPacketRecord.setEndTime(new Date());
                         userRedPacketRecord.setState(2);
@@ -1409,8 +1409,8 @@
                 }
             }
         }
-        
-
+    
+    
         if(payType == 1){//手机支付
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
             String merchantTransactionId = sdf.format(new Date()) + "1" + language + orderId;
@@ -1428,14 +1428,14 @@
             checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
             checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
             resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
-
+        
             if(resultUtil.getCode()==200){
                 paymentRecordService.saveData(1, null, null, orderId, 1, 1,
                         orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
             }else{
                 resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
             }
-
+        
         }
         if(payType == 2){//银行卡支付
             BankCard bankCard = bankCardService.selectById(bankCardId);
@@ -1455,7 +1455,7 @@
             checkoutRequest.setSuccessRedirectUrl("https://igo.i-go.group/payMoney/pages/success.html");
             checkoutRequest.setFailRedirectUrl("https://igo.i-go.group/payMoney/pages/fail.html");
             resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
-
+        
             if(resultUtil.getCode()==200){
                 paymentRecordService.saveData(1, null, null, orderId, 1, 2,
                         orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
@@ -1467,28 +1467,28 @@
             if(userInfo.getBalance() == null || new BigDecimal(userInfo.getBalance()).compareTo(orderMoney) < 0){
                 return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant", "");
             }
-
+        
             userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(orderMoney).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
-
+        
             SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
-
+        
             //添加交易明细
             transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(),
                     2, 1, 1, 1, orderId);
             userInfoService.updateById(userInfo);
-
+        
             orderPrivateCar.setState(8);
             orderPrivateCar.setPayType(3);
             orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
-            
+        
             //处理优惠券和红包
             if(null != userCouponRecord){
                 userCouponRecord.setState(2);
                 userCouponRecord.setEndTime(new Date());
                 userCouponRecordService.updateById(userCouponRecord);
             }
-    
+        
             //添加已收入明细
             Company company = companyService.selectById(orderPrivateCar.getCompanyId());
             Double speMoney = company.getSpeMoney();
@@ -1510,7 +1510,7 @@
             driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
             driverService.updateById(driver);
-
+        
             if(ToolUtil.isNotEmpty(userInfo.getEmail())){
                 new Thread(new Runnable() {
                     @Override
@@ -1528,6 +1528,7 @@
                                 aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId());
                             }
                             Double aDouble1 = new BigDecimal(orderPrivateCar.getMileage()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                            Long serviceTime = new BigDecimal(orderPrivateCar.getEndServiceTime().getTime() - orderPrivateCar.getStartServiceTime().getTime()).divide(new BigDecimal(60000), 0, RoundingMode.HALF_EVEN).setScale(0, RoundingMode.HALF_EVEN).longValue();
                             if(1 == language){
                                 document.getElementById("english").remove();
                                 document.getElementById("french").remove();
@@ -1609,7 +1610,7 @@
                                 Element lost_item_chinese = document.getElementById("lost_item_chinese");
                                 lost_item_chinese.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1");
                                 Element track_chinese = document.getElementById("track_chinese");
-                                track_chinese.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId);
+                                track_chinese.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId + "&language=" + language);
                                 Element pay_time_chinese = document.getElementById("pay_time_chinese");
                                 pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_chinese = document.getElementsByClass("driver_chinese");
@@ -1622,7 +1623,7 @@
                                 Element pf_chinese = document.getElementById("pf_chinese");
                                 pf_chinese.text("司机评分:" + aDouble);
                                 Element lc_chinese = document.getElementById("lc_chinese");
-                                lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟");
+                                lc_chinese.text("里程:" + aDouble1 + "公里 /" + serviceTime + "分钟");
                                 Element start_time_chinese = document.getElementById("start_time_chinese");
                                 start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_chinese = document.getElementById("start_address_chinese");
@@ -1716,7 +1717,7 @@
                                 Element lost_item_english = document.getElementById("lost_item_english");
                                 lost_item_english.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1");
                                 Element track_english = document.getElementById("track_english");
-                                track_english.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId);
+                                track_english.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId + "&language=" + language);
                                 Element pay_time_english = document.getElementById("pay_time_english");
                                 pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_english = document.getElementsByClass("driver_english");
@@ -1729,7 +1730,7 @@
                                 Element pf_english = document.getElementById("pf_english");
                                 pf_english.text("Driver Rating:" + aDouble);
                                 Element lc_english = document.getElementById("lc_english");
-                                lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes");
+                                lc_english.text("Mileage:" + aDouble1 + "KM / " + serviceTime + "Minutes");
                                 Element start_time_english = document.getElementById("start_time_english");
                                 start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_english = document.getElementById("start_address_english");
@@ -1823,7 +1824,7 @@
                                 Element lost_item_french = document.getElementById("lost_item_french");
                                 lost_item_french.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1");
                                 Element track_french = document.getElementById("track_french");
-                                track_french.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId);
+                                track_french.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId + "&language=" + language);
                                 Element pay_time_french = document.getElementById("pay_time_french");
                                 pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_french = document.getElementsByClass("driver_french");
@@ -1836,7 +1837,7 @@
                                 Element pf_french = document.getElementById("pf_french");
                                 pf_french.text("Note du chauffeur: " + aDouble);
                                 Element lc_french = document.getElementById("lc_french");
-                                lc_french.text("Distance: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes");
+                                lc_french.text("Distance: " + aDouble1 + "km / " + serviceTime + "minutes");
                                 Element start_time_french = document.getElementById("start_time_french");
                                 start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_french = document.getElementById("start_address_french");
@@ -1850,7 +1851,7 @@
                                 server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
                             }
                             EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de course",  document.html());
-
+                        
                             //开始生成pdf收据和html收据
                             File file = new File("/home/igotechgh/nginx/html/files/html/");
                             if(!file.exists()){
@@ -1864,7 +1865,7 @@
                             fileWriter.write(document.html());
                             fileWriter.flush();
                             fileWriter.close();
-
+                        
                             File file1 = new File("/home/igotechgh/nginx/html/files/pdf/");
                             if(!file1.exists()){
                                 file1.mkdirs();
@@ -1880,7 +1881,7 @@
                                 e.printStackTrace();
                                 System.out.println("html转pdf异常");
                             }
-
+                        
                             String link ="https://igo.i-go.group/files/html/ride_receipt_" + orderId + ".html";
                             TEmail tEmail = new TEmail();
                             tEmail.setLink(link);
@@ -1898,27 +1899,27 @@
                                 tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                             }
                             emailService.insert(tEmail);
-
-
-
+                        
+                        
+                        
                         }catch (Exception e){
                             e.printStackTrace();
                         }
                     }
                 }).start();
             }
-
-
-
+        
+        
+        
             // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
             new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
-                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
+                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
                 }
             }).start();
-
+        
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成出行订单支付,谢谢使用!" : language == 2
                     ? "You've paid for the ride order successfully, thank you for using I-GO"
                     : "Vous avez payé la commande de course avec succès, merci d’utiliser I-GO", orderPrivateCar.getUserId(), 1);
@@ -1926,19 +1927,19 @@
         if(payType == 4){//现金支付
             SysIntegral query1 = sysIntegralMapper.query(orderPrivateCar.getCompanyId());
             userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分
-
+        
             //添加交易明细
             transactionDetailsService.saveData(uid, "完成订单", orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(),
                     2, 1, 1, 1, orderId);
             userInfoService.updateById(userInfo);
-
+        
             orderPrivateCar.setState(8);
             orderPrivateCar.setPayType(4);
             orderPrivateCar.setDriverPay(2);
             orderPrivateCar.setPayMoney(orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue());
-
+        
             Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
-
+        
             //处理优惠券和红包
             if(null != userCouponRecord){
                 userCouponRecord.setState(2);
@@ -1952,7 +1953,7 @@
                 driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
             }
-            
+        
             if(null != orderPrivateCar.getRedPacketId()){
                 Double money = orderPrivateCar.getRedPacketMoney();
                 incomeService.saveData(2, orderPrivateCar.getDriverId(), 7, orderPrivateCar.getId(), 1, money);
@@ -1961,7 +1962,7 @@
                 driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
             }
-            
+        
             if(null != orderPrivateCar.getDiscountMoney() && 0 < orderPrivateCar.getDiscountMoney()){
                 Double money = orderPrivateCar.getDiscountMoney();
                 incomeService.saveData(2, orderPrivateCar.getDriverId(), 6, orderPrivateCar.getId(), 1, money);
@@ -1970,8 +1971,8 @@
                 driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                 driverService.updateById(driver);
             }
-    
-    
+        
+        
             //添加已收入明细
             Company company = companyService.selectById(orderPrivateCar.getCompanyId());
             Double speMoney = company.getSpeMoney();
@@ -1993,8 +1994,8 @@
 //                driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
 //                driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
 //                driverService.updateById(driver);
-    
-    
+        
+        
             //记录司机待结算金额
             if(d.compareTo(new BigDecimal(0)) > 0){
                 SettlementDetail settlementDetail = new SettlementDetail();
@@ -2005,7 +2006,7 @@
                 settlementDetail.setPrice(d.doubleValue());
                 settlementDetail.setCreateTime(new Date());
                 settlementDetailService.insert(settlementDetail);
-        
+            
                 SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
                 if(null != settlementAllocation){
                     JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
@@ -2053,7 +2054,7 @@
                                     car.setVehicleId(UUIDUtil.getRandomCode());
                                     carService.updateById(car);
                                 }
-                        
+                            
                                 //司机下班,修改谷歌上的车辆信息
                                 new Thread(()->{
                                     try {
@@ -2101,7 +2102,7 @@
                     }
                 }
             }
-
+        
             if(ToolUtil.isNotEmpty(userInfo.getEmail())){
                 new Thread(new Runnable() {
                     @Override
@@ -2118,6 +2119,7 @@
                                 aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId());
                             }
                             Double aDouble1 = new BigDecimal(orderPrivateCar.getMileage()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                            Long serviceTime = new BigDecimal(orderPrivateCar.getEndServiceTime().getTime() - orderPrivateCar.getStartServiceTime().getTime()).divide(new BigDecimal(60000), 0, RoundingMode.HALF_EVEN).setScale(0, RoundingMode.HALF_EVEN).longValue();
                             Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                             if(1 == language){
                                 document.getElementById("english").remove();
@@ -2200,7 +2202,7 @@
                                 Element lost_item_chinese = document.getElementById("lost_item_chinese");
                                 lost_item_chinese.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1");
                                 Element track_chinese = document.getElementById("track_chinese");
-                                track_chinese.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId);
+                                track_chinese.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId + "&language=" + language);
                                 Element pay_time_chinese = document.getElementById("pay_time_chinese");
                                 pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_chinese = document.getElementsByClass("driver_chinese");
@@ -2213,7 +2215,7 @@
                                 Element pf_chinese = document.getElementById("pf_chinese");
                                 pf_chinese.text("司机评分:" + aDouble);
                                 Element lc_chinese = document.getElementById("lc_chinese");
-                                lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟");
+                                lc_chinese.text("里程:" + aDouble1 + "公里 /" + serviceTime + "分钟");
                                 Element start_time_chinese = document.getElementById("start_time_chinese");
                                 start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_chinese = document.getElementById("start_address_chinese");
@@ -2307,7 +2309,7 @@
                                 Element lost_item_english = document.getElementById("lost_item_english");
                                 lost_item_english.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1");
                                 Element track_english = document.getElementById("track_english");
-                                track_english.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId);
+                                track_english.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId + "&language=" + language);
                                 Element pay_time_english = document.getElementById("pay_time_english");
                                 pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_english = document.getElementsByClass("driver_english");
@@ -2320,7 +2322,7 @@
                                 Element pf_english = document.getElementById("pf_english");
                                 pf_english.text("Driver Rating:" + aDouble);
                                 Element lc_english = document.getElementById("lc_english");
-                                lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes");
+                                lc_english.text("Mileage:" + aDouble1 + "KM / " + serviceTime + "Minutes");
                                 Element start_time_english = document.getElementById("start_time_english");
                                 start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_english = document.getElementById("start_address_english");
@@ -2414,7 +2416,7 @@
                                 Element lost_item_french = document.getElementById("lost_item_french");
                                 lost_item_french.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + orderId + "&orderType=1");
                                 Element track_french = document.getElementById("track_french");
-                                track_french.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId);
+                                track_french.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + orderId + "&language=" + language);
                                 Element pay_time_french = document.getElementById("pay_time_french");
                                 pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_french = document.getElementsByClass("driver_french");
@@ -2427,7 +2429,7 @@
                                 Element pf_french = document.getElementById("pf_french");
                                 pf_french.text("Note du chauffeur: " + aDouble);
                                 Element lc_french = document.getElementById("lc_french");
-                                lc_french.text("Distance: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes");
+                                lc_french.text("Distance: " + aDouble1 + "km / " + serviceTime + "minutes");
                                 Element start_time_french = document.getElementById("start_time_french");
                                 start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_french = document.getElementById("start_address_french");
@@ -2440,9 +2442,9 @@
                                 Element server_tel_french = document.getElementById("server_tel_french");
                                 server_tel_french.attr("href", "tel:" + (null != phone ? phone.getPhone() : ""));
                             }
-
+                        
                             EmailUtil.send(userInfo.getEmail(), language == 1 ? "打车收据" : language == 2 ? "Ride receipt" : "Reçu de course",  document.html());
-
+                        
                             //开始生成pdf收据和html收据
                             File file = new File("/home/igotechgh/nginx/html/files/html/");
                             if(!file.exists()){
@@ -2456,7 +2458,7 @@
                             fileWriter.write(document.html());
                             fileWriter.flush();
                             fileWriter.close();
-
+                        
                             File file1 = new File("/home/igotechgh/nginx/html/files/pdf/");
                             if(!file1.exists()){
                                 file1.mkdirs();
@@ -2489,23 +2491,23 @@
                                 tEmail.setAmOrPm(language==1?"下午":language==2?"afternoon":"après-midi");
                             }
                             emailService.insert(tEmail);
-
-
+                        
+                        
                         }catch (Exception e){
                             e.printStackTrace();
                         }
                     }
                 }).start();
             }
-
-
-
+        
+        
+        
             // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
             new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
-                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
+                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
                     Integer language1 = driver.getLanguage();
                     String text = "";
                     switch (language1){
@@ -2518,7 +2520,7 @@
                         case 3:
                             text = "Le client a choisi de payer en espèces, vous devez donc encaisser le paiement.Confirmez si vous avez reçu les frais pour cette commande : Espèces GHS " + orderPrivateCar.getPayMoney();
                             break;
-        
+                    
                     }
                     String audioUrl = "";
                     String fileName = "offlinePayment" + orderPrivateCar.getDriverId() + UUIDUtil.getRandomCode(5) + ".mp3";
@@ -2552,12 +2554,12 @@
                     pushUtil.pushOfflinePayment(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getPayMoney(), audioUrl);
                 }
             }).start();
-
+        
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功完成出行订单支付,谢谢使用!" : language == 2
                     ? "You've paid for the ride order successfully, thank you for using I-GO"
                     : "Vous avez payé la commande de course avec succès, merci d’utiliser I-GO", orderPrivateCar.getUserId(), 1);
         }
-
+    
         this.updateAllColumnById(orderPrivateCar);
         return resultUtil;
     }
@@ -2766,11 +2768,11 @@
                 }
                 this.deleteTask(orderPrivateCar.getId());//删除定时任务
     
-                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+                pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
             }else{
                 incomeService.saveData(1, orderPrivateCar.getCompanyId(), 3, orderPrivateCar.getId(), 1, amount.doubleValue());
             }
-            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+            pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
 
             //添加消息
             systemNoticeService.addSystemNotice(1, language == 1 ? "您已使用余额成功支付取消订单费用,谢谢使用!" : language == 2
@@ -2850,6 +2852,7 @@
                                 aDouble = orderEvaluateService.queryDriverScore(orderPrivateCar.getDriverId());
                             }
                             Double aDouble1 = new BigDecimal(orderPrivateCar.getMileage()).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+                            Long serviceTime = new BigDecimal(orderPrivateCar.getEndServiceTime().getTime() - orderPrivateCar.getStartServiceTime().getTime()).divide(new BigDecimal(60000), 0, RoundingMode.HALF_EVEN).setScale(0, RoundingMode.HALF_EVEN).longValue();
                             if(1 == language){
                                 document.getElementById("english").remove();
                                 document.getElementById("french").remove();
@@ -2931,7 +2934,7 @@
                                 Element lost_item_chinese = document.getElementById("lost_item_chinese");
                                 lost_item_chinese.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=1");
                                 Element track_chinese = document.getElementById("track_chinese");
-                                track_chinese.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + id);
+                                track_chinese.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + id + "&language=" + language);
                                 Element pay_time_chinese = document.getElementById("pay_time_chinese");
                                 pay_time_chinese.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_chinese = document.getElementsByClass("driver_chinese");
@@ -2944,7 +2947,7 @@
                                 Element pf_chinese = document.getElementById("pf_chinese");
                                 pf_chinese.text("司机评分:" + aDouble);
                                 Element lc_chinese = document.getElementById("lc_chinese");
-                                lc_chinese.text("里程:" + aDouble1 + "公里 /" + orderPrivateCar.getDuration() + "分钟");
+                                lc_chinese.text("里程:" + aDouble1 + "公里 /" + serviceTime + "分钟");
                                 Element start_time_chinese = document.getElementById("start_time_chinese");
                                 start_time_chinese.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_chinese = document.getElementById("start_address_chinese");
@@ -3038,7 +3041,7 @@
                                 Element lost_item_english = document.getElementById("lost_item_english");
                                 lost_item_english.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=1");
                                 Element track_english = document.getElementById("track_english");
-                                track_english.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + id);
+                                track_english.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + id + "&language=" + language);
                                 Element pay_time_english = document.getElementById("pay_time_english");
                                 pay_time_english.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_english = document.getElementsByClass("driver_english");
@@ -3051,7 +3054,7 @@
                                 Element pf_english = document.getElementById("pf_english");
                                 pf_english.text("Driver Rating:" + aDouble);
                                 Element lc_english = document.getElementById("lc_english");
-                                lc_english.text("Mileage:" + aDouble1 + "KM / " + orderPrivateCar.getDuration() + "Minutes");
+                                lc_english.text("Mileage:" + aDouble1 + "KM / " + serviceTime + "Minutes");
                                 Element start_time_english = document.getElementById("start_time_english");
                                 start_time_english.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_english = document.getElementById("start_address_english");
@@ -3145,7 +3148,7 @@
                                 Element lost_item_french = document.getElementById("lost_item_french");
                                 lost_item_french.attr("href", "https://igo.i-go.group/mailbox/user/lossGoods.html?language=" + language + "&orderId=" + id + "&orderType=1");
                                 Element track_french = document.getElementById("track_french");
-                                track_french.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + id);
+                                track_french.attr("href", "https://igo.i-go.group/mailbox/user/location.html?orderId=" + id + "&language=" + language);
                                 Element pay_time_french = document.getElementById("pay_time_french");
                                 pay_time_french.text(DateUtil.conversionFormat(language, sdf1.format(orderPrivateCar.getEndServiceTime())));
                                 Elements driver_french = document.getElementsByClass("driver_french");
@@ -3158,7 +3161,7 @@
                                 Element pf_french = document.getElementById("pf_french");
                                 pf_french.text("Note du chauffeur: " + aDouble);
                                 Element lc_french = document.getElementById("lc_french");
-                                lc_french.text("Distance: " + aDouble1 + "km / " + orderPrivateCar.getDuration() + "minutes");
+                                lc_french.text("Distance: " + aDouble1 + "km / " + serviceTime + "minutes");
                                 Element start_time_french = document.getElementById("start_time_french");
                                 start_time_french.text(sdf2.format(orderPrivateCar.getTravelTime()));
                                 Element start_address_french = document.getElementById("start_address_french");
@@ -3235,8 +3238,8 @@
             new Thread(new Runnable() {
                 @Override
                 public void run() {
-                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
-                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "");
+                    pushUtil.pushOrderState(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
+                    pushUtil.pushOrderState(2, orderPrivateCar.getDriverId(), orderPrivateCar.getId(), 1, orderPrivateCar.getState(), 0, "", "user");
                 }
             }).start();
 

--
Gitblit v1.7.1