Pu Zhibing
2024-10-21 f08b7e95bc941a72d4a7b7bc64c2086ed53f1565
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -25,7 +25,6 @@
/**
 * Fleet Engine API 工具类
 *
 * @author zhibing.pu
 * @Date 2024/5/17 9:59
 */
@@ -34,8 +33,6 @@
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";
@@ -54,7 +51,10 @@
   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 static String key = "AIzaSyCG6PsfkaCEc94VK2vIAZk1YYKvOS_Ewts";
   
//   private final String SERVICE_ACCOUNT = "odrd-fleetengine-ondemandadmin@i-go-gcp.iam.gserviceaccount.com";
//
@@ -80,9 +80,12 @@
   private RedisUtil redisUtil;
   
   
   /**
    * 获取jwt token
    *
    * @param type 0=服务端,1=乘客,2=司机
    * @return
    */
@@ -133,6 +136,7 @@
   }
   
   
   public String getToken() {
      String token_json = redisUtil.getValue("google_token");
      String google_token = "";
@@ -154,14 +158,16 @@
   }
   
   
   /**
    * 添加车辆
    *
    * @param maximumCapacity 这辆车可以搭载的乘客总数
    * @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<>();
@@ -201,7 +207,8 @@
               return createVehicles(maximumCapacity, licensePlate, id);
            }
         }
         throw new Exception(response.body());
         log.error("添加车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
         return false;
      }
      /**
       * 返回结果
@@ -224,46 +231,18 @@
       *    "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)) {
@@ -327,7 +306,8 @@
               return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
            }
         }
         throw new Exception(response.body());
         log.error("修改车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
         return false;
      }
      /**
       * 返回结果
@@ -350,17 +330,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<>();
@@ -389,7 +368,8 @@
               return getVehicles(id);
            }
         }
         throw new Exception(response.body());
         log.error("查询车辆信息异常:  id={},   body={}", id, response.body());
         return null;
      }
      /**
       * 返回结果
@@ -441,9 +421,9 @@
   }
   
   
   /**
    * 获取最后一个数字
    *
    * @param str
    * @return
    */
@@ -460,7 +440,6 @@
   
   /**
    * 创建新的行程
    *
    * @param vehicleId          车辆id
    * @param numberOfPassengers 人数
    * @param tripId             订单id
@@ -470,7 +449,7 @@
    * @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 boolean 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<>();
@@ -519,7 +498,8 @@
               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());
         return false;
      }
      /**
       * 返回结果
@@ -636,13 +616,12 @@
       *    "currentRouteSegmentTrafficVersion": "2024-05-27T02:05:37.941167Z"
       * }
       */
      return response.body();
      return true;
   }
   
   
   /**
    * 修改行程
    *
    * @param tripStatus         行程状态
    * @param vehicleId          车辆id
    * @param numberOfPassengers 人数
@@ -653,7 +632,7 @@
    * @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) {
      String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips/" + tripId + "?updateMask=";
      List<String> sb = new ArrayList<>();
      if (StringUtils.hasLength(vehicleId)) {
@@ -739,7 +718,8 @@
               return updateTrip(tripStatus, vehicleId, numberOfPassengers, tripId, start_lat, start_lng, end_lat, end_lng);
            }
         }
         throw new Exception(response.body());
         logger.error("修改行程异常:  tripId={}  body={}", tripId, response.body());
         return false;
      }
      /**
       * 返回结果
@@ -859,17 +839,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<>();
@@ -898,7 +878,8 @@
               return getTrip(tripId);
            }
         }
         throw new Exception(response.body());
         logger.error("获取行程异常:  tripId={}  body={}", tripId, response.body());
         return null;
      }
      /**
       * 返回结果
@@ -981,4 +962,32 @@
      
      return response.body();
   }
   /**
    * 上报google可结算订单
    * @param tripId 行程id
    * @return
    */
   public boolean reportBillableEvent(String 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;
   }
}