From 870b29e6f0380529b37f8f3c62a0c2e0cc8058a0 Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期四, 01 八月 2024 17:10:23 +0800
Subject: [PATCH] 修改邮件内容
---
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java | 227 +++++++++++++++++++++++++++++++++-----------------------
1 files changed, 134 insertions(+), 93 deletions(-)
diff --git a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
index 75d54bf..d36bbd7 100644
--- a/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
+++ b/ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -33,11 +33,23 @@
static Logger logger = LoggerFactory.getLogger(FleetEngineUtil.class);
- private final String SERVICE_ACCOUNT = "odrd2024@i-go-odrd-testing.iam.gserviceaccount.com";
+ private final String SERVICE_ACCOUNT = "odrd-fleetengine-ondemandadmin@i-go-odrd-testing.iam.gserviceaccount.com";
- private final String privateKeyId = "0a9a480fafb6469c0c1b2fa6dbdf6d4bebe1ebed";
+ private final String DRIVER_ACCOUNT = "odrd-fleetengine-driversdkuser@i-go-odrd-testing.iam.gserviceaccount.com";
- private final String privateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDXZoPEFZeZb0C7DXzpPsloB+rQVQAJuR+z4T9uRCz33gBsIqrz1s5Iwd8vXYKKWzukMdXkwqR4WapI/4GtcpbJkRK93mKXvEE3sDz27BnRrZL4gHeECVpFy0egw29sqFM/x/cpst0goqq4/f3ZFGtQGIhSEEHMySQgTbZDIhXMIls1etRsM4K2bTXeMPn89ablPBdbKtTAJy1EI+ZLKbxnl9StyqBam+d+UsfVmNG19MsNbSzCKc+QPnPXb7dj9KxJ/2whog8w15qXQdJHAMeHZyNlqE0zVP7G1VdWo6Q4QtzmENANxBpJIEbAqY2sq3BZSqDd5XS9Dr9BR4XzQqQnAgMBAAECggEABFABAj4eph1vxVYRBH2TpvDGFU3uW7VBPjwp7JzntLAN8eNoPlqmEDP16y6D/HMmfftpAI3TvWA3+ZEPkiX6nVDyW6sGCodyP0QuJEob1HKHFYntzGtHhGg1KCOacLey6TYbJJmUtcsduQXGkocOPaLXNvjzr2mY2zthTDzJ6HzjDo3d2x/O+lUVlNjubTFydgU9bQP8zS389GgZkO/YebK9+qPRBXv1R2fmj0rhpLqC03jL/mUMKi5tW628OiJGdvzLXlAGyJ9CtVDjfrwUgLf8ML+3yfdmv7yFeWuJ2NEgQxKACixHM05qkCW2bOkPIi9+wb1BbVvMdYL+GCPvmQKBgQD/DZ8zpWfNAkl8h8NI0E7sPdN6wgGfPpaC8VpOE3EM2eEijkZZT6XjfxXjMv1vXg1UoeYVscPb99Ux6u2gq+ZJj6+IstNIObXgvrqNxKPw6OO2xCb6UmA4rQ74xe4d1KLN+C1zepgFYgU4ejungWzuPVL7x8xjdyBAvqgPqP1IbQKBgQDYMzXs2QcWr9tVwq1O3D/H6qX2DvelAj7j0vuXGtop1/aJW7bPlGJd9NGim8dnXLVSFyRteuVl4epa/C9h50g3FM/lFMl9lmp1HwpDeiSJYAGRH8cnPJjN/IV3cRl5qN8KUQE2a3BRP+6IPHJiF1Bc1vj08nTMsWmN+K6VcAzqYwKBgGGJ7RNMM0kkkcPtC5LCDxyrfD/bB9HFlrvW3ykyqC44+K9FZ8PqAM/inxU3P9KiTkjKbXpodDWgLskbResHMld5erC1arWZVGPxrNhgli2gcs1HcHyUmjWygSJEV47S7bwFKCScgpy0Yri5jiy+A1GM5Dpjq1dyjEQWZaEviEV1AoGBALoKn023l/T60QgkZNQmjS/wCG4LhSjWHN4ZMOxfa/pz369lX5OSwW7OfBKscFPOoC0Kwwr+pSYd2HgA6Jkb17WmUBt13skWRXeRhVh5Y7VfCxohuVNXPrqKoSMeDOj22y9ac2ur2lPgateLBHbKTxoE1uiZNs7pn8ZOh5UKfeK3AoGBAKjklIbZ05nvM/mzdPk9JfCFJ6SaQqeaQcU9AoLEQdOzIrrI660Ignn4hOzLSYac0GxytYTQzDt5xDHKBYqJfem7IqxkIj9hSnIZFnUxp6+VfBhXdWHGn+GDTQa1iDvfpy/h6Gr4NL+p/EoA17qtUqOlYxJ1Dkbaw3SqUtkbuv2G";
+ private final String CONSUMER_ACCOUNT = "odrd-fleetengine-consumersdkus@i-go-odrd-testing.iam.gserviceaccount.com";
+
+ private final String serverPrivateKeyId = "254e18eefa9fdcca64d5899cdcd793d466c47c7d";
+
+ private final String serverPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCfbNAWnukqLKIxItqmSABxsH5glySEHJ2gfL5KsRF0M02e0Z8/KNKZkoh7I6bOMt1fEtttFaWOeq70IdI2WAd5wVazL3upvl5FW4P08ly33LklfGyLljlJ7ChPny9x6OjAaiS0yD9fh7NWti7rZKU7gzcGL8HddNYXgXV5OajvoG3TGdu52WTxce9AUzU6gLPboz/RbGqrdrmgVJVb0EPlhTJf/NSsaiW4NoL8SEzf/pJGYBmqJs97mXwCHTY4avaC+CP/zz9yS8AQEJlApbVT6lSOhYoR0hNOBj5B886EZOssjubO6hQaiwRnGrV2RdpHynqA1iekfGpUGEtWTsqjAgMBAAECggEALyPbMd0iP8y71sCiG4nty7Au5ju62e+mMkbAc9CAwzXKTVxZdLEK+MsJ3TNxBsami47FYC+G6SbgpaJ8iIImD7v5+XjgXZRDRsnlLmAdx2YWPv3YELxGS1PvpX+B5XJDpGWeXfBaQNKc1lZ/cC4t53eIpSUo82UxSvkGNea1S8lR6vIByhNyCQOvLG4yqaxUy0hZi0kge37XrjYMGS+BivBBnDiVlBPLBVbrNBxOf31Lzz+XX0iwXX7Zl2jN759oe0xQyuIGWUSj8xBDIF8nNaJrla7rWVml3sZJh6/3r1Acj0mhZtE0ZMu5hiPGiIXgb1ng30j3dMP4yVPhXrpAtQKBgQDaU01VnHsnHxc0DQHE2vEOPGmPxVS0/JAssePAEUmKEueUogGef91YY+Vm/ItbhLwGjbytnXxe88zRAdB1u07efZ83ey93TrGl2CJUzLHIcgb+Q1tT642rqlfl+q8ep86hcZ+63pDiIPt2Z+HkbKIR0SWf5LIH4flquQOTQufXXQKBgQC674qDsjOJepZjMMN6PkVMcWBYDNmXHnqa5Oto0rZM745UulbXqEFGuBOsXPU7O33Kfz1vbtoluubKZi5B6cFNnPypE2SCfvdObHq4FuTuKPV6lN93SyhZchmSEXEs0PU4cGDRt+RRqQcjft1Wigiy4Y1y1SInCtcaP1hLejEJ/wKBgFAhvwKrGnBzctrB42JTUaJ9/eis7rg28tvUttjp/2nUIndlNt7r41vr3mj8TFHc1/43y4aVhO584THdTpvHkd0LkoKUjglmMsHCIGercZ02bOap5j1Y+XiGXxij995yjN6oi43U3qyAmosM+dYTITEU6JBVKhrGj/rhyTQlnF5pAoGBAKFGmo0mR/pbDbYD0xH6+VSLGCC+7VbIT+SkjUjBSdA0eOo2XUfvfGmj1C1HgbcZi1wRzJH/5CrbBdQmtc/d+QyZ3Q2NkpBXM8uwIWwDLH0gTzDzkZvc9rG8k70GWUrd+EI6Cf3FFjExj9wazqCjs/+IQr2Ijc97NbsKXYW4pOhHAoGAKf5wYk+cn0cVTsyAom0UbGD5Uijqh5732MeqFYs2Rcwx0OErJZo68COSFFF40hJmmIKn7p3qycIyd1FcYlXN1l4s8mEWTGTInRE0OlBU0+jLtIV9pwNgffpbPYcrWZU6s6YVeJ2nDwl+aD+4QvN0rkPTfho9kjgeyF3PW0I2u4E=";
+
+ private final String driverPrivateKeyId = "859e85fb3aa4d18b4afaac3e24e8f65700da5cc9";
+
+ private final String driverPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmzL1BqSH+Zh9Fct5mXqe5sYOMTnJtOJhwKXnjjo2tNPXv4alzUHz8Vbj6nMar5u5IuKRZMeRBlhoRSFrLm+J1+sfvpH8N4wsnG7hDANknqWzdsk9a68qMHxNQF3hFzs9+KKrR1LAG8e9ytMfliN0kX+xls4uPZDPu1Q39K6V9KXrH/GrMA56i3TtWi7Hmakt5YTELeGjhx4nGrfuQLFFovs1Z9uJtf7E8R95+65StrOAmbJNf7VciEqwBpWYlU5VeyLXMg/oHwnTv2cjdcFozyDrlUHbDmtTiVeBBsYFVLyAsDGfl1p6eiVTiBBuo56YSYLWfaLgYvTyEcZ9jBQsfAgMBAAECggEAQzbTuObX3PT3+vtb5XKVMf33XY2rDJo2y1PbWzhxnO9vf3e22dIAW4qLnOmaIWFQeht1lr/FFCzRWk+Gzu+FJTemY8osrMLmFp9T9CQeXZ4nUXruAVxs5WQMW0Tp4W+CK3tlwmJrgJDzhYyV1Mf/HQ5Oa3kbbu/ZAY/3MCLrb/ClJQvD2rZSDdzAkNMQm8P2hsE71+rH7mI2hHrSCHl2OIp2A64QT8HjtyRc5yHZtTp6ZST1ge9SSIsT0ZfmXKtKF7yGEIPtKNU+oLrGyK5P30xBWJ/bwb3PEz2MZcPvz31+B2+UvZMm7OTkqfcRwEztAf8Ckiuo4im2BRYbVmd9OQKBgQDd0MeLxR+Qtv12bVA0bHtagFEq36THgWG7IM1/1vS4Cl9sveKSOS8A6oKLy624fGE7PKcuTTIzkVA81GXtWBQ9Coq/4TmllQkFTH7pz9C2PNHSCychPwNNV8qUx3lE3d4DOjGKgoVFD4l90AO7lOvmLTSc3pDpr+jSjUH4lqGrbQKBgQDAgXBmpXfCTxwqkBzGwxX+hwJen9qSkCM47qnQ1L4NnXPL6s0EN6rQ3FnFemGIzBUGJ2tajntkKlUu5DzsQeoBGu/SaSwgqD+1UQDcUyo+retmqZ+QYbpeyd3l53bLJJuJNsfak0X76Ft6hrm4julx6RGlmboQyx4kZWbhx4YNOwKBgEG9/2aNpi1eDwFqpLrk7CqGnYf3gP8gebbcoguhyiZB7MZuARkVmbjLyKVmWLa1JpxH/cTbXGWsS/u7d/pAgL8WwMjeGBfbdDD92x+xWEqq/AUlCRPxeSkTPBech3TBzWtndAd5Z8ZwNG/1lyWhnck63L0huhGI8Zh2BXeILaKBAoGAKK3xq69BvGztPc1QV2w4RJ4RER/kl14gI1LDzd52/veL1cabZk3BKfu2eLWg0MCXnMJNvEgpqQQNFiii+yX+phckIKma6pfDRrSEYwqr/azQ9tPXZTJRqOAtpPyhrNHikD9kQjsm6dGzKxQ3QNnqWOjwkrcGi6/wga5v7Dw2hqsCgYEA2T/kSNQ9dqpVBAkfi2J50hqnfFESPjKeirJJZllqhVqsiV0ly8a8Fz8SjGqTzrq+UErko+QmtSlo5h3Uq9Ln+0CwYfrUL+74q2zLHdS0DpY3QsGTEDJXTxCyy9kO26X2UsM3Ez3YUAkdMwdpVz0uVZtinv2735QZOBxoVQV2kQ8=";
+
+ private final String consumerPrivateKeyId = "40acf82cbd5250de2f5123caff40738bdd403b08";
+
+ private final String consumerPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDSwtbSBFgIXna6mWeKFWCK31NXUJH6uGduR1XrODGRedrqrTgr0BdNg8PDo6/zh/T+K0Svor6kgqpwnl9soOdn73oC4Nu+Ad7EiKa38j650jlZdLAr4hR0Ou9Kcnv45x/94auUO8jBz844cu24swLKiPsK9OnX65wVlKRfhhkGFuS/4OI76CmE7NqZDqPOW16o8tBO5TsgPVNkglFAU73fTp0kcHoLauT9QOB0+yZi39mnNXyU+2cL3Ylp5oaQCJpyssDRUqz/EiHa7FxUUgzCadG00+ePf5iYSnZKQRKWoOIawFvcCfcHx8GAl8Nn+79HtVQHB9hLsQ5+jqcdfKPfAgMBAAECggEAE9Ufz912xzrUY1TCKH1Ae3Dub732Lqihmv/9dsfv6ieUURcBvSW0u6eViVhi20DE7hH2QazH0cU18qkEg71UaTRgv9qW8vdMFiRhw9d4zZWZrfBMD6UTlahiEhhZ0B83pHVS5v0FNC+w0SEHe6Tks1hWfz5yrs3N/z3ghdihjC/5i1jeBoHXs1262SMazuwNGHblLApGPG+86taeFtbDI+31TKvZ8nomZHkEVFnARRUoBBcIwowRMqNfwlpcJhlz6kDWnoD08kHJ2zzJokozu7Lim+Ugt/MWwUOcA0hgq2QdymZFpkRkDl7tZmJtwTfTirjbGlpnPHVXEc1bWM7ocQKBgQD0LJ8e7JXf6bVFngq0jSJNKK7XDHYg0KhHXMApF59xxi29hdHXWPzgRJ45KkoUJc7MITpIJLXfCmi1XyDMf9m8lIf/oaqhJ7idYi7iAAPOJkdnHbSt0lebyjBWzCQ6OgS4NfF1+LEibTzRqiFs5K8EAyPYAVSTrpWoguoWtTzIGQKBgQDc9/I2PS+91Eb5RvuidTNsDqZJliTJQFlBjlDViFo3+l1N7jDFYwPBR/Tv4TVM5p9Zb+/Lo9X1pjDbm8QriTR4V+4HaLXkcCnmOsdSRInFUW4UIafwLX5ifjgfyaWgdKdn2UP1Lu/1qBN6GU1xjSfBQ6N3UqQiKkNPb7tuPJGqtwKBgQCQ4hU8vTclGMC14VQK1B/BVt1/vuYtDIJ9bZycBWdXlDc52LitpiDOVgjodJ5mHBT77M9vVVERWlTNIfgNP+OL0TptRZlAbJhP0p1s/oNDhFUj6211InVXfH54UkNAxYJdZ6yxynIYsma/JcsVmQ/8Ony/Q/LSempVBfEurjW1qQKBgQCQWPjFLdtOKqnildg0HFPnNvqx/38waPTluk5b76LgBpGFIyCBEVmWnacIPRpQjidyiYkggnp26oXoMC1KM2svYmGAPYr1G8CDQcqLl3JYkAVU6VeHsnBpbwLC4TttQkdJs8iNFohy9cUjcfwBPbDGs6TJghbuqqUl81uBe9e8qQKBgQDZm8T2KB34J7HAc5A+vqkmAo7mQLZg51OrzB1KnDU86pSAf0o3eSvfDUT6dpU9fRuZ1XYnbPnpoJwjFH3m4u9gqKF3PtVYfZyJrEqYwmhB9z6vd+dcsUlXM0fi37bGZkKBD0JGGt5OljM1qJG15x/LYfC/nwOmqWoOhNPCst2Z7w==";
private final String provider = "i-go-odrd-testing";
@@ -54,44 +66,74 @@
* @param type 0=服务端,1=乘客,2=司机
* @return
*/
- public String fleetEngineAuth(int type, Integer id){
+ public Map<String, Object> fleetEngineAuth(int type, String id){
try {
//谷歌云服务器使用这部分代码
// AuthTokenMinter minter = AuthTokenMinter.builder()
// //服务端签名
-// .setServerSigner(DefaultServiceAccountSigner.create())
+// .setServerSigner(ImpersonatedSigner.create(SERVICE_ACCOUNT))
// //司机端签名
-// .setDriverSigner(ImpersonatedSigner.create(SERVICE_ACCOUNT))
+// .setDriverSigner(ImpersonatedSigner.create(DRIVER_ACCOUNT))
// //乘客端签名
-// .setConsumerSigner(ImpersonatedSigner.create(SERVICE_ACCOUNT))
+// .setConsumerSigner(ImpersonatedSigner.create(CONSUMER_ACCOUNT))
// .build();
AuthTokenMinter minter = AuthTokenMinter.builder()
//服务端签名
- .setServerSigner(LocalSigner.create(SERVICE_ACCOUNT, privateKeyId, privateKey))
+ .setServerSigner(LocalSigner.create(SERVICE_ACCOUNT, serverPrivateKeyId, serverPrivateKey))
//司机端签名
- .setDriverSigner(LocalSigner.create(SERVICE_ACCOUNT, privateKeyId, privateKey))
+ .setDriverSigner(LocalSigner.create(DRIVER_ACCOUNT, driverPrivateKeyId, driverPrivateKey))
//乘客端签名
- .setConsumerSigner(LocalSigner.create(SERVICE_ACCOUNT, privateKeyId, privateKey))
+ .setConsumerSigner(LocalSigner.create(CONSUMER_ACCOUNT, consumerPrivateKeyId, consumerPrivateKey))
.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));
+ FleetEngineToken consumerToken = minter.getConsumerToken(TripClaims.create(id));
jwt = consumerToken.jwt();
+ expirationTimestamp = consumerToken.expirationTimestamp().getTime();
}
if(2 == type){
- FleetEngineToken driverToken = minter.getDriverToken(VehicleClaims.create("I-GO-CAR" + id));
+ FleetEngineToken driverToken = minter.getDriverToken(VehicleClaims.create(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 +144,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,18 +168,23 @@
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");
if(code == 401){
+ String status = error.getString("status");
+ if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
+ redisUtil.remove("google_token");
+ return createVehicles(maximumCapacity, licensePlate, id);
+ }
String reason = error.getJSONArray("details").getJSONObject(0).getString("reason");
if(reason.equals("ACCESS_TOKEN_EXPIRED")){
redisUtil.remove("google_token");
return createVehicles(maximumCapacity, licensePlate, id);
}
}
- throw new Exception(body.toJSONString());
+ throw new Exception(response.body());
}
/**
* 返回结果
@@ -176,21 +218,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 +235,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 +245,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,18 +266,23 @@
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");
if(code == 401){
+ String status = error.getString("status");
+ if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
+ redisUtil.remove("google_token");
+ return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
+ }
String reason = error.getJSONArray("details").getJSONObject(0).getString("reason");
if(reason.equals("ACCESS_TOKEN_EXPIRED")){
redisUtil.remove("google_token");
return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
}
}
- throw new Exception(body.toJSONString());
+ throw new Exception(response.body());
}
/**
* 返回结果
@@ -272,22 +314,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");
@@ -295,6 +332,11 @@
return "";
}
if(code == 401){
+ String status = error.getString("status");
+ if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
+ redisUtil.remove("google_token");
+ return getVehicles(id);
+ }
String reason = error.getJSONArray("details").getJSONObject(0).getString("reason");
if(reason.equals("ACCESS_TOKEN_EXPIRED")){
redisUtil.remove("google_token");
@@ -374,29 +416,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,18 +456,23 @@
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");
if(code == 401){
+ String status = error.getString("status");
+ if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
+ redisUtil.remove("google_token");
+ return createTrip(vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng);
+ }
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 +598,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 +629,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 +648,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 +663,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,15 +675,20 @@
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");
if(code == 401){
+ 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);
+ }
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 +818,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");
@@ -803,10 +839,15 @@
return "";
}
if(code == 401){
+ String status = error.getString("status");
+ if(StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")){
+ redisUtil.remove("google_token");
+ return getTrip(tripId);
+ }
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