Pu Zhibing
2024-11-09 bd6b419b58eef18cfcb5da6222d00e6f88d5166c
修改bug和翻译
12个文件已修改
1107 ■■■■■ 已修改文件
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java 440 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 436 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CompanyMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/PhoneMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CompanyMapper.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/PhoneMapper.xml 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -1045,6 +1045,13 @@
            if(null == uid){
                return ResultUtil.tokenErr();
            }
            String format = String.format("uid=%s&id=%s&orderType=%s&payType=%s&type=%s", uid, id, orderType, payType, type);
            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.cancleOrderPrivateCar(id, payType, bankCardId, cancleId, type, language);
@@ -1426,6 +1433,7 @@
    @ResponseBody
    @PostMapping("/base/wxCancelOrderTaxi")
    public CallbackResponse wxCancelOrderTaxi(@RequestBody CallbackRequest callbackRequest){
        log.info("取消订单支付回调结果:{}", JSON.toJSONString(callbackRequest));
        CallbackResponse callbackResponse = new CallbackResponse();
        try {
            /**
@@ -1477,6 +1485,7 @@
        }catch (Exception e){
            e.printStackTrace();
        }
        log.info("取消订单支付回调处理结束:{}", JSON.toJSONString(callbackResponse));
        return callbackResponse;
    }
@@ -1528,6 +1537,7 @@
    @ResponseBody
    @PostMapping("/base/wxPayOrderTaxi")
    public CallbackResponse wxPayOrderTaxi(@RequestBody CallbackRequest callbackRequest){
        log.info("订单完成支付回调结果:{}", JSON.toJSONString(callbackRequest));
        CallbackResponse callbackResponse = new CallbackResponse();
        try {
            /**
@@ -1582,6 +1592,7 @@
        }catch (Exception e){
            e.printStackTrace();
        }
        log.info("订单完成支付回调处理结束:{}", JSON.toJSONString(callbackResponse));
        return callbackResponse;
    }
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/smallLogistics/server/impl/OrderLogisticsServiceImpl.java
@@ -773,62 +773,75 @@
        UserInfo userInfo = userInfoService.selectById(uid);
        userInfo.setLanguage(language);
        userInfoService.updateById(userInfo);
        new Thread(() -> {
            try {
                String vehicleId = null;
                if(null != orderLogistics.getDriverId()){
                    Driver driver = driverService.selectById(orderLogistics.getDriverId());
                    Car car = carMapper.selectById(driver.getCarId());
                    if(!StringUtils.hasLength(car.getVehicleId())){
                        car.setVehicleId(UUIDUtil.getRandomCode());
                        carMapper.updateById(car);
                    }
                    //查询车辆信息,没有则创建信息
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        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);
                            }
                        }
                    }
                }
                //创建行程数据
                boolean createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderLogistics.getTripId(),
                        orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
                if(!createTrip){
        //google创建车辆信息
        String vehicleId = null;
        if(null != orderLogistics.getDriverId()){
            Driver driver = driverService.selectById(orderLogistics.getDriverId());
            Car car = carMapper.selectById(driver.getCarId());
            if(!StringUtils.hasLength(car.getVehicleId())){
                car.setVehicleId(UUIDUtil.getRandomCode());
                carMapper.updateById(car);
            }
            //查询车辆信息,没有则创建信息
            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
            if(ToolUtil.isEmpty(vehicles)){
                CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                boolean createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                if(!createVehicles){
                    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){
                        createVehicles = fleetEngineUtil.createVehicles(carModel.getSeat() - 1, car.getCarLicensePlate(), car.getVehicleId());
                        if(createVehicles){
                            break;
                        }
                        Thread.sleep(5000L);
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
                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);
                    }
                }
            }
        }).start();
        }
        //创建行程数据
        String trip = fleetEngineUtil.getTrip(orderLogistics.getTripId());
        int count = this.selectCount(new EntityWrapper<OrderLogistics>().eq("tripId", orderLogistics.getTripId()));
        int count1 = orderPrivateCarService.selectCount(new EntityWrapper<OrderPrivateCar>().eq("tripId", orderLogistics.getTripId()));
        if(ToolUtil.isNotEmpty(trip) || (count + count1) > 0){
            String randomCode = UUIDUtil.getRandomCode();
            redisUtil.setStrValue("trip" + orderLogistics.getUserId(), randomCode);
            OrderLogistics orderLogistics1 = new OrderLogistics();
            orderLogistics1.setId(orderLogistics.getId());
            orderLogistics1.setTripId(randomCode);
            this.updateById(orderLogistics1);
            orderLogistics.setTripId(randomCode);
        }
        JSONObject createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderLogistics.getTripId(),
                orderLogistics.getStartLat().toString(), orderLogistics.getStartLon().toString(), orderLogistics.getEndLat().toString(), orderLogistics.getEndLon().toString());
        JSONObject error = createTrip.getJSONObject("error");
        if(null != error){
            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());
                error = createTrip.getJSONObject("error");
                String tripStatus = createTrip.getString("tripStatus");
                if(null == error && "NEW".equals(tripStatus)){
                    break;
                }
                try {
                    Thread.sleep(3000L);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    
        if(orderSource == 2){//扫码下单
            Driver driver = driverService.selectById(orderLogistics.getDriverId());
@@ -1129,11 +1142,11 @@
                            userRedPacketRecord.setEndTime(new Date());
                            userRedPacketRecord.setState(2);
                            multiply1 = multiply1.subtract(remainingAmount).setScale(2, RoundingMode.HALF_EVEN);
                            jsonObject.put("money", remainingAmount);
                            jsonObject.put("money", remainingAmount.setScale(2, RoundingMode.HALF_EVEN));
                            jsonArray.add(jsonObject);
                        }else if(remainingAmount.compareTo(multiply1) > 0){
                            userRedPacketRecord.setRemainingAmount(remainingAmount.subtract(multiply1).setScale(2, RoundingMode.HALF_EVEN).doubleValue());
                            jsonObject.put("money", multiply1);
                            jsonObject.put("money", multiply1.setScale(2, RoundingMode.HALF_EVEN));
                            jsonArray.add(jsonObject);
                            multiply1 = BigDecimal.ZERO;
                        }
@@ -1189,7 +1202,6 @@
            }else{
                resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
            }
            return resultUtil;
        }
        if(payType == 2) {//银行卡支付
@@ -1212,12 +1224,12 @@
            resultUtil = TinggPayUtil.checkoutRequest(checkoutRequest);
            if(resultUtil.getCode()==200){
                this.updateById(orderLogistics);
                paymentRecordService.saveData(1, null, null, orderId, 4, 2,
                        orderMoney.setScale(2, RoundingMode.HALF_EVEN).doubleValue(), null, 1);//添加预支付数据
            }else{
                resultUtil = ResultUtil.error(language == 1 ? "支付失败" : language == 2 ? "Payment failure" : "Paiement échoué", "");
            }
            return resultUtil;
        }
        if(payType == 3){//余额支付
@@ -1268,29 +1280,27 @@
                }
            }
    
            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);
            //添加已收入明细
            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() {
@@ -1314,7 +1324,7 @@
                Document document = Jsoup.parse(new File(path), "UTF-8");
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                Driver driver = driverService.selectById(orderLogistics.getDriverId());
                driver = driverService.selectById(orderLogistics.getDriverId());
                Car car = carMapper.selectById(orderLogistics.getCarId());
                Double aDouble = 0D;
                if(null != orderLogistics.getDriverId()){
@@ -1746,21 +1756,20 @@
            }
    
    
            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);
                }
            //添加已收入明细
            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, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
//                incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
@@ -1768,110 +1777,109 @@
//                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);
                //记录司机待结算金额
                if(d.compareTo(new BigDecimal(0)) > 0){
                    SettlementDetail settlementDetail = new SettlementDetail();
                    settlementDetail.setOrderId(orderId);
                    settlementDetail.setOrderType(4);
                    settlementDetail.setDriverId(driver.getId());
                    settlementDetail.setOrderMoney(orderLogistics.getOrderMoney());
                    settlementDetail.setPrice(d.doubleValue());
                    settlementDetail.setCreateTime(new Date());
                    settlementDetailService.insert(settlementDetail);
                    SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
                    if(null != settlementAllocation){
                        JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
                        Double maxPrice = jsonObject.getDouble("maxPrice");
                        Integer type1 = jsonObject.getInteger("type");
                        if(null != maxPrice){
                            List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driver.getId())
                                    .isNull("settlementRecordId").last(" and DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(createTime, '%Y-%m-%d')"));
                            BigDecimal total = new BigDecimal(0);
                            for (SettlementDetail detail : settlementDetailList) {
                                total = total.add(new BigDecimal(detail.getPrice()));
                            }
                            //日结算
                            if(maxPrice.compareTo(total.doubleValue()) <= 0){
                                SettlementRecord settlementRecord = settlementRecordService.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", orderLogistics.getDriverId())
                                        .eq("type", type1).eq("paymentStatus", 1).last(" and day = DATE_FORMAT(now(), '%Y-%m-%d')"));
                                if(null == settlementRecord){
                                    settlementRecord = new SettlementRecord();
                                    settlementRecord.setDay(new Date());
                                    settlementRecord.setDriverId(orderLogistics.getDriverId());
                                    settlementRecord.setType(type1);
                                    settlementRecord.setPaymentStatus(1);
                                    settlementRecord.setPayMoney(total.doubleValue());
                                    settlementRecord.setInsertTime(new Date());
                                    settlementRecordService.insert(settlementRecord);
                                }else{
                                    settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue());
                                    settlementRecordService.updateById(settlementRecord);
                                }
                                for (SettlementDetail detail : settlementDetailList) {
                                    detail.setSettlementRecordId(settlementRecord.getId());
                                    settlementDetailService.updateById(detail);
                                }
                                //强制司机下班
                                DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
                                        .eq("driverId", orderLogistics.getDriverId()).eq("state", 1));
                                if(null != driverWork){
                                    driverWork.setEndTime(new Date());
                                    driverWork.setState(2);
                                    driverWorkService.updateById(driverWork);
                                    driver.setState(1);
                                    driverService.updateById(driver);
                                    Car car = carService.selectById(driver.getCarId());
                                    if(!org.apache.shiro.util.StringUtils.hasLength(car.getVehicleId())){
                                        car.setVehicleId(UUIDUtil.getRandomCode());
                                        carService.updateById(car);
                                    }
    
                                    //司机下班,修改谷歌上的车辆信息
                                    new Thread(()->{
                                        try {
                                            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                            if(ToolUtil.isEmpty(vehicles)){
                                                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);
            //记录司机待结算金额
            if(d.compareTo(new BigDecimal(0)) > 0){
                SettlementDetail settlementDetail = new SettlementDetail();
                settlementDetail.setOrderId(orderId);
                settlementDetail.setOrderType(4);
                settlementDetail.setDriverId(driver.getId());
                settlementDetail.setOrderMoney(orderLogistics.getOrderMoney());
                settlementDetail.setPrice(d.doubleValue());
                settlementDetail.setCreateTime(new Date());
                settlementDetailService.insert(settlementDetail);
                SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
                if(null != settlementAllocation){
                    JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
                    Double maxPrice = jsonObject.getDouble("maxPrice");
                    Integer type1 = jsonObject.getInteger("type");
                    if(null != maxPrice){
                        List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driver.getId())
                                .isNull("settlementRecordId").last(" and DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(createTime, '%Y-%m-%d')"));
                        BigDecimal total = new BigDecimal(0);
                        for (SettlementDetail detail : settlementDetailList) {
                            total = total.add(new BigDecimal(detail.getPrice()));
                        }
                        //日结算
                        if(maxPrice.compareTo(total.doubleValue()) <= 0){
                            SettlementRecord settlementRecord = settlementRecordService.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", orderLogistics.getDriverId())
                                    .eq("type", type1).eq("paymentStatus", 1).last(" and day = DATE_FORMAT(now(), '%Y-%m-%d')"));
                            if(null == settlementRecord){
                                settlementRecord = new SettlementRecord();
                                settlementRecord.setDay(new Date());
                                settlementRecord.setDriverId(orderLogistics.getDriverId());
                                settlementRecord.setType(type1);
                                settlementRecord.setPaymentStatus(1);
                                settlementRecord.setPayMoney(total.doubleValue());
                                settlementRecord.setInsertTime(new Date());
                                settlementRecordService.insert(settlementRecord);
                            }else{
                                settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue());
                                settlementRecordService.updateById(settlementRecord);
                            }
                            for (SettlementDetail detail : settlementDetailList) {
                                detail.setSettlementRecordId(settlementRecord.getId());
                                settlementDetailService.updateById(detail);
                            }
                            //强制司机下班
                            DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
                                    .eq("driverId", orderLogistics.getDriverId()).eq("state", 1));
                            if(null != driverWork){
                                driverWork.setEndTime(new Date());
                                driverWork.setState(2);
                                driverWorkService.updateById(driverWork);
                                driver.setState(1);
                                driverService.updateById(driver);
                                Car car = carService.selectById(driver.getCarId());
                                if(!org.apache.shiro.util.StringUtils.hasLength(car.getVehicleId())){
                                    car.setVehicleId(UUIDUtil.getRandomCode());
                                    carService.updateById(car);
                                }
                                //司机下班,修改谷歌上的车辆信息
                                new Thread(()->{
                                    try {
                                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                        String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                        if(ToolUtil.isEmpty(vehicles)){
                                            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;
                                                    }
                                                }
                                                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{
                                                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);
                                                    }
                                                    Thread.sleep(5000L);
                                                }
                                            }
                                        }catch (Exception e){
                                            e.printStackTrace();
                                            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{
                                            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);
                                                }
                                            }
                                        }
                                    }).start();
                                }
                                    }catch (Exception e){
                                        e.printStackTrace();
                                    }
                                }).start();
                            }
                        }
                    }
@@ -2327,7 +2335,7 @@
            }
        }
        this.updateById(orderLogistics);
        this.updateAllColumnById(orderLogistics);
        return resultUtil;
    }
@@ -2543,29 +2551,28 @@
            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);
            //添加已收入明细
            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() {
@@ -2587,7 +2594,7 @@
                Document document = Jsoup.parse(new File(path), "UTF-8");
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                Driver driver = driverService.selectById(orderLogistics.getDriverId());
                driver = driverService.selectById(orderLogistics.getDriverId());
                Car car = carMapper.selectById(orderLogistics.getCarId());
                Double aDouble = 0D;
                if(null != orderLogistics.getDriverId()){
@@ -3251,7 +3258,7 @@
            driverService.updateById(driver);
        }
        
        if((orderLogistics.getState() == 10 || orderLogistics.getState() == 12) && null != orderLogistics.getDriverId()){
        if(orderLogistics.getState() == 10 || orderLogistics.getState() == 12){
            //修改行程信息
            boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, orderLogistics.getTripId(), null, null, null, null);
            if(!updateTrip){
@@ -3260,11 +3267,10 @@
                    if(updateTrip){
                        break;
                    }
                    Thread.sleep(5000L);
                    Thread.sleep(3000L);
                }
            }
        }
        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
@@ -375,61 +375,74 @@
        userInfo.setLanguage(language);
        userInfoService.updateById(userInfo);
    
        new Thread(() -> {
            try {
                if(null != orderPrivateCar.getDriverId()){
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    Car car = carMapper.selectById(driver.getCarId());
                    if(!StringUtils.hasLength(car.getVehicleId())){
                        car.setVehicleId(UUIDUtil.getRandomCode());
                        carMapper.updateById(car);
                    }
                    String vehicleId = car.getVehicleId();
                    //查询车辆信息,没有则创建信息
                    String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                    if(ToolUtil.isEmpty(vehicles)){
                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                        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);
                            }
        //google创建车辆信息
        String vehicleId = null;
        if(null != orderPrivateCar.getDriverId()) {
            Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
            Car car = carMapper.selectById(driver.getCarId());
            if (!StringUtils.hasLength(car.getVehicleId())) {
                car.setVehicleId(UUIDUtil.getRandomCode());
                carMapper.updateById(car);
            }
            vehicleId = car.getVehicleId();
            //查询车辆信息,没有则创建信息
            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
            if (ToolUtil.isEmpty(vehicles)) {
                CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                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;
                        }
                        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);
                            }
                        }
                    }
                    //创建行程数据
                    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);
                        }
                        Thread.sleep(5000L);
                    }
                }
            }catch (Exception e){
                e.printStackTrace();
                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);
                    }
                }
            }
        }).start();
        }
        //创建行程数据
        String trip = fleetEngineUtil.getTrip(orderPrivateCar.getTripId());
        int count = orderLogisticsService.selectCount(new EntityWrapper<OrderLogistics>().eq("tripId", orderPrivateCar.getTripId()));
        int count1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("tripId", orderPrivateCar.getTripId()));
        if(ToolUtil.isNotEmpty(trip) || (count + count1) > 0){
            String randomCode = UUIDUtil.getRandomCode();
            redisUtil.setStrValue("trip" + orderPrivateCar.getUserId(), randomCode);
            OrderPrivateCar orderPrivateCar1 = new OrderPrivateCar();
            orderPrivateCar1.setId(orderPrivateCar.getCarId());
            orderPrivateCar1.setTripId(randomCode);
            this.updateById(orderPrivateCar1);
            orderPrivateCar.setTripId(randomCode);
        }
        JSONObject createTrip = fleetEngineUtil.createTrip(vehicleId, 1, orderPrivateCar.getTripId(),
                orderPrivateCar.getStartLat().toString(), orderPrivateCar.getStartLon().toString(), orderPrivateCar.getEndLat().toString(), orderPrivateCar.getEndLon().toString());
        JSONObject error = createTrip.getJSONObject("error");
        if(null != error){
            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());
                error = createTrip.getJSONObject("error");
                String tripStatus = createTrip.getString("tripStatus");
                if(null == error && "NEW".equals(tripStatus)){
                    break;
                }
                try {
                    Thread.sleep(3000L);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        
        if(orderSource == 2){//扫码下单
@@ -887,7 +900,7 @@
        }
        
        //修改行程信息
        if((orderPrivateCar.getState() == 10 || orderPrivateCar.getState() == 12) && null != orderPrivateCar.getDriverId()){
        if(orderPrivateCar.getState() == 10 || orderPrivateCar.getState() == 12){
            boolean updateTrip = fleetEngineUtil.updateTrip("CANCELED", null, null, orderPrivateCar.getTripId(), null, null, null, null);
            if(!updateTrip){
                for (int i = 0; i < 5; i++) {
@@ -895,11 +908,10 @@
                    if(updateTrip){
                        break;
                    }
                    Thread.sleep(5000L);
                    Thread.sleep(3000L);
                }
            }
        }
        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<>();
@@ -1449,30 +1461,28 @@
                userCouponRecord.setEndTime(new Date());
                userCouponRecordService.updateById(userCouponRecord);
            }
            if(orderPrivateCar.getIsplatPay()==1){
                //添加已收入明细
                Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                Double speMoney = company.getSpeMoney();
                BigDecimal d = null;//企业收入
                BigDecimal c = null;//司机收入
                if(company.getIsSpeFixedOrProportional() == 2){//固定
                    d = new BigDecimal(speMoney);
                    c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
                }
                if(company.getIsSpeFixedOrProportional() == 1){//比例
                    Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
                    d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                    c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                }
                incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
                incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                Driver driver = driverService.selectById(orderPrivateCar.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);
            //添加已收入明细
            Company company = companyService.selectById(orderPrivateCar.getCompanyId());
            Double speMoney = company.getSpeMoney();
            BigDecimal d = null;//企业收入
            BigDecimal c = null;//司机收入
            if(company.getIsSpeFixedOrProportional() == 2){//固定
                d = new BigDecimal(speMoney);
                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
            }
            if(company.getIsSpeFixedOrProportional() == 1){//比例
                Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
                d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            }
            incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
            incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
            Driver driver = driverService.selectById(orderPrivateCar.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);
            if(ToolUtil.isNotEmpty(userInfo.getEmail())){
                new Thread(new Runnable() {
@@ -1935,23 +1945,22 @@
                driver.setBalance(new BigDecimal(null != driver.getBalance() ? driver.getBalance() : 0).add(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
                driverService.updateById(driver);
            }
            if(orderPrivateCar.getIsplatPay()==1){
                //添加已收入明细
                Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                Double speMoney = company.getSpeMoney();
                BigDecimal d = null;//企业收入
                BigDecimal c = null;//司机收入
                if(company.getIsSpeFixedOrProportional() == 2){//固定
                    d = new BigDecimal(speMoney);
                    c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
                }
                if(company.getIsSpeFixedOrProportional() == 1){//比例
                    Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
                    d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                    c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                }
            //添加已收入明细
            Company company = companyService.selectById(orderPrivateCar.getCompanyId());
            Double speMoney = company.getSpeMoney();
            BigDecimal d = null;//企业收入
            BigDecimal c = null;//司机收入
            if(company.getIsSpeFixedOrProportional() == 2){//固定
                d = new BigDecimal(speMoney);
                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d);//只有出行金额参与抽成,其余归属司机
            }
            if(company.getIsSpeFixedOrProportional() == 1){//比例
                Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
                d = new BigDecimal(price).multiply(new BigDecimal(speMoney).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            }
//                incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
//                incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
@@ -1959,110 +1968,109 @@
//                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);
                //记录司机待结算金额
                if(d.compareTo(new BigDecimal(0)) > 0){
                    SettlementDetail settlementDetail = new SettlementDetail();
                    settlementDetail.setOrderId(orderId);
                    settlementDetail.setOrderType(1);
                    settlementDetail.setDriverId(driver.getId());
                    settlementDetail.setOrderMoney(orderPrivateCar.getOrderMoney());
                    settlementDetail.setPrice(d.doubleValue());
                    settlementDetail.setCreateTime(new Date());
                    settlementDetailService.insert(settlementDetail);
                    SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
                    if(null != settlementAllocation){
                        JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
                        Double maxPrice = jsonObject.getDouble("maxPrice");
                        Integer type1 = jsonObject.getInteger("type");
                        if(null != maxPrice){
                            List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driver.getId())
                                    .isNull("settlementRecordId").last(" and DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(createTime, '%Y-%m-%d')"));
                            BigDecimal total = new BigDecimal(0);
                            for (SettlementDetail detail : settlementDetailList) {
                                total = total.add(new BigDecimal(detail.getPrice()));
                            }
                            //日结算
                            if(maxPrice.compareTo(total.doubleValue()) <= 0){
                                SettlementRecord settlementRecord = settlementRecordService.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", orderPrivateCar.getDriverId())
                                        .eq("type", type1).eq("paymentStatus", 1).last(" and day = DATE_FORMAT(now(), '%Y-%m-%d')"));
                                if(null == settlementRecord){
                                    settlementRecord = new SettlementRecord();
                                    settlementRecord.setDay(new Date());
                                    settlementRecord.setDriverId(orderPrivateCar.getDriverId());
                                    settlementRecord.setType(type1);
                                    settlementRecord.setPaymentStatus(1);
                                    settlementRecord.setPayMoney(total.doubleValue());
                                    settlementRecord.setInsertTime(new Date());
                                    settlementRecordService.insert(settlementRecord);
                                }else{
                                    settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue());
                                    settlementRecordService.updateById(settlementRecord);
                                }
                                for (SettlementDetail detail : settlementDetailList) {
                                    detail.setSettlementRecordId(settlementRecord.getId());
                                    settlementDetailService.updateById(detail);
                                }
                                //强制司机下班
                                DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
                                        .eq("driverId", orderPrivateCar.getDriverId()).eq("state", 1));
                                if(null != driverWork){
                                    driverWork.setEndTime(new Date());
                                    driverWork.setState(2);
                                    driverWorkService.updateById(driverWork);
                                    driver.setState(1);
                                    driverService.updateById(driver);
                                    Car car = carService.selectById(driver.getCarId());
                                    if(!org.apache.shiro.util.StringUtils.hasLength(car.getVehicleId())){
                                        car.setVehicleId(UUIDUtil.getRandomCode());
                                        carService.updateById(car);
                                    }
    
                                    //司机下班,修改谷歌上的车辆信息
                                    new Thread(()->{
                                        try {
                                            CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                            String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                            if(ToolUtil.isEmpty(vehicles)){
                                                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);
            //记录司机待结算金额
            if(d.compareTo(new BigDecimal(0)) > 0){
                SettlementDetail settlementDetail = new SettlementDetail();
                settlementDetail.setOrderId(orderId);
                settlementDetail.setOrderType(1);
                settlementDetail.setDriverId(driver.getId());
                settlementDetail.setOrderMoney(orderPrivateCar.getOrderMoney());
                settlementDetail.setPrice(d.doubleValue());
                settlementDetail.setCreateTime(new Date());
                settlementDetailService.insert(settlementDetail);
                SettlementAllocation settlementAllocation = settlementAllocationService.selectOne(null);
                if(null != settlementAllocation){
                    JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent());
                    Double maxPrice = jsonObject.getDouble("maxPrice");
                    Integer type1 = jsonObject.getInteger("type");
                    if(null != maxPrice){
                        List<SettlementDetail> settlementDetailList = settlementDetailService.selectList(new EntityWrapper<SettlementDetail>().eq("driverId", driver.getId())
                                .isNull("settlementRecordId").last(" and DATE_FORMAT(now(), '%Y-%m-%d') = DATE_FORMAT(createTime, '%Y-%m-%d')"));
                        BigDecimal total = new BigDecimal(0);
                        for (SettlementDetail detail : settlementDetailList) {
                            total = total.add(new BigDecimal(detail.getPrice()));
                        }
                        //日结算
                        if(maxPrice.compareTo(total.doubleValue()) <= 0){
                            SettlementRecord settlementRecord = settlementRecordService.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", orderPrivateCar.getDriverId())
                                    .eq("type", type1).eq("paymentStatus", 1).last(" and day = DATE_FORMAT(now(), '%Y-%m-%d')"));
                            if(null == settlementRecord){
                                settlementRecord = new SettlementRecord();
                                settlementRecord.setDay(new Date());
                                settlementRecord.setDriverId(orderPrivateCar.getDriverId());
                                settlementRecord.setType(type1);
                                settlementRecord.setPaymentStatus(1);
                                settlementRecord.setPayMoney(total.doubleValue());
                                settlementRecord.setInsertTime(new Date());
                                settlementRecordService.insert(settlementRecord);
                            }else{
                                settlementRecord.setPayMoney(settlementRecord.getPayMoney() + total.doubleValue());
                                settlementRecordService.updateById(settlementRecord);
                            }
                            for (SettlementDetail detail : settlementDetailList) {
                                detail.setSettlementRecordId(settlementRecord.getId());
                                settlementDetailService.updateById(detail);
                            }
                            //强制司机下班
                            DriverWork driverWork = driverWorkService.selectOne(new EntityWrapper<DriverWork>()
                                    .eq("driverId", orderPrivateCar.getDriverId()).eq("state", 1));
                            if(null != driverWork){
                                driverWork.setEndTime(new Date());
                                driverWork.setState(2);
                                driverWorkService.updateById(driverWork);
                                driver.setState(1);
                                driverService.updateById(driver);
                                Car car = carService.selectById(driver.getCarId());
                                if(!org.apache.shiro.util.StringUtils.hasLength(car.getVehicleId())){
                                    car.setVehicleId(UUIDUtil.getRandomCode());
                                    carService.updateById(car);
                                }
                                //司机下班,修改谷歌上的车辆信息
                                new Thread(()->{
                                    try {
                                        CarModel carModel = carModelMapper.selectById(car.getCarModelId());
                                        String vehicles = fleetEngineUtil.getVehicles(car.getVehicleId());
                                        if(ToolUtil.isEmpty(vehicles)){
                                            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;
                                                    }
                                                }
                                                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{
                                                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);
                                                    }
                                                    Thread.sleep(5000L);
                                                }
                                            }
                                        }catch (Exception e){
                                            e.printStackTrace();
                                            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{
                                            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);
                                                }
                                            }
                                        }
                                    }).start();
                                }
                                    }catch (Exception e){
                                        e.printStackTrace();
                                    }
                                }).start();
                            }
                        }
                    }
@@ -2781,29 +2789,27 @@
            query.setState(2);
            query.setCode(order_id);
            paymentRecordService.updateById(query);
            if(orderPrivateCar.getIsplatPay()==1){
                //添加已收入明细
                Company company = companyService.selectById(orderPrivateCar.getCompanyId());
                Double taxi = company.getSpeMoney();
                BigDecimal d = null;//企业收入
                BigDecimal c = null;//司机收入
                if(company.getIsSpeFixedOrProportional() == 2){//固定
                    d = new BigDecimal(taxi);
                    c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                }
                if(company.getIsSpeFixedOrProportional() == 1){//比例
                    Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
                    d = new BigDecimal(price).multiply(new BigDecimal(taxi).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                    c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                }
                incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
                incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
                Driver driver = driverService.selectById(orderPrivateCar.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);
            //添加已收入明细
            Company company = companyService.selectById(orderPrivateCar.getCompanyId());
            Double taxi = company.getSpeMoney();
            BigDecimal d = null;//企业收入
            BigDecimal c = null;//司机收入
            if(company.getIsSpeFixedOrProportional() == 2){//固定
                d = new BigDecimal(taxi);
                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            }
            if(company.getIsSpeFixedOrProportional() == 1){//比例
                Double price = orderPrivateCar.getStartMoney() + orderPrivateCar.getMileageMoney() + orderPrivateCar.getWaitMoney() + orderPrivateCar.getDurationMoney() + orderPrivateCar.getLongDistanceMoney();
                d = new BigDecimal(price).multiply(new BigDecimal(taxi).divide(new BigDecimal(100), new MathContext(2, RoundingMode.HALF_EVEN)));
                c = new BigDecimal(orderPrivateCar.getOrderMoney()).subtract(d).setScale(2, BigDecimal.ROUND_HALF_EVEN);
            }
            incomeService.saveData(1, orderPrivateCar.getCompanyId(), 2, orderPrivateCar.getId(), 1, d.doubleValue());
            incomeService.saveData(2, orderPrivateCar.getDriverId(), 2, orderPrivateCar.getId(), 1, c.doubleValue());
            Driver driver = driverService.selectById(orderPrivateCar.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);
            if(ToolUtil.isNotEmpty(userInfo.getEmail())){
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/CompanyMapper.java
@@ -18,4 +18,7 @@
    List<Company> queryList(@Param("city") String[] city, @Param("type") Integer type);
    List<Company> queryList1(@Param("collect") List<Integer> collect, @Param("type") Integer type);
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/PhoneMapper.java
@@ -14,7 +14,7 @@
     * 根据行政区域获取设置的电话
     * @return
     */
    List<Phone> queryPhones(@Param("city") String[] city);
    List<Phone> queryPhones(@Param("companyIds") List<Integer> companyIds);
    /**
@@ -24,5 +24,5 @@
     * @return
     */
    Phone query(@Param("type") Integer type, @Param("platform") Integer platform,
                @Param("city") String[] city);
                @Param("companyId") Integer companyId);
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/CompanyMapper.xml
@@ -181,4 +181,70 @@
            and type = #{type}
        </if>
    </select>
    <select id="queryList1" resultType="Company">
        select
        id as id,
        isSpe as isSpe,
        isTaxi as isTaxi,
        isCross as isCross,
        isCrossLogistics as isCrossLogistics,
        isSameLogistics as isSameLogistics,
        isCharter as isCharter,
        isSpeFixedOrProportional as isSpeFixedOrProportional,
        isTaxiFixedOrProportional as isTaxiFixedOrProportional,
        isCrossLogisticsFixedOrProportional as isCrossLogisticsFixedOrProportional,
        isSameLogisticsFixedOrProportional as isSameLogisticsFixedOrProportional,
        speMoney as speMoney,
        taxiMoney as taxiMoney,
        crossLogisticsMoney as crossLogisticsMoney,
        sameLogisticsMoney as sameLogisticsMoney,
        isNeedFerry as isNeedFerry,
        name as name,
        type as type,
        superiorId as superiorId,
        principalName as principalName,
        principalPhone as principalPhone,
        adminName as adminName,
        adminPhone as adminPhone,
        urgentPhoen as urgentPhoen,
        setupTime as setupTime,
        identifier as identifier,
        addressCode as addressCode,
        businessScope as businessScope,
        contactAddress as contactAddress,
        documentAddress as documentAddress,
        economicType as economicType,
        regCapital as regCapital,
        legalName as legalName,
        legalId as legalId,
        legalPhone as legalPhone,
        legalPhotoUrl as legalPhotoUrl,
        licensingAgency as licensingAgency,
        licenseTime as licenseTime,
        licenseStartTime as licenseStartTime,
        licenseEndTime as licenseEndTime,
        licenseNumber as licenseNumber,
        carNum as carNum,
        driverNum as driverNum,
        mac as mac,
        state as state,
        flag as flag,
        upload as upload,
        insertTime as insertTime
        from t_company where flag != 3 and state = 0 and id in (
        select companyId from t_company_city where state = 1
        <if test="null != city">
            and cityId in
            <foreach collection="collect" item="item" index="index" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        )
        <if test="null != type">
            and type = #{type}
        </if>
    </select>
</mapper>
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/PhoneMapper.xml
@@ -20,15 +20,10 @@
        platform as platform,
        phone as phone,
        companyId as companyId
        from t_phone where companyId in (
        select companyId from t_company_city where state = 1
        <if test="null != city">
            and cityId in (select id from t_city where englishName in
            <foreach collection="city" item="item" index="index" separator="," open="(" close=")">
                #{item}
            </foreach>
            )
        </if>
        from t_phone where companyId in
        <foreach collection="companyIds" item="item" index="index" separator="," open="(" close=")">
            #{item}
        </foreach>
        )
    </select>
@@ -48,16 +43,7 @@
            and platform = #{platform}
        </if>
        <if test="platform != 1">
            and companyId in (
            select companyId from t_company_city where state = 1
            <if test="null != city">
                and cityId in (select id from t_city where englishName in
                <foreach collection="city" item="item" index="index" separator="," open="(" close=")">
                    #{item}
                </foreach>
                )
            </if>
            )
            and companyId = #{companyId}
        </if>
    </select>
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ICompanyCityService.java
@@ -4,6 +4,8 @@
import com.stylefeng.guns.modular.system.model.Company;
import com.stylefeng.guns.modular.system.model.CompanyCity;
import java.util.List;
public interface ICompanyCityService extends IService<CompanyCity> {
@@ -20,4 +22,22 @@
     * @throws Exception
     */
    Company query(String[] city) throws Exception;
    /**
     * 根据城市名称获取匹配的企业
     * @param city
     * @return
     * @throws Exception
     */
    Company query1(String[] city) throws Exception;
    /**
     * 根据城市名称获取匹配的企业
     * @param city
     * @return
     * @throws Exception
     */
    List<Company> query2(String[] city) throws Exception;
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/CompanyCityServiceImpl.java
@@ -18,6 +18,7 @@
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -60,12 +61,78 @@
    @Override
    public Company query(String[] city) throws Exception {
        List<City> cities = cityService.selectList(new EntityWrapper<City>().in("chineseName", Arrays.asList(city)).or()
                .in("englishName", Arrays.asList(city)).or().in("frenchName", Arrays.asList(city)));
        List<Integer> collect = cities.stream().map(City::getId).collect(Collectors.toList());
        List<City> cities1 = cityService.selectList(null);
        List<Integer> collect = new ArrayList<>();
        for (City city1 : cities1) {
            String chineseName = city1.getChineseName();
            String englishName = city1.getEnglishName();
            String frenchName = city1.getFrenchName();
            for (String s : city) {
                if(s.indexOf(chineseName) != -1 || s.indexOf(englishName) != -1 || s.indexOf(frenchName) != -1){
                    collect.add(city1.getId());
                    break;
                }
            }
        }
        if(collect.size() == 0){
            return null;
        }
        return companyMapper.query(collect);
    }
    @Override
    public Company query1(String[] city) throws Exception {
        List<City> cities1 = cityService.selectList(null);
        List<Integer> collect = new ArrayList<>();
        for (City city1 : cities1) {
            String chineseName = city1.getChineseName();
            String englishName = city1.getEnglishName();
            String frenchName = city1.getFrenchName();
            for (String s : city) {
                if(s.indexOf(chineseName) != -1 || s.indexOf(englishName) != -1 || s.indexOf(frenchName) != -1){
                    collect.add(city1.getId());
                    break;
                }
            }
        }
        List<Company> query = companyMapper.queryList1(collect, 3);
        if(query.size() == 0){
            query = companyMapper.queryList1(collect, 2);
        }
        if(query.size() == 0){
            query = companyMapper.queryList1(collect, 1);
        }
        if(query.size() > 0){
            return query.get(0);
        }
        return null;
    }
    @Override
    public List<Company> query2(String[] city) throws Exception {
        List<City> cities1 = cityService.selectList(null);
        List<Integer> collect = new ArrayList<>();
        for (City city1 : cities1) {
            String chineseName = city1.getChineseName();
            String englishName = city1.getEnglishName();
            String frenchName = city1.getFrenchName();
            for (String s : city) {
                if(s.indexOf(chineseName) != -1 || s.indexOf(englishName) != -1 || s.indexOf(frenchName) != -1){
                    collect.add(city1.getId());
                    break;
                }
            }
        }
        List<Company> query = companyMapper.queryList1(collect, 3);
        if(query.size() == 0){
            query = companyMapper.queryList1(collect, 2);
        }
        if(query.size() == 0){
            query = companyMapper.queryList1(collect, 1);
        }
        return query;
    }
}
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PhoneServiceImpl.java
@@ -2,7 +2,9 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.stylefeng.guns.modular.system.dao.PhoneMapper;
import com.stylefeng.guns.modular.system.model.Company;
import com.stylefeng.guns.modular.system.model.Phone;
import com.stylefeng.guns.modular.system.service.ICompanyCityService;
import com.stylefeng.guns.modular.system.service.IPhoneService;
import com.stylefeng.guns.modular.system.util.GoogleMap.AddressComponentsVo;
import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil;
@@ -15,6 +17,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
@@ -25,6 +28,9 @@
    
    @Resource
    private RedisUtil redisUtil;
    @Resource
    private ICompanyCityService companyCityService;
    
    
    
@@ -46,7 +52,9 @@
        for (int i = 0; i < addressComponentsVos.length; i++) {
            city[i] = addressComponentsVos[i].getLongName();
        }
        List<Phone> list = phoneMapper.queryPhones(city);
        List<Company> companies = companyCityService.query2(city);
        List<Integer> collect = companies.stream().map(Company::getId).collect(Collectors.toList());
        List<Phone> list = phoneMapper.queryPhones(collect);
        return list;
    }
