From f88507a761ae5b8f47e52b81627ca485b500431a Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 21 三月 2025 18:49:18 +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