From 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 16 五月 2025 10:27:41 +0800
Subject: [PATCH] 修改文档bug

---
 ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java |  479 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 314 insertions(+), 165 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 087dfcd..7936750 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
@@ -10,7 +10,7 @@
 import com.google.fleetengine.auth.token.FleetEngineToken;
 import com.google.fleetengine.auth.token.TripClaims;
 import com.google.fleetengine.auth.token.VehicleClaims;
-import com.google.fleetengine.auth.token.factory.signer.*;
+import com.google.fleetengine.auth.token.factory.signer.LocalSigner;
 import com.stylefeng.guns.modular.system.util.RedisUtil;
 import com.stylefeng.guns.modular.system.util.UUIDUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -20,12 +20,14 @@
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
  * Fleet Engine API 工具类
- *
  * @author zhibing.pu
  * @Date 2024/5/17 9:59
  */
@@ -33,80 +35,84 @@
 @Component
 public class FleetEngineUtil {
 	
-	static Logger logger = LoggerFactory.getLogger(FleetEngineUtil.class);
-	
 	private final static String key = "AIzaSyCG6PsfkaCEc94VK2vIAZk1YYKvOS_Ewts";
-	
-//	private final String SERVICE_ACCOUNT = "odrd-fleetengine-ondemandadmin@i-go-odrd-testing.iam.gserviceaccount.com";
+	static Logger logger = LoggerFactory.getLogger(FleetEngineUtil.class);
+	private final String SERVICE_ACCOUNT = "odrd-fleetengine-ondemandadmin@i-go-odrd-testing.iam.gserviceaccount.com";
+	private final String DRIVER_ACCOUNT = "odrd-fleetengine-driversdkuser@i-go-odrd-testing.iam.gserviceaccount.com";
+	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";
+
+//	private final String SERVICE_ACCOUNT = "odrd-fleetengine-ondemandadmin@i-go-gcp.iam.gserviceaccount.com";
 //
-//	private final String DRIVER_ACCOUNT = "odrd-fleetengine-driversdkuser@i-go-odrd-testing.iam.gserviceaccount.com";
+//	private final String DRIVER_ACCOUNT = "odrd-fleetengine-driversdkuser@i-go-gcp.iam.gserviceaccount.com";
 //
-//	private final String CONSUMER_ACCOUNT = "odrd-fleetengine-consumersdkus@i-go-odrd-testing.iam.gserviceaccount.com";
+//	private final String CONSUMER_ACCOUNT = "odrd-fleetengine-consumersdkus@i-go-gcp.iam.gserviceaccount.com";
 //
-//	private final String serverPrivateKeyId = "254e18eefa9fdcca64d5899cdcd793d466c47c7d";
+//	private final String serverPrivateKeyId = "56d803e4689659cf087c0864d6216bb36b7c0740";
 //
-//	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 serverPrivateKey = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDSS/aiWM1SybXt9EJx8ulLU5HJ7y1QVmUozcFypOehH3mTW7gJ1UGwHZxMpMaO3N2iRclWBHsMd4t6zYPn2Ao/leIOB2RQGcrWYu527gLrr+nXlfXkAXBBnsV55O1cbdnGK+CIF5UYGvpDkQTD3+7hATBl9kug8D5XpYfKFqnP2a5fEeJaXhPyc5z9eJjOWjJ9DfxGxf9M8Z2+/DAPxNqsML7IKw69jcmWpUoN9sJEx55jke8e4dbRFRcrRSHReThT5UW7HDkHeVtgMSh2b3MnrVYqBHLahJCXiiUdFwlwqaJWwTbXtZJVpvL4dpRbFiCrkEieerBaYajLmxlOJSvhAgMBAAECggEALyTgcZy+yuR1aJbtnmX6buyZLk/0NKJpozAdQfo+AxzvQF27cFjilPzOYVA/Qx+4f/xtGl9+xli2aB1SiNMh2Qdc2hBGKL7ffhhHpVnORc/1+GKh8S9xXwSc+Kqdm670tzx25YuD3RePKz6DdvXos4B0vSbt5XJ2R2fQfTl/cBzQju6u5QI2bVutxm+eaLXUfTVRi5N8EqW6deRAJxgn6VWOEOqBBAxgLaB90hJ9zjcDBDGurUXVumBQX4OVE6+4F1wyMNrjpFosSChJnCZ+ngSulPHHNUVnTeoXzTkp8EXb5o4B7sGoHGxFMGC8f7e5cfPPYtKmtv9s6WzZOshx0QKBgQD0+25fN1lLJxRJlBY+WymcRueEV0JKNGTgGVX0Yc6/1abyUO6mJD7yzhdvgm3/3CwWMOsnIG/+7gv7MAfwmVcs9UoebFl8z6VLzMD5GiuwCHoTRHsr9hTS38dSOr9l0/5s6n1LI4A6StWvolsVvwdM76nEBvNlRkfG3OV1crhaIwKBgQDbwS+2Xrr79cgYwktWnGCEmEDWAxTk3xZf6P/33/+9jnH49ahoEQZHltkRNpEx6axyd0qpEPmzo+xqZPirRdl+LYioF0Mt+mSaX5K5bJJ49FkqnQtUkdV9Zg0FotSxCeOFf5upaHQ7JrCdyvUBkFhEr1U+kcccEs8rB9b6oyZYKwKBgQDaEl7Df1+LGHRkst/CDiBSLoO0OICX0V/iZGsxKUeDWEpN9WEan7UxKeeOqYoFchYEgvMwVx2azof3x1+p+rWxHYAm6MgX5Db97HvywisVfdY9BH6oOVt8AxtIxWbO3BDlHy79DdL9ENR6jYmLKAr1n3l9N7q98fu+t6/CBqa4BQKBgQDOyb2CGSZPDntagQqv17sjSrpIKOIydJLzcafcstZOo4owQcpVEyAboaFlhzmeBEuX8xU4fpbaKji/7X/qe3IsP+DGfA1laKfedGz3O2mhlB2L8ffFfu2scKl0UkNezPVinC/4fChTuRadhWyEKjZFe8/1buw0SKbV0SzE8V2VvQKBgQCC0Vor+pLLkDVwlkg4fc0QNudepiEa61dRxdlWxy3BFfW/zUuP2x3y0jQYW/IAs7Z3xUqC4nHeOjJwELHgsc41YAP6kvyfAtwTddE3n03HmnlHqDKQ4uMCdJe2BQLBxmugL+yzV+YCW5sFTcRfGbEOI4OFRYoGm7Y6IiEyZGYDag==";
 //
-//	private final String driverPrivateKeyId = "859e85fb3aa4d18b4afaac3e24e8f65700da5cc9";
+//	private final String driverPrivateKeyId = "95f1c08fd235d43abe7350fc860120f930467815";
 //
-//	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 driverPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDZY/0BY/9RaTNrNxPnjbMVWl6RSGqYt+cJmAAcX3CEo276mNGGFNwzzsvsaSm2uspC8kelf1x+R0IEEfVKu7SoX2nso2C392iL3Z/lwH92r6LFD8l8IlNJ7g9fBxO6qa+v94a8BsYsj1bVDjS2Jw4PzQ5uwlTSawDlk6cQnOBCnXhDHSw4Zv51hGdYibv1LS7on9SF//0YBrfuL50lGVBgBkbjLv73eO4RRMv12YWeYntxuRqRjnD26VGcSWU2dQBlag17bioFPbd2NrpJWzDSAUTeOvu1Z5RX7QzrnICv/onz1vSJL/bzuuhBqJXt0KxdoDuoBc0AFq+tTxMcuc+DAgMBAAECggEABs9YDKQaSm2WO8SU7gsFUiTrk3eGR1Rze1x0nG7s8mrAPj9tSNr8bu8KelRtBxlg3qoCTo/n0Njgm4oIehfZN/ENO2l+zSSF9OOzb5oRJCGqYqv07tuQal93wc1R8+X+5+9EHD3GFX1EBhaU1iPxD9OnoRabW6AYfhibAi035T5ExtSZKF0eiiOgWQF7fljkcUoZliD3FXckK8qYhjgFLzyu0MXqDl49HfjaraQWL9dfuJq083hjivqBHdeY0krBa4VsWaaepwcnOGiHm2x7fJIpBYTrmToQGPB1MClXgeEhBCvP2DY2Hj3sqqwFKJcjgnCeTBA5/pO8V0O+6MAtcQKBgQD8YZnnw5KXg+s2vxYSEC0qXde1tMN6BziFCpp0hy02LcRLcsni7h+31++d9bPscuENadz2Lts4jTNwnc162B/TJHtP+VRBs1oVbpkAdouOXNU1mLRyy7NfuHbLfOtXDXE7J4Los63GeBt0AX4YNPuYQ3mBhW3mUHHNPs7AhIs4uQKBgQDcgfL/AXOmgZnglzp9phr6a0pxVlerSeNRUrcpQ3M41t9XaFLM8b6HX94DqsJ8n6bknnBV/gdDdwwIGvNKhcoNa/jbTRv9UAsBef49Ak8Vq3VudEsqQCkBP4B2+WmBBNuBQy9CUrIn8nPScjU8bhpFqKmQxqCfYn29hY8jxY90GwKBgQCw+a/2uUmePb8+0JglanqBbvTIUk2Q0Gdtw5WziObHSyiOz5uKKfjL7fv1BEp6z8PIqCdt6kWHTlx35/Ai6FLIuJhP6EKRH7dXuApKLNaHqclIoCBJL1ZFFREYeCx/CsoP9RDzJKwCtE5r9m/5gY27o/UcQfhivJ5Qkm5gyZDm4QKBgB1erZfrgJTn5C/21JKRwjwieDraTjkBUWauhrjXRAyJChxhR84GUONFEJQadWcV+KuwsrOxbxQ8UfzuYgNGCKB7Bh1nitfVhnG+5u8HVLNFMBHzKWPKQevpolm2ZKgLlpUD9tJ1o0cQ0v5vucl/vL4UdelTm2c/PhI1LNiN4sqLAoGATpugMjecjHvJwHG1Qk5dSIFt1ndc3MmYkLP+bAYMLDZmYbGlCv4Q+YuIyeoCpQNguWO9GqtquqM+yj0zoWn0BNTGhygqInBrLTwxzkfRQGGru0h9GsdhedkE7KJuJgOMYZIk7mZUKONK68CehQR6hYSHZ9a7VfljPpC5F1uuRCM=";
 //
-//	private final String consumerPrivateKeyId = "40acf82cbd5250de2f5123caff40738bdd403b08";
+//	private final String consumerPrivateKeyId = "37eb9db5c3821cb8a13a15f86b2da194f4cb0959";
 //
-//	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";
-	
-	private final String SERVICE_ACCOUNT = "odrd-fleetengine-ondemandadmin@i-go-gcp.iam.gserviceaccount.com";
-	
-	private final String DRIVER_ACCOUNT = "odrd-fleetengine-driversdkuser@i-go-gcp.iam.gserviceaccount.com";
-	
-	private final String CONSUMER_ACCOUNT = "odrd-fleetengine-consumersdkus@i-go-gcp.iam.gserviceaccount.com";
-	
-	private final String provider = "i-go-gcp";
-	
+//	private final String consumerPrivateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCeBruAMii4e7LrGNwSWMbeztzjJV9lUS9CIhWi142G/Ed9b58oa1CAM3ym794PRqtHRvdzLSWRKf3SFJjzYl7CMmkpTgsQoV8tCp/G/vITZcrD9BxYfocysnSDy9d/nleomC1PeUV6coZpGPIjwuxkXyQbH1CnTyGK5RAU2siCw4plLMz6WQyXXyCZOdCijsvSPgytDWveO8DGPIBO1VlHHIJIfrfgVCYgpaXd63GSPQEJ81GYfy5VtnuLHpc3kowq5blLqMFUU6eAzA20Jg3mCovv2idSNN6R5K1kNT3Eu5fsQWuthDqK0H2IeNulb8cCPnri62AH03kxl6xFwC6pAgMBAAECggEAETkH88TZDfeNXHTCfM1oKfMUZ+fe1HAGB93Ryy8ATGyabgqy/KNq4U4QkTEmBowxMVIuuJgnDAHY7q3dWElUV93z+tMiqZas2iqE7MSZ0DtmifdvpMVwKWUBsIuQL7yA2UMcom4ZKxXoSElhD+diqYh6VZUSzpP1QpS3LU6wTm/4IzN+kjfn7sAENk9+ff04VZjBC4yPANWO6gXmNZlGvFvbp6ChBb9PnPlB6dUUiLCGkb/B0jagfqP7ARrDArMcRpJZyYbPDEfxEqqADV28N4k2qOYUZYVmXBXf+Zip7G+rikXmgxn/G1nHLJgUAmc42TUos8P0YsZiVyboQYtU8QKBgQDRcLK70zIZOhMRmr9gTC2khSBA37ZVVtCiJb6G4TtFfH7KLdn8r8aNLauH90WCzQvk2m/KKFlt/q2UJyFatJx5LB4mYKAS7BPfoHYqsoqDMuMXtNpe6PO5/rx8h90pl60gouG2iw1QcOq5NKNVr2INYkItJhc8u99Lhw675hVVOwKBgQDBKA2e1KERO3cOn7muaJjWubMJ6mK0XtOLmTL8maILwJVO2H6rMOxoYum3txZjc+oTdFcyfv5TJZrihm3F2XoZ6Xe1F0OhiX97OgA/uDygQSDsiFdhJ90svbpGxDxtQtamhuu+8Wp1TpNu8ORdG+3gmsCkxivrPTs/MnJnfiu9awKBgGJ1QYDsyvtzAq3e+qKxjS9vafc1dAjwVAo2BjhwP6Xt3cj7/yM8GvIZiy7S/rl73WCLk8wMZeZAuKcSMirrBzgrlkziVb4vfzQ8wfBWmKkOzhVB7vp5NsK0TzWXxU+dP0U9bTCcc/jh7GZ+qV5JoaW7EHMbGgdyJoniBvosMtErAoGAKVRvraejmzNVI0zsBzScV32+oIWFf0C3FSy/qysYcFlR2WAbonfCbgeUKNpFMRyRXn5LViO0OYhXXtcSz/3b0YWSNq52qy7nly9u9DNwzX2CFPqLb99+xN8H57J/l4VwtosyEFZJyDX6+AcVZhLe0GtsgxVgOmKMtdYOgrSNmWcCgYBu3KiRwYPfQgyEYOwfQBOjoMmPUB8H/vtvFLRlHXxZF7hPAyKs4e9dQRW7vb61epVgMVz5t4E4pKHqxpZu+j7Tby+Z5fAgSPiniZUyVH9AYGCTyAYZogr5r21vhpcAZJ0P8hoE5R2jhnzu/mhr6CkWz8nCHsZ7+KBjcVILUYIS9g==";
+//
+//	private final String provider = "i-go-gcp";
 	@Autowired
 	private RedisUtil redisUtil;
 	
 	
+	
+	
+	
+	
 	/**
 	 * 获取jwt token
-	 *
 	 * @param type 0=服务端,1=乘客,2=司机
 	 * @return
 	 */
-	public Map<String, Object> fleetEngineAuth(int type, String id) {
+	public Map<String, Object> fleetEngineAuth(int type, String id){
 		try {
 			//谷歌云服务器使用这部分代码
-			AuthTokenMinter minter = AuthTokenMinter.builder()
-					//服务端签名
-					.setServerSigner(ImpersonatedSigner.create(SERVICE_ACCOUNT))
-					//司机端签名
-					.setDriverSigner(ImpersonatedSigner.create(DRIVER_ACCOUNT))
-					//乘客端签名
-					.setConsumerSigner(ImpersonatedSigner.create(CONSUMER_ACCOUNT))
-					.build();
 //			AuthTokenMinter minter = AuthTokenMinter.builder()
 //					//服务端签名
-//					.setServerSigner(LocalSigner.create(SERVICE_ACCOUNT, serverPrivateKeyId, serverPrivateKey))
+//					.setServerSigner(ImpersonatedSigner.create(SERVICE_ACCOUNT))
 //					//司机端签名
-//					.setDriverSigner(LocalSigner.create(DRIVER_ACCOUNT, driverPrivateKeyId, driverPrivateKey))
+//					.setDriverSigner(ImpersonatedSigner.create(DRIVER_ACCOUNT))
 //					//乘客端签名
-//					.setConsumerSigner(LocalSigner.create(CONSUMER_ACCOUNT, consumerPrivateKeyId, consumerPrivateKey))
+//					.setConsumerSigner(ImpersonatedSigner.create(CONSUMER_ACCOUNT))
 //					.build();
+			AuthTokenMinter minter = AuthTokenMinter.builder()
+					//服务端签名
+					.setServerSigner(LocalSigner.create(SERVICE_ACCOUNT, serverPrivateKeyId, serverPrivateKey))
+					//司机端签名
+					.setDriverSigner(LocalSigner.create(DRIVER_ACCOUNT, driverPrivateKeyId, driverPrivateKey))
+					//乘客端签名
+					.setConsumerSigner(LocalSigner.create(CONSUMER_ACCOUNT, consumerPrivateKeyId, consumerPrivateKey))
+					.build();
 			
 			String jwt = "";
 			Long expirationTimestamp = 0L;
-			if (0 == type) {
+			if(0 == type){
 				FleetEngineToken serverToken = minter.getServerToken();
 				jwt = serverToken.jwt();
 				expirationTimestamp = serverToken.expirationTimestamp().getTime();
 			}
-			if (1 == type) {
+			if(1 == type){
 				FleetEngineToken consumerToken = minter.getConsumerToken(TripClaims.create(id));
 				jwt = consumerToken.jwt();
 				expirationTimestamp = consumerToken.expirationTimestamp().getTime();
 			}
-			if (2 == type) {
+			if(2 == type){
 				FleetEngineToken driverToken = minter.getDriverToken(VehicleClaims.create(id));
 				jwt = driverToken.jwt();
 				expirationTimestamp = driverToken.expirationTimestamp().getTime();
@@ -115,26 +121,25 @@
 			map.put("token", jwt);
 			map.put("expirationTimestamp", expirationTimestamp);
 			return map;
-		} catch (SigningTokenException e) {
-			throw new RuntimeException(e);
-		} catch (SignerInitializationException e) {
+		} catch (Exception e) {
 			throw new RuntimeException(e);
 		}
 	}
 	
 	
-	public String getToken() {
+	
+	public String getToken(){
 		String token_json = redisUtil.getValue("google_token");
 		String google_token = "";
-		if (!StringUtils.hasLength(token_json)) {
+		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 {
+		}else{
 			JSONObject jsonObject1 = JSON.parseObject(token_json);
 			Long expirationTimestamp = jsonObject1.getLong("expirationTimestamp");
 			google_token = jsonObject1.getString("token");
-			if ((expirationTimestamp - 10000L) <= System.currentTimeMillis()) {
+			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();
@@ -144,14 +149,16 @@
 	}
 	
 	
+	
+	
+	
 	/**
 	 * 添加车辆
-	 *
 	 * @param maximumCapacity 这辆车可以搭载的乘客总数
-	 * @param licensePlate    车牌号
-	 * @param id              车辆id
+	 * @param licensePlate 车牌号
+	 * @param id 车辆id
 	 */
-	public String createVehicles(int maximumCapacity, String licensePlate, String id) throws Exception {
+	public boolean createVehicles(int maximumCapacity, String licensePlate, String id) {
 		String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles?vehicleId=" + id;
 		HttpRequest post = HttpUtil.createPost(url);
 		Map<String, String> headers = new HashMap<>();
@@ -161,7 +168,7 @@
 		
 		JSONObject body = new JSONObject();
 		body.put("vehicleState", "OFFLINE");
-		body.put("supportedTripTypes", Arrays.asList("SHARED", "EXCLUSIVE"));
+		body.put("supportedTripTypes", "EXCLUSIVE");
 		body.put("maximumCapacity", maximumCapacity);
 		
 		JSONObject category = new JSONObject();
@@ -177,21 +184,22 @@
 		logger.info("创建车辆结果:{}", response.body());
 		JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
 		JSONObject error = jsonObject.getJSONObject("error");
-		if (null != error) {
+		if(null != error){
 			Integer code = error.getInteger("code");
-			if (code == 401) {
+			if(code == 401){
 				String status = error.getString("status");
-				if (StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")) {
+				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")) {
+				if(reason.equals("ACCESS_TOKEN_EXPIRED")){
 					redisUtil.remove("google_token");
 					return createVehicles(maximumCapacity, licensePlate, id);
 				}
 			}
-			throw new Exception(response.body());
+			log.error("添加车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
+			return false;
 		}
 		/**
 		 * 返回结果
@@ -214,55 +222,27 @@
 		 * 	"waypointsVersion": "2024-05-23T03:05:23.293329Z"
 		 * }
 		 */
-		return response.body();
-	}
-	
-	/**
-	 * 上报google可结算订单
-	 *
-	 * @param tripId 行程id
-	 * @return
-	 */
-	public boolean reportBillableEvent(String tripId) throws Exception {
-		String billableEventId = UUIDUtil.getRandomCode();
-		String url = "https://mobilitybilling.googleapis.com/v1:reportBillableEvent?regionCode=GH&key=" + key + "&billableEventId=" + billableEventId;
-		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();
-		body.put("related_ids", "[\"" + tripId + "\"]");
-		post.body(body.toJSONString());
-		
-		
-		//上线客户测试和上线运营开放
-//		HttpResponse response = post.execute();
-//		if(200 != response.getStatus()){
-//			logger.error(response.body());
-//			throw new Exception(response.body());
-//		}
 		return true;
 	}
 	
+	
 	/**
 	 * 修改车辆信息
-	 *
 	 * @param maximumCapacity
 	 * @param licensePlate
 	 * @param id
 	 * @return
 	 */
-	public String updateVehicles(String vehicleState, Integer maximumCapacity, String licensePlate, String id) throws Exception {
+	public boolean updateVehicles(String vehicleState, Integer maximumCapacity, String licensePlate, String id) {
 		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) {
+		if(null != maximumCapacity){
 			sb.add("maximumCapacity");
 		}
-		if (StringUtils.hasLength(licensePlate)) {
+		if(StringUtils.hasLength(licensePlate)){
 			sb.add("licensePlate");
 		}
 		String collect = sb.stream().collect(Collectors.joining(","));
@@ -280,19 +260,19 @@
 		 * OFFLINE	车辆不接受新行程。注意:在完成分配给车辆的行程时,车辆仍可继续在此状态下运行。
 		 * ONLINE	车辆正在接受新行程。
 		 */
-		if (StringUtils.hasLength(vehicleState)) {
+		if(StringUtils.hasLength(vehicleState)){
 			body.put("vehicleState", vehicleState);
 		}
-		if (null != maximumCapacity) {
+		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));
 			body.put("licensePlate", licensePlate1);
 		}
-		body.put("supportedTripTypes", Arrays.asList("SHARED", "EXCLUSIVE"));
+		body.put("supportedTripTypes", "EXCLUSIVE");
 		
 		JSONObject category = new JSONObject();
 		category.put("category", "TAXI");
@@ -303,21 +283,22 @@
 		logger.info("修改车辆信息结果:{}", response.body());
 		JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
 		JSONObject error = jsonObject.getJSONObject("error");
-		if (null != error) {
+		if(null != error){
 			Integer code = error.getInteger("code");
-			if (code == 401) {
+			if(code == 401){
 				String status = error.getString("status");
-				if (StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")) {
+				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")) {
+				if(reason.equals("ACCESS_TOKEN_EXPIRED")){
 					redisUtil.remove("google_token");
 					return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
 				}
 			}
-			throw new Exception(response.body());
+			log.error("修改车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
+			return false;
 		}
 		/**
 		 * 返回结果
@@ -340,17 +321,16 @@
 		 *   "waypointsVersion": "2024-05-23T03:05:23.293329Z"
 		 * }
 		 */
-		return response.body();
+		return true;
 	}
 	
 	
 	/**
 	 * 获取车辆信息
-	 *
 	 * @param id 车辆id
 	 * @return
 	 */
-	public String getVehicles(String id) throws Exception {
+	public String getVehicles(String id){
 		String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/vehicles/" + (null != id ? id : "");
 		HttpRequest get = HttpUtil.createGet(url);
 		Map<String, String> headers = new HashMap<>();
@@ -362,24 +342,25 @@
 		logger.info("查询车辆结果:{}", response.body());
 		JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
 		JSONObject error = jsonObject.getJSONObject("error");
-		if (null != error) {
+		if(null != error){
 			Integer code = error.getInteger("code");
-			if (code == 404) {
+			if(code == 404){
 				return "";
 			}
-			if (code == 401) {
+			if(code == 401){
 				String status = error.getString("status");
-				if (StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")) {
+				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")) {
+				if(reason.equals("ACCESS_TOKEN_EXPIRED")){
 					redisUtil.remove("google_token");
 					return getVehicles(id);
 				}
 			}
-			throw new Exception(response.body());
+			log.error("查询车辆信息异常:  id={},   body={}", id, response.body());
+			return null;
 		}
 		/**
 		 * 返回结果
@@ -431,16 +412,16 @@
 	}
 	
 	
+	
 	/**
 	 * 获取最后一个数字
-	 *
 	 * @param str
 	 * @return
 	 */
-	private String getLastNumber(String str) {
+	private String getLastNumber(String str){
 		for (int i = str.length(); i > 0; i--) {
 			char c = str.charAt(i - 1);
-			if (String.valueOf(c).matches("\\d")) {
+			if(String.valueOf(c).matches("\\d")){
 				return str.substring(i - 1, i);
 			}
 		}
@@ -450,17 +431,16 @@
 	
 	/**
 	 * 创建新的行程
-	 *
-	 * @param vehicleId          车辆id
+	 * @param vehicleId 车辆id
 	 * @param numberOfPassengers 人数
-	 * @param tripId             订单id
-	 * @param start_lat          起点纬度
-	 * @param start_lng          起点经度
-	 * @param end_lat            终点纬度
-	 * @param end_lng            终点经度
+	 * @param tripId 订单id
+	 * @param start_lat 起点纬度
+	 * @param start_lng 起点经度
+	 * @param end_lat 终点纬度
+	 * @param end_lng 终点经度
 	 * @return
 	 */
-	public String createTrip(String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) throws Exception {
+	public JSONObject createTrip(String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) {
 		String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips?tripId=" + tripId;
 		HttpRequest post = HttpUtil.createPost(url);
 		Map<String, String> headers = new HashMap<>();
@@ -469,11 +449,11 @@
 		post.addHeaders(headers);
 		
 		JSONObject body = new JSONObject();
-		if (StringUtils.hasLength(vehicleId)) {
+		if(StringUtils.hasLength(vehicleId)){
 			body.put("vehicleId", vehicleId);
 		}
 		body.put("tripStatus", "NEW");
-		body.put("tripType", "SHARED");
+		body.put("tripType", "EXCLUSIVE");
 		body.put("numberOfPassengers", numberOfPassengers);
 		
 		JSONObject pickupPoint = new JSONObject();
@@ -489,27 +469,27 @@
 		end_point.put("longitude", end_lng);
 		dropoffPoint.put("point", end_point);
 		body.put("dropoffPoint", dropoffPoint);
-		logger.info("创建行程请求:{}", body.toJSONString());
+		logger.info("创建行程请求:{}  {}", tripId, body.toJSONString());
 		HttpRequest request = post.body(body.toJSONString());
 		HttpResponse response = request.execute();
 		logger.info("创建行程结果:{}", response.body());
 		JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
 		JSONObject error = jsonObject.getJSONObject("error");
-		if (null != error) {
+		if(null != error){
 			Integer code = error.getInteger("code");
-			if (code == 401) {
+			if(code == 401){
 				String status = error.getString("status");
-				if (StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")) {
+				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")) {
+				if(reason.equals("ACCESS_TOKEN_EXPIRED")){
 					redisUtil.remove("google_token");
 					return createTrip(vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng);
 				}
 			}
-			throw new Exception(response.body());
+			logger.error("创建行程异常:  tripId={}  body={}", tripId, response.body());
 		}
 		/**
 		 * 返回结果
@@ -626,40 +606,39 @@
 		 * 	"currentRouteSegmentTrafficVersion": "2024-05-27T02:05:37.941167Z"
 		 * }
 		 */
-		return response.body();
+		return jsonObject;
 	}
 	
 	
 	/**
 	 * 修改行程
-	 *
-	 * @param tripStatus         行程状态
-	 * @param vehicleId          车辆id
+	 * @param tripStatus 行程状态
+	 * @param vehicleId 车辆id
 	 * @param numberOfPassengers 人数
-	 * @param tripId             订单id
-	 * @param start_lat          起点纬度
-	 * @param start_lng          起点经度
-	 * @param end_lat            终点纬度
-	 * @param end_lng            终点经度
+	 * @param tripId 订单id
+	 * @param start_lat 起点纬度
+	 * @param start_lng 起点经度
+	 * @param end_lat 终点纬度
+	 * @param end_lng 终点经度
 	 * @return
 	 */
-	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 {
+	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)) {
+		if(StringUtils.hasLength(vehicleId)){
 			sb.add("vehicleId");
 		}
-		if (StringUtils.hasLength(tripStatus)) {
+		if(StringUtils.hasLength(tripStatus)){
 			sb.add("tripStatus");
 		}
-		if (null != numberOfPassengers) {
+		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(","));
@@ -672,7 +651,7 @@
 		put.addHeaders(headers);
 		
 		JSONObject body = new JSONObject();
-		if (StringUtils.hasLength(vehicleId)) {
+		if(StringUtils.hasLength(vehicleId)){
 			body.put("vehicleId", vehicleId);
 		}
 		/**
@@ -686,13 +665,13 @@
 		 * COMPLETE	乘客已下车,行程已完成。
 		 * CANCELED	在司机、乘客或拼车服务提供商取车之前,行程被取消。
 		 */
-		if (StringUtils.hasLength(tripStatus)) {
+		if(StringUtils.hasLength(tripStatus)){
 			body.put("tripStatus", tripStatus);
 		}
-		if (null != numberOfPassengers) {
+		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);
@@ -701,7 +680,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);
@@ -709,27 +688,31 @@
 			dropoffPoint.put("point", end_point);
 			body.put("dropoffPoint", dropoffPoint);
 		}
-		logger.info("修改行程请求:{}", body.toJSONString());
+		logger.info("修改行程请求:{}  {}", tripId, body.toJSONString());
 		HttpRequest request = put.body(body.toJSONString());
 		HttpResponse response = request.execute();
 		logger.info("修改行程结果:{}", response.body());
 		JSONObject jsonObject = JSON.parseObject(response.body().replaceAll("@type", "type"));
 		JSONObject error = jsonObject.getJSONObject("error");
-		if (null != error) {
+		if(null != error){
 			Integer code = error.getInteger("code");
-			if (code == 401) {
+			if(code == 401){
 				String status = error.getString("status");
-				if (StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")) {
+				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")) {
+				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);
 				}
 			}
-			throw new Exception(response.body());
+			if(code == 404){
+				return true;
+			}
+			logger.error("修改行程异常:  tripId={}  body={}", tripId, response.body());
+			return false;
 		}
 		/**
 		 * 返回结果
@@ -849,17 +832,17 @@
 		 * 	"numberOfPassengers": 1
 		 * }
 		 */
-		return response.body();
+		return true;
 	}
+	
 	
 	
 	/**
 	 * 获取行程信息
-	 *
 	 * @param tripId 订单id
 	 * @return
 	 */
-	public String getTrip(String tripId) throws Exception {
+	public String getTrip(String tripId) {
 		String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/" + tripId;
 		HttpRequest get = HttpUtil.createGet(url);
 		Map<String, String> headers = new HashMap<>();
@@ -867,28 +850,30 @@
 		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"));
 		JSONObject error = jsonObject.getJSONObject("error");
-		if (null != error) {
+		if(null != error){
 			Integer code = error.getInteger("code");
-			if (code == 404) {
+			if(code == 404){
 				return "";
 			}
-			if (code == 401) {
+			if(code == 401){
 				String status = error.getString("status");
-				if (StringUtils.hasLength(status) && status.equals("UNAUTHENTICATED")) {
+				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")) {
+				if(reason.equals("ACCESS_TOKEN_EXPIRED")){
 					redisUtil.remove("google_token");
 					return getTrip(tripId);
 				}
 			}
-			throw new Exception(response.body());
+			logger.error("获取行程异常:  tripId={}  body={}", tripId, response.body());
+			return null;
 		}
 		/**
 		 * 返回结果
@@ -971,4 +956,168 @@
 		
 		return response.body();
 	}
+	
+	
+	/**
+	 * 批量获取行程
+	 * @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
+	 */
+	public boolean reportBillableEvent(String tripId) {
+		log.info("行程上报:{}", tripId);
+		String billableEventId = UUIDUtil.getRandomCode();
+		String url = "https://mobilitybilling.googleapis.com/v1:reportBillableEvent?regionCode=GH&key=" + key + "&billableEventId=" + billableEventId;
+		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();
+		body.put("related_ids", "[\"" + tripId + "\"]");
+		body.put("regionCode", "GH");
+		post.body(body.toJSONString());
+		//上线客户测试和上线运营开放
+//		HttpResponse response = post.execute();
+//		if(200 != response.getStatus()){
+//			logger.error("google地图上报结算   tripId:{}   异常:{}", tripId,response.body());
+//			return false;
+//		}
+		return true;
+	}
+	
 }

--
Gitblit v1.7.1