@@ -70,11 +78,12 @@
        }
        Map<String, Object> map = new HashMap<>();
        //平台电话
        Phone query = phoneMapper.query(2, 1, city);
        Phone query = phoneMapper.query(2, 1, null);
        map.put("platform", null != query ? query.getPhone() : "");
        Company company = companyCityService.query1(city);
        //公司
        query = phoneMapper.query(2, 2, city);
        query = phoneMapper.query(2, 2, company.getId());
        map.put("company", null != query ? query.getPhone() : "");
        return map;
    }
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/GoogleMap/FleetEngineUtil.java
@@ -449,7 +449,7 @@
     * @param end_lng 终点经度
     * @return
     */
    public boolean createTrip(String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) {
    public JSONObject createTrip(String vehicleId, Integer numberOfPassengers, String tripId, String start_lat, String start_lng, String end_lat, String end_lng) {
        String url = "https://fleetengine.googleapis.com/v1/providers/" + provider + "/trips?tripId=" + tripId;
        HttpRequest post = HttpUtil.createPost(url);
        Map<String, String> headers = new HashMap<>();
@@ -478,7 +478,7 @@
        end_point.put("longitude", end_lng);
        dropoffPoint.put("point", end_point);
        body.put("dropoffPoint", dropoffPoint);
        logger.info("创建行程请求:{}", body.toJSONString());
        logger.info("创建行程请求:{}   {}", tripId, body.toJSONString());
        HttpRequest request = post.body(body.toJSONString());
        HttpResponse response = request.execute();
        logger.info("创建行程结果:{}", response.body());
@@ -499,7 +499,6 @@
                }
            }
            logger.error("创建行程异常:  tripId={}  body={}", tripId, response.body());
            return false;
        }
        /**
         * 返回结果
@@ -616,7 +615,7 @@
         *     "currentRouteSegmentTrafficVersion": "2024-05-27T02:05:37.941167Z"
         * }
         */
        return true;
        return jsonObject;
    }
    
    
@@ -698,7 +697,7 @@
            dropoffPoint.put("point", end_point);
            body.put("dropoffPoint", dropoffPoint);
        }
        logger.info("修改行程请求:{}", body.toJSONString());
        logger.info("修改行程请求:{}   {}", tripId, body.toJSONString());
        HttpRequest request = put.body(body.toJSONString());
        HttpResponse response = request.execute();
        logger.info("修改行程结果:{}", response.body());
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Tingg/TinggPayUtil.java
@@ -6,6 +6,7 @@
import com.stylefeng.guns.modular.system.util.Tingg.model.CheckoutRequest;
import io.cellulant.model.Payload;
import io.cellulant.service.CheckoutEncryption;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
@@ -18,6 +19,7 @@
/**
 * Tingg支付工具类
 */
@Slf4j
public class TinggPayUtil {
    private static String accessKey = "8rc1gTV9n91Tc1Sy9oVWry99fgrgrVV8concf9onWooWSg9TVW8nSgo98g88";
@@ -37,7 +39,7 @@
            CheckoutEncryption checkoutEncrption = new CheckoutEncryption(ivKey, secretKey);
            Payload payload = getPayload(checkoutRequest);
            String param = checkoutEncrption.encrypt(payload);
            System.out.println("Encrpted payload=" + param);
            log.error("调起支付:" + checkoutRequest.getMerchantTransactionId() + "\nEncrpted payload=" + param);
            String url = "https://checkout.tingg.africa/express/checkout?encrypted_payload=" + param + "&access_key=" + accessKey;
            return ResultUtil.success(url);
        }catch (Exception e){