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 |  288 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 279 insertions(+), 9 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 1c5428f..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,17 +4,20 @@
 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;
 import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
 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;
 import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackResponse;
 import com.stylefeng.guns.modular.system.util.Tingg.model.Payments;
@@ -29,6 +32,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
@@ -36,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.*;
 
 /**
  * 订单相关控制器
@@ -70,6 +72,18 @@
 
     @Value("${filePath}")
     private String filePath;
+    
+    @Resource
+    private FleetEngineUtil fleetEngineUtil;
+    
+    @Autowired
+    private IOrderPositionService orderPositionService;
+    
+    @Autowired
+    private RedisUtil redisUtil;
+    
+    @Autowired
+    private ICarService carService;
 
 
 
@@ -387,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();
@@ -442,15 +463,19 @@
     @ApiImplicitParams({
             @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
             @ApiImplicitParam(value = "订单类型(1=专车,2=出租车,3=城际,4=同城小件物流)", name = "orderType", required = true, dataType = "int"),
-//            @ApiImplicitParam(value = "支付方式(1=OK平台收款,2=其他方式收款)", name = "type", required = true, dataType = "int"),
             @ApiImplicitParam(value = "行程费用(出租车必传)", name = "travelFee", required = false, dataType = "double"),
             @ApiImplicitParam(value = "停车费", name = "parkingFee", required = false, dataType = "double"),
             @ApiImplicitParam(value = "过路费", name = "crossingFee", required = false, dataType = "double"),
             @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type, Double travelFee, Double parkingFee, Double crossingFee){
+    public ResultUtil confirmFees(Integer language, Integer orderId, Integer orderType, Integer type,
+                                  Double travelFee, Double parkingFee, Double crossingFee, HttpServletRequest request){
         try{
-            return orderService.confirmFees(language, orderId, orderType, type, travelFee, parkingFee, crossingFee);
+            Integer uid = driverService.getUserIdFormRedis(request);
+            if(null == uid){
+                return ResultUtil.tokenErr();
+            }
+            return orderService.confirmFees(language, orderId, orderType, type, travelFee, parkingFee, crossingFee, uid);
         }catch (Exception e){
             e.printStackTrace();
             return ResultUtil.runErr();
@@ -858,4 +883,249 @@
         }
         return ResultUtil.success();
     }
+    
+    
+    
+    @ResponseBody
+    @PostMapping("/api/taxi/getTripInfo")
+    @ApiOperation(value = "获取google行程详情【2.0】", tags = {"用户端-专车", "用户端-小件物流"}, notes = "")
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "int"),
+            @ApiImplicitParam(value = "订单类型", name = "orderType", required = true, dataType = "int"),
+            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+    })
+    public ResultUtil<String> getTripInfo(Integer orderId, Integer orderType){
+        try {
+            String tripId = null;
+            switch (orderType){
+                case 1:
+                    OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
+                    tripId = orderPrivateCar.getTripId();
+                    break;
+                case 4:
+                    OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
+                    tripId = orderLogistics.getTripId();
+                    break;
+            }
+            String trip = fleetEngineUtil.getTrip(tripId);
+            return ResultUtil.success(trip);
+        }catch (Exception e){
+            e.printStackTrace();
+            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