From 8b09fbc19a96b57bf1d0e4d7c79b51a76aeca554 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 28 三月 2025 19:57:56 +0800
Subject: [PATCH] 修改bug

---
 DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 234 insertions(+), 6 deletions(-)

diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
index 12ac779..54f88d7 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.stylefeng.guns.core.util.MD5Util;
 import com.stylefeng.guns.core.util.ToolUtil;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
 import com.stylefeng.guns.modular.smallLogistics.model.OrderLogisticsSpread;
@@ -11,11 +12,10 @@
 import com.stylefeng.guns.modular.smallLogistics.server.impl.OrderLogisticsSpreadService;
 import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
 import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
+import com.stylefeng.guns.modular.system.model.Car;
 import com.stylefeng.guns.modular.system.model.OrderPosition;
 import com.stylefeng.guns.modular.system.model.Reassign;
-import com.stylefeng.guns.modular.system.service.IDriverService;
-import com.stylefeng.guns.modular.system.service.IOrderService;
-import com.stylefeng.guns.modular.system.service.IReassignService;
+import com.stylefeng.guns.modular.system.service.*;
 import com.stylefeng.guns.modular.system.util.*;
 import com.stylefeng.guns.modular.system.util.GoogleMap.FleetEngineUtil;
 import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackRequest;
@@ -40,9 +40,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 订单相关控制器
@@ -77,6 +75,15 @@
     
     @Resource
     private FleetEngineUtil fleetEngineUtil;
+    
+    @Autowired
+    private IOrderPositionService orderPositionService;
+    
+    @Autowired
+    private RedisUtil redisUtil;
+    
+    @Autowired
+    private ICarService carService;
 
 
 
@@ -394,6 +401,13 @@
             if(null == uid){
                 return ResultUtil.tokenErr();
             }
+            String format = String.format("uid=%s&orderId=%s&orderType=%s&state=%s", uid, orderId, orderType, state);
+            String key = MD5Util.encrypt(format);
+            String value = redisUtil.getValue(key);
+            if(ToolUtil.isNotEmpty(value) && (System.currentTimeMillis() - Long.valueOf(value)) <= 1000){
+                return ResultUtil.error(language == 1 ? "请勿重复操作" : language == 2 ? "Don't repeat the operation" : "Ne répétez pas l’opération");
+            }
+            redisUtil.setStrValue(key, System.currentTimeMillis() + "", 5);
             return orderService.process(orderId, orderType, state, uid, lon, lat, phone, pickUpCode, language);
         }catch (Exception e){
             e.printStackTrace();
@@ -900,4 +914,218 @@
             return ResultUtil.runErr();
         }
     }
+    
+    
+    @ResponseBody
+    @PostMapping("/base/taxi/getTripInfo")
+    public ResultUtil getTripInfo(String tripId){
+        return ResultUtil.success(fleetEngineUtil.getTrip(tripId));
+    }
+    
+    
+    
+    /**
+     * 更新google订单状态
+     * @param tripStatus
+     * @param tripId
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/base/taxi/editTripStatus")
+    public ResultUtil editTripStatus(String tripStatus, String tripId){
+        boolean b = fleetEngineUtil.updateTrip(tripStatus, null, null, tripId, null, null, null, null);
+        if(b){
+            return ResultUtil.success();
+        }
+        return ResultUtil.error("更新失败");
+    }
+    
+    
+    /**
+     * 上传订单经纬度
+     * @param orderPosition
+     * @return
+     */
+    @ResponseBody
+    @PostMapping("/api/order/saveOrderPosition")
+    public ResultUtil saveOrderPosition(OrderPosition orderPosition, HttpServletRequest request){
+        try {
+            Integer uid = driverService.getUserIdFormRedis(request);
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            if(null != orderPosition.getOrderId()){
+                orderPosition.setDriverId(uid);
+                orderPosition.setInsertTime(new Date());
+                orderPositionService.saveData(orderPosition);
+            }
+            redisUtil.setStrValue("DRIVER" + uid, orderPosition.getLon() + "," + orderPosition.getLat(), 300);//实时位置存入redis中
+            return ResultUtil.success();
+        }catch (Exception e){
+            e.printStackTrace();
+            return ResultUtil.runErr();
+        }
+    }
+    
+    
+    
+    @ResponseBody
+    @PostMapping("/base/taxi/editGoogleTripStatus")
+    public ResultUtil editGoogleTripStatus(){
+        List<OrderPrivateCar> privateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().isNotNull("tripId"));
+        for (OrderPrivateCar privateCar : privateCars) {
+            Integer state = privateCar.getState();
+            String tripId = privateCar.getTripId();
+            String trip = fleetEngineUtil.getTrip(tripId);
+            if(ToolUtil.isNotEmpty(trip)){
+                JSONObject jsonObject = JSON.parseObject(trip);
+                String tripStatus = jsonObject.getString("tripStatus");
+                Car car = carService.selectById(privateCar.getCarId());
+                if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                privateCar.setIsover(1);
+                                orderPrivateCarService.updateById(privateCar);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        privateCar.setIsover(1);
+                        orderPrivateCarService.updateById(privateCar);
+                    }
+                }
+                if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                privateCar.setIsover(1);
+                                orderPrivateCarService.updateById(privateCar);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        privateCar.setIsover(1);
+                        orderPrivateCarService.updateById(privateCar);
+                    }
+                }
+            }
+        }
+        List<OrderLogistics> orderLogisticsList = orderLogisticsService.selectList(new EntityWrapper<OrderLogistics>().isNotNull("tripId"));
+        for (OrderLogistics orderLogistics : orderLogisticsList) {
+            Integer state = orderLogistics.getState();
+            String tripId = orderLogistics.getTripId();
+            String trip = fleetEngineUtil.getTrip(tripId);
+            if(ToolUtil.isNotEmpty(trip)){
+                JSONObject jsonObject = JSON.parseObject(trip);
+                String tripStatus = jsonObject.getString("tripStatus");
+                Car car = carService.selectById(orderLogistics.getCarId());
+                if(Arrays.asList(10, 12).contains(state) && !"CANCELED".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("CANCELED", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                orderLogistics.setIsover(1);
+                                orderLogisticsService.updateById(orderLogistics);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        orderLogistics.setIsover(1);
+                        orderLogisticsService.updateById(orderLogistics);
+                    }
+                }
+                if(Arrays.asList(6, 7, 8, 9).contains(state) && !"COMPLETE".equals(tripStatus)){
+                    //修改行程信息
+                    boolean updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                    if(!updateTrip){
+                        for (int i = 0; i < 5; i++) {
+                            updateTrip = fleetEngineUtil.updateTrip("COMPLETE", (null != car ? car.getVehicleId() : null), null, tripId, null, null, null, null);
+                            if(updateTrip){
+                                orderLogistics.setIsover(1);
+                                orderLogisticsService.updateById(orderLogistics);
+                                break;
+                            }
+                            try {
+                                Thread.sleep(3000L);
+                            } catch (InterruptedException e) {
+                                throw new RuntimeException(e);
+                            }
+                        }
+                    }else{
+                        orderLogistics.setIsover(1);
+                        orderLogisticsService.updateById(orderLogistics);
+                    }
+                }
+            }
+        }
+        return ResultUtil.success();
+    }
+    
+    
+    @ResponseBody
+    @PostMapping("/base/taxi/getTrips")
+    public String getTrips(String vehicleId, Integer pageSize, String pageToken){
+        return fleetEngineUtil.getTrips(vehicleId, pageSize, pageToken);
+    }
+    
+    @ResponseBody
+    @GetMapping("/base/taxi/getTripsStatus")
+    public ResultUtil<List<Map<String, String>>> getTripsStatus(){
+        String pageToken = null;
+        List<Map<String, String>> list = new ArrayList<>();
+        while (true){
+            String trips = fleetEngineUtil.getTrips(null, 50, pageToken);
+            if(ToolUtil.isEmpty(trips)){
+                break;
+            }
+            JSONObject jsonObject = JSON.parseObject(trips);
+            JSONArray array = jsonObject.getJSONArray("trips");
+            if(null == array){
+                break;
+            }
+            for (int i = 0; i < array.size(); i++) {
+                JSONObject trip = array.getJSONObject(i);
+                String tripStatus = trip.getString("tripStatus");
+                String name = trip.getString("name");
+                Integer index = name.lastIndexOf("/") + 1;
+                String tripId = name.substring(index);
+    
+                Map<String, String> map = new HashMap<>();
+                map.put(tripId, tripStatus);
+                list.add(map);
+            }
+        
+            pageToken = jsonObject.getString("nextPageToken");
+            if(null == pageToken){
+                break;
+            }
+        }
+        return ResultUtil.success(list);
+    }
+    
+    
 }

--
Gitblit v1.7.1