zhibing.pu
2024-06-21 0f9a91a7609e6623ada0f8b5a9ee878e77e5aa32
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -102,13 +102,13 @@
    * @param licensePlate 车牌号
    * @param id 车辆id
    */
   public String createVehicles(int maximumCapacity, String licensePlate, Integer id) throws Exception{
   public String createVehicles(int maximumCapacity, String licensePlate, String 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;
      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);
@@ -131,7 +131,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 +142,7 @@
               return createVehicles(maximumCapacity, licensePlate, id);
            }
         }
         throw new Exception(body.toJSONString());
         throw new Exception(response.body());
      }
      /**
       * 返回结果
@@ -176,21 +176,21 @@
    * @param id
    * @return
    */
   public String updateVehicles(String vehicleState, Integer maximumCapacity, String licensePlate, Integer id) throws Exception{
   public String updateVehicles(String vehicleState, Integer maximumCapacity, String licensePlate, String 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=";
      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(","));
@@ -208,13 +208,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 +229,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 +240,7 @@
               return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
            }
         }
         throw new Exception(body.toJSONString());
         throw new Exception(response.body());
      }
      /**
       * 返回结果
@@ -272,13 +272,13 @@
    * @param id 车辆id
    * @return
    */
   public String getVehicles(Integer id) throws Exception{
   public String getVehicles(String 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 : "");
      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);
@@ -287,7 +287,7 @@
      
      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,21 +374,20 @@
    * 创建新的行程
    * @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{
   public String createTrip(String vehicleId, Integer numberOfPassengers, String tripId, 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;
      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);
@@ -396,7 +395,9 @@
      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 +419,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 +427,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 +556,35 @@
    * @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 {
   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 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=";
      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(","));
@@ -597,8 +597,8 @@
      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 +611,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 +626,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 +638,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 +646,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,17 +776,16 @@
   
   /**
    * 获取行程信息
    * @param orderType 订单类型(1/4)
    * @param orderId 订单id
    * @param tripId 订单id
    * @return
    */
   public String getTrip(Integer orderType, Integer orderId) throws Exception {
   public String getTrip(String tripId) 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;
      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);
@@ -795,7 +794,7 @@
      
      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());