From bfa0b11dfbfe5b71e11f4544e688e4d9f325d1b5 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 09 六月 2025 10:26:51 +0800
Subject: [PATCH] 修改bug和管理后台报表
---
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 155 insertions(+), 4 deletions(-)
diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
index f75f318..fb171c0 100644
--- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
+++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -11,6 +11,8 @@
import com.google.fleetengine.auth.token.TripClaims;
import com.google.fleetengine.auth.token.VehicleClaims;
import com.google.fleetengine.auth.token.factory.signer.*;
+import com.stylefeng.guns.modular.system.model.OrderTracks;
+import com.stylefeng.guns.modular.system.service.IOrderTracksService;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.util.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
@@ -78,6 +80,9 @@
@Autowired
private RedisUtil redisUtil;
+
+ @Autowired
+ private IOrderTracksService orderTracksService;
@@ -631,7 +636,7 @@
* @param end_lng 终点经度
* @return
*/
- public boolean updateTrip(String tripStatus, String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) {
+ public boolean updateTrip(String tripStatus, String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng, Integer orderId, Integer orderType) {
String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/" + tripId + "?updateMask=";
List<String> sb = new ArrayList<>();
if(StringUtils.hasLength(vehicleId)){
@@ -709,16 +714,27 @@
String status = error.getString("status");
if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
redisUtil.remove("google_token");
- return updateTrip(tripStatus, vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng);
+ return updateTrip(tripStatus, vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng, orderId, orderType);
}
String reason = error.getJSONArray("details").getJSONObject(0).getString("reason");
if(reason.equals("ACCESS_TOKEN_EXPIRED")){
redisUtil.remove("google_token");
- return updateTrip(tripStatus, vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng);
+ return updateTrip(tripStatus, vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng, orderId, orderType);
}
+ }
+ if(code == 404){
+ return true;
}
logger.error("修改行程异常: tripId={} body={}", tripId, response.body());
return false;
+ }else{
+ if("ENROUTE_TO_DROPOFF".equals(tripStatus)){
+ OrderTracks orderTracks = new OrderTracks();
+ orderTracks.setOrderId(orderId);
+ orderTracks.setOrderType(orderType);
+ orderTracks.setGoogleTracks(jsonObject.getString("route"));
+ orderTracksService.insert(orderTracks);
+ }
}
/**
* 返回结果
@@ -856,6 +872,7 @@
headers.put("Content-Type", "application/json");
get.addHeaders(headers);
+ logger.info("查询行程请求:{} {}", tripId, url);
HttpResponse response = get.execute();
logger.info("查询行程结果:{}", response.body());
JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
@@ -964,6 +981,141 @@
/**
+ * 批量获取行程
+ * @param vehicleId
+ * @param pageSize
+ * @param pageToken
+ * @return
+ */
+ public String getTrips(String vehicleId, Integer pageSize, String pageToken) {
+ String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips:search";
+ HttpRequest post = HttpUtil.createPost(url);
+ Map<String, String> headers = new HashMap<>();
+ headers.put("Authorization", "Bearer " + getToken());
+ headers.put("Content-Type", "application/json");
+ post.addHeaders(headers);
+ JSONObject body = new JSONObject();
+ if(StringUtils.hasLength(vehicleId)){
+ body.put("vehicleId", vehicleId);
+ }
+ body.put("activeTripsOnly", false);
+ if(null != pageSize){
+ body.put("pageSize", pageSize);
+ }
+ if(null != pageToken){
+ body.put("pageToken", pageToken);
+ }
+ logger.info("查询行程请求:{}", body);
+ post.body(body.toJSONString());
+ HttpResponse response = post.execute();
+ logger.info("查询行程结果:{}", response.body());
+ JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
+ JSONObject error = jsonObject.getJSONObject("error");
+ if(null != error){
+ Integer code = error.getInteger("code");
+ if(code == 404){
+ return null;
+ }
+ if(code == 401){
+ String status = error.getString("status");
+ if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
+ redisUtil.remove("google_token");
+ return getTrips(vehicleId, pageSize, pageToken);
+ }
+ String reason = error.getJSONArray("details").getJSONObject(0).getString("reason");
+ if(reason.equals("ACCESS_TOKEN_EXPIRED")){
+ redisUtil.remove("google_token");
+ return getTrips(vehicleId, pageSize, pageToken);
+ }
+ }
+ logger.error("获取行程异常:body={}", response.body());
+ return null;
+ }
+ /**
+ * 返回结果
+ * {
+ * "name": "providers/i-go-odrd-testing/trips/I-GO-RIDE1",
+ * "vehicleId": "I-GO-CAR1",
+ * "tripStatus": "ENROUTE_TO_PICKUP",
+ * "tripType": "SHARED",
+ * "pickupPoint": {
+ * "point": {
+ * "latitude": 30.604131,
+ * "longitude": 104.151957
+ * }* },
+ * "pickupTime": "2024-05-27T02:10:39.763347Z",
+ * "dropoffPoint": {
+ * "point": {
+ * "latitude": 30.636319,
+ * "longitude": 104.129219
+ * }
+ * },
+ * "dropoffTime": "2024-05-27T02:23:37.762549Z",
+ * "numberOfPassengers": 1,
+ * "remainingDistanceMeters": 0,
+ * "etaToFirstWaypoint": "2024-05-27T02:10:39.763347Z",
+ * "remainingWaypoints": [
+ * {
+ * "location": {
+ * "point": {
+ * "latitude": 30.604131,
+ * "longitude": 104.151957
+ * }
+ * },
+ * "tripId": "I-GO-RIDE1",
+ * "waypointType": "PICKUP_WAYPOINT_TYPE",
+ * "distanceMeters": 0,
+ * "eta": "2024-05-27T02:10:39.763347Z",
+ * "duration": "0s"
+ * },
+ * {
+ * "location": {
+ * "point": {
+ * "latitude": 30.636319,
+ * "longitude": 104.129219
+ * }
+ * },
+ * "tripId": "I-GO-RIDE1",
+ * "waypointType": "DROP_OFF_WAYPOINT_TYPE",
+ * "encodedPathToWaypoint": "AhqdAq8NM2ZcYrZmDgDo4Z0B7887ka5C0v0Y8aUejs8f7gL98gGstAWPpQLU5gvsfcf3JPiXJ8vEDosr0coVsuEEwtYElQ2h6QGXHron0ALV4gTRlQHdiqEC5rWzAq6zBVPRrAX0rQS9mAGazgTx5ASmZ7EknJ4B2ALyGPAC8QO9DKY58RGtGoYGtASJEYAGxkzyFulZ0BbAEpOQAuQR2FfPlgKolAveP7u0CdC_JIy7Aojb6QHL2_EElKUCpgGgsiTbqQHHlgKPqAjHR8SIgQHnhinsjwqhFfZGk-cKlLUIy8cC498CxF28pwLcrginpiGQm5sB36aFAcuTJPCWCdiUCeh1w94JR7PiAsCKC-cTo-MLrLAm3JQJp7ML07sh4KEC0xLMhZAB65U6oO4m_7gh6IkLz-oh2-MCwLAC5OwC-wGbsQuouwiD9gKQsQLPQ_BN0-ICxwWo2QS3zwG_DewHyiTaBbcdzwimVL0jnYMC-5IC8VH3BcBDr2mVFLMKqQX0kQG54QH-Pqm3AdIHirsB8YEBooEBvSDF7QWK4wWhkUbymkPLCNEG_gi1nwTqnATlvgSupwEo5pwExgONJhj9CKEspblC2sVHwaYX8qYXheQF3rsBkrIBgcYRqoMBlpQBx4IB6owBhiq3jgGYpwGfuQHwuQWfKfUBmw70I5-5BeiREFPAC-cI8AgACFvHAgGIAq-HBcyYBefJFMjkFK-fFMyyBbOhAYCREIe_EbeFAcSSAY-wAegI_LwQ6I4BjW3r-hL8gRb_5gXkuAH7AcwMq8IE1C2ckgGHJ_wv--oEkLkBjC3ng17sxooCw5gBwAvz5hCM9BHzsxHomAHcqwW1jQX6gQWpvwGOuwGl-wWSgBPVxATZAa31BP7KEqnFE8LBBL0aiqsOnHBf-pIF6Q6ABNIHxTzezhLl3gSMDcXUBQzCiQG5pAHKiQTdsgGStAGQigGhkgXAuwWXhBD4lhSXlxScMtjEBfubAb-fBOAOgOsEiLETAA==",
+ * "distanceMeters": 8260,
+ * "eta": "2024-05-27T02:23:37.762549Z",
+ * "duration": "777.999202s",
+ * "trafficToWaypoint": {
+ * "speedReadingInterval": [
+ * {
+ * "endPolylinePointIndex": 284,
+ * "speed": "NORMAL"
+ * }
+ * ],
+ * "encodedPathToWaypoint": "AhqdAq8NM2ZcYrZmDgDo4Z0B7887ka5C0v0Y8aUejs8f7gL98gGstAWPpQLU5gvsfcf3JPiXJ8vEDosr0coVsuEEwtYElQ2h6QGXHron0ALV4gTRlQHdiqEC5rWzAq6zBVPRrAX0rQS9mAGazgTx5ASmZ7EknJ4B2ALyGPAC8QO9DKY58RGtGoYGtASJEYAGxkzyFulZ0BbAEpOQAuQR2FfPlgKolAveP7u0CdC_JIy7Aojb6QHL2_EElKUCpgGgsiTbqQHHlgKPqAjHR8SIgQHnhinsjwqhFfZGk-cKlLUIy8cC498CxF28pwLcrginpiGQm5sB36aFAcuTJPCWCdiUCeh1w94JR7PiAsCKC-cTo-MLrLAm3JQJp7ML07sh4KEC0xLMhZAB65U6oO4m_7gh6IkLz-oh2-MCwLAC5OwC-wGbsQuouwiD9gKQsQLPQ_BN0-ICxwWo2QS3zwG_DewHyiTaBbcdzwimVL0jnYMC-5IC8VH3BcBDr2mVFLMKqQX0kQG54QH-Pqm3AdIHirsB8YEBooEBvSDF7QWK4wWhkUbymkPLCNEG_gi1nwTqnATlvgSupwEo5pwExgONJhj9CKEspblC2sVHwaYX8qYXheQF3rsBkrIBgcYRqoMBlpQBx4IB6owBhiq3jgGYpwGfuQHwuQWfKfUBmw70I5-5BeiREFPAC-cI8AgACFvHAgGIAq-HBcyYBefJFMjkFK-fFMyyBbOhAYCREIe_EbeFAcSSAY-wAegI_LwQ6I4BjW3r-hL8gRb_5gXkuAH7AcwMq8IE1C2ckgGHJ_wv--oEkLkBjC3ng17sxooCw5gBwAvz5hCM9BHzsxHomAHcqwW1jQX6gQWpvwGOuwGl-wWSgBPVxATZAa31BP7KEqnFE8LBBL0aiqsOnHBf-pIF6Q6ABNIHxTzezhLl3gSMDcXUBQzCiQG5pAHKiQTdsgGStAGQigGhkgXAuwWXhBD4lhSXlxScMtjEBfubAb-fBOAOgOsEiLETAA=="
+ * }
+ * }
+ * ],
+ * "currentRouteSegmentVersion": "2024-05-27T02:10:39.773373Z",
+ * "remainingWaypointsVersion": "2024-05-27T02:05:37.941167Z",
+ * "currentRouteSegmentEndPoint": {
+ * "location": {
+ * "point": {
+ * "latitude": 30.604131,
+ * "longitude": 104.151957
+ * }
+ * },
+ * "tripId": "I-GO-RIDE1",
+ * "waypointType": "PICKUP_WAYPOINT_TYPE"
+ * },
+ * "remainingWaypointsRouteVersion": "2024-05-27T02:10:39.773373Z",
+ * "currentRouteSegmentTrafficVersion": "2024-05-27T02:10:39.773373Z",
+ * "view": "SDK"
+ * }
+ */
+
+ return response.body();
+ }
+
+
+
+ /**
* 上报google可结算订单
* @param tripId 行程id
* @return
@@ -989,5 +1141,4 @@
// }
return true;
}
-
}
--
Gitblit v1.7.1