From 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 16 五月 2025 10:27:41 +0800
Subject: [PATCH] 修改文档bug

---
 UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/controller/OrderLogisticsController.java |  132 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 114 insertions(+), 18 deletions(-)

diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/controller/OrderLogisticsController.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/controller/OrderLogisticsController.java
index 214e75f..a717a23 100644
--- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/controller/OrderLogisticsController.java
+++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/controller/OrderLogisticsController.java
@@ -1,16 +1,19 @@
 package com.stylefeng.guns.modular.smallLogistics.controller;
 
 
+import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
+import com.stylefeng.guns.modular.system.model.Driver;
 import com.stylefeng.guns.modular.system.model.Region;
 import com.stylefeng.guns.modular.system.model.UserRedPacketRecord;
+import com.stylefeng.guns.modular.system.service.IDriverService;
+import com.stylefeng.guns.modular.system.service.IDriverServiceService;
 import com.stylefeng.guns.modular.system.service.IUserInfoService;
+import com.stylefeng.guns.modular.system.util.*;
 import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo;
 import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil;
-import com.stylefeng.guns.modular.system.util.PushUtil;
-import com.stylefeng.guns.modular.system.util.ResultUtil;
 import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
 import com.stylefeng.guns.modular.system.warpper.OrderTimeInfo;
 import io.swagger.annotations.Api;
@@ -24,12 +27,12 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 小件物流控制器
@@ -45,6 +48,18 @@
     private IUserInfoService userInfoService;
     @Autowired
     private PushUtil pushUtil;
+    
+    @Autowired
+    private IDriverService driverService;
+    
+    @Autowired
+    private RedisUtil redisUtil;
+    
+    
+    
+    
+    
+    
 
 
     /**
@@ -106,9 +121,10 @@
             @ApiImplicitParam(value = "终点经纬度(103.23265,30.2312)", name = "endLonLat", required = true, paramType = "query", dataType = "string"),
             @ApiImplicitParam(value = "终点详细地址", name = "endAddress", required = true, paramType = "query", dataType = "string")
     })
-    public ResultUtil queryPayMoney(Integer number, Integer type, String startLonLat, String endLonLat, String endAddress, Integer language){
+    public ResultUtil queryPayMoney(Integer number, Integer type, String startLonLat, String endLonLat, String endAddress, Integer language, HttpServletRequest request){
         try {
-            return orderLogisticsService.queryPayMoney(number, type, startLonLat, endLonLat, endAddress, language);
+            Integer uid = userInfoService.getUserIdFormRedis(request);
+            return orderLogisticsService.queryPayMoney(uid, number, type, startLonLat, endLonLat, endAddress, language);
         }catch (Exception e){
             e.printStackTrace();
             return ResultUtil.runErr();
@@ -304,27 +320,61 @@
             @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResultUtil<OrderTimeInfo> queryTimeInfo(Integer orderId, Integer language){
+    public ResultUtil<OrderTimeInfo> queryTimeInfo(Integer orderId, Integer language, HttpServletRequest request){
         try {
+            Integer uid = userInfoService.getUserIdFormRedis(request);
+            if(null == uid) {
+                return ResultUtil.tokenErr();
+            }
             OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
             OrderTimeInfo orderTimeInfo = new OrderTimeInfo();
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             if(null != orderLogistics.getSnatchOrderTime()){
-                orderTimeInfo.setSnatchOrderTime(sdf.format(orderLogistics.getSnatchOrderTime()));
+                orderTimeInfo.setSnatchOrderTime(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getSnatchOrderTime())));
             }
             if(null != orderLogistics.getStartServiceTime()){
-                orderTimeInfo.setStartServiceTime(sdf.format(orderLogistics.getStartServiceTime()));
+                orderTimeInfo.setStartServiceTime(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getStartServiceTime())));
             }
-            long time = System.currentTimeMillis() - orderLogistics.getSnatchOrderTime().getTime() / 60000;
-            //TODO 待翻译
-            orderTimeInfo.setUsedTime(Double.valueOf(time / 60).intValue() + "小时" + time % 60 + "分钟");
+            //分钟
+            long time = (System.currentTimeMillis() - orderLogistics.getSnatchOrderTime().getTime()) / 60000;
+    
+            int h = Double.valueOf(time / 60).intValue();
+            long m = time % 60;
+            String usedTime = "";
+            if(0 == h){
+                usedTime = language == 1 ? m + "分钟" : language == 2 ? m + "-minute(s)" : m + "-minute";
+            }else{
+                usedTime = language == 1 ? h + "小时" + m + "分钟" : language == 2 ? h + "-hour" + m + "-minute(s)" : h + "-hour" + m + "-minute";
+            }
+            orderTimeInfo.setUsedTime(usedTime);
+            String tripId = redisUtil.getValue("trip" + uid);
             if(null != orderLogistics.getEndServiceTime()){
-                orderTimeInfo.setEndServiceTime(sdf.format(orderLogistics.getEndServiceTime()));
+                orderTimeInfo.setEndServiceTime(DateUtil.conversionFormat(language, sdf.format(orderLogistics.getEndServiceTime())));
+            }else{
+                DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), orderLogistics.getEndLat(), orderLogistics.getEndLon(), tripId);
+                Long duration = distancematrix.getDuration();
+                orderTimeInfo.setEndServiceTime(DateUtil.conversionFormat(language, sdf.format(new Date(System.currentTimeMillis() + duration * 1000))));
             }
-            DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), orderLogistics.getEndLat(), orderLogistics.getEndLon());
+            DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(orderLogistics.getStartLat(), orderLogistics.getStartLon(), orderLogistics.getEndLat(), orderLogistics.getEndLon(), tripId);
             Long distance = distancematrix.getDistance();
             orderTimeInfo.setAllMileage(Double.valueOf(distance / 1000));
             orderTimeInfo.setMileage(orderLogistics.getMileage() / 1000);
+            String value = redisUtil.getValue("DRIVER" + orderLogistics.getDriverId());
+            if(ToolUtil.isNotEmpty(value)){
+                String[] split = value.split(",");
+                distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), orderLogistics.getEndLat(), orderLogistics.getEndLon(), tripId);
+                //分钟
+                Long duration = distancematrix.getDuration() / 60;
+                h = Double.valueOf(duration / 60).intValue();
+                m = duration % 60;
+                String remainingTime = "";
+                if(0 == h){
+                    remainingTime = language == 1 ? m + "分钟" : language == 2 ? m + "-minute(s)" : m + "-minute";
+                }else{
+                    remainingTime = language == 1 ? h + "小时" + m + "分钟" : language == 2 ? h + "-hour" + m + "-minute(s)" : h + "-hour" + m + "-minute";
+                }
+                orderTimeInfo.setRemainingTime(remainingTime);
+            }
             return ResultUtil.success(orderTimeInfo);
         }catch (Exception e){
             e.printStackTrace();
@@ -345,11 +395,57 @@
     })
     public ResultUtil confirmDifferencePrice(Integer orderId, Double difference, Integer status){
         OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
-        if(1 == status){
+        if(2 == status){
             orderLogistics.setPriceDifference(difference);
             orderLogisticsService.updateById(orderLogistics);
         }
-        pushUtil.pushPayDifference(2, orderLogistics.getDriverId(), orderId, 4, difference, status);
+        String audioUrl = "";
+        if(3 == status){
+            Driver driver = driverService.selectById(orderLogistics.getDriverId());
+            Integer language = driver.getLanguage();
+            String text = "";
+            switch (language){
+                case 1:
+                    text = "您的包裹订单申请补差价 GHS " + difference + " 已被用户拒绝,请重新与用户协商";
+                    break;
+                case 2:
+                    text = "Your delivery order,Request difference GHS " + difference + " was rejected, please renegotiate with the subscriber";
+                    break;
+                case 3:
+                    text = "Votre commande de livraison,Demande de différence GHS " + difference + " a été rejeté, veuillez renégocier avec l’abonné";
+                    break;
+                    
+            }
+            String fileName = "difference" + driver.getId() + ".mp3";
+            try {
+                audioUrl = TextToSpeechUtil.create(language == 1 ? "cmn-CN" : language == 2 ? "en-US" : "fr-FR", text, fileName);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+            //定时任务删除语音文件
+            new Timer().schedule(new TimerTask() {
+                @Override
+                public void run() {
+                    try {
+                        // 使用Runtime执行命令
+                        Process process = Runtime.getRuntime().exec("sudo rm -rf /home/igotechgh/nginx/html/files/audio/" + fileName);
+                        // 读取命令的输出
+                        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+                        String line;
+                        while ((line = reader.readLine()) != null) {
+                            System.out.println(line);
+                        }
+                        // 等待命令执行完成
+                        process.waitFor();
+                        // 关闭流
+                        reader.close();
+                    } catch (IOException | InterruptedException e) {
+                        e.printStackTrace();
+                    }
+                }
+            }, 30000);
+        }
+        pushUtil.pushPayDifference(2, orderLogistics.getDriverId(), orderId, 4, difference, status, audioUrl);
         return ResultUtil.success();
     }
     

--
Gitblit v1.7.1