From 736ab0090700c75af37b8a3456b01609e4e2d329 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期三, 17 七月 2024 11:09:40 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0 --- UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java | 165 +++++++++++++++++++++++++++--------------------------- 1 files changed, 82 insertions(+), 83 deletions(-) diff --git a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java index cb511e9..4be7b9f 100644 --- a/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java +++ b/UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java @@ -43,7 +43,7 @@ @Autowired private RedisUtil redisUtil; - + @@ -54,7 +54,7 @@ * @param type 0=服务端,1=乘客,2=司机 * @return */ - public String fleetEngineAuth(int type, Integer id){ + public Map<String, Object> fleetEngineAuth(int type, Integer id){ try { //谷歌云服务器使用这部分代码 // AuthTokenMinter minter = AuthTokenMinter.builder() @@ -75,23 +75,53 @@ .build(); String jwt = ""; + Long expirationTimestamp = 0L; if(0 == type){ FleetEngineToken serverToken = minter.getServerToken(); jwt = serverToken.jwt(); + expirationTimestamp = serverToken.expirationTimestamp().getTime(); } if(1 == type){ FleetEngineToken consumerToken = minter.getConsumerToken(TripClaims.create("I-GO-USER" + id)); jwt = consumerToken.jwt(); + expirationTimestamp = consumerToken.expirationTimestamp().getTime(); } if(2 == type){ FleetEngineToken driverToken = minter.getDriverToken(VehicleClaims.create("I-GO-CAR" + id)); jwt = driverToken.jwt(); + expirationTimestamp = driverToken.expirationTimestamp().getTime(); } - return jwt; + Map<String, Object> map = new HashMap<>(); + map.put("token", jwt); + map.put("expirationTimestamp", expirationTimestamp); + return map; } catch (SigningTokenException e) { throw new RuntimeException(e); } } + + + + public String getToken(){ + String token_json = redisUtil.getValue("google_token"); + String google_token = ""; + if(!StringUtils.hasLength(token_json)){ + Map<String, Object> map = fleetEngineAuth(0, null); + redisUtil.setStrValue("google_token", JSON.toJSONString(map)); + google_token = map.get("token").toString(); + }else{ + JSONObject jsonObject1 = JSON.parseObject(token_json); + Long expirationTimestamp = jsonObject1.getLong("expirationTimestamp"); + google_token = jsonObject1.getString("token"); + if((expirationTimestamp - 10000L) <= System.currentTimeMillis()){ + Map<String, Object> map = fleetEngineAuth(0, null); + redisUtil.setStrValue("google_token", JSON.toJSONString(map)); + google_token = map.get("token").toString(); + } + } + return google_token; + } + @@ -102,16 +132,11 @@ * @param licensePlate 车牌号 * @param id 车辆id */ - public String createVehicles(int maximumCapacity, String licensePlate, Integer id) throws Exception{ - String google_token = redisUtil.getValue("google_token"); - if(!StringUtils.hasLength(google_token)){ - google_token = fleetEngineAuth(0, null); - redisUtil.setStrValue("google_token", google_token); - } - String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles?vehicleId=" + "I-GO-CAR" + id; + public String createVehicles(int maximumCapacity, String licensePlate, String id) throws Exception{ + String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles?vehicleId=" + id; HttpRequest post = HttpUtil.createPost(url); Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + google_token); + headers.put("Authorization", "Bearer " + getToken()); headers.put("Content-Type", "application/json"); post.addHeaders(headers); @@ -131,7 +156,7 @@ HttpRequest request = post.body(body.toJSONString()); HttpResponse response = request.execute(); logger.info("创建车辆结果:{}", response.body()); - JSONObject jsonObject = JSON.parseObject(response.body()); + JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type")); JSONObject error = jsonObject.getJSONObject("error"); if(null != error){ Integer code = error.getInteger("code"); @@ -142,7 +167,7 @@ return createVehicles(maximumCapacity, licensePlate, id); } } - throw new Exception(body.toJSONString()); + throw new Exception(response.body()); } /** * 返回结果 @@ -176,21 +201,16 @@ * @param id * @return */ - public String updateVehicles(String vehicleState, Integer maximumCapacity, String licensePlate, Integer id) throws Exception{ - String google_token = redisUtil.getValue("google_token"); - if(!StringUtils.hasLength(google_token)){ - google_token = fleetEngineAuth(0, null); - redisUtil.setStrValue("google_token", google_token); - } - String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles/" + "I-GO-CAR" + id + "?updateMask="; + public String updateVehicles(String vehicleState, Integer maximumCapacity, String licensePlate, String id) throws Exception{ + String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles/" + id + "?updateMask="; List<String> sb = new ArrayList<>(); - if(!StringUtils.hasLength(vehicleState)){ + if(StringUtils.hasLength(vehicleState)){ sb.add("vehicleState"); } if(null != maximumCapacity){ sb.add("maximumCapacity"); } - if(!StringUtils.hasLength(licensePlate)){ + if(StringUtils.hasLength(licensePlate)){ sb.add("licensePlate"); } String collect = sb.stream().collect(Collectors.joining(",")); @@ -198,7 +218,7 @@ HttpRequest put = HttpUtil.createRequest(Method.PUT, url); Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + google_token); + headers.put("Authorization", "Bearer " + getToken()); headers.put("Content-Type", "application/json"); put.addHeaders(headers); @@ -208,13 +228,13 @@ * OFFLINE 车辆不接受新行程。注意:在完成分配给车辆的行程时,车辆仍可继续在此状态下运行。 * ONLINE 车辆正在接受新行程。 */ - if(!StringUtils.hasLength(vehicleState)){ + if(StringUtils.hasLength(vehicleState)){ body.put("vehicleState", vehicleState); } if(null != maximumCapacity){ body.put("maximumCapacity", maximumCapacity); } - if(!StringUtils.hasLength(licensePlate)){ + if(StringUtils.hasLength(licensePlate)){ JSONObject licensePlate1 = new JSONObject(); licensePlate1.put("countryCode", "GH"); licensePlate1.put("lastCharacter", getLastNumber(licensePlate)); @@ -229,7 +249,7 @@ logger.info("修改车辆信息请求:{}", body.toJSONString()); HttpResponse response = put.execute(); logger.info("修改车辆信息结果:{}", response.body()); - JSONObject jsonObject = JSON.parseObject(response.body()); + JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type")); JSONObject error = jsonObject.getJSONObject("error"); if(null != error){ Integer code = error.getInteger("code"); @@ -240,7 +260,7 @@ return updateVehicles(vehicleState, maximumCapacity, licensePlate, id); } } - throw new Exception(body.toJSONString()); + throw new Exception(response.body()); } /** * 返回结果 @@ -272,22 +292,17 @@ * @param id 车辆id * @return */ - public String getVehicles(Integer id) throws Exception{ - String google_token = redisUtil.getValue("google_token"); - if(!StringUtils.hasLength(google_token)){ - google_token = fleetEngineAuth(0, null); - redisUtil.setStrValue("google_token", google_token); - } - String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles" + (null != id ? "/I-GO-CAR" + id : ""); + public String getVehicles(String id) throws Exception{ + String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles/" + (null != id ? id : ""); HttpRequest get = HttpUtil.createGet(url); Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + google_token); + headers.put("Authorization", "Bearer " + getToken()); headers.put("Content-Type", "application/json"); get.addHeaders(headers); HttpResponse response = get.execute(); logger.info("查询车辆结果:{}", response.body()); - JSONObject jsonObject = JSON.parseObject(response.body()); + JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type")); JSONObject error = jsonObject.getJSONObject("error"); if(null != error){ Integer code = error.getInteger("code"); @@ -374,29 +389,25 @@ * 创建新的行程 * @param vehicleId 车辆id * @param numberOfPassengers 人数 - * @param orderType 订单类型(1/4) - * @param orderId 订单id + * @param tripId 订单id * @param start_lat 起点纬度 * @param start_lng 起点经度 * @param end_lat 终点纬度 * @param end_lng 终点经度 * @return */ - public String createTrip(Integer vehicleId, Integer numberOfPassengers, Integer orderType, Integer orderId, String start_lat, String start_lng, String end_lat, String end_lng) throws Exception{ - String google_token = redisUtil.getValue("google_token"); - if(!StringUtils.hasLength(google_token)){ - google_token = fleetEngineAuth(0, null); - redisUtil.setStrValue("google_token", google_token); - } - String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips?tripId=" + "I-GO-" + (orderType == 1 ? "RIDE" : "DELIVERY") + orderId; + public String createTrip(String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) throws Exception{ + String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips?tripId=" + tripId; HttpRequest post = HttpUtil.createPost(url); Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + google_token); + headers.put("Authorization", "Bearer " + getToken()); headers.put("Content-Type", "application/json"); post.addHeaders(headers); JSONObject body = new JSONObject(); - body.put("vehicleId", "I-GO-CAR" + vehicleId); + if(StringUtils.hasLength(vehicleId)){ + body.put("vehicleId", vehicleId); + } body.put("tripStatus", "NEW"); body.put("tripType", "SHARED"); body.put("numberOfPassengers", numberOfPassengers); @@ -418,7 +429,7 @@ HttpRequest request = post.body(body.toJSONString()); HttpResponse response = request.execute(); logger.info("创建行程结果:{}", response.body()); - JSONObject jsonObject = JSON.parseObject(response.body()); + JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type")); JSONObject error = jsonObject.getJSONObject("error"); if(null != error){ Integer code = error.getInteger("code"); @@ -426,10 +437,10 @@ String reason = error.getJSONArray("details").getJSONObject(0).getString("reason"); if(reason.equals("ACCESS_TOKEN_EXPIRED")){ redisUtil.remove("google_token"); - return createTrip(vehicleId, numberOfPassengers, orderType, orderId, start_lat, start_lng, end_lat, end_lng); + return createTrip(vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng); } } - throw new Exception(body.toJSONString()); + throw new Exception(response.body()); } /** * 返回结果 @@ -555,36 +566,30 @@ * @param tripStatus 行程状态 * @param vehicleId 车辆id * @param numberOfPassengers 人数 - * @param orderType 订单类型(1/4) - * @param orderId 订单id + * @param tripId 订单id * @param start_lat 起点纬度 * @param start_lng 起点经度 * @param end_lat 终点纬度 * @param end_lng 终点经度 * @return */ - public String updateTrip(String tripStatus, Integer vehicleId, Integer numberOfPassengers, Integer orderType, Integer orderId, String start_lat, String start_lng, String end_lat, String end_lng) throws Exception { - String google_token = redisUtil.getValue("google_token"); - if(!StringUtils.hasLength(google_token)){ - google_token = fleetEngineAuth(0, null); - redisUtil.setStrValue("google_token", google_token); - } - String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/" + "I-GO-" + (orderType == 1 ? "RIDE" : "DELIVERY") + orderId + "?updateMask="; + public String updateTrip(String tripStatus, String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) throws Exception { + String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/" + tripId + "?updateMask="; List<String> sb = new ArrayList<>(); - if(null != vehicleId){ + if(StringUtils.hasLength(vehicleId)){ sb.add("vehicleId"); } - if(!StringUtils.hasLength(tripStatus)){ + if(StringUtils.hasLength(tripStatus)){ sb.add("tripStatus"); } if(null != numberOfPassengers){ sb.add("numberOfPassengers"); } - if(!StringUtils.hasLength(start_lat) && !StringUtils.hasLength(start_lng)){ + if(StringUtils.hasLength(start_lat) && StringUtils.hasLength(start_lng)){ sb.add("pickupPoint"); } - if(!StringUtils.hasLength(end_lat) && !StringUtils.hasLength(end_lng)){ + if(StringUtils.hasLength(end_lat) && StringUtils.hasLength(end_lng)){ sb.add("dropoffPoint"); } String collect = sb.stream().collect(Collectors.joining(",")); @@ -592,13 +597,13 @@ HttpRequest put = HttpUtil.createRequest(Method.PUT, url); Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + google_token); + headers.put("Authorization", "Bearer " + getToken()); headers.put("Content-Type", "application/json"); put.addHeaders(headers); JSONObject body = new JSONObject(); - if(null != vehicleId){ - body.put("vehicleId", "I-GO-CAR" + vehicleId); + if(StringUtils.hasLength(vehicleId)){ + body.put("vehicleId", vehicleId); } /** * UNKNOWN_TRIP_STATUS 默认,用于未指定或无法识别的行程状态。 @@ -611,13 +616,13 @@ * COMPLETE 乘客已下车,行程已完成。 * CANCELED 在司机、乘客或拼车服务提供商取车之前,行程被取消。 */ - if(!StringUtils.hasLength(tripStatus)){ + if(StringUtils.hasLength(tripStatus)){ body.put("tripStatus", tripStatus); } if(null != numberOfPassengers){ body.put("numberOfPassengers", numberOfPassengers); } - if(!StringUtils.hasLength(start_lat) && !StringUtils.hasLength(start_lng)){ + if(StringUtils.hasLength(start_lat) && StringUtils.hasLength(start_lng)){ JSONObject pickupPoint = new JSONObject(); JSONObject point = new JSONObject(); point.put("latitude", start_lat); @@ -626,7 +631,7 @@ body.put("pickupPoint", pickupPoint); } - if(!StringUtils.hasLength(end_lat) && !StringUtils.hasLength(end_lng)){ + if(StringUtils.hasLength(end_lat) && StringUtils.hasLength(end_lng)){ JSONObject dropoffPoint = new JSONObject(); JSONObject end_point = new JSONObject(); end_point.put("latitude", end_lat); @@ -638,7 +643,7 @@ HttpRequest request = put.body(body.toJSONString()); HttpResponse response = request.execute(); logger.info("修改行程结果:{}", response.body()); - JSONObject jsonObject = JSON.parseObject(response.body()); + JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type")); JSONObject error = jsonObject.getJSONObject("error"); if(null != error){ Integer code = error.getInteger("code"); @@ -646,7 +651,7 @@ String reason = error.getJSONArray("details").getJSONObject(0).getString("reason"); if(reason.equals("ACCESS_TOKEN_EXPIRED")){ redisUtil.remove("google_token"); - return updateTrip(tripStatus, vehicleId, numberOfPassengers, orderType, orderId, start_lat, start_lng, end_lat, end_lng); + return updateTrip(tripStatus, vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng); } } throw new Exception(response.body()); @@ -776,26 +781,20 @@ /** * 获取行程信息 - * @param orderType 订单类型(1/4) - * @param orderId 订单id + * @param tripId 订单id * @return */ - public String getTrip(Integer orderType, Integer orderId) throws Exception { - String google_token = redisUtil.getValue("google_token"); - if(!StringUtils.hasLength(google_token)){ - google_token = fleetEngineAuth(0, null); - redisUtil.setStrValue("google_token", google_token); - } - String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/I-GO-" + (orderType == 1 ? "RIDE" : "DELIVERY") + orderId; + public String getTrip(String tripId) throws Exception { + String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/" + tripId; HttpRequest get = HttpUtil.createGet(url); Map<String, String> headers = new HashMap<>(); - headers.put("Authorization", "Bearer " + google_token); + headers.put("Authorization", "Bearer " + getToken()); headers.put("Content-Type", "application/json"); get.addHeaders(headers); HttpResponse response = get.execute(); logger.info("查询行程结果:{}", response.body()); - JSONObject jsonObject = JSON.parseObject(response.body()); + JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type")); JSONObject error = jsonObject.getJSONObject("error"); if(null != error){ Integer code = error.getInteger("code"); @@ -806,7 +805,7 @@ String reason = error.getJSONArray("details").getJSONObject(0).getString("reason"); if(reason.equals("ACCESS_TOKEN_EXPIRED")){ redisUtil.remove("google_token"); - return getTrip(orderType, orderId); + return getTrip(tripId); } } throw new Exception(response.body()); -- Gitblit v1.7.1