Pu Zhibing
2024-10-21 f08b7e95bc941a72d4a7b7bc64c2086ed53f1565
修改2.0 bug
19个文件已修改
1075 ■■■■ 已修改文件
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/BaseWarpper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-core/src/main/java/com/stylefeng/guns/core/config/properties/DruidProperties.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/settlementAllocation/settlementAllocation.html 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java 69 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-core/src/main/java/com/stylefeng/guns/core/config/properties/DruidProperties.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -1216,6 +1216,7 @@
                BaseWarpper baseWarpper = new BaseWarpper();
                baseWarpper.setDay(String.valueOf(null != map.get("time") ? map.get("time") : ""));
                baseWarpper.setAmount(Double.valueOf(String.valueOf(null != map.get("money") ? map.get("money") : 0)));
                baseWarpper.setType(Integer.valueOf(type));
                if("2".equals(type)){
                    switch (Integer.valueOf(String.valueOf(null != map.get("orderType") ? map.get("orderType") : 0))){
                        case 1:
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -254,7 +254,6 @@
        }
    
        new Thread(()->{
            try {
                Car car = carService.selectById(orderLogistics.getCarId());
                if(!StringUtils.hasLength(car.getVehicleId())){
                    car.setVehicleId(UUIDUtil.getRandomCode());
@@ -265,16 +264,53 @@
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                    boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                    if(!createVehicles){
                        for (int i = 0; i < 5; i++) {
                            createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            if(createVehicles){
                                break;
                    }
                    fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
                            try {
                                Thread.sleep(5000L);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
                boolean createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
                            orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(),  orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                if(!createTrip){
                    for (int i = 0; i < 5; i++) {
                        createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
                                orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                        if(createTrip){
                            break;
                        }
                        try {
                            Thread.sleep(5000L);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
                }else{
                    //开始修改行程数据
                    fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                if(!updateTrip){
                    for (int i = 0; i < 5; i++) {
                        updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                        if(updateTrip){
                            break;
                }
            }catch (Exception e){
                e.printStackTrace();
                        try {
                            Thread.sleep(5000L);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }
        }).start();
        
@@ -417,10 +453,19 @@
        new Thread(()->{
            Car car = carMapper.selectById(driver.getCarId());
            //修改行程数据
            boolean updateTrip = fleetEngineUtil.updateTrip(finalTripStatus, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(finalTripStatus, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                    if(updateTrip){
                        break;
                    }
            try {
                fleetEngineUtil.updateTrip(finalTripStatus, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
            } catch (Exception e) {
                        Thread.sleep(5000L);
                    } catch (InterruptedException e) {
                throw new RuntimeException(e);
                    }
                }
            }
        }).start();
        
@@ -731,12 +776,21 @@
            orderLogistics.setEndLat(Double.valueOf(orderLogistics.getDestinationLat()));
            orderLogistics.setEndAddress(orderLogistics.getDestination());
            //修改google地图行程终点
            try {
                fleetEngineUtil.updateTrip(null, null, null, orderLogistics.getTripId(),
            boolean updateTrip = fleetEngineUtil.updateTrip(null, null, null, orderLogistics.getTripId(),
                        null, null, orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
            } catch (Exception e) {
                e.printStackTrace();
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(null, null, null, orderLogistics.getTripId(),
                            null, null, orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                    if(updateTrip){
                        break;
                    }
                    try {
                        Thread.sleep(5000L);
                    } catch (InterruptedException e) {
                throw new RuntimeException(e);
                    }
                }
            }
        }
        orderLogistics.setDestinationLon("");
@@ -1098,11 +1152,20 @@
        //上报google
        OrderLogistics finalOrderLogistics = orderLogistics;
        new Thread(()->{
            try {
                fleetEngineUtil.reportBillableEvent(finalOrderLogistics.getTripId());
                log.warn("行程结束:{}   {}", System.currentTimeMillis(), finalOrderLogistics.getTripId());
            }catch (Exception e){
                e.printStackTrace();
            boolean reportBillableEvent = fleetEngineUtil.reportBillableEvent(finalOrderLogistics.getTripId());
            if(!reportBillableEvent){
                for (int i = 0; i < 5; i++) {
                    reportBillableEvent = fleetEngineUtil.reportBillableEvent(finalOrderLogistics.getTripId());
                    if(reportBillableEvent){
                        break;
                    }
                    try {
                        Thread.sleep(5000L);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }).start();
        return ResultUtil.success();
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -390,13 +390,53 @@
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!createVehicles){
                            for (int i = 0; i < 5; i++) {
                                createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(createVehicles){
                                    break;
                    }
                    fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderPrivateCar.getTripId(),
                                try {
                                    Thread.sleep(5000L);
                                } catch (InterruptedException e) {
                                    throw new RuntimeException(e);
                                }
                            }
                        }
                    }
                    boolean createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderPrivateCar.getTripId(),
                            orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(),  orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                    if(!createTrip){
                        for (int i = 0; i < 5; i++) {
                            createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderPrivateCar.getTripId(),
                                    orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(),  orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                            if(createTrip){
                                break;
                            }
                            try {
                                Thread.sleep(5000L);
                            } catch (InterruptedException e) {
                                throw new RuntimeException(e);
                            }
                        }
                    }
                }
                //开始修改行程数据
                fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                if(!updateTrip){
                    for (int i = 0; i < 5; i++) {
                        updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                        if(updateTrip){
                            break;
                        }
                        try {
                            Thread.sleep(5000L);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
            }
@@ -584,11 +624,21 @@
        String finalTripStatus = tripStatus;
        new Thread(()->{
            //修改行程数据
            boolean updateTrip = fleetEngineUtil.updateTrip(finalTripStatus, null, 1, orderPrivateCar.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(finalTripStatus, null, 1, orderPrivateCar.getTripId(), null, null, null, null);
                    if(updateTrip){
                        break;
                    }
            try {
                fleetEngineUtil.updateTrip(finalTripStatus, null, 1, orderPrivateCar.getTripId(), null, null, null, null);
            } catch (Exception e) {
                        Thread.sleep(5000L);
                    } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
                }
            }
        }).start();
        // TODO: 2020/6/5 推送状态
@@ -711,12 +761,21 @@
    
        OrderPrivateCar finalOrderPrivateCar = orderPrivateCar;
        new Thread(()->{
            try {
                //上报google
                fleetEngineUtil.reportBillableEvent(finalOrderPrivateCar.getTripId());
                log.warn("行程结束:{}   {}", System.currentTimeMillis(), finalOrderPrivateCar.getTripId());
            }catch (Exception e){
                e.printStackTrace();
            boolean reportBillableEvent = fleetEngineUtil.reportBillableEvent(finalOrderPrivateCar.getTripId());
            if(!reportBillableEvent){
                for (int i = 0; i < 5; i++) {
                    reportBillableEvent = fleetEngineUtil.reportBillableEvent(finalOrderPrivateCar.getTripId());
                    if(reportBillableEvent){
                        break;
                    }
                    try {
                        Thread.sleep(5000L);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        }).start();
        return ResultUtil.success();
@@ -1067,14 +1126,23 @@
            orderPrivateCar.setEndLat(Double.valueOf(orderPrivateCar.getDestinationLat()));
            orderPrivateCar.setEndAddress(orderPrivateCar.getDestination());
            //修改google地图行程终点
            try {
                fleetEngineUtil.updateTrip(null, null, null, orderPrivateCar.getTripId(),
            boolean updateTrip = fleetEngineUtil.updateTrip(null, null, null, orderPrivateCar.getTripId(),
                        null, null, orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
            } catch (Exception e) {
                e.printStackTrace();
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip(null, null, null, orderPrivateCar.getTripId(),
                            null, null, orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                    if(updateTrip){
                        break;
                    }
                    try {
                        Thread.sleep(5000L);
                    } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
            }
        }
        orderPrivateCar.setDestinationLon("");
        orderPrivateCar.setDestination("");
        orderPrivateCar.setDestinationLat("");
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java
@@ -1111,7 +1111,20 @@
                    CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)) {
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!createVehicles){
                            for (int i = 0; i < 5; i++) {
                                createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(createVehicles){
                                    break;
                                }
                                try {
                                    Thread.sleep(5000L);
                                } catch (InterruptedException e) {
                                    throw new RuntimeException(e);
                                }
                            }
                        }
                    }
                }catch (Exception e){
                    e.printStackTrace();
@@ -1221,10 +1234,50 @@
                    CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!createVehicles){
                            for (int i = 0; i < 5; i++) {
                                createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(createVehicles){
                                    break;
                                }
                                try {
                                    Thread.sleep(5000L);
                                } catch (InterruptedException e) {
                                    throw new RuntimeException(e);
                                }
                            }
                        }
                        boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!updateVehicles){
                            for (int i = 0; i < 5; i++) {
                                updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(updateVehicles){
                                    break;
                                }
                                try {
                                    Thread.sleep(5000L);
                                } catch (InterruptedException e) {
                                    throw new RuntimeException(e);
                                }
                            }
                        }
                    }else{
                        fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!updateVehicles){
                            for (int i = 0; i < 5; i++) {
                                updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(updateVehicles){
                                    break;
                                }
                                try {
                                    Thread.sleep(5000L);
                                } catch (InterruptedException e) {
                                    throw new RuntimeException(e);
                                }
                            }
                        }
                    }
                }catch (Exception e){
                    e.printStackTrace();
@@ -1289,10 +1342,50 @@
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                        if(ToolUtil.isEmpty(vehicles)){
                            fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            if(!createVehicles){
                                for (int i = 0; i < 5; i++) {
                                    createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(createVehicles){
                                        break;
                                    }
                                    try {
                                        Thread.sleep(5000L);
                                    } catch (InterruptedException e) {
                                        throw new RuntimeException(e);
                                    }
                                }
                            }
                            boolean updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            if(!updateVehicles){
                                for (int i = 0; i < 5; i++) {
                                    updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(updateVehicles){
                                        break;
                                    }
                                    try {
                                        Thread.sleep(5000L);
                                    } catch (InterruptedException e) {
                                        throw new RuntimeException(e);
                                    }
                                }
                            }
                        }else{
                            fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            boolean updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                            if(!updateVehicles){
                                for (int i = 0; i < 5; i++) {
                                    updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(updateVehicles){
                                        break;
                                    }
                                    try {
                                        Thread.sleep(5000L);
                                    } catch (InterruptedException e) {
                                        throw new RuntimeException(e);
                                    }
                                }
                            }
                        }
                    }catch (Exception e){
                        e.printStackTrace();
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -431,13 +431,53 @@
                                String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                if(ToolUtil.isEmpty(vehicles)){
                                    CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                    fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!createVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(createVehicles){
                                                break;
                                }
                                fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderPrivateCar.getTripId(),
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }
                                boolean createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderPrivateCar.getTripId(),
                                        orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(),  orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                                if(!createTrip){
                                    for (int i = 0; i < 5; i++) {
                                        createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderPrivateCar.getTripId(),
                                                orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(),  orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                                        if(createTrip){
                                            break;
                                        }
                                        try {
                                            Thread.sleep(5000L);
                                        } catch (InterruptedException e) {
                                            throw new RuntimeException(e);
                                        }
                                    }
                                }
                            }
                            //开始修改行程数据
                            fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                            boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                            if(!updateTrip){
                                for (int i = 0; i < 5; i++) {
                                    updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderPrivateCar.getTripId(), null, null, null, null);
                                    if(updateTrip){
                                        break;
                                    }
                                    try {
                                        Thread.sleep(5000L);
                                    } catch (InterruptedException e) {
                                        throw new RuntimeException(e);
                                    }
                                }
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                        }
@@ -614,13 +654,53 @@
                                String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                if(ToolUtil.isEmpty(vehicles)){
                                    CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                    fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!createVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(createVehicles){
                                                break;
                                }
                                fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }
                                boolean createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
                                        orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(),  orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                                if(!createTrip){
                                    for (int i = 0; i < 5; i++) {
                                        createTrip = fleetEngineUtil.createTrip(car.getVehicleId(), 1, orderLogistics.getTripId(),
                                                orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(),  orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                                        if(createTrip){
                                            break;
                                        }
                                        try {
                                            Thread.sleep(5000L);
                                        } catch (InterruptedException e) {
                                            throw new RuntimeException(e);
                                        }
                                    }
                                }
                            }else{
                                //开始修改行程数据
                                fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                                boolean updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                                if(!updateTrip){
                                    for (int i = 0; i < 5; i++) {
                                        updateTrip = fleetEngineUtil.updateTrip(null, car.getVehicleId(), null, orderLogistics.getTripId(), null, null, null, null);
                                        if(updateTrip){
                                            break;
                                        }
                                        try {
                                            Thread.sleep(5000L);
                                        } catch (InterruptedException e) {
                                            throw new RuntimeException(e);
                                        }
                                    }
                                }
                            }
                        }catch (Exception e){
                            e.printStackTrace();
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java
@@ -402,10 +402,50 @@
                                CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                if(ToolUtil.isEmpty(vehicles)){
                                    fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!createVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(createVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                    boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!updateVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(updateVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }else{
                                    fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!updateVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(updateVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }
                            }catch (Exception e){
                                e.printStackTrace();
@@ -460,10 +500,50 @@
                                CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                if(ToolUtil.isEmpty(vehicles)){
                                    fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!createVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(createVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                    boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!updateVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(updateVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }else{
                                    fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!updateVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(updateVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }
                            }catch (Exception e){
                                e.printStackTrace();
@@ -517,10 +597,50 @@
                                CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                if(ToolUtil.isEmpty(vehicles)){
                                    fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!createVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(createVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                    boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!updateVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(updateVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }else{
                                    fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                    if(!updateVehicles){
                                        for (int i = 0; i < 5; i++) {
                                            updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                            if(updateVehicles){
                                                break;
                                            }
                                            try {
                                                Thread.sleep(5000L);
                                            } catch (InterruptedException e) {
                                                throw new RuntimeException(e);
                                            }
                                        }
                                    }
                                }
                            }catch (Exception e){
                                e.printStackTrace();
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -167,7 +167,7 @@
     * @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<>();
@@ -207,7 +207,8 @@
                    return createVehicles(maximumCapacity, licensePlate, id);
                }
            }
            throw new Exception(response.body());
            log.error("添加车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
            return false;
        }
        /**
         * 返回结果
@@ -230,7 +231,7 @@
         *     "waypointsVersion": "2024-05-23T03:05:23.293329Z"
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -241,7 +242,7 @@
     * @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)){
@@ -305,7 +306,8 @@
                    return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
                }
            }
            throw new Exception(response.body());
            log.error("修改车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
            return false;
        }
        /**
         * 返回结果
@@ -328,7 +330,7 @@
         *   "waypointsVersion": "2024-05-23T03:05:23.293329Z"
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -337,7 +339,7 @@
     * @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<>();
@@ -366,7 +368,8 @@
                    return getVehicles(id);
                }
            }
            throw new Exception(response.body());
            log.error("查询车辆信息异常:  id={},   body={}", id, response.body());
            return null;
        }
        /**
         * 返回结果
@@ -446,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<>();
@@ -495,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;
        }
        /**
         * 返回结果
@@ -612,7 +616,7 @@
         *     "currentRouteSegmentTrafficVersion": "2024-05-27T02:05:37.941167Z"
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -628,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)){
@@ -714,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;
        }
        /**
         * 返回结果
@@ -834,7 +839,7 @@
         *     "numberOfPassengers": 1
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -844,7 +849,7 @@
     * @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<>();
@@ -873,7 +878,8 @@
                    return getTrip(tripId);
                }
            }
            throw new Exception(response.body());
            logger.error("获取行程异常:  tripId={}  body={}", tripId, response.body());
            return null;
        }
        /**
         * 返回结果
@@ -963,7 +969,7 @@
     * @param tripId 行程id
     * @return
     */
    public boolean reportBillableEvent(String tripId) throws Exception {
    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);
@@ -973,22 +979,13 @@
        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(response.body());
//            throw new Exception(response.body());
//            logger.error("google地图上报结算   tripId:{}   异常:{}", tripId,response.body());
//            return false;
//        }
        return true;
    }
DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/BaseWarpper.java
@@ -34,6 +34,9 @@
    @ApiModelProperty("其他内容")
    private Object data;
    @ApiModelProperty("类型(1=活动收入,2=跑单收入,3=取消订单收入,4=改派订单收入,5=优惠券补贴,6=折扣不贴,7=红包补贴)")
    private Integer type;
    public BaseWarpper() {
        this.id = 0;
        this.name = "";
@@ -126,6 +129,14 @@
        this.data = data;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    @Override
    public String toString() {
        return "BaseWarpper{" +
@@ -155,6 +166,7 @@
            baseWarpper.setLat(null != map.get("lat") ? Double.valueOf(map.get("lat").toString()) : 0.0);
            baseWarpper.setDay(null != map.get("day") ? map.get("day").toString() : "");
            baseWarpper.setData(null != map.get("data") ? map.get("data") : new Object());
            baseWarpper.setType(null != map.get("type") ? Integer.valueOf(map.get("type").toString()) : 0);
        }
        return baseWarpper;
    }
DriverIGOTravel/guns-core/src/main/java/com/stylefeng/guns/core/config/properties/DruidProperties.java
@@ -20,11 +20,11 @@
    private String driverClassName = "com.mysql.cj.jdbc.Driver";
    private Integer initialSize = 2;
    private Integer initialSize = 100;
    private Integer minIdle = 1;
    private Integer minIdle = 100;
    private Integer maxActive = 20;
    private Integer maxActive = 500;
    private Integer maxWait = 60000;
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderLogisticsController.java
@@ -140,7 +140,16 @@
        
        //修改行程信息
        try {
            fleetEngineUtil.updateTrip("CANCELED", null, null, tOrderLogistics.getTripId(), null, null, null, null);
            boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tOrderLogistics.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tOrderLogistics.getTripId(), null, null, null, null);
                    if(updateTrip){
                        break;
                    }
                    Thread.sleep(5000L);
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
@@ -612,7 +612,16 @@
    
        //修改行程信息
        try {
            fleetEngineUtil.updateTrip("CANCELED", null, null, tOrderPrivateCar.getTripId(), null, null, null, null);
            boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tOrderPrivateCar.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, tOrderPrivateCar.getTripId(), null, null, null, null);
                    if(updateTrip){
                        break;
                    }
                    Thread.sleep(5000L);
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
ManagementIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserActivityDiscount1ServiceImpl.java
@@ -406,7 +406,7 @@
                        tEmail.setLink(link);
                        tEmail.setUserId(user.getId());
                        tEmail.setType(1);
                        tEmail.setName("Discount activities");
                        tEmail.setName(1 == language ? "折扣活动" : 2 == language ? "Discount activities" : "Activités à rabais");
                        tEmail.setCreateTime(new Date());
                        int i = cn.hutool.core.date.DateUtil.dayOfWeek(new Date())-1;
                        tEmail.setWeek(EmailUtil.getWeek(2,i));
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;
    }
}
ManagementIGOTravel/guns-admin/src/main/webapp/WEB-INF/view/system/settlementAllocation/settlementAllocation.html
@@ -12,18 +12,18 @@
                            <#button name="修改" icon="fa-edit" clickFun="SettlementAllocation.setSettlementAllocation()"/>
                            <div class="form-group">
                                <input type="radio" name="type" value="1" ${null != item && item.type == '1' ? 'checked' : ''}>
                                每天超过 <input type="number" min="1" max="31"class="date"  value="${null != item && item.type == '1' ? item.maxPrice : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> 必须结算
                                每天&nbsp;&nbsp;&nbsp;&nbsp;超过 <input type="number" class="date"  value="${null != item && item.type == '1' ? item.maxPrice : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> 必须结算
                            </div>
                            <div class="form-group">
                                <input type="radio" name="type" value="3" ${null != item && item.type == '3' ? 'checked' : ''}> 每月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                每月<input type="number" min="1" max="31" class="date" value="${null != item && item.type == '3' ? item.day : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> 号可结算
                                每月&nbsp;&nbsp;&nbsp;&nbsp;每月<input type="number" min="1" max="31" class="date" value="${null != item && item.type == '3' ? item.day : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> 号可结算
                            </div>
                            <div class="form-group">
                                <input type="radio" name="type" value="2" ${null != item && item.type == '2' ? 'checked' : ''}> 每周&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                每周 <input type="number" min="1" max="7" class="date" value="${null != item && item.type == '2' ? item.day : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> (几)可结算
                                每周&nbsp;&nbsp;&nbsp;&nbsp;每周<input type="number" min="1" max="7" class="date" value="${null != item && item.type == '2' ? item.day : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> (几)可结算
                            </div>
                            <div class="form-group">
                                &nbsp;&nbsp;&nbsp;&nbsp;周/月日上限超过 <input type="number" min="1" max="31" id="maxPrice" value="${null != item && item.type != '1' ? item.maxPrice : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> 必须结算
                                &nbsp;&nbsp;&nbsp;&nbsp;周/月&nbsp;&nbsp;&nbsp;&nbsp;日上限超过 <input type="number" id="maxPrice" value="${null != item && item.type != '1' ? item.maxPrice : ''}" style="background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> 必须结算
                            </div>
                        </div>
                        <div class="row">
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.google.api.client.http.UrlEncodedParser;
import com.stylefeng.guns.core.util.MD5Util;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.CharteredCar.server.IOrderCharteredCarService;
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
@@ -1265,6 +1266,14 @@
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            String format = String.format("payType=%s&orderId=%s&orderType=%s", payType, orderId, orderType);
            String key = MD5Util.encrypt(format);
            String value = redisUtil.getValue(key);
            if(ToolUtil.isNotEmpty(value) && (System.currentTimeMillis() - Long.valueOf(value)) >= 1000){
                return ResultUtil.error(language == 1 ? "请勿重复操作" : language == 2 ? "Don't repeat the operation" : "Ne répétez pas l’opération");
            }
            redisUtil.setStrValue(key, System.currentTimeMillis() + "", 5);
            switch (orderType){
                case 1:
                    return orderPrivateCarService.payPrivateCarOrder(payType, bankCardId, orderId, couponId, redDeduction, type, language);
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -49,6 +49,7 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
@@ -787,14 +788,42 @@
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!createVehicles){
                            for (int i = 0; i < 5; i++) {
                                createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(createVehicles){
                                    break;
                                }
                                Thread.sleep(5000L);
                            }
                        }
                        boolean updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!updateVehicles){
                            for (int i = 0; i < 5; i++) {
                                updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(updateVehicles){
                                    break;
                                }
                                Thread.sleep(5000L);
                            }
                        }
                    }
        
                }
                //创建行程数据
                fleetEngineUtil.createTrip(vehicleId, 1, orderLogistics.getTripId(),
                boolean createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderLogistics.getTripId(),
                        orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                if(!createTrip){
                    for (int i = 0; i < 5; i++) {
                        createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderLogistics.getTripId(),
                                orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                        if(createTrip){
                            break;
                        }
                        Thread.sleep(5000L);
                    }
                }
    
            }catch (Exception e){
                e.printStackTrace();
@@ -1011,10 +1040,14 @@
     * @throws Exception
     */
    @Override
    @Transactional
    public ResultUtil payLogisticsOrder(Integer payType, Integer bankCardId, Integer orderId,Integer couponId, Integer redDeduction, Integer type, Integer language) throws Exception {
        OrderLogistics orderLogistics = this.selectById(orderId);
        if(orderLogistics.getState() != 7){
        if(orderLogistics.getState() == 8 || orderLogistics.getState() == 9){
            return ResultUtil.error(language == 1 ? "订单已完成支付,不允许重复支付" : language == 2 ? "The order has been paid, recurring payments is not allowed." : "La commande a été payée, les paiements récurrents ne sont pas autorisés.", "");
        }
        if(orderLogistics.getState() != 7){
            return ResultUtil.error(language == 1 ? "订单不在待支付状态,不允许支付" : language == 2 ? "The order is no longer with Pending Payment, making payments is not allowed." : "La commande n’est plus en attente de paiement, il n’est pas permis d’effectuer des paiements.", "");
        }
        Integer uid = orderLogistics.getUserId();
        BigDecimal orderMoney = new BigDecimal(orderLogistics.getOrderMoney());
@@ -1044,7 +1077,6 @@
        //计算优惠券
        UserCouponRecord userCouponRecord = null;
        if(null != couponId){
            //TODO 待翻译
            if(null != redDeduction && 1 == redDeduction){
                return ResultUtil.error(language == 1 ? "优惠券和红包不能同时使用" : language == 2 ? "Coupons and lucky-promo cannot be used at the same time." : "Les coupons et les bonus ne peuvent pas être utilisés en même temps", "");
            }
@@ -1276,14 +1308,6 @@
    
    
            language = userInfo.getLanguage();
            String payTypeChinese = "";
            String payTypeEnglish = "";
            String payTypeFrench = "";
            if(orderLogistics.getPayType() == 3){
                payTypeChinese = "余额支付";
                payTypeEnglish = "I-GO Wallet";
                payTypeFrench = "Portefeuille I-GO";
            }
    
            if(ToolUtil.isNotEmpty(userInfo.getEmail())){
                String path = templatePath + "user/receiptLogistics.html";
@@ -1370,7 +1394,7 @@
                    Element xj_chinese = document.getElementById("xj_chinese");
                    xj_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_chinese = document.getElementById("pay_type_chinese");
                    pay_type_chinese.text(payTypeChinese);
                    pay_type_chinese.text("余额支付");
                    Element pay_money_chinese = document.getElementById("pay_money_chinese");
                    pay_money_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_chinese = document.getElementById("dispute_chinese");
@@ -1478,7 +1502,7 @@
                    Element xj_english = document.getElementById("xj_english");
                    xj_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_english = document.getElementById("pay_type_english");
                    pay_type_english.text(payTypeEnglish);
                    pay_type_english.text("I-GO Wallet");
                    Element pay_money_english = document.getElementById("pay_money_english");
                    pay_money_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_english = document.getElementById("dispute_english");
@@ -1586,7 +1610,7 @@
                    Element xj_french = document.getElementById("xj_french");
                    xj_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_french = document.getElementById("pay_type_french");
                    pay_type_french.text(payTypeFrench);
                    pay_type_french.text("Portefeuille I-GO");
                    Element pay_money_french = document.getElementById("pay_money_french");
                    pay_money_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_french = document.getElementById("dispute_french");
@@ -1811,10 +1835,37 @@
                                            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                            if(ToolUtil.isEmpty(vehicles)){
                                                fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                if(!createVehicles){
                                                    for (int i = 0; i < 5; i++) {
                                                        createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                        if(createVehicles){
                                                            break;
                                                        }
                                                        Thread.sleep(5000L);
                                                    }
                                                }
                                                boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                if(!updateVehicles){
                                                    for (int i = 0; i < 5; i++) {
                                                        updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                        if(updateVehicles){
                                                            break;
                                                        }
                                                        Thread.sleep(5000L);
                                                    }
                                                }
                                            }else{
                                                fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                if(!updateVehicles){
                                                    for (int i = 0; i < 5; i++) {
                                                        updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                        if(updateVehicles){
                                                            break;
                                                        }
                                                        Thread.sleep(5000L);
                                                    }
                                                }
                                            }
                                        }catch (Exception e){
                                            e.printStackTrace();
@@ -1888,15 +1939,6 @@
                    "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", uid, 1);
    
            language = userInfo.getLanguage();
            String payTypeChinese = "";
            String payTypeEnglish = "";
            String payTypeFrench = "";
            if(orderLogistics.getPayType() == 3){
                payTypeChinese = "现金";
                payTypeEnglish = "Cash";
                payTypeFrench = "En espèces";
            }
            if(ToolUtil.isNotEmpty(userInfo.getEmail())){
                String path = templatePath + "user/receiptLogistics.html";
                Document document = Jsoup.parse(new File(path), "UTF-8");
@@ -1981,7 +2023,7 @@
                    Element xj_chinese = document.getElementById("xj_chinese");
                    xj_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_chinese = document.getElementById("pay_type_chinese");
                    pay_type_chinese.text(payTypeChinese);
                    pay_type_chinese.text("现金");
                    Element pay_money_chinese = document.getElementById("pay_money_chinese");
                    pay_money_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_chinese = document.getElementById("dispute_chinese");
@@ -2089,7 +2131,7 @@
                    Element xj_english = document.getElementById("xj_english");
                    xj_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_english = document.getElementById("pay_type_english");
                    pay_type_english.text(payTypeEnglish);
                    pay_type_english.text("Cash");
                    Element pay_money_english = document.getElementById("pay_money_english");
                    pay_money_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_english = document.getElementById("dispute_english");
@@ -2197,7 +2239,7 @@
                    Element xj_french = document.getElementById("xj_french");
                    xj_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_french = document.getElementById("pay_type_french");
                    pay_type_french.text(payTypeFrench);
                    pay_type_french.text("En espèces");
                    Element pay_money_french = document.getElementById("pay_money_french");
                    pay_money_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_french = document.getElementById("dispute_french");
@@ -2501,6 +2543,29 @@
            query.setState(2);
            query.setCode(order_id);
            paymentRecordService.updateById(query);
            if(orderLogistics.getIsplatPay()==1){
                //添加已收入明细
                Company company = companyService.selectById(orderLogistics.getCompanyId());
                Double speMoney = company.getSpeMoney();
                BigDecimal d = null;//企业收入
                BigDecimal c = null;//司机收入
                if(company.getIsSpeFixedOrProportional() == 2){//固定
                    d = new BigDecimal(speMoney);
                    c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
                }
                if(company.getIsSpeFixedOrProportional() == 1){//比例
                    Double price = orderLogistics.getStartMoney() + orderLogistics.getMileageMoney() + orderLogistics.getWaitMoney() + orderLogistics.getDurationMoney() + orderLogistics.getLongDistanceMoney();
                    d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                    c = new BigDecimal(orderLogistics.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                }
                incomeService.saveData(1, orderLogistics.getCompanyId(), 2, orderLogistics.getId(), 4, d.doubleValue());
                incomeService.saveData(2, orderLogistics.getDriverId(), 2, orderLogistics.getId(), 4, c.doubleValue());
                Driver driver = driverService.selectById(orderLogistics.getDriverId());
                driver.setBusinessMoney(new BigDecimal(null != driver.getBusinessMoney() ? driver.getBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driver.setLaveBusinessMoney(new BigDecimal(null != driver.getLaveBusinessMoney() ? driver.getLaveBusinessMoney() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(c).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driverService.updateById(driver);
            }
            // TODO: 2020/5/24 这里需要给司机和用户推送订单状态
            new Thread(new Runnable() {
@@ -2517,20 +2582,6 @@
                    "Vous avez payé la commande de livraison avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
    
            language = userInfo.getLanguage();
            String payTypeChinese = "";
            String payTypeEnglish = "";
            String payTypeFrench = "";
            if(orderLogistics.getPayType() == 1){
                payTypeChinese = "手机支付";
                payTypeEnglish = "Mobile money";
                payTypeFrench = "Argent mobile";
            }
            if(orderLogistics.getPayType() == 2){
                payTypeChinese = "银行卡支付";
                payTypeEnglish = "Bank card";
                payTypeFrench = "Carte bancaire";
            }
            if(ToolUtil.isNotEmpty(userInfo.getEmail())){
                String path = templatePath + "user/receiptLogistics.html";
                Document document = Jsoup.parse(new File(path), "UTF-8");
@@ -2616,7 +2667,7 @@
                    Element xj_chinese = document.getElementById("xj_chinese");
                    xj_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_chinese = document.getElementById("pay_type_chinese");
                    pay_type_chinese.text(payTypeChinese);
                    pay_type_chinese.text(orderLogistics.getPayType() == 1 ? "手机支付" : (orderLogistics.getPayType() == 2?"银行卡支付":(orderLogistics.getPayType() == 3?"余额支付":"现金支付")));
                    Element pay_money_chinese = document.getElementById("pay_money_chinese");
                    pay_money_chinese.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_chinese = document.getElementById("dispute_chinese");
@@ -2724,7 +2775,7 @@
                    Element xj_english = document.getElementById("xj_english");
                    xj_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_english = document.getElementById("pay_type_english");
                    pay_type_english.text(payTypeEnglish);
                    pay_type_english.text(orderLogistics.getPayType() == 1 ? "Mobile money" :(orderLogistics.getPayType() == 2?"Bank card":(orderLogistics.getPayType() == 3?"I-GO Wallet":"Cash")));
                    Element pay_money_english = document.getElementById("pay_money_english");
                    pay_money_english.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_english = document.getElementById("dispute_english");
@@ -2832,7 +2883,7 @@
                    Element xj_french = document.getElementById("xj_french");
                    xj_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element pay_type_french = document.getElementById("pay_type_french");
                    pay_type_french.text(payTypeFrench);
                    pay_type_french.text(orderLogistics.getPayType() == 1 ? "Argent mobile" : (orderLogistics.getPayType() == 2?"Carte bancaire":(orderLogistics.getPayType() == 3?"Portefeuille I-GO":"En espèces")));
                    Element pay_money_french = document.getElementById("pay_money_french");
                    pay_money_french.text("GHS " + new BigDecimal(orderLogistics.getPayMoney()).setScale(2, RoundingMode.HALF_EVEN));
                    Element dispute_french = document.getElementById("dispute_french");
@@ -3202,9 +3253,18 @@
        
        if((orderLogistics.getState() == 10 || orderLogistics.getState() == 12) && null != orderLogistics.getDriverId()){
            //修改行程信息
            fleetEngineUtil.updateTrip("CANCELED", null, null, orderLogistics.getTripId(), null, null, null, null);
            boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, orderLogistics.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, orderLogistics.getTripId(), null, null, null, null);
                    if(updateTrip){
                        break;
        }
        log.warn("取消订单:{}   {}", System.currentTimeMillis(), orderLogistics.getTrackId());
                    Thread.sleep(5000L);
                }
            }
        }
        log.warn("取消订单:{}   {}", System.currentTimeMillis(), orderLogistics.getTripId());
        //添加消息
        systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功取消包裹订单,谢谢使用!" : language == 2 ? "You've cancelled the delivery order successfully, thank you for using I-GO "
                : "Vous avez annulé la commande de livraison avec succès, merci d’utiliser I-GO", orderLogistics.getUserId(), 1);
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -46,6 +46,7 @@
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils;
@@ -388,13 +389,41 @@
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!createVehicles){
                            for (int i = 0; i < 5; i++) {
                                createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(createVehicles){
                                    break;
                                }
                                Thread.sleep(5000L);
                            }
                        }
                        boolean updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(!updateVehicles){
                            for (int i = 0; i < 5; i++) {
                                updateVehicles = fleetEngineUtil.updateVehicles("ONLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                if(updateVehicles){
                                    break;
                                }
                                Thread.sleep(5000L);
                            }
                        }
                    }
    
                    //创建行程数据
                    fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
                    boolean createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
                            orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                    if(!createTrip){
                        for (int i = 0; i < 5; i++) {
                            createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
                                    orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
                            if(createTrip){
                                break;
                            }
                            Thread.sleep(5000L);
                        }
                    }
                }
                
            }catch (Exception e){
@@ -859,9 +888,18 @@
        
        //修改行程信息
        if((orderPrivateCar.getState() == 10 || orderPrivateCar.getState() == 12) && null != orderPrivateCar.getDriverId()){
            fleetEngineUtil.updateTrip("CANCELED", null, null, orderPrivateCar.getTripId(), null, null, null, null);
            boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, orderPrivateCar.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
                    updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, orderPrivateCar.getTripId(), null, null, null, null);
                    if(updateTrip){
                        break;
        }
        log.warn("取消订单:{}   {}", System.currentTimeMillis(), orderPrivateCar.getTrackId());
                    Thread.sleep(5000L);
                }
            }
        }
        log.warn("取消订单:{}   {}", System.currentTimeMillis(), orderPrivateCar.getTripId());
        //添加消息
        systemNoticeService.addSystemNotice(1, language == 1 ? "您已成功取消出行订单,谢谢使用!" : language == 2 ? "You've cancelled the ride order successfully, thank you for using I-GO " : "Vous avez annulé la commande de course avec succès, merci d’utiliser I-GO", orderPrivateCar.getUserId(), 1);
        Map<String, Object> map = new HashMap<>();
@@ -1207,6 +1245,7 @@
    @Override
    @Transactional
    public ResultUtil payPrivateCarOrder(Integer payType, Integer bankCardId, Integer orderId, Integer couponId, Integer redDeduction, Integer type, Integer language) throws Exception {
        OrderPrivateCar orderPrivateCar = this.selectById(orderId);
        if(orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9){
@@ -1987,10 +2026,37 @@
                                            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                            if(ToolUtil.isEmpty(vehicles)){
                                                fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                if(!createVehicles){
                                                    for (int i = 0; i < 5; i++) {
                                                        createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                        if(createVehicles){
                                                            break;
                                                        }
                                                        Thread.sleep(5000L);
                                                    }
                                                }
                                                boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                if(!updateVehicles){
                                                    for (int i = 0; i < 5; i++) {
                                                        updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                        if(updateVehicles){
                                                            break;
                                                        }
                                                        Thread.sleep(5000L);
                                                    }
                                                }
                                            }else{
                                                fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                boolean updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                if(!updateVehicles){
                                                    for (int i = 0; i < 5; i++) {
                                                        updateVehicles = fleetEngineUtil.updateVehicles("OFFLINE", carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                                                        if(updateVehicles){
                                                            break;
                                                        }
                                                        Thread.sleep(5000L);
                                                    }
                                                }
                                            }
                                        }catch (Exception e){
                                            e.printStackTrace();
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -12,6 +12,7 @@
import com.google.fleetengine.auth.token.VehicleClaims;
import com.google.fleetengine.auth.token.factory.signer.*;
import com.stylefeng.guns.modular.system.util.RedisUtil;
import com.stylefeng.guns.modular.system.util.UUIDUtil;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,6 +53,8 @@
    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";
//
@@ -164,7 +167,7 @@
     * @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<>();
@@ -204,7 +207,8 @@
                    return createVehicles(maximumCapacity, licensePlate, id);
                }
            }
            throw new Exception(response.body());
            log.error("添加车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
            return false;
        }
        /**
         * 返回结果
@@ -227,7 +231,7 @@
         *     "waypointsVersion": "2024-05-23T03:05:23.293329Z"
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -238,7 +242,7 @@
     * @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)){
@@ -302,7 +306,8 @@
                    return updateVehicles(vehicleState, maximumCapacity, licensePlate, id);
                }
            }
            throw new Exception(response.body());
            log.error("修改车辆信息异常:  licensePlate={},   body={}", licensePlate, response.body());
            return false;
        }
        /**
         * 返回结果
@@ -325,7 +330,7 @@
         *   "waypointsVersion": "2024-05-23T03:05:23.293329Z"
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -334,7 +339,7 @@
     * @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<>();
@@ -363,7 +368,8 @@
                    return getVehicles(id);
                }
            }
            throw new Exception(response.body());
            log.error("查询车辆信息异常:  id={},   body={}", id, response.body());
            return null;
        }
        /**
         * 返回结果
@@ -443,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<>();
@@ -492,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;
        }
        /**
         * 返回结果
@@ -609,7 +616,7 @@
         *     "currentRouteSegmentTrafficVersion": "2024-05-27T02:05:37.941167Z"
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -625,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)){
@@ -711,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;
        }
        /**
         * 返回结果
@@ -831,7 +839,7 @@
         *     "numberOfPassengers": 1
         * }
         */
        return response.body();
        return true;
    }
    
    
@@ -841,7 +849,7 @@
     * @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<>();
@@ -870,7 +878,8 @@
                    return getTrip(tripId);
                }
            }
            throw new Exception(response.body());
            logger.error("获取行程异常:  tripId={}  body={}", tripId, response.body());
            return null;
        }
        /**
         * 返回结果
@@ -953,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;
    }
}
UserIGOTravel/guns-core/src/main/java/com/stylefeng/guns/core/config/properties/DruidProperties.java
@@ -20,11 +20,11 @@
    private String driverClassName = "com.mysql.cj.jdbc.Driver";
    private Integer initialSize = 2;
    private Integer initialSize = 100;
    private Integer minIdle = 1;
    private Integer minIdle = 100;
    private Integer maxActive = 20;
    private Integer maxActive = 500;
    private Integer maxWait = 60000;