guyue
2025-08-01 0f79643e35af90cb63a4b3c67ee72abfe0e37770
Merge remote-tracking branch 'origin/master'
25个文件已添加
38个文件已修改
9940 ■■■■■ 已修改文件
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java 595 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/TokenUtil.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java 4287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java 2678 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Driver.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/ServerCarModelWarpper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -746,6 +746,7 @@
            if(null == position){
                position = new DriverPosition();
            }
            position.setDriverId(orderPosition.getDriverId());
            position.setPoint(point);
            mongoTemplate.save(position);
            //处理业务上的功能
@@ -1831,8 +1832,15 @@
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
            @ApiImplicitParam(value = "当前设备IP地址", name = "ip", required = true, dataType = "String"),
            @ApiImplicitParam(value = "当前设备mac地址", name = "mac", required = true, dataType = "String"),
            @ApiImplicitParam(value = "01 证联收银台支付\n" +
                    "\t 04 HOME 页\n" +
                    "\t 06 申请免密签约\n" +
                    "\t 07 商户收银台支付\n" +
                    "\t 08 开户(绑卡)\n" +
                    "\t 09 开通支付账户\n" +
                    "\t 10 打开付款码", name = "type", required = true, dataType = "String"),
    })
    public ResultUtil<String> getZLToken(String ip, String mac, HttpServletRequest request){
    public ResultUtil<String> getZLToken(String ip, String mac, String type, HttpServletRequest request){
        try {
            Integer driverId = driverService.getUserIdFormRedis(request);
            if (null == driverId) {
@@ -1849,6 +1857,7 @@
            tradeTerminalInfo.setTerminal("1");
            tradeTerminalInfo.setMac(mac);
            tokenRequest.setTradeTerminalInfo(tradeTerminalInfo);
            tokenRequest.setType(type);
            String token = TokenUtil.getToken(tokenRequest);
            return ResultUtil.success(token);
        }catch (Exception e){
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.core.util.DateUtil;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.crossCity.warpper.OrderCrossCityInfoWrapper;
import com.stylefeng.guns.modular.crossCity.warpper.OrderWarpper;
import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics;
@@ -332,6 +331,9 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/api/order/queryOrderInfo1")
@@ -555,6 +557,10 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/api/order/cancleOrder")
@@ -572,6 +578,9 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/api/order/updatePeopleNum")
    @ApiOperation(value = "修改人数", tags = {"司机端-服务中"}, notes = "")
@@ -589,6 +598,8 @@
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/api/order/confirmFees1")
@@ -724,30 +735,7 @@
    }
    @ResponseBody
    @PostMapping("/base/order/test")
    public String test(String phoneA, String phoneB){
        try {
            Map<String, String> map = chinaMobileUtil.midAxbBindSend(phoneA, phoneB, (System.currentTimeMillis() + 86400000));
            System.err.println(JSON.toJSONString(map));
        }catch (Exception e){
            e.printStackTrace();
            return "";
        }
        return null;
    }
    @ResponseBody
    @PostMapping("/base/order/test_")
    public String test(String bindId){
        try {
            Map<String, String> map = chinaMobileUtil.midAxbUnBindSend(bindId, null, null);
        }catch (Exception e){
            e.printStackTrace();
            return "";
        }
        return null;
    }
    /**
@@ -780,6 +768,9 @@
    }
    @ResponseBody
    @PostMapping("/api/order/queryVoiceBroadcast")
    @ApiOperation(value = "接单后获取语音播报内容", tags = {"司机端-首页"}, notes = "")
@@ -826,6 +817,8 @@
        }
    }
    @ResponseBody
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -443,6 +443,8 @@
    private String promotionUser;
    private String promotionPhone;
    private String travelId;
    public String getPromotionUser() {
@@ -1196,7 +1198,15 @@
    public void setSplitAllocation(String splitAllocation) {
        this.splitAllocation = splitAllocation;
    }
    public String getTravelId() {
        return travelId;
    }
    public void setTravelId(String travelId) {
        this.travelId = travelId;
    }
    @Override
    public String toString() {
        return "OrderPrivateCar{" +
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -16,6 +16,9 @@
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.CreateTravelItineraryRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -245,7 +248,41 @@
            orderPrivateCar.setPromotionPhone(driver1.getPhone());
            orderPrivateCar.setPromotionDriverId(promotion);
        }
        orderPrivateCar.setPromotion(promotion);
        if(null == oldDriverId){
            UserInfo userInfo = userInfoMapper.selectById(orderPrivateCar.getUserId());
            Company company = companyService.selectById(driver.getCompanyId());
            //调三方订单中心创建行程单
            CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
            request.setOrderNo("PR" + orderPrivateCar.getId());
            request.setCustomerId(userInfo.getOnconUUID());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            if(2 == orderPrivateCar.getPromotion()){
                Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                request.setPromoterId(driver1.getEmpId().toString());
            }
            request.setServiceType(2);
            String travelItinerary = OrderUtil.createTravelItinerary(request);
            orderPrivateCar.setTravelId(travelItinerary);
        }else{
            //改派抢单
            Company company1 = companyService.selectById(driver.getCompanyId());
            //中台修改订单状态
            ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
            request1.setOrderId(orderPrivateCar.getTravelId());
            request1.setStatus(orderPrivateCar.getState());
            request1.setDriverId(driver.getEmpId().toString());
            if(2 == orderPrivateCar.getPromotion()){
                Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                request1.setPromoterId(driver1.getEmpId().toString());
            }
            request1.setSupplierShopId(company1.getEnterCode());
            OrderUtil.modifyTravelItinerary(request1);
        }
        this.updateById(orderPrivateCar);
        //处理摆渡车的情况
@@ -325,7 +362,7 @@
            }).start();
        }
        
        return ResultUtil.success(orderPrivateCar.getId());
    }
@@ -522,6 +559,20 @@
                break;
        }
        this.updateById(orderPrivateCar);
        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
        Company company = companyService.selectById(driver.getCompanyId());
        //中台修改订单状态
        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
        request.setOrderId(orderPrivateCar.getTravelId());
        request.setStatus(orderPrivateCar.getState());
        request.setDriverId(driver.getEmpId().toString());
        if(2 == orderPrivateCar.getPromotion()){
            Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
            request.setPromoterId(driver1.getEmpId().toString());
        }
        request.setSupplierShopId(company.getEnterCode());
        OrderUtil.modifyTravelItinerary(request);
        // TODO: 2020/6/5 推送状态
        OrderPrivateCar finalOrderPrivateCar = orderPrivateCar;
@@ -589,20 +640,33 @@
        orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney() + orderPrivateCar.getParkMoney() + orderPrivateCar.getRoadTollMoney());
        orderPrivateCar.setState(7);
        this.updateById(orderPrivateCar);
        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
        Company company = companyService.selectById(driver.getCompanyId());
        //中台修改订单状态
        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
        request.setOrderId(orderPrivateCar.getTravelId());
        request.setStatus(7);
        request.setDriverId(driver.getEmpId().toString());
        if(2 == orderPrivateCar.getPromotion()){
            Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
            request.setPromoterId(driver1.getEmpId().toString());
        }
        request.setSupplierShopId(company.getEnterCode());
        OrderUtil.modifyTravelItinerary(request);
        pushUtil.removeTask(orderId, 1);//删除定时任务,结束推送数据
        systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderPrivateCar.getUserId(), 1);
        //回滚司机状态为空闲
        if(orderPrivateCar.getSpellSuccess()==0){
            Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
            driver.setState(2);
            driverService.updateById(driver);
        }else{
            if(orderPrivateCar.getPid()==null){
                Integer number = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid",orderPrivateCar.getPid()==null?orderPrivateCar.getId():orderPrivateCar.getPid()).lt("state",6));
                if(number<=0){
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    driver.setState(2);
                    driverService.updateById(driver);
                }
@@ -610,7 +674,6 @@
                Integer number = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid",orderPrivateCar.getPid()==null?orderPrivateCar.getId():orderPrivateCar.getPid()).lt("state",6));
                Integer number1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("id",orderPrivateCar.getPid()).lt("state",6));
                if(number<=0 && number1<=0){
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    driver.setState(2);
                    driverService.updateById(driver);
                }
@@ -771,12 +834,25 @@
        orderPrivateCar.setOrderMoney(orderPrivateCar.getOrderMoney() + orderPrivateCar.getParkMoney() + orderPrivateCar.getRoadTollMoney() + orderPrivateCar.getHolidayFee() + t);
        orderPrivateCar.setState(7);
        this.updateById(orderPrivateCar);
        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
        Company company1 = companyService.selectById(driver.getCompanyId());
        //中台修改订单状态
        ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
        request1.setOrderId(orderPrivateCar.getTravelId());
        request1.setStatus(orderPrivateCar.getState());
        request1.setDriverId(driver.getEmpId().toString());
        if(2 == orderPrivateCar.getPromotion()){
            Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
            request1.setPromoterId(driver1.getEmpId().toString());
        }
        request1.setSupplierShopId(company1.getEnterCode());
        OrderUtil.modifyTravelItinerary(request1);
        pushUtil.removeTask(orderId, 1);//删除定时任务,结束推送数据
        systemNoticeService.addSystemNotice(1, "司机已结束本次行程,谢谢使用", orderPrivateCar.getUserId(), 1);
        //回滚司机状态为空闲
        Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
        driver.setState(2);
        driverService.updateById(driver);
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java
@@ -146,6 +146,11 @@
     */
    private Date bindExpireDate;
    /**
     * 中台用户ID
     */
    @TableField("onconUUID")
    private String onconUUID;
    public Integer getBindDriverId() {
        return bindDriverId;
@@ -354,7 +359,15 @@
    public void setAppletsOpenId(String appletsOpenId) {
        this.appletsOpenId = appletsOpenId;
    }
    public String getOnconUUID() {
        return onconUUID;
    }
    public void setOnconUUID(String onconUUID) {
        this.onconUUID = onconUUID;
    }
    @Override
    public String toString() {
        return "UserInfo{" +
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -16,13 +16,13 @@
import com.stylefeng.guns.modular.system.dao.RegionMapper;
import com.stylefeng.guns.modular.system.dao.SysReformistMapper;
import com.stylefeng.guns.modular.system.model.AdditionalFee;
import com.stylefeng.guns.modular.system.model.Company;
import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.OrderPosition;
import com.stylefeng.guns.modular.system.service.IAdditionalFeeService;
import com.stylefeng.guns.modular.system.service.IDriverService;
import com.stylefeng.guns.modular.system.service.IOpenCityService;
import com.stylefeng.guns.modular.system.service.IOrderService;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.system.warpper.BaseWarpper;
import com.stylefeng.guns.modular.system.warpper.OrderListWarpper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -99,6 +99,9 @@
//    private RedissonClient redissonClient;
    @Autowired
    private IOpenCityService openCityService;
    @Autowired
    private ICompanyService companyService;
@@ -509,10 +512,10 @@
    public ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception {
        //专车和出租是批量下单,所以这里需要将两种类型的抢单操作通过一个锁来一起控制
        if(1 == orderType || 2 == orderType){
//            RLock lock = redissonClient.getLock("grabOrder:" + orderId);
//            if(!lock.tryLock()){
//                return ResultUtil.error("抢单失败,请稍后重试");
//            }
            Boolean lock = redisTemplate.opsForValue().setIfAbsent("grabOrder:" + orderId, "1");
            if(!lock){
                return ResultUtil.error("抢单失败,请稍后重试");
            }
            try {
                if(1 == orderType){
                    return orderPrivateCarService.grabOrder(orderId, uid);
@@ -523,7 +526,7 @@
            }catch (Exception e){
                e.printStackTrace();
            }finally {
//                lock.unlock();
                redisTemplate.delete("grabOrder:" + orderId);
            }
        }
        switch (orderType){
@@ -1181,6 +1184,21 @@
                orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney());
                orderPrivateCar.setState(8);
                orderPrivateCarService.updateById(orderPrivateCar);
                Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                Company company1 = companyService.selectById(driver.getCompanyId());
                //中台修改订单状态
                ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
                request1.setOrderId(orderPrivateCar.getTravelId());
                request1.setStatus(orderPrivateCar.getState());
                request1.setDriverId(driver.getEmpId().toString());
                if(2 == orderPrivateCar.getPromotion()){
                    Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                    request1.setPromoterId(driver1.getEmpId().toString());
                }
                request1.setSupplierShopId(company1.getEnterCode());
                OrderUtil.modifyTravelItinerary(request1);
                userId = orderPrivateCar.getUserId();
                driverId = orderPrivateCar.getDriverId();
                state = orderPrivateCar.getState();
@@ -1210,6 +1228,21 @@
                orderTaxi.setPayMoney(orderTaxi.getOrderMoney());
                orderTaxi.setState(8);
                orderTaxiService.updateById(orderTaxi);
                Driver driver1 = driverService.selectById(orderTaxi.getDriverId());
                Company company = companyService.selectById(driver1.getCompanyId());
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderTaxi.getTravelId());
                request.setStatus(orderTaxi.getState());
                request.setDriverId(driver1.getEmpId().toString());
                if(2 == orderTaxi.getPromotion()){
                    Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                    request.setPromoterId(driver2.getEmpId().toString());
                }
                request.setSupplierShopId(company.getEnterCode());
                OrderUtil.modifyTravelItinerary(request);
                userId = orderTaxi.getUserId();
                driverId = orderTaxi.getDriverId();
                state = orderTaxi.getState();
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ReassignServiceImpl.java
@@ -21,6 +21,8 @@
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
import org.apache.commons.lang.time.DateFormatUtils;
@@ -188,6 +190,20 @@
                        orderPrivateCar.setState(11);
                        orderPrivateCar.setReassignNotice(2);
                        orderPrivateCarService.updateById(orderPrivateCar);
                        Company company = companyService.selectById(driver.getCompanyId());
                        //中台修改订单状态
                        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                        request.setOrderId(orderPrivateCar.getTravelId());
                        request.setStatus(orderPrivateCar.getState());
                        request.setDriverId(driver.getEmpId().toString());
                        if(2 == orderPrivateCar.getPromotion()){
                            Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                            request.setPromoterId(driver1.getEmpId().toString());
                        }
                        request.setSupplierShopId(company.getEnterCode());
                        OrderUtil.modifyTravelItinerary(request);
                        //添加已收入明细
//                        incomeService.saveData(1, orderPrivateCar.getCompanyId(), 4, orderPrivateCar.getId(), 1, reassign.getMoney());
@@ -200,7 +216,20 @@
                        orderTaxi.setState(11);
                        orderTaxi.setReassignNotice(2);
                        orderTaxiService.updateById(orderTaxi);
                        Company company1 = companyService.selectById(driver.getCompanyId());
                        //中台修改订单状态
                        ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
                        request1.setOrderId(orderTaxi.getTravelId());
                        request1.setStatus(orderTaxi.getState());
                        request1.setDriverId(driver.getEmpId().toString());
                        if(2 == orderTaxi.getPromotion()){
                            Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
                            request1.setPromoterId(driver1.getEmpId().toString());
                        }
                        request1.setSupplierShopId(company1.getEnterCode());
                        OrderUtil.modifyTravelItinerary(request1);
                        //添加已收入明细
//                        incomeService.saveData(1, orderTaxi.getCompanyId(), 4, orderTaxi.getId(), 2, reassign.getMoney());
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -57,7 +57,7 @@
    
    private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器
    
    private final String socket_uri = "http://172.21.35.142:6000";
    private final String socket_uri = "http://127.0.0.1:6000";
    // qyt 改派重新推单
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
New file
@@ -0,0 +1,595 @@
package com.stylefeng.guns.modular.system.util.qianyuntong;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.open.common.util.OpenApiClient;
import com.open.common.util.SystemParameterNames;
import com.stylefeng.guns.modular.system.util.UUIDUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 9:34
 */
@Slf4j
public class OrderUtil {
    public static void main(String[] args) {
        //创建行程
//        CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
//        request.setScene("TRAFFIC");
//        request.setPartnerId("522700");
//        request.setOrderNo("01234567890");
//        request.setCustomerId("11448156");
//        request.setDriverId("11448158");
//        request.setSupplierShopId("981100006005951");
//        request.setServiceType(1);
//        String travelItinerary = createTravelItinerary(request);
//        System.err.println(travelItinerary);//1950363840206753792
        //修改行程状态
//        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
//        request.setScene("TRAFFIC");
//        request.setPartnerId("522700");
//        request.setOrderId("1950363840206753792");
//        request.setStatus(7);
//        request.setDriverId("11448158");
//        request.setSupplierShopId("981100006005951");
//        Boolean aBoolean = modifyTravelItinerary(request);
        //订单创建及拉起支付
//        TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData();
//        tradeOrderCreateData.setScene("TRAFFIC");
//        tradeOrderCreateData.setPartnerId("522700");
//        tradeOrderCreateData.setTreatShopId("11448158");
//        tradeOrderCreateData.setOrderAppId("52270015");
//        tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}");
//        tradeOrderCreateData.setCharge(new BigDecimal("0.01"));
//        tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
//        tradeOrderCreateData.setOrderId("1950363840206753792");
//        tradeOrderCreateData.setOrderNo("01234567890");
//        tradeOrderCreateData.setCustomerId("11448156");
//        tradeOrderCreateData.setPayPartnerId("5400004");
//        tradeOrderCreateData.setPartnerPayId("1950363840206753792");
//        tradeOrderCreateData.setCurrency("RMB");
//        tradeOrderCreateData.setTotalFee("1");
//        tradeOrderCreateData.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay");
//        tradeOrderCreateData.setClientIp("127.0.0.1");
//        tradeOrderCreateData.setNeedLoginFlag("N");
//        tradeOrderCreateData.setOrderDesc("出行订单支付");
//        tradeOrderCreateData.setAccessMode("APP");
//
//        List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
//        GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
//        goodsInfoRequest.setId("981100006005901");
//        goodsInfoRequest.setSubAppId("wxcbad113185a243e1");
//        goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ");
//        goodsInfoRequest.setProfitSharing("1");
//        goodsInfoRequest.setAreaInfo("520100");
//        goodsInfoRequest.setPayType("0");
//        goodsInfoRequest.setBusinessType("10408");
//        goodsInfo.add(goodsInfoRequest);
//        tradeOrderCreateData.setGoodsInfo(goodsInfo);
//        TradeOrderCreate tradeOrderCreate = tradeOrderCreate1(tradeOrderCreateData);
//        System.err.println(tradeOrderCreate);
        //TradeOrderCreate(orderInfo=OrderInfo(orderId=1950072223939842048, status=null), payInfo=PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=It5FPM1DUjzwIAin7zwiHvUANWKC6I5USCLE8EKoRkg%3D, payId=540000420250729000135600, status=null, payTime=null, payFee=null, paymentInfos=null), sign=525cb843b1eeb5a0451eeb5fbbe02f0f))
        //查询支付单信息
//        GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest();
//        getPaymentInfoDataRequest.setPartnerId("5400004");
//        getPaymentInfoDataRequest.setPartnerPayId("1948685426689200128");
//        GetPaymentInfo getPaymentInfo = paymentInfo(getPaymentInfoDataRequest);
//        System.err.println(getPaymentInfo);
        //拉起支付
//        TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
//        tradePayOff1Data.setPartnerId("5400004");
//        tradePayOff1Data.setScene("TRAFFIC");
//        tradePayOff1Data.setPartnerPayId("1948685426689200128");
//        tradePayOff1Data.setCurrency("RMB");
//        tradePayOff1Data.setTotalFee("1");
//        tradePayOff1Data.setRetUrl("/home/");
//        tradePayOff1Data.setClientIp("127.0.0.1");
//        tradePayOff1Data.setNeedLoginFlag("N");
//        tradePayOff1Data.setOrderDesc("出行订单支付");
//        tradePayOff1Data.setAccessMode("APP");
//        List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
//        GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
//        goodsInfoRequest.setId("981100006005901");
//        goodsInfoRequest.setSubAppId("wxcbad113185a243e1");
//        goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ");
//        goodsInfoRequest.setProfitSharing("1");
//        goodsInfoRequest.setAreaInfo("520100");
//        goodsInfoRequest.setPayType("0");
//        goodsInfoRequest.setBusinessType("10408");
//        goodsInfo.add(goodsInfoRequest);
//        tradePayOff1Data.setGoodsInfo(goodsInfo);
//        PayInfo payInfo = tradePayOff1(tradePayOff1Data);
//        System.err.println(payInfo);
        //PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=5nUBXayFpfZz%2FXUZiMu9LzeRXmqmlqaCS%2BHfu5udIt4%3D, payId=540000420250725000135549, status=null, payTime=null, payFee=null, paymentInfos=null), sign=8154ba2728280900b122c56352c1c7fe)
        // (补偿单)拉起支付
//        TradePayOffData tradePayOffData = new TradePayOffData();
//        tradePayOffData.setPartnerId("5400004");
//        tradePayOffData.setScene("TRAFFIC");
//        tradePayOffData.setPartnerPayId("1948685426689200128");
//        tradePayOffData.setCurrency("RMB");
//        tradePayOffData.setTotalFee("1");
//        tradePayOffData.setRetUrl("/home/");
//        tradePayOffData.setClientIp("127.0.0.1");
//        tradePayOffData.setNeedLoginFlag("N");
//        tradePayOffData.setOrderDesc("出行订单支付");
//        tradePayOffData.setAccessMode("APP");
//        List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>();
//        PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest();
//        paymentInfoRequest.setPayModeId("501212");
//        paymentInfoRequests.add(paymentInfoRequest);
//        tradePayOffData.setPaymentInfos(paymentInfoRequests);
//        List<GoodsInfo> goodsInfo = new ArrayList<>();
//        GoodsInfo goodsInfo1 = new GoodsInfo();
//        goodsInfo1.setMerchantCode("");
//        goodsInfo1.setCustId("");
//        goodsInfo1.setCustName("");
//        goodsInfo1.setProfitSharing("1");
//        goodsInfo.add(goodsInfo1);
//        tradePayOffData.setGoodsInfo(goodsInfo);
//        PayInfo payInfo1 = tradePayOff(tradePayOffData);
//        System.err.println(payInfo1);
        //订单创建
//        CreateOrderRequest createOrderRequest = new CreateOrderRequest();
//        createOrderRequest.setTreatShopId("11448158");
//        createOrderRequest.setOrderAppId("52270015");
//        createOrderRequest.setScene("TRAFFIC");
//        createOrderRequest.setPartnerId("522700");
//        createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}");
//        createOrderRequest.setCharge(new BigDecimal("0.01"));
//        createOrderRequest.setChannelSource("GRJYCXWXXCX");
//        createOrderRequest.setOrderId("1948685426689200128");
//        createOrderRequest.setOrderNo("0123456");
//        createOrderRequest.setCustomerId("11448156");
//        OrderInfo orderInfo = tradeOrderCreate(createOrderRequest);
//        System.err.println(orderInfo);
        //行程单列表查询
//        GetTravelItineraryListRequest request = new GetTravelItineraryListRequest();
//        request.setScene("TRAFFIC");
//        request.setPartnerId("522700");
//        request.setCustomerId("11448156");
//        request.setOrderNo("0123456");
//        request.setDriverId("11448158");
//        ListPage<TravelItinerary> travelItineraryList = getTravelItineraryList(request);
//        System.err.println(travelItineraryList);
    }
    /**
     * 拉起支付
     *
     * @param tradePayOff1Data
     * @return
     */
    public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) {
        TradeRequest request = new TradeRequest<TradePayOff1Data>();
        request.setSceneId("1911676727023968256");
        request.setAppId(QianYunTongProperties.appkey);
        request.setConfigVersion(1);
        request.setRequestId(UUIDUtil.getRandomCode());
        request.setData(tradePayOff1Data);
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradePayOff";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【拉起支付】请求地址:" + url);
        log.info("【拉起支付】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【拉起支付】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if (!"000000".equals(resCode)) {
            log.error("【拉起支付】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【拉起支付】失败:" + jsonObject.getString("resMsg"));
        }
        JSONObject busiResp = jsonObject.getJSONObject("busiResp");
        PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class);
        return payInfo;
    }
    /**
     * 创建行程单
     * @param request
     * @return 行程单ID
     */
    public static String createTravelItinerary(CreateTravelItineraryRequest request){
        request.setScene("TRAFFIC");
        request.setPartnerId("522700");
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/createTravelItinerary";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【创建行程单】请求地址:" + url);
        log.info("【创建行程单】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【创建行程单】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if(!"000000".equals(resCode)){
            log.error("【创建行程单】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【创建行程单】失败:" + jsonObject.getString("resMsg"));
        }
        return jsonObject.getString("busiResp");
    }
    /**
     * 修改行程单
     * @param request
     */
    public static Boolean modifyTravelItinerary(ModifyTravelItineraryRequest request){
        request.setScene("TRAFFIC");
        request.setPartnerId("522700");
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/modifyTravelItinerary";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【修改行程单】请求地址:" + url);
        log.info("【修改行程单】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【修改行程单】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if(!"000000".equals(resCode)){
            log.error("【修改行程单】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【修改行程单】失败:" + jsonObject.getString("resMsg"));
        }
        return true;
    }
    /**
     * 行程单列表查询
     * @param request
     * @return
     */
    public static ListPage<TravelItinerary> getTravelItineraryList(GetTravelItineraryListRequest request){
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/getTravelItineraryList";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【行程单列表查询】请求地址:" + url);
        log.info("【行程单列表查询】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【行程单列表查询】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if(!"000000".equals(resCode)){
            log.error("【行程单列表查询】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【行程单列表查询】失败:" + jsonObject.getString("resMsg"));
        }
        JSONObject busiResp = jsonObject.getJSONObject("busiResp");
        Integer total = busiResp.getInteger("total");
        Integer pageNum = busiResp.getInteger("pageNum");
        Integer pageSize = busiResp.getInteger("pageSize");
        JSONArray list = busiResp.getJSONArray("list");
        List<TravelItinerary> travelItineraryList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            TravelItinerary object = list.getObject(i, TravelItinerary.class);
            travelItineraryList.add(object);
        }
        ListPage listPage = new ListPage<TravelItinerary>();
        listPage.setTotal(total);
        listPage.setPageNum(pageNum);
        listPage.setPageSize(pageSize);
        listPage.setList(travelItineraryList);
        return listPage;
    }
    /**
     * 订单创建及拉起支付
     *
     * @param tradeOrderCreateData
     * @return
     */
    public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) {
        TradeRequest request = new TradeRequest<TradeOrderCreateData>();
        request.setSceneId("1945688132719169536");
        request.setAppId(QianYunTongProperties.appkey);
        request.setConfigVersion(1);
        request.setRequestId(UUIDUtil.getRandomCode());
        request.setData(tradeOrderCreateData);
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradeOrderCreate";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【订单创建及拉起支付】请求地址:" + url);
        log.info("【订单创建及拉起支付】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【订单创建及拉起支付】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if (!"000000".equals(resCode)) {
            log.error("【订单创建及拉起支付】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【订单创建及拉起支付】失败:" + jsonObject.getString("resMsg"));
        }
        TradeOrderCreate busiResp = jsonObject.getObject("busiResp", TradeOrderCreate.class);
        return busiResp;
    }
    /**
     * 订单创建
     *
     * @param createOrderRequest
     * @return
     */
    public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest) {
        TradeRequest request = new TradeRequest<CreateOrderRequest>();
        request.setSceneId(QianYunTongProperties.sceneId);
        request.setAppId(QianYunTongProperties.appkey);
        request.setConfigVersion(1);
        request.setRequestId(UUIDUtil.getRandomCode());
        request.setData(createOrderRequest);
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradeOrderCreate";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【订单创建】请求地址:" + url);
        log.info("【订单创建】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【订单创建】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if (!"000000".equals(resCode)) {
            log.error("【订单创建】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【订单创建】失败:" + jsonObject.getString("resMsg"));
        }
        JSONObject busiResp = jsonObject.getJSONObject("busiResp");
        OrderInfo orderInfo = busiResp.getObject("orderInfo", OrderInfo.class);
        return orderInfo;
    }
    /**
     * (补偿单)拉起支付
     *
     * @param tradePayOffData
     * @return
     */
    public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
        TradeRequest request = new TradeRequest<TradePayOffData>();
        request.setSceneId("1774717104844095488");
        request.setAppId(QianYunTongProperties.appkey);
        request.setConfigVersion(1);
        request.setRequestId(UUIDUtil.getRandomCode());
        request.setData(tradePayOffData);
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradePayOff";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【(补偿单)拉起支付】请求地址:" + url);
        log.info("【(补偿单)拉起支付】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【(补偿单)拉起支付】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if (!"000000".equals(resCode)) {
            log.error("【(补偿单)拉起支付】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【(补偿单)拉起支付】失败:" + jsonObject.getString("resMsg"));
        }
        JSONObject busiResp = jsonObject.getJSONObject("busiResp");
        PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class);
        return payInfo;
    }
    /**
     * 查询支付单信息
     * @param getPaymentInfoDataRequest
     * @return
     */
    public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest){
        GetPaymentInfoRequest request = new GetPaymentInfoRequest();
        request.setRequstType("POST");
        request.setBusType(1);
        request.setData(getPaymentInfoDataRequest);
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/paymentInfo";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【查询支付单信息】请求地址:" + url);
        log.info("【查询支付单信息】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【查询支付单信息】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("retCode");
        if(!"0".equals(resCode)){
            log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
            throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
        }
        JSONObject object = jsonObject.getJSONObject("object");
        String retCode = object.getString("retCode");
        if(!"000000".equals(retCode)){
            log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
            throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg"));
        }
        GetPaymentInfo payInfo = object.getObject("data", GetPaymentInfo.class);
        return payInfo;
    }
    /**
     * (补偿单)支付成功通知
     * @param request
     * @return
     */
    public static OrderInfo paymentOrder(PaymentOrderRequest request){
        //请求路径
        String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/paymentOrder";
        //私钥文件
        String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
        //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
        String appKey = QianYunTongProperties.appkey;//appkey
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        Map<String, Object> contentMap = new HashMap<String, Object>();
        Date nowdate = new Date();
        SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
        String timeStamp = date.format(nowdate);
        String messageId = UUIDUtil.getRandomCode();
        contentMap.put(SystemParameterNames.getAppKey(), appKey);
        contentMap.put(SystemParameterNames.getMessage_id(), messageId);
        contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
        contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
        contentMap.put("content", new Gson().toJson(request));
        log.info("【(补偿单)支付成功通知】请求地址:" + url);
        log.info("【(补偿单)支付成功通知】请求参数:" + JSON.toJSONString(contentMap));
        String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
        log.info("【(补偿单)支付成功通知】请求结果:" + result);
        JSONObject jsonObject = JSON.parseObject(result);
        String resCode = jsonObject.getString("resCode");
        if(!"0".equals(resCode)){
            log.error("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg"));
            throw new RuntimeException("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg"));
        }
        OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class);
        return orderInfo;
    }
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongConfig.java
@@ -62,6 +62,10 @@
     * 向UAAS服务请求到的secret_key
     */
    private String secretKey;
    /**
     * 场景编号
     */
    String sceneId;
    
    
    public QianYunTongConfig getQianYunTongConfig() {
@@ -77,6 +81,7 @@
            this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
            this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
            this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
            this.sceneId = "1948289607125864448";
        }
        if("test".equals(activeProfile)){
            this.setAppkey("10001104");
@@ -90,6 +95,7 @@
            this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
            this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
            this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
            this.sceneId = "1948289607125864448";
        }
        if("prod".equals(activeProfile)){
            this.setAppkey("10001104");
@@ -103,6 +109,7 @@
            this.setAccount("d8bef0a04db511f0b79d01a3e2b7587e");
            this.setAccessKey("TYMFTFD5SIIT15DCCUD7");
            this.setSecretKey("AoI1dkH3yoAvXoaQlREO3ed9mwQJFluLTliS9T1z");
            this.sceneId = "";
        }
        return this;
    }
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java
@@ -9,41 +9,6 @@
public interface QianYunTongProperties {
    /************************************开发/测试start***********************************/
//    /**
//     * appkey
//     */
//    String appkey = "10001104";
//    /**
//     * 私钥地址
//     */
//    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem";
//    /**
//     * 私钥地址
//     */
//    String privateKeyPath = "/root/server/app/key/private_key_test.pem";
//    /**
//     * 消费者账号
//     */
//    String userName = "xiaofei";
//    /**
//     * 状态
//     * 1:生产环境
//     * 2:测试环境
//     */
//    String status = "1";
//    /**
//     * API地址
//     */
//    String apiUrl = "https://test-zhongtai.stqcloud.com:10070";
//    /**
//     * 桶名
//     */
//    String bucketName = "bucuTest0625";
    /************************************开发/测试end***********************************/
    /************************************生产start***********************************/
    /**
     * appkey
     */
@@ -51,15 +16,15 @@
    /**
     * 私钥地址
     */
//    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key.pem";
    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem";
    /**
     * 私钥地址
     */
    String privateKeyPath = "/root/server/app/key/private_key.pem";
//    String privateKeyPath = "/root/server/app/key/private_key_test.pem";
    /**
     * 消费者账号
     */
    String userName = "xiwang";
    String userName = "xiaofei";
    /**
     * 状态
     * 1:生产环境
@@ -69,11 +34,50 @@
    /**
     * API地址
     */
    String apiUrl = "http://jjzhongtai.stqcloud.com:10010";
    String apiUrl = "https://test-zhongtai.stqcloud.com:10070";
    /**
     * 桶名
     */
    String bucketName = "qyt20250702";
    String bucketName = "bucuTest0625";
    /**
     * 场景编号
     */
    String sceneId = "1948289607125864448";
    /************************************开发/测试end***********************************/
    /************************************生产start***********************************/
//    /**
//     * appkey
//     */
//    String appkey = "10001104";
//    /**
//     * 私钥地址
//     */
////    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key.pem";
//    /**
//     * 私钥地址
//     */
//    String privateKeyPath = "/root/server/app/key/private_key.pem";
//    /**
//     * 消费者账号
//     */
//    String userName = "xiwang";
//    /**
//     * 状态
//     * 1:生产环境
//     * 2:测试环境
//     */
//    String status = "1";
//    /**
//     * API地址
//     */
//    String apiUrl = "http://jjzhongtai.stqcloud.com:10010";
//    /**
//     * 桶名
//     */
//    String bucketName = "qyt20250702";
    
    /************************************生产end***********************************/
    
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateOrderRequest.java
New file
@@ -0,0 +1,53 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 9:35
 */
@Data
public class CreateOrderRequest {
    /**
     * 司机id
     */
    private String treatShopId;
    /**
     * 应用场景标识
     */
    private String orderAppId;
    /**
     * 场景标识
     */
    private String scene;
    /**
     * 租户ID。地区行政编码。黔南州传522700
     */
    private String partnerId;
    /**
     * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”}
     */
    private String field1;
    /**
     * 订单总金额,单位元
     */
    private BigDecimal charge;
    /**
     * 订单渠道。小程序传GRJYCXWXXCX,贵人家园传GRJY
     */
    private String channelSource;
    /**
     * 行程单ID
     */
    private String orderId;
    /**
     * 业务侧订单号
     */
    private String orderNo;
    /**
     * 下单人ID
     */
    private String customerId;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/CreateTravelItineraryRequest.java
New file
@@ -0,0 +1,43 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 16:31
 */
@Data
public class CreateTravelItineraryRequest {
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 租户ID。地区行政编码。黔南州传522700
     */
    private String partnerId;
    /**
     * 业务侧订单号
     */
    private String orderNo;
    /**
     * 乘客ID
     */
    private String customerId;
    /**
     * 司机ID
     */
    private String driverId;
    /**
     * 推广员ID
     */
    private String promoterId;
    /**
     * 服务商商户ID
     */
    private String supplierShopId;
    /**
     * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车
     */
    private Integer serviceType;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfo.java
New file
@@ -0,0 +1,45 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 18:24
 */
@Data
public class GetPaymentInfo {
    /**
     * 支付流水号
     */
    private String payId;
    /**
     * 订单中心行程单ID
     */
    private String partnerPayId;
    /**
     * 接入模式:PC H5 APP
     */
    private String accessMode;
    /**
     * 用户标识
     */
    private String customerId;
    /**
     * 商户标识
     */
    private String partnerId;
    /**
     * 币种
     */
    private String currency;
    /**
     * 支付总金额
     */
    private String totalFee;
    /**
     * 商品信息
     */
    private List<GoodsInfoRequest> goodsInfo;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoDataRequest.java
New file
@@ -0,0 +1,19 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 17:08
 */
@Data
public class GetPaymentInfoDataRequest {
    /**
     * 支付单标识。传行程单ID
     */
    private String partnerPayId;
    /**
     * 商户号,由支付中心分配
     */
    private String partnerId;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetPaymentInfoRequest.java
New file
@@ -0,0 +1,23 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 17:03
 */
@Data
public class GetPaymentInfoRequest {
    /**
     * 默认传POST
     */
    private String requstType;
    /**
     * 默认传1
     */
    private Integer busType;
    /**
     * 业务参数
     */
    private GetPaymentInfoDataRequest data;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GetTravelItineraryListRequest.java
New file
@@ -0,0 +1,47 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 16:31
 */
@Data
public class GetTravelItineraryListRequest {
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 租户ID。地区行政编码。黔南州传522700
     */
    private String partnerId;
    /**
     * 业务侧订单号
     */
    private String orderNo;
    /**
     * 乘客ID
     */
    private String customerId;
    /**
     * 司机ID
     */
    private String driverId;
    /**
     * 推广员ID
     */
    private String promoterId;
    /**
     * 服务商商户ID
     */
    private String supplierShopId;
    /**
     * 每页条数
     */
    private Integer pageSize;
    /**
     * 当前页码
     */
    private Integer pageNum;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/GoodsInfoRequest.java
New file
@@ -0,0 +1,39 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:13
 */
@Data
public class GoodsInfoRequest {
    /**
     * 企业ID(补偿场景新创建的订单支付传备用金企业ID)
     */
    private String id;
    /**
     * 子商户微信appId(证联预下单支付必填)
     */
    private String subAppId;
    /**
     * 付款人的openId(证联预下单支付必填)
     */
    private String subOpenId;
    /**
     * 分账标识。0:不分账,1:分账
     */
    private String profitSharing;
    /**
     * 地区标识,默认传520100
     */
    private String areaInfo;
    /**
     * 是否匿名。默认传0
     */
    private String payType;
    /**
     * 业务类型,默认传10408
     */
    private String businessType;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ListPage.java
New file
@@ -0,0 +1,27 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 16:45
 */
@Data
public class ListPage<T> {
    /**
     * 总条数
     */
    private Integer total;
    /**
     * 当前页码
     */
    private Integer pageNum;
    /**
     * 每页条数
     */
    private Integer pageSize;
    /**
     * 数据列表
     */
    private T list;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/ModifyTravelItineraryRequest.java
New file
@@ -0,0 +1,39 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 16:31
 */
@Data
public class ModifyTravelItineraryRequest {
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 租户ID。地区行政编码。黔南州传522700
     */
    private String partnerId;
    /**
     * 行程单ID
     */
    private String orderId;
    /**
     * 行程单状态。2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,9=已完成,10=已取消,11=改派中
     */
    private Integer status;
    /**
     * 司机ID
     */
    private String driverId;
    /**
     * 推广员ID
     */
    private String promoterId;
    /**
     * 服务商商户ID
     */
    private String supplierShopId;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/OrderInfo.java
New file
@@ -0,0 +1,19 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 9:44
 */
@Data
public class OrderInfo {
    /**
     * 订单id
     */
    private String orderId;
    /**
     * 订单状态
     */
    private String status;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfo.java
New file
@@ -0,0 +1,31 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:18
 */
@Data
public class PayInfo {
    /**
     * 证联返回码000000:请求成功
     */
    private String retCode;
    /**
     * 证联返回信息
     */
    private String retMsg;
    /**
     * true、false
     */
    private String success;
    /**
     * 证联返回数据
     */
    private PayInfoData data;
    /**
     * 签名
     */
    private String sign;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PayInfoData.java
New file
@@ -0,0 +1,42 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:18
 */
@Data
public class PayInfoData {
    /**
     * 收银台链接
     */
    private String redirectUrl;
    /**
     * 支付流水号
     */
    private String payId;
    /**
     * 支付工单状态
     * 0    待支付
     * 1    部分支付成功
     * 2    支付成功
     * 3    支付失败
     */
    private String status;
    /**
     * 支付时间,格式:yyyy-MM-dd HH:mm:ss
     */
    private String payTime;
    /**
     * 扣款金额 单位分
     */
    private String payFee;
    /**
     * 支付信息
     */
    private List<PaymentInfo> paymentInfos;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfo.java
New file
@@ -0,0 +1,31 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:32
 */
@Data
public class PaymentInfo {
    /**
     * 支付模式。此场景下默认传501212(测试和生产一致)
     */
    private String payModeId;
    /**
     * 支付交易明细标识
     */
    private String payItemId;
    /**
     * 支付金额
     */
    private String payFee;
    /**
     * 支付状态
     */
    private String status;
    /**
     * 支付时间
     */
    private String payTime;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentInfoRequest.java
New file
@@ -0,0 +1,15 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:32
 */
@Data
public class PaymentInfoRequest {
    /**
     * 支付模式。此场景下默认传501212(测试和生产一致)
     */
    private String payModeId;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/PaymentOrderRequest.java
New file
@@ -0,0 +1,57 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 18:29
 */
@Data
public class PaymentOrderRequest {
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 场景应用标识。默认52270015
     */
    private String mhltiCenterAppId;
    /**
     * 支付流水明细
     */
    private String payItemId;
    /**
     * 支付明细json串
     */
    private String paymentInfo;
    /**
     * 订单ID
     */
    private String orderId;
    /**
     * 支付金额,单位元
     */
    private BigDecimal charge;
    /**
     * 支付时间
     */
    private String payTime;
    /**
     * 支付流水号
     */
    private String paymentSerialNumber;
    /**
     * 付款类型,4、线上支付
     */
    private Integer payType;
    /**
     * 付款方式,6:微信  7:支付宝  8:银行卡 9:银联二维码 10银联购物车收银台
     */
    private Integer payChannel;
    /**
     * 是否补偿单。1、是,0、否
     */
    private Integer isCompensate;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallback.java
New file
@@ -0,0 +1,27 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 19:31
 */
@Data
public class QYTPaymentCallback {
    /**
     * 加密字符串
     */
    private String sign;
    /**
     * 时间戳
     */
    private String timeStamp;
    /**
     * 请求调用唯一标识
     */
    private String messageId;
    /**
     * 支付结果信息
     */
    private QYTPaymentCallbackData data;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentCallbackData.java
New file
@@ -0,0 +1,41 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 19:34
 */
@Data
public class QYTPaymentCallbackData {
    /**
     * 商户单标识。行程单ID
     */
    private String partnerPayId;
    /**
     * 支付中心商户号
     */
    private String partnerId;
    /**
     * 支付工单标识
     */
    private String payId;
    /**
     * 支付状态。1.未支付 2已支付
     */
    private String status;
    /**
     * 支付时间,格式:YYYY-MM-DD HH:mm:ss
     */
    private String payTime;
    /**
     * 扣款总金额 单位分
     */
    private String payFee;
    /**
     * 支付详细信息
     */
    private List<QYTPaymentInfoCallback> paymentInfos;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/QYTPaymentInfoCallback.java
New file
@@ -0,0 +1,35 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 19:37
 */
@Data
public class QYTPaymentInfoCallback {
    /**
     * 支付交易明细标识
     */
    private String payItemId;
    /**
     * 支付模式
     */
    private String payModeId;
    /**
     * 支付金额,单位分
     */
    private String payFee;
    /**
     * 实付金额,单位分
     */
    private String realFee;
    /**
     * 支付状态。1.未支付 2已支付
     */
    private String status;
    /**
     * 支付时间,格式:YYYY-MM-DD HH:mm:ss
     */
    private String payTime;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreate.java
New file
@@ -0,0 +1,19 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:17
 */
@Data
public class TradeOrderCreate {
    /**
     * 订单信息
     */
    private OrderInfo orderInfo;
    /**
     * 支付接口调用信息
     */
    private PayInfo payInfo;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeOrderCreateData.java
New file
@@ -0,0 +1,95 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:03
 */
@Data
public class TradeOrderCreateData {
    /**
     * 司机id
     */
    private String treatShopId;
    /**
     * 应用场景标识
     */
    private String orderAppId;
    /**
     * 场景标识
     */
    private String scene;
    /**
     * 租户ID。地区行政编码。黔南州传522700
     */
    private String partnerId;
    /**
     * 结算信息json串。其中结算分账标识(profitSharing:0:不分账,1:分账)、是否推广单标识(isPromote:1、是、0、否)必传。例:{"profitSharing":"0",”isPromote”:”0”}
     */
    private String field1;
    /**
     * 订单总金额,单位元
     */
    private BigDecimal charge;
    /**
     * 订单渠道。小程序传GRJYCXWXXCX,贵人家园传GRJY
     */
    private String channelSource;
    /**
     * 行程单ID
     */
    private String orderId;
    /**
     * 业务侧订单号
     */
    private String orderNo;
    /**
     * 下单人ID
     */
    private String customerId;
    /**
     * 商户号,由支付中心分配。测试环境5400004
     */
    private String payPartnerId;
    /**
     * 商户单标识。订单中心行程单号,每次请求请保持唯一性。
     */
    private String partnerPayId;
    /**
     * 币种。RMB(人民币);USD(美元)
     */
    private String currency;
    /**
     * 交易总金额,单位分。
     */
    private String totalFee;
    /**
     * 前台通知URL地址。
     */
    private String retUrl;
    /**
     * 用户IP
     */
    private String clientIp;
    /**
     * Y代表要登录,跳到标准收银台
     * N代表不需要登录,跳到无支付帐号收银台
     */
    private String needLoginFlag;
    /**
     * 支付单描述
     */
    private String orderDesc;
    /**
     * 接入模式:PC、H5、APP
     */
    private String accessMode;
    /**
     * 支付信息
     */
    private List<GoodsInfoRequest> goodsInfo;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOff1Data.java
New file
@@ -0,0 +1,58 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:23
 */
@Data
public class TradePayOff1Data {
    /**
     * 商户号,由支付中心分配。测试环境5400004
     */
    private String partnerId;
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 商户单标识。订单中心订单号,每次请求请保持唯一性。
     */
    private String partnerPayId;
    /**
     * 币种。RMB(人民币);USD(美元)
     */
    private String currency;
    /**
     * 交易总金额,单位分。
     */
    private String totalFee;
    /**
     * 前台通知URL地址。
     */
    private String retUrl;
    /**
     * 用户IP
     */
    private String clientIp;
    /**
     * Y代表要登录,跳到标准收银台
     * N代表不需要登录,跳到无支付帐号收银台
     */
    private String needLoginFlag;
    /**
     * 支付单描述
     */
    private String orderDesc;
    /**
     * 接入模式:PC、H5、APP
     */
    private String accessMode;
    /**
     * 商品描述信息。Json数组
     */
    private List<GoodsInfoRequest> goodsInfo;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradePayOffData.java
New file
@@ -0,0 +1,63 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import com.alipay.api.domain.GoodsInfo;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:23
 */
@Data
public class TradePayOffData {
    /**
     * 商户号,由支付中心分配。测试环境5400004
     */
    private String partnerId;
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 商户单标识。订单中心订单号,每次请求请保持唯一性。
     */
    private String partnerPayId;
    /**
     * 币种。RMB(人民币);USD(美元)
     */
    private String currency;
    /**
     * 交易总金额,单位分。
     */
    private String totalFee;
    /**
     * 前台通知URL地址。
     */
    private String retUrl;
    /**
     * 用户IP
     */
    private String clientIp;
    /**
     * Y代表要登录,跳到标准收银台
     * N代表不需要登录,跳到无支付帐号收银台
     */
    private String needLoginFlag;
    /**
     * 支付单描述
     */
    private String orderDesc;
    /**
     * 接入模式:PC、H5、APP
     */
    private String accessMode;
    /**
     * 支付信息
     */
    private List<PaymentInfoRequest> paymentInfos;
    /**
     * 商品描述信息。Json数组
     */
    private List<GoodsInfo> goodsInfo;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TradeRequest.java
New file
@@ -0,0 +1,31 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 10:22
 */
@Data
public class TradeRequest<T> {
    /**
     * 场景编号.交易中心提供。测试环境:1948289607125864448
     */
    private String sceneId;
    /**
     * 应用编号。中台应用appKey
     */
    private String appId;
    /**
     * 场景版本。交易中心提供。测试环境1
     */
    private Integer configVersion;
    /**
     * 请求ID。每次调用唯一标识
     */
    private String requestId;
    /**
     * 业务数据
     */
    private T data;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/model/TravelItinerary.java
New file
@@ -0,0 +1,64 @@
package com.stylefeng.guns.modular.system.util.qianyuntong.model;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/7/24 16:48
 */
@Data
public class TravelItinerary {
    /**
     * 场景标识。交通场景传”TRAFFIC”
     */
    private String scene;
    /**
     * 租户ID。地区行政编码。黔南州传522700
     */
    private String partnerId;
    /**
     * 业务侧订单号
     */
    private String orderNo;
    /**
     * 乘客ID
     */
    private String customerId;
    /**
     * 司机ID
     */
    private String driverId;
    /**
     * 订单号
     */
    private String orderId;
    /**
     * 推广员ID
     */
    private String promoterId;
    /**
     * 服务商商户ID
     */
    private String supplierShopId;
    /**
     * 场景服务类型。1、出租;2、网约车;3、城际;4、顺风车
     */
    private Integer serviceType;
    /**
     * 订单状态。1、待支付,11、已完结(可结算)
     */
    private Integer orderStatus;
    /**
     * 行程单状态。2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,9=已完成,10=已取消,11=改派中
     */
    private Integer status;
    /**
     * 创建时间
     */
    private String createTime;
    /**
     * 更新时间
     */
    private String updateTime;
}
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/TokenUtil.java
@@ -41,7 +41,6 @@
        
        
        tokenRequest.setAppId(zhengLianConfig.getAppid());
        tokenRequest.setType("04");
        String reqBO = JSON.toJSONString(tokenRequest);
        // 生成对称加密秘钥
        String key = ZhengLianUtil.generateKey(16);
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/zhenglian/ZhengLianConfig.java
@@ -58,8 +58,8 @@
            this.merchNo = "B00000871";
            this.encrpNo = "1055490595";
            this.signNo = "1066348524";
            this.cer = "C:\\Users\\39373\\Desktop\\UAT-demo-公用\\1055490595.cer";
            this.sm2 = "C:\\Users\\39373\\Desktop\\UAT-demo-公用\\871_111111.sm2";
            this.cer = "C:\\Users\\Administrator\\Desktop\\1055490595.cer";
            this.sm2 = "C:\\Users\\Administrator\\Desktop\\871_111111.sm2";
            this.password = "111111";
        }
        if("test".equals(activeProfile)){
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java
@@ -13,6 +13,10 @@
@Document(collection = "driver_position")
public class DriverPosition {
    @Id
    private String id;
    /**
     * 司机id
     */
    private Integer driverId;
    /**
     * 点位
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.stylefeng.guns.modular.system.model.BaseBean;
import java.math.BigDecimal;
import java.util.Date;
@@ -360,6 +359,8 @@
    private String promotionUser;
    private String promotionPhone;
    private String travelId;
    public String getPromotionUser() {
@@ -945,7 +946,15 @@
    public void setSplitAllocation(String splitAllocation) {
        this.splitAllocation = splitAllocation;
    }
    public String getTravelId() {
        return travelId;
    }
    public void setTravelId(String travelId) {
        this.travelId = travelId;
    }
    @Override
    public String toString() {
        return "OrderTaxi{" +
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -12,6 +12,9 @@
import com.stylefeng.guns.modular.system.model.*;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.CreateTravelItineraryRequest;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.ModifyTravelItineraryRequest;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
@@ -220,7 +223,38 @@
            orderTaxi.setPromotionPhone(driver1.getPhone());
            orderTaxi.setPromotionDriverId(promotion);
        }
        if(null == oldDriverId){
            UserInfo userInfo = userInfoMapper.selectById(orderTaxi.getUserId());
            Company company = companyService.selectById(driver.getCompanyId());
            //调三方订单中心创建行程单
            CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
            request.setOrderNo("TA" + orderTaxi.getId());
            request.setCustomerId(userInfo.getOnconUUID());
            request.setDriverId(driver.getEmpId().toString());
            request.setSupplierShopId(company.getEnterCode());
            if(2 == orderTaxi.getPromotion()){
                Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
                request.setPromoterId(driver1.getEmpId().toString());
            }
            request.setServiceType(1);
            String travelItinerary = OrderUtil.createTravelItinerary(request);
            orderTaxi.setTravelId(travelItinerary);
        }else{
            //改派抢单
            Company company1 = companyService.selectById(driver.getCompanyId());
            //中台修改订单状态
            ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
            request1.setOrderId(orderTaxi.getTravelId());
            request1.setStatus(orderTaxi.getState());
            request1.setDriverId(driver.getEmpId().toString());
            if(2 == orderTaxi.getPromotion()){
                Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
                request1.setPromoterId(driver1.getEmpId().toString());
            }
            request1.setSupplierShopId(company1.getEnterCode());
            OrderUtil.modifyTravelItinerary(request1);
        }
        this.updateById(orderTaxi);
        if(orderTaxi.getType() == 2){
@@ -485,6 +519,20 @@
                break;
        }
        this.updateById(orderTaxi);
        Driver driver = driverService.selectById(orderTaxi.getDriverId());
        Company company = companyService.selectById(driver.getCompanyId());
        //中台修改订单状态
        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
        request.setOrderId(orderTaxi.getTravelId());
        request.setStatus(orderTaxi.getState());
        request.setDriverId(driver.getEmpId().toString());
        if(2 == orderTaxi.getPromotion()){
            Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
            request.setPromoterId(driver1.getEmpId().toString());
        }
        request.setSupplierShopId(company.getEnterCode());
        OrderUtil.modifyTravelItinerary(request);
        // TODO: 2020/6/5 推送状态
        new Thread(new Runnable() {
@@ -528,9 +576,22 @@
            orderTaxi.setState(7);
        }
        this.updateById(orderTaxi);
        Driver driver = driverService.selectById(orderTaxi.getDriverId());
        Company company = companyService.selectById(driver.getCompanyId());
        //中台修改订单状态
        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
        request.setOrderId(orderTaxi.getTravelId());
        request.setStatus(orderTaxi.getState());
        request.setDriverId(driver.getEmpId().toString());
        if(2 == orderTaxi.getPromotion()){
            Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
            request.setPromoterId(driver1.getEmpId().toString());
        }
        request.setSupplierShopId(company.getEnterCode());
        OrderUtil.modifyTravelItinerary(request);
        //回滚司机状态为空闲
        Driver driver = driverService.selectById(orderTaxi.getDriverId());
        driver.setState(2);
        driverService.updateById(driver);
@@ -568,9 +629,22 @@
            orderTaxi.setState(7);
        }
        this.updateById(orderTaxi);
        Driver driver = driverService.selectById(orderTaxi.getDriverId());
        Company company1 = companyService.selectById(driver.getCompanyId());
        //中台修改订单状态
        ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
        request1.setOrderId(orderTaxi.getTravelId());
        request1.setStatus(orderTaxi.getState());
        request1.setDriverId(driver.getEmpId().toString());
        if(2 == orderTaxi.getPromotion()){
            Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
            request1.setPromoterId(driver1.getEmpId().toString());
        }
        request1.setSupplierShopId(company1.getEnterCode());
        OrderUtil.modifyTravelItinerary(request1);
        //回滚司机状态为空闲
        Driver driver = driverService.selectById(orderTaxi.getDriverId());
        driver.setState(2);
        driverService.updateById(driver);
DriverQYTTravel/guns-admin/src/test/java/com/stylefeng/guns/GunsApplicationTest.java
@@ -1,11 +1,36 @@
//package com.stylefeng.guns;
//
//import org.junit.runner.RunWith;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.test.context.junit4.SpringRunner;
//
//@RunWith(SpringRunner.class)
//@SpringBootTest
//public class GunsApplicationTest {
//
//}
package com.stylefeng.guns;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class GunsApplicationTest {
    @Autowired
    private MongoTemplate mongoTemplate;
    @Test
    public void test(){
//        GeoJsonPoint point = new GeoJsonPoint(new Point(Double.parseDouble("104.043149"),
//                Double.parseDouble("30.642483")));
//        DriverPosition position = mongoTemplate.findOne(Query.query(Criteria.where("driverId")
//                .is(14)), DriverPosition.class);
//        if(null == position){
//            position = new DriverPosition();
//        }
//        position.setDriverId(14);
//        position.setPoint(point);
//        mongoTemplate.save(position);
//        Query query = Query.query(Criteria.where("point").nearSphere(new Point(Double.parseDouble("104.043149"), Double.parseDouble("30.642483"))).maxDistance(5000));
//        List<DriverPosition> driverPositions = mongoTemplate.find(query, DriverPosition.class);
//        System.err.println(driverPositions);
    }
}
MessagePushTravel/src/main/java/com/sinata/push/util/echo/DiscardServerHandler.java
@@ -23,7 +23,7 @@
    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
        if(isdebug) {
//            System.err.println(insocket.getAddress() + ": 收到客户端数据.......");
            System.err.println(insocket.getAddress() + ": 收到客户端数据.......");
        }
        try {
            // 调用service
@@ -39,7 +39,7 @@
    protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {
        InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
        if(isdebug) {
//            System.err.println(insocket.getAddress() + ": 收到客户端数据.......");
            System.err.println(insocket.getAddress() + ": 收到客户端数据.......");
        }
        try {
            // 调用service
@@ -70,7 +70,7 @@
    public void channelActive(final ChannelHandlerContext ctx) throws Exception {
        InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress();
        if(isdebug) {
//            System.err.println(insocket.getAddress() + ": Connect successful......");
            System.err.println(insocket.getAddress() + ": Connect successful......");
        }
    }
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -14,12 +14,9 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.geo.GeoResult;
import org.springframework.data.geo.GeoResults;
import org.springframework.data.geo.Point;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.NearQuery;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -140,19 +137,15 @@
    })
    public ResultUtil<List<Map<String, Object>>> queryNearbyCar(String lon, String lat){
        //mongodb查询附近5公里范围内的坐标
        NearQuery query = NearQuery.near(new Point(Double.parseDouble(lon), Double.parseDouble(lat)));
        query.query(Query.query(Criteria.where("point")));
        query.maxDistance(5000);
        GeoResults<DriverPosition> results = mongoTemplate.geoNear(query, DriverPosition.class);
        Query query = Query.query(Criteria.where("point").nearSphere(new Point(Double.parseDouble(lon), Double.parseDouble(lat))).maxDistance(5000));
        List<DriverPosition> driverPositions = mongoTemplate.find(query, DriverPosition.class);
        List<Map<String, Object>> collect = new ArrayList<>();
        if(collect.size() > 0){
            List<GeoResult<DriverPosition>> content1 = results.getContent();
            List<DriverPosition> positionList = content1.stream().map(GeoResult::getContent).collect(Collectors.toList());
            List<Integer> driverIds = positionList.stream().map(DriverPosition::getDriverId).collect(Collectors.toList());
            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().in("driverId", driverIds)
        if(driverPositions.size() > 0){
            List<Integer> driverIds = driverPositions.stream().map(DriverPosition::getDriverId).collect(Collectors.toList());
            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().in("id", driverIds)
                    .eq("authState", 2).eq("state", 2));
            collect = drivers.stream().map(driver -> {
                Optional<DriverPosition> driverPosition = positionList.stream().filter(position -> position.getDriverId().equals(driver.getId())).findFirst();
                Optional<DriverPosition> driverPosition = driverPositions.stream().filter(position -> position.getDriverId().equals(driver.getId())).findFirst();
                Map<String, Object> map = new HashMap<>();
                map.put("driverId", driver.getId());
                map.put("name", driver.getName());
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
Diff too large
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/model/OrderPrivateCar.java
@@ -13,1310 +13,1374 @@
 */
@TableName("t_order_private_car")
public class OrderPrivateCar {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableField("id")
    private Integer id;
    /**
     * 订单类型(1=普通订单,2=摆渡订单)
     */
    @TableField("type")
    private Integer type;
    /**
     * 跨城订单id(摆渡车专用)
     */
    @TableField("crossCityOrderId")
    private Integer crossCityOrderId;
    /**
     * 摆渡方位(1=跨城起点,2=跨城终点)
     */
    @TableField("place")
    private Integer place;
    /**
     * 用户id
     */
    @TableField("userId")
    private Integer userId;
    /**
     * 服务车型
     */
    @TableField("serverCarModel")
    private String serverCarModel;
    /**
     * 服务车型id
     */
    @TableField("serverCarModelId")
    private Integer serverCarModelId;
    /**
     * 司机id
     */
    @TableField("driverId")
    private Integer driverId;
    /**
     * 车辆id
     */
    @TableField("carId")
    private Integer carId;
    /**
     * 订单号
     */
    @TableField("orderNum")
    private String orderNum;
    /**
     * 下单地点经度
     */
    @TableField("placementLon")
    private Double placementLon;
    /**
     * 下单地点纬度
     */
    @TableField("placementLat")
    private Double placementLat;
    /**
     * 下单地点
     */
    @TableField("placementAddress")
    private String placementAddress;
    /**
     * 起点经度
     */
    @TableField("startLon")
    private Double startLon;
    /**
     * 起点纬度
     */
    @TableField("startLat")
    private Double startLat;
    /**
     * 起点
     */
    @TableField("startAddress")
    private String startAddress;
    /**
     * 目的地经度
     */
    @TableField("endLon")
    private Double endLon;
    /**
     * 目的地纬度
     */
    @TableField("endLat")
    private Double endLat;
    /**
     * 目的地
     */
    @TableField("endAddress")
    private String endAddress;
    /**
     * 上车点经度
     */
    @TableField("boardingLon")
    private Double boardingLon;
    /**
     * 上车点纬度
     */
    @TableField("boardingLat")
    private Double boardingLat;
    /**
     * 上车地点
     */
    @TableField("boardingAddress")
    private String boardingAddress;
    /**
     * 上车时间
     */
    @TableField("boardingTime")
    private Date boardingTime;
    /**
     * 下车点经度
     */
    @TableField("getoffLon")
    private Double getoffLon;
    /**
     * 下车点纬度
     */
    @TableField("getoffLat")
    private Double getoffLat;
    /**
     * 下车点
     */
    @TableField("getoffAddress")
    private String getoffAddress;
    /**
     * 下车时间
     */
    @TableField("getoffTime")
    private Date getoffTime;
    /**
     * 行驶里程数(米)
     */
    @TableField("mileage")
    private Double mileage;
    /**
     * 支付方式(1=OK平台支付,2=其他方式支付)
     */
    @TableField("payManner")
    private Integer payManner;
    /**
     * 支付方式(1=微信,2=支付宝,3=余额)
     */
    @TableField("payType")
    private Integer payType;
    /**
     * 订单金额
     */
    @TableField("orderMoney")
    private Double orderMoney;
    /**
     * 起步里程
     */
    @TableField("startMileage")
    private Double startMileage;
    /**
     * 起步价
     */
    @TableField("startMoney")
    private Double startMoney;
    /**
     * 里程公里
     */
    @TableField("mileageKilometers")
    private Double mileageKilometers;
    /**
     * 里程费
     */
    @TableField("mileageMoney")
    private Double mileageMoney;
    /**
     * 时长分钟
     */
    @TableField("duration")
    private Double duration;
    /**
     * 时长费
     */
    @TableField("durationMoney")
    private Double durationMoney;
    /**
     * 等待分钟
     */
    @TableField("wait")
    private Double wait;
    /**
     * 等待费
     */
    @TableField("waitMoney")
    private Double waitMoney;
    /**
     * 远途公里
     */
    @TableField("longDistance")
    private Double longDistance;
    /**
     * 远途费
     */
    @TableField("longDistanceMoney")
    private Double longDistanceMoney;
    /**
     * 停车费
     */
    @TableField("parkMoney")
    private Double parkMoney;
    /**
     * 过路费
     */
    @TableField("roadTollMoney")
    private Double roadTollMoney;
    //节假费
    @TableField("holidayFee")
    private Double holidayFee;
    /**
     * 红包抵扣金额
     */
    @TableField("redPacketMoney")
    private Double redPacketMoney;
    /**
     * 优惠券抵扣金额
     */
    @TableField("couponMoney")
    private Double couponMoney;
    /**
     * 红包id
     */
    @TableField("redPacketId")
    private Integer redPacketId;
    /**
     * 优惠券id
     */
    @TableField("couponId")
    private Integer couponId;
    /**
     * 折扣
     */
    @TableField("discount")
    private Double discount;
    /**
     * 折扣优惠金额
     */
    @TableField("discountMoney")
    private Double discountMoney;
    /**
     * 折扣活动id
     */
    @TableField("activityId")
    private Integer activityId;
    /**
     * 打折卡id
     */
    @TableField("taxiCardId")
    private Integer taxiCardId;
    /**
     * 打车卡记录id
     */
    @TableField("userTaxiCardId")
    private Integer userTaxiCardId;
    /**
     * 优惠金额
     */
    @TableField("discountAmount")
    private Double discountAmount;
    /**
     * 公司id
     */
    @TableField("companyId")
    private Integer companyId;
    /**
     * 支付金额
     */
    @TableField("payMoney")
    private Double payMoney;
    //感谢费
    @TableField("thankYouFee")
    private Double thankYouFee;
    /**
     * 是否是代下单(0:否,1:是)
     */
    @TableField("substitute")
    private Integer substitute;
    /**
     * 乘车人姓名
     */
    @TableField("passengers")
    private String passengers;
    /**
     * 乘车人电话
     */
    @TableField("passengersPhone")
    private String passengersPhone;
    /**
     * 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付)
     */
    @TableField("state")
    private Integer state;
    /**
     * 下单时间
     */
    @TableField("insertTime")
    private Date insertTime;
    /**
     * 出行时间
     */
    @TableField("travelTime")
    private Date travelTime;
    /**
     * 抢单时间
     */
    @TableField("snatchOrderTime")
    private Date snatchOrderTime;
    /**
     * 司机点出发时间
     */
    @TableField("setOutTime")
    private Date setOutTime;
    /**
     * 司机到达预约地点时间
     */
    @TableField("arriveTime")
    private Date arriveTime;
    /**
     * 开始服务时间
     */
    @TableField("startServiceTime")
    private Date startServiceTime;
    /**
     * 结束服务时间
     */
    @TableField("endServiceTime")
    private Date endServiceTime;
    /**
     * 订单类型(1=普通,2=预约)
     */
    @TableField("orderType")
    private Integer orderType;
    /**
     * 订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单)
     */
    @TableField("orderSource")
    private Integer orderSource;
    /**
     * 发票id
     */
    @TableField("invoiceId")
    private Integer invoiceId;
    /**
     * 是否是改派单(1=否,=是)
     * @return
     */
    @TableField("isReassign")
    private Integer isReassign;
    /**
     * 改派通知标识(0=没有改派,1=改派中,2=已改派)用于通知前端获取新司机数据
     */
    @TableField("reassignNotice")
    private Integer reassignNotice;
    /**
     * 高德猎鹰轨迹id
     * @return
     */
    @TableField("trackId")
    private String trackId;
    /**
     * 是否删除(1=否,2=是)
     */
    @TableField("isDelete")
    private Integer isDelete;
    /**
     * 该派前的订单状态
     * @return
     */
    @TableField("oldState")
    private Integer oldState;
    /**
     * 移动小号
     * @return
     */
    @TableField("telX")
    private String telX;
    /**
     * 绑定小号关系id
     * @return
     */
    @TableField("bindId")
    private String bindId;
    /**
     * 乘车人数
     */
    @TableField("peopleNum")
    private Integer peopleNum;
    /**
     * 乘车类型(1=独享,2=一口价,3=拼车)
     */
    @TableField("rideType")
    private Integer rideType;
    @TableField("pid")
    private Integer pid;
    /**
     * 是否异常订单 1否 2是
     */
    @TableField("abnormal")
    private Integer abnormal;
    /**
     * 推广订单 1否 2是
     */
    @TableField("promotion")
    private Integer promotion;
    private String promotionUser;
    private String promotionPhone;
    /**
     * 乘客反馈情况
     */
    @TableField("abnormalIntro")
    private String abnormalIntro;
    /**
     * 乘客反馈图片
     */
    @TableField("abnormalImg")
    private String abnormalImg;
    private Integer promotionDriverId;
    private BigDecimal promotionMoney;
    private Integer totalPeopleNum;
    /**
     * 预估里程(米)
     */
    private Double estimateMileage;
    private Double estimateTime;
    private Integer spellSuccess;
    private String splitAllocation;
    private Integer responsibilityType;
    private Long promotionActivityId;
    public Long getPromotionActivityId() {
        return promotionActivityId;
    }
    public void setPromotionActivityId(Long promotionActivityId) {
        this.promotionActivityId = promotionActivityId;
    }
    public String getPromotionUser() {
        return promotionUser;
    }
    public void setPromotionUser(String promotionUser) {
        this.promotionUser = promotionUser;
    }
    public String getPromotionPhone() {
        return promotionPhone;
    }
    public void setPromotionPhone(String promotionPhone) {
        this.promotionPhone = promotionPhone;
    }
    public Integer getResponsibilityType() {
        return responsibilityType;
    }
    public void setResponsibilityType(Integer responsibilityType) {
        this.responsibilityType = responsibilityType;
    }
    public Integer getPromotion() {
        return promotion;
    }
    public void setPromotion(Integer promotion) {
        this.promotion = promotion;
    }
    public Integer getPromotionDriverId() {
        return promotionDriverId;
    }
    public void setPromotionDriverId(Integer promotionDriverId) {
        this.promotionDriverId = promotionDriverId;
    }
    public BigDecimal getPromotionMoney() {
        return promotionMoney;
    }
    public void setPromotionMoney(BigDecimal promotionMoney) {
        this.promotionMoney = promotionMoney;
    }
    public Integer getAbnormal() {
        return abnormal;
    }
    public void setAbnormal(Integer abnormal) {
        this.abnormal = abnormal;
    }
    public String getAbnormalIntro() {
        return abnormalIntro;
    }
    public void setAbnormalIntro(String abnormalIntro) {
        this.abnormalIntro = abnormalIntro;
    }
    public String getAbnormalImg() {
        return abnormalImg;
    }
    public void setAbnormalImg(String abnormalImg) {
        this.abnormalImg = abnormalImg;
    }
    public Integer getSpellSuccess() {
        return spellSuccess;
    }
    public void setSpellSuccess(Integer spellSuccess) {
        this.spellSuccess = spellSuccess;
    }
    public Double getEstimateTime() {
        return estimateTime;
    }
    public void setEstimateTime(Double estimateTime) {
        this.estimateTime = estimateTime;
    }
    public Double getEstimateMileage() {
        return estimateMileage;
    }
    public void setEstimateMileage(Double estimateMileage) {
        this.estimateMileage = estimateMileage;
    }
    public Integer getTotalPeopleNum() {
        return totalPeopleNum;
    }
    public void setTotalPeopleNum(Integer totalPeopleNum) {
        this.totalPeopleNum = totalPeopleNum;
    }
    public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public Integer getPeopleNum() {
        return peopleNum;
    }
    public void setPeopleNum(Integer peopleNum) {
        this.peopleNum = peopleNum;
    }
    public Integer getRideType() {
        return rideType;
    }
    public void setRideType(Integer rideType) {
        this.rideType = rideType;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public Integer getCrossCityOrderId() {
        return crossCityOrderId;
    }
    public void setCrossCityOrderId(Integer crossCityOrderId) {
        this.crossCityOrderId = crossCityOrderId;
    }
    public Integer getPlace() {
        return place;
    }
    public void setPlace(Integer place) {
        this.place = place;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public String getServerCarModel() {
        return serverCarModel;
    }
    public void setServerCarModel(String serverCarModel) {
        this.serverCarModel = serverCarModel;
    }
    public Integer getServerCarModelId() {
        return serverCarModelId;
    }
    public void setServerCarModelId(Integer serverCarModelId) {
        this.serverCarModelId = serverCarModelId;
    }
    public Integer getDriverId() {
        return driverId;
    }
    public void setDriverId(Integer driverId) {
        this.driverId = driverId;
    }
    public Integer getCarId() {
        return carId;
    }
    public void setCarId(Integer carId) {
        this.carId = carId;
    }
    public String getOrderNum() {
        return orderNum;
    }
    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }
    public Double getPlacementLon() {
        return placementLon;
    }
    public void setPlacementLon(Double placementLon) {
        this.placementLon = placementLon;
    }
    public Double getPlacementLat() {
        return placementLat;
    }
    public void setPlacementLat(Double placementLat) {
        this.placementLat = placementLat;
    }
    public String getPlacementAddress() {
        return placementAddress;
    }
    public void setPlacementAddress(String placementAddress) {
        this.placementAddress = placementAddress;
    }
    public Double getStartLon() {
        return startLon;
    }
    public void setStartLon(Double startLon) {
        this.startLon = startLon;
    }
    public Double getStartLat() {
        return startLat;
    }
    public void setStartLat(Double startLat) {
        this.startLat = startLat;
    }
    public String getStartAddress() {
        return startAddress;
    }
    public void setStartAddress(String startAddress) {
        this.startAddress = startAddress;
    }
    public Double getEndLon() {
        return endLon;
    }
    public void setEndLon(Double endLon) {
        this.endLon = endLon;
    }
    public Double getEndLat() {
        return endLat;
    }
    public void setEndLat(Double endLat) {
        this.endLat = endLat;
    }
    public String getEndAddress() {
        return endAddress;
    }
    public void setEndAddress(String endAddress) {
        this.endAddress = endAddress;
    }
    public Double getBoardingLon() {
        return boardingLon;
    }
    public void setBoardingLon(Double boardingLon) {
        this.boardingLon = boardingLon;
    }
    public Double getBoardingLat() {
        return boardingLat;
    }
    public void setBoardingLat(Double boardingLat) {
        this.boardingLat = boardingLat;
    }
    public String getBoardingAddress() {
        return boardingAddress;
    }
    public void setBoardingAddress(String boardingAddress) {
        this.boardingAddress = boardingAddress;
    }
    public Date getBoardingTime() {
        return boardingTime;
    }
    public void setBoardingTime(Date boardingTime) {
        this.boardingTime = boardingTime;
    }
    public Double getGetoffLon() {
        return getoffLon;
    }
    public void setGetoffLon(Double getoffLon) {
        this.getoffLon = getoffLon;
    }
    public Double getGetoffLat() {
        return getoffLat;
    }
    public void setGetoffLat(Double getoffLat) {
        this.getoffLat = getoffLat;
    }
    public String getGetoffAddress() {
        return getoffAddress;
    }
    public void setGetoffAddress(String getoffAddress) {
        this.getoffAddress = getoffAddress;
    }
    public Date getGetoffTime() {
        return getoffTime;
    }
    public void setGetoffTime(Date getoffTime) {
        this.getoffTime = getoffTime;
    }
    public Double getMileage() {
        return mileage;
    }
    public void setMileage(Double mileage) {
        this.mileage = mileage;
    }
    public Integer getPayManner() {
        return payManner;
    }
    public void setPayManner(Integer payManner) {
        this.payManner = payManner;
    }
    public Integer getPayType() {
        return payType;
    }
    public void setPayType(Integer payType) {
        this.payType = payType;
    }
    public Double getOrderMoney() {
        return orderMoney;
    }
    public void setOrderMoney(Double orderMoney) {
        this.orderMoney = orderMoney;
    }
    public Double getStartMileage() {
        return startMileage;
    }
    public void setStartMileage(Double startMileage) {
        this.startMileage = startMileage;
    }
    public Double getStartMoney() {
        return startMoney;
    }
    public void setStartMoney(Double startMoney) {
        this.startMoney = startMoney;
    }
    public Double getMileageKilometers() {
        return mileageKilometers;
    }
    public void setMileageKilometers(Double mileageKilometers) {
        this.mileageKilometers = mileageKilometers;
    }
    public Double getMileageMoney() {
        return mileageMoney;
    }
    public void setMileageMoney(Double mileageMoney) {
        this.mileageMoney = mileageMoney;
    }
    public Double getDuration() {
        return duration;
    }
    public void setDuration(Double duration) {
        this.duration = duration;
    }
    public Double getDurationMoney() {
        return durationMoney;
    }
    public void setDurationMoney(Double durationMoney) {
        this.durationMoney = durationMoney;
    }
    public Double getWait() {
        return wait;
    }
    public void setWait(Double wait) {
        this.wait = wait;
    }
    public Double getWaitMoney() {
        return waitMoney;
    }
    public void setWaitMoney(Double waitMoney) {
        this.waitMoney = waitMoney;
    }
    public Double getLongDistance() {
        return longDistance;
    }
    public void setLongDistance(Double longDistance) {
        this.longDistance = longDistance;
    }
    public Double getLongDistanceMoney() {
        return longDistanceMoney;
    }
    public void setLongDistanceMoney(Double longDistanceMoney) {
        this.longDistanceMoney = longDistanceMoney;
    }
    public Double getParkMoney() {
        return parkMoney;
    }
    public void setParkMoney(Double parkMoney) {
        this.parkMoney = parkMoney;
    }
    public Double getRoadTollMoney() {
        return roadTollMoney;
    }
    public void setRoadTollMoney(Double roadTollMoney) {
        this.roadTollMoney = roadTollMoney;
    }
    public Double getHolidayFee() {
        return holidayFee;
    }
    public void setHolidayFee(Double holidayFee) {
        this.holidayFee = holidayFee;
    }
    public Double getRedPacketMoney() {
        return redPacketMoney;
    }
    public void setRedPacketMoney(Double redPacketMoney) {
        this.redPacketMoney = redPacketMoney;
    }
    public Double getCouponMoney() {
        return couponMoney;
    }
    public void setCouponMoney(Double couponMoney) {
        this.couponMoney = couponMoney;
    }
    public Integer getRedPacketId() {
        return redPacketId;
    }
    public void setRedPacketId(Integer redPacketId) {
        this.redPacketId = redPacketId;
    }
    public Integer getCouponId() {
        return couponId;
    }
    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }
    public Double getDiscount() {
        return discount;
    }
    public void setDiscount(Double discount) {
        this.discount = discount;
    }
    public Double getDiscountMoney() {
        return discountMoney;
    }
    public void setDiscountMoney(Double discountMoney) {
        this.discountMoney = discountMoney;
    }
    public Integer getActivityId() {
        return activityId;
    }
    public void setActivityId(Integer activityId) {
        this.activityId = activityId;
    }
    public Integer getTaxiCardId() {
        return taxiCardId;
    }
    public void setTaxiCardId(Integer taxiCardId) {
        this.taxiCardId = taxiCardId;
    }
    public Integer getUserTaxiCardId() {
        return userTaxiCardId;
    }
    public void setUserTaxiCardId(Integer userTaxiCardId) {
        this.userTaxiCardId = userTaxiCardId;
    }
    public Double getDiscountAmount() {
        return discountAmount;
    }
    public void setDiscountAmount(Double discountAmount) {
        this.discountAmount = discountAmount;
    }
    public Integer getCompanyId() {
        return companyId;
    }
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }
    public Double getPayMoney() {
        return payMoney;
    }
    public void setPayMoney(Double payMoney) {
        this.payMoney = payMoney;
    }
    public Double getThankYouFee() {
        return thankYouFee;
    }
    public void setThankYouFee(Double thankYouFee) {
        this.thankYouFee = thankYouFee;
    }
    public Integer getSubstitute() {
        return substitute;
    }
    public void setSubstitute(Integer substitute) {
        this.substitute = substitute;
    }
    public String getPassengers() {
        return passengers;
    }
    public void setPassengers(String passengers) {
        this.passengers = passengers;
    }
    public String getPassengersPhone() {
        return passengersPhone;
    }
    public void setPassengersPhone(String passengersPhone) {
        this.passengersPhone = passengersPhone;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    public Date getInsertTime() {
        return insertTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public Date getTravelTime() {
        return travelTime;
    }
    public void setTravelTime(Date travelTime) {
        this.travelTime = travelTime;
    }
    public Date getSnatchOrderTime() {
        return snatchOrderTime;
    }
    public void setSnatchOrderTime(Date snatchOrderTime) {
        this.snatchOrderTime = snatchOrderTime;
    }
    public Date getSetOutTime() {
        return setOutTime;
    }
    public void setSetOutTime(Date setOutTime) {
        this.setOutTime = setOutTime;
    }
    public Date getArriveTime() {
        return arriveTime;
    }
    public void setArriveTime(Date arriveTime) {
        this.arriveTime = arriveTime;
    }
    public Date getStartServiceTime() {
        return startServiceTime;
    }
    public void setStartServiceTime(Date startServiceTime) {
        this.startServiceTime = startServiceTime;
    }
    public Date getEndServiceTime() {
        return endServiceTime;
    }
    public void setEndServiceTime(Date endServiceTime) {
        this.endServiceTime = endServiceTime;
    }
    public Integer getOrderType() {
        return orderType;
    }
    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }
    public Integer getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }
    public Integer getInvoiceId() {
        return invoiceId;
    }
    public void setInvoiceId(Integer invoiceId) {
        this.invoiceId = invoiceId;
    }
    public Integer getIsReassign() {
        return isReassign;
    }
    public void setIsReassign(Integer isReassign) {
        this.isReassign = isReassign;
    }
    public Integer getReassignNotice() {
        return reassignNotice;
    }
    public void setReassignNotice(Integer reassignNotice) {
        this.reassignNotice = reassignNotice;
    }
    public String getTrackId() {
        return trackId;
    }
    public void setTrackId(String trackId) {
        this.trackId = trackId;
    }
    public Integer getIsDelete() {
        return isDelete;
    }
    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }
    public Integer getOldState() {
        return oldState;
    }
    public void setOldState(Integer oldState) {
        this.oldState = oldState;
    }
    public String getTelX() {
        return telX;
    }
    public void setTelX(String telX) {
        this.telX = telX;
    }
    public String getBindId() {
        return bindId;
    }
    public void setBindId(String bindId) {
        this.bindId = bindId;
    }
    public String getSplitAllocation() {
        return splitAllocation;
    }
    public void setSplitAllocation(String splitAllocation) {
        this.splitAllocation = splitAllocation;
    }
    @Override
    public String toString() {
        return "OrderPrivateCar{" +
                "id=" + id +
                ", type=" + type +
                ", crossCityOrderId=" + crossCityOrderId +
                ", place=" + place +
                ", userId=" + userId +
                ", serverCarModelId=" + serverCarModelId +
                ", driverId=" + driverId +
                ", carId=" + carId +
                ", orderNum='" + orderNum + '\'' +
                ", placementLon=" + placementLon +
                ", placementLat=" + placementLat +
                ", placementAddress='" + placementAddress + '\'' +
                ", startLon=" + startLon +
                ", startLat=" + startLat +
                ", startAddress='" + startAddress + '\'' +
                ", endLon=" + endLon +
                ", endLat=" + endLat +
                ", endAddress='" + endAddress + '\'' +
                ", boardingLon=" + boardingLon +
                ", boardingLat=" + boardingLat +
                ", boardingAddress='" + boardingAddress + '\'' +
                ", boardingTime=" + boardingTime +
                ", getoffLon=" + getoffLon +
                ", getoffLat=" + getoffLat +
                ", getoffAddress='" + getoffAddress + '\'' +
                ", getoffTime=" + getoffTime +
                ", mileage=" + mileage +
                ", payManner=" + payManner +
                ", payType=" + payType +
                ", orderMoney=" + orderMoney +
                ", startMileage=" + startMileage +
                ", startMoney=" + startMoney +
                ", mileageKilometers=" + mileageKilometers +
                ", mileageMoney=" + mileageMoney +
                ", duration=" + duration +
                ", durationMoney=" + durationMoney +
                ", wait=" + wait +
                ", waitMoney=" + waitMoney +
                ", longDistance=" + longDistance +
                ", longDistanceMoney=" + longDistanceMoney +
                ", parkMoney=" + parkMoney +
                ", roadTollMoney=" + roadTollMoney +
                ", redPacketMoney=" + redPacketMoney +
                ", couponMoney=" + couponMoney +
                ", redPacketId=" + redPacketId +
                ", couponId=" + couponId +
                ", discount=" + discount +
                ", discountMoney=" + discountMoney +
                ", activityId=" + activityId +
                ", companyId=" + companyId +
                ", payMoney=" + payMoney +
                ", substitute=" + substitute +
                ", passengers='" + passengers + '\'' +
                ", passengersPhone='" + passengersPhone + '\'' +
                ", state=" + state +
                ", insertTime=" + insertTime +
                ", travelTime=" + travelTime +
                ", snatchOrderTime=" + snatchOrderTime +
                ", setOutTime=" + setOutTime +
                ", arriveTime=" + arriveTime +
                ", startServiceTime=" + startServiceTime +
                ", endServiceTime=" + endServiceTime +
                ", orderType=" + orderType +
                ", orderSource=" + orderSource +
                ", invoiceId=" + invoiceId +
                ", isReassign=" + isReassign +
                ", reassignNotice=" + reassignNotice +
                ", trackId='" + trackId + '\'' +
                ", isDelete=" + isDelete +
                ", oldState=" + oldState +
                ", telX='" + telX + '\'' +
                ", bindId='" + bindId + '\'' +
                '}';
    }
}
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @TableField("id")
    private Integer id;
    /**
     * 订单类型(1=普通订单,2=摆渡订单)
     */
    @TableField("type")
    private Integer type;
    /**
     * 跨城订单id(摆渡车专用)
     */
    @TableField("crossCityOrderId")
    private Integer crossCityOrderId;
    /**
     * 摆渡方位(1=跨城起点,2=跨城终点)
     */
    @TableField("place")
    private Integer place;
    /**
     * 用户id
     */
    @TableField("userId")
    private Integer userId;
    /**
     * 服务车型
     */
    @TableField("serverCarModel")
    private String serverCarModel;
    /**
     * 服务车型id
     */
    @TableField("serverCarModelId")
    private Integer serverCarModelId;
    /**
     * 司机id
     */
    @TableField("driverId")
    private Integer driverId;
    /**
     * 车辆id
     */
    @TableField("carId")
    private Integer carId;
    /**
     * 订单号
     */
    @TableField("orderNum")
    private String orderNum;
    /**
     * 下单地点经度
     */
    @TableField("placementLon")
    private Double placementLon;
    /**
     * 下单地点纬度
     */
    @TableField("placementLat")
    private Double placementLat;
    /**
     * 下单地点
     */
    @TableField("placementAddress")
    private String placementAddress;
    /**
     * 起点经度
     */
    @TableField("startLon")
    private Double startLon;
    /**
     * 起点纬度
     */
    @TableField("startLat")
    private Double startLat;
    /**
     * 起点
     */
    @TableField("startAddress")
    private String startAddress;
    /**
     * 目的地经度
     */
    @TableField("endLon")
    private Double endLon;
    /**
     * 目的地纬度
     */
    @TableField("endLat")
    private Double endLat;
    /**
     * 目的地
     */
    @TableField("endAddress")
    private String endAddress;
    /**
     * 上车点经度
     */
    @TableField("boardingLon")
    private Double boardingLon;
    /**
     * 上车点纬度
     */
    @TableField("boardingLat")
    private Double boardingLat;
    /**
     * 上车地点
     */
    @TableField("boardingAddress")
    private String boardingAddress;
    /**
     * 上车时间
     */
    @TableField("boardingTime")
    private Date boardingTime;
    /**
     * 下车点经度
     */
    @TableField("getoffLon")
    private Double getoffLon;
    /**
     * 下车点纬度
     */
    @TableField("getoffLat")
    private Double getoffLat;
    /**
     * 下车点
     */
    @TableField("getoffAddress")
    private String getoffAddress;
    /**
     * 下车时间
     */
    @TableField("getoffTime")
    private Date getoffTime;
    /**
     * 行驶里程数(米)
     */
    @TableField("mileage")
    private Double mileage;
    /**
     * 支付方式(1=OK平台支付,2=其他方式支付)
     */
    @TableField("payManner")
    private Integer payManner;
    /**
     * 支付方式(1=微信,2=支付宝,3=余额)
     */
    @TableField("payType")
    private Integer payType;
    /**
     * 订单金额
     */
    @TableField("orderMoney")
    private Double orderMoney;
    /**
     * 起步里程
     */
    @TableField("startMileage")
    private Double startMileage;
    /**
     * 起步价
     */
    @TableField("startMoney")
    private Double startMoney;
    /**
     * 里程公里
     */
    @TableField("mileageKilometers")
    private Double mileageKilometers;
    /**
     * 里程费
     */
    @TableField("mileageMoney")
    private Double mileageMoney;
    /**
     * 时长分钟
     */
    @TableField("duration")
    private Double duration;
    /**
     * 时长费
     */
    @TableField("durationMoney")
    private Double durationMoney;
    /**
     * 等待分钟
     */
    @TableField("wait")
    private Double wait;
    /**
     * 等待费
     */
    @TableField("waitMoney")
    private Double waitMoney;
    /**
     * 远途公里
     */
    @TableField("longDistance")
    private Double longDistance;
    /**
     * 远途费
     */
    @TableField("longDistanceMoney")
    private Double longDistanceMoney;
    /**
     * 停车费
     */
    @TableField("parkMoney")
    private Double parkMoney;
    /**
     * 过路费
     */
    @TableField("roadTollMoney")
    private Double roadTollMoney;
    //节假费
    @TableField("holidayFee")
    private Double holidayFee;
    /**
     * 红包抵扣金额
     */
    @TableField("redPacketMoney")
    private Double redPacketMoney;
    /**
     * 优惠券抵扣金额
     */
    @TableField("couponMoney")
    private Double couponMoney;
    /**
     * 红包id
     */
    @TableField("redPacketId")
    private Integer redPacketId;
    /**
     * 优惠券id
     */
    @TableField("couponId")
    private Integer couponId;
    /**
     * 折扣
     */
    @TableField("discount")
    private Double discount;
    /**
     * 折扣优惠金额
     */
    @TableField("discountMoney")
    private Double discountMoney;
    /**
     * 折扣活动id
     */
    @TableField("activityId")
    private Integer activityId;
    /**
     * 打折卡id
     */
    @TableField("taxiCardId")
    private Integer taxiCardId;
    /**
     * 打车卡记录id
     */
    @TableField("userTaxiCardId")
    private Integer userTaxiCardId;
    /**
     * 优惠金额
     */
    @TableField("discountAmount")
    private Double discountAmount;
    /**
     * 公司id
     */
    @TableField("companyId")
    private Integer companyId;
    /**
     * 支付金额
     */
    @TableField("payMoney")
    private Double payMoney;
    //感谢费
    @TableField("thankYouFee")
    private Double thankYouFee;
    /**
     * 是否是代下单(0:否,1:是)
     */
    @TableField("substitute")
    private Integer substitute;
    /**
     * 乘车人姓名
     */
    @TableField("passengers")
    private String passengers;
    /**
     * 乘车人电话
     */
    @TableField("passengersPhone")
    private String passengersPhone;
    /**
     * 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付)
     */
    @TableField("state")
    private Integer state;
    /**
     * 下单时间
     */
    @TableField("insertTime")
    private Date insertTime;
    /**
     * 出行时间
     */
    @TableField("travelTime")
    private Date travelTime;
    /**
     * 抢单时间
     */
    @TableField("snatchOrderTime")
    private Date snatchOrderTime;
    /**
     * 司机点出发时间
     */
    @TableField("setOutTime")
    private Date setOutTime;
    /**
     * 司机到达预约地点时间
     */
    @TableField("arriveTime")
    private Date arriveTime;
    /**
     * 开始服务时间
     */
    @TableField("startServiceTime")
    private Date startServiceTime;
    /**
     * 结束服务时间
     */
    @TableField("endServiceTime")
    private Date endServiceTime;
    /**
     * 订单类型(1=普通,2=预约)
     */
    @TableField("orderType")
    private Integer orderType;
    /**
     * 订单来源(1:APP下单,2:扫码下单,3:小程序下单,4:司机下单,5:调度下单)
     */
    @TableField("orderSource")
    private Integer orderSource;
    /**
     * 发票id
     */
    @TableField("invoiceId")
    private Integer invoiceId;
    /**
     * 是否是改派单(1=否,=是)
     *
     * @return
     */
    @TableField("isReassign")
    private Integer isReassign;
    /**
     * 改派通知标识(0=没有改派,1=改派中,2=已改派)用于通知前端获取新司机数据
     */
    @TableField("reassignNotice")
    private Integer reassignNotice;
    /**
     * 高德猎鹰轨迹id
     *
     * @return
     */
    @TableField("trackId")
    private String trackId;
    /**
     * 是否删除(1=否,2=是)
     */
    @TableField("isDelete")
    private Integer isDelete;
    /**
     * 该派前的订单状态
     *
     * @return
     */
    @TableField("oldState")
    private Integer oldState;
    /**
     * 移动小号
     *
     * @return
     */
    @TableField("telX")
    private String telX;
    /**
     * 绑定小号关系id
     *
     * @return
     */
    @TableField("bindId")
    private String bindId;
    /**
     * 乘车人数
     */
    @TableField("peopleNum")
    private Integer peopleNum;
    /**
     * 乘车类型(1=独享,2=一口价,3=拼车)
     */
    @TableField("rideType")
    private Integer rideType;
    @TableField("pid")
    private Integer pid;
    /**
     * 是否异常订单 1否 2是
     */
    @TableField("abnormal")
    private Integer abnormal;
    /**
     * 推广订单 1否 2是
     */
    @TableField("promotion")
    private Integer promotion;
    private String promotionUser;
    private String promotionPhone;
    /**
     * 乘客反馈情况
     */
    @TableField("abnormalIntro")
    private String abnormalIntro;
    /**
     * 乘客反馈图片
     */
    @TableField("abnormalImg")
    private String abnormalImg;
    private Integer promotionDriverId;
    private BigDecimal promotionMoney;
    private Integer totalPeopleNum;
    /**
     * 预估里程(米)
     */
    private Double estimateMileage;
    private Double estimateTime;
    private Integer spellSuccess;
    private String splitAllocation;
    private Integer responsibilityType;
    private Long promotionActivityId;
    /**
     * 中台行程id
     */
    private String travelId;
    /**
     * 中台是否已创建订单(0=否,1=是)
     */
    private Integer isCreated;
    /**
     * 是否是追缴单(0=否,1=是)
     */
    private Integer recoveryOrder;
    public String getPromotionUser() {
        return promotionUser;
    }
    public void setPromotionUser(String promotionUser) {
        this.promotionUser = promotionUser;
    }
    public String getPromotionPhone() {
        return promotionPhone;
    }
    public void setPromotionPhone(String promotionPhone) {
        this.promotionPhone = promotionPhone;
    }
    public Integer getResponsibilityType() {
        return responsibilityType;
    }
    public void setResponsibilityType(Integer responsibilityType) {
        this.responsibilityType = responsibilityType;
    }
    public Integer getPromotion() {
        return promotion;
    }
    public void setPromotion(Integer promotion) {
        this.promotion = promotion;
    }
    public Integer getPromotionDriverId() {
        return promotionDriverId;
    }
    public void setPromotionDriverId(Integer promotionDriverId) {
        this.promotionDriverId = promotionDriverId;
    }
    public BigDecimal getPromotionMoney() {
        return promotionMoney;
    }
    public void setPromotionMoney(BigDecimal promotionMoney) {
        this.promotionMoney = promotionMoney;
    }
    public Integer getAbnormal() {
        return abnormal;
    }
    public void setAbnormal(Integer abnormal) {
        this.abnormal = abnormal;
    }
    public String getAbnormalIntro() {
        return abnormalIntro;
    }
    public void setAbnormalIntro(String abnormalIntro) {
        this.abnormalIntro = abnormalIntro;
    }
    public String getAbnormalImg() {
        return abnormalImg;
    }
    public void setAbnormalImg(String abnormalImg) {
        this.abnormalImg = abnormalImg;
    }
    public Integer getSpellSuccess() {
        return spellSuccess;
    }
    public void setSpellSuccess(Integer spellSuccess) {
        this.spellSuccess = spellSuccess;
    }
    public Double getEstimateTime() {
        return estimateTime;
    }
    public void setEstimateTime(Double estimateTime) {
        this.estimateTime = estimateTime;
    }
    public Double getEstimateMileage() {
        return estimateMileage;
    }
    public void setEstimateMileage(Double estimateMileage) {
        this.estimateMileage = estimateMileage;
    }
    public Integer getTotalPeopleNum() {
        return totalPeopleNum;
    }
    public void setTotalPeopleNum(Integer totalPeopleNum) {
        this.totalPeopleNum = totalPeopleNum;
    }
    public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public Integer getPeopleNum() {
        return peopleNum;
    }
    public void setPeopleNum(Integer peopleNum) {
        this.peopleNum = peopleNum;
    }
    public Integer getRideType() {
        return rideType;
    }
    public void setRideType(Integer rideType) {
        this.rideType = rideType;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public Integer getCrossCityOrderId() {
        return crossCityOrderId;
    }
    public void setCrossCityOrderId(Integer crossCityOrderId) {
        this.crossCityOrderId = crossCityOrderId;
    }
    public Integer getPlace() {
        return place;
    }
    public void setPlace(Integer place) {
        this.place = place;
    }
    public Integer getUserId() {
        return userId;
    }
    public void setUserId(Integer userId) {
        this.userId = userId;
    }
    public String getServerCarModel() {
        return serverCarModel;
    }
    public void setServerCarModel(String serverCarModel) {
        this.serverCarModel = serverCarModel;
    }
    public Integer getServerCarModelId() {
        return serverCarModelId;
    }
    public void setServerCarModelId(Integer serverCarModelId) {
        this.serverCarModelId = serverCarModelId;
    }
    public Integer getDriverId() {
        return driverId;
    }
    public void setDriverId(Integer driverId) {
        this.driverId = driverId;
    }
    public Integer getCarId() {
        return carId;
    }
    public void setCarId(Integer carId) {
        this.carId = carId;
    }
    public String getOrderNum() {
        return orderNum;
    }
    public void setOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }
    public Double getPlacementLon() {
        return placementLon;
    }
    public void setPlacementLon(Double placementLon) {
        this.placementLon = placementLon;
    }
    public Double getPlacementLat() {
        return placementLat;
    }
    public void setPlacementLat(Double placementLat) {
        this.placementLat = placementLat;
    }
    public String getPlacementAddress() {
        return placementAddress;
    }
    public void setPlacementAddress(String placementAddress) {
        this.placementAddress = placementAddress;
    }
    public Double getStartLon() {
        return startLon;
    }
    public void setStartLon(Double startLon) {
        this.startLon = startLon;
    }
    public Double getStartLat() {
        return startLat;
    }
    public void setStartLat(Double startLat) {
        this.startLat = startLat;
    }
    public String getStartAddress() {
        return startAddress;
    }
    public void setStartAddress(String startAddress) {
        this.startAddress = startAddress;
    }
    public Double getEndLon() {
        return endLon;
    }
    public void setEndLon(Double endLon) {
        this.endLon = endLon;
    }
    public Double getEndLat() {
        return endLat;
    }
    public void setEndLat(Double endLat) {
        this.endLat = endLat;
    }
    public String getEndAddress() {
        return endAddress;
    }
    public void setEndAddress(String endAddress) {
        this.endAddress = endAddress;
    }
    public Double getBoardingLon() {
        return boardingLon;
    }
    public void setBoardingLon(Double boardingLon) {
        this.boardingLon = boardingLon;
    }
    public Double getBoardingLat() {
        return boardingLat;
    }
    public void setBoardingLat(Double boardingLat) {
        this.boardingLat = boardingLat;
    }
    public String getBoardingAddress() {
        return boardingAddress;
    }
    public void setBoardingAddress(String boardingAddress) {
        this.boardingAddress = boardingAddress;
    }
    public Date getBoardingTime() {
        return boardingTime;
    }
    public void setBoardingTime(Date boardingTime) {
        this.boardingTime = boardingTime;
    }
    public Double getGetoffLon() {
        return getoffLon;
    }
    public void setGetoffLon(Double getoffLon) {
        this.getoffLon = getoffLon;
    }
    public Double getGetoffLat() {
        return getoffLat;
    }
    public void setGetoffLat(Double getoffLat) {
        this.getoffLat = getoffLat;
    }
    public String getGetoffAddress() {
        return getoffAddress;
    }
    public void setGetoffAddress(String getoffAddress) {
        this.getoffAddress = getoffAddress;
    }
    public Date getGetoffTime() {
        return getoffTime;
    }
    public void setGetoffTime(Date getoffTime) {
        this.getoffTime = getoffTime;
    }
    public Double getMileage() {
        return mileage;
    }
    public void setMileage(Double mileage) {
        this.mileage = mileage;
    }
    public Integer getPayManner() {
        return payManner;
    }
    public void setPayManner(Integer payManner) {
        this.payManner = payManner;
    }
    public Integer getPayType() {
        return payType;
    }
    public void setPayType(Integer payType) {
        this.payType = payType;
    }
    public Double getOrderMoney() {
        return orderMoney;
    }
    public void setOrderMoney(Double orderMoney) {
        this.orderMoney = orderMoney;
    }
    public Double getStartMileage() {
        return startMileage;
    }
    public void setStartMileage(Double startMileage) {
        this.startMileage = startMileage;
    }
    public Double getStartMoney() {
        return startMoney;
    }
    public void setStartMoney(Double startMoney) {
        this.startMoney = startMoney;
    }
    public Double getMileageKilometers() {
        return mileageKilometers;
    }
    public void setMileageKilometers(Double mileageKilometers) {
        this.mileageKilometers = mileageKilometers;
    }
    public Double getMileageMoney() {
        return mileageMoney;
    }
    public void setMileageMoney(Double mileageMoney) {
        this.mileageMoney = mileageMoney;
    }
    public Double getDuration() {
        return duration;
    }
    public void setDuration(Double duration) {
        this.duration = duration;
    }
    public Double getDurationMoney() {
        return durationMoney;
    }
    public void setDurationMoney(Double durationMoney) {
        this.durationMoney = durationMoney;
    }
    public Double getWait() {
        return wait;
    }
    public void setWait(Double wait) {
        this.wait = wait;
    }
    public Double getWaitMoney() {
        return waitMoney;
    }
    public void setWaitMoney(Double waitMoney) {
        this.waitMoney = waitMoney;
    }
    public Double getLongDistance() {
        return longDistance;
    }
    public void setLongDistance(Double longDistance) {
        this.longDistance = longDistance;
    }
    public Double getLongDistanceMoney() {
        return longDistanceMoney;
    }
    public void setLongDistanceMoney(Double longDistanceMoney) {
        this.longDistanceMoney = longDistanceMoney;
    }
    public Double getParkMoney() {
        return parkMoney;
    }
    public void setParkMoney(Double parkMoney) {
        this.parkMoney = parkMoney;
    }
    public Double getRoadTollMoney() {
        return roadTollMoney;
    }
    public void setRoadTollMoney(Double roadTollMoney) {
        this.roadTollMoney = roadTollMoney;
    }
    public Double getHolidayFee() {
        return holidayFee;
    }
    public void setHolidayFee(Double holidayFee) {
        this.holidayFee = holidayFee;
    }
    public Double getRedPacketMoney() {
        return redPacketMoney;
    }
    public void setRedPacketMoney(Double redPacketMoney) {
        this.redPacketMoney = redPacketMoney;
    }
    public Double getCouponMoney() {
        return couponMoney;
    }
    public void setCouponMoney(Double couponMoney) {
        this.couponMoney = couponMoney;
    }
    public Integer getRedPacketId() {
        return redPacketId;
    }
    public void setRedPacketId(Integer redPacketId) {
        this.redPacketId = redPacketId;
    }
    public Integer getCouponId() {
        return couponId;
    }
    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }
    public Double getDiscount() {
        return discount;
    }
    public void setDiscount(Double discount) {
        this.discount = discount;
    }
    public Double getDiscountMoney() {
        return discountMoney;
    }
    public void setDiscountMoney(Double discountMoney) {
        this.discountMoney = discountMoney;
    }
    public Integer getActivityId() {
        return activityId;
    }
    public void setActivityId(Integer activityId) {
        this.activityId = activityId;
    }
    public Integer getTaxiCardId() {
        return taxiCardId;
    }
    public void setTaxiCardId(Integer taxiCardId) {
        this.taxiCardId = taxiCardId;
    }
    public Integer getUserTaxiCardId() {
        return userTaxiCardId;
    }
    public void setUserTaxiCardId(Integer userTaxiCardId) {
        this.userTaxiCardId = userTaxiCardId;
    }
    public Double getDiscountAmount() {
        return discountAmount;
    }
    public void setDiscountAmount(Double discountAmount) {
        this.discountAmount = discountAmount;
    }
    public Integer getCompanyId() {
        return companyId;
    }
    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }
    public Double getPayMoney() {
        return payMoney;
    }
    public void setPayMoney(Double payMoney) {
        this.payMoney = payMoney;
    }
    public Double getThankYouFee() {
        return thankYouFee;
    }
    public void setThankYouFee(Double thankYouFee) {
        this.thankYouFee = thankYouFee;
    }
    public Integer getSubstitute() {
        return substitute;
    }
    public void setSubstitute(Integer substitute) {
        this.substitute = substitute;
    }
    public String getPassengers() {
        return passengers;
    }
    public void setPassengers(String passengers) {
        this.passengers = passengers;
    }
    public String getPassengersPhone() {
        return passengersPhone;
    }
    public void setPassengersPhone(String passengersPhone) {
        this.passengersPhone = passengersPhone;
    }
    public Integer getState() {
        return state;
    }
    public void setState(Integer state) {
        this.state = state;
    }
    public Date getInsertTime() {
        return insertTime;
    }
    public void setInsertTime(Date insertTime) {
        this.insertTime = insertTime;
    }
    public Date getTravelTime() {
        return travelTime;
    }
    public void setTravelTime(Date travelTime) {
        this.travelTime = travelTime;
    }
    public Date getSnatchOrderTime() {
        return snatchOrderTime;
    }
    public void setSnatchOrderTime(Date snatchOrderTime) {
        this.snatchOrderTime = snatchOrderTime;
    }
    public Date getSetOutTime() {
        return setOutTime;
    }
    public void setSetOutTime(Date setOutTime) {
        this.setOutTime = setOutTime;
    }
    public Date getArriveTime() {
        return arriveTime;
    }
    public void setArriveTime(Date arriveTime) {
        this.arriveTime = arriveTime;
    }
    public Date getStartServiceTime() {
        return startServiceTime;
    }
    public void setStartServiceTime(Date startServiceTime) {
        this.startServiceTime = startServiceTime;
    }
    public Date getEndServiceTime() {
        return endServiceTime;
    }
    public void setEndServiceTime(Date endServiceTime) {
        this.endServiceTime = endServiceTime;
    }
    public Integer getOrderType() {
        return orderType;
    }
    public void setOrderType(Integer orderType) {
        this.orderType = orderType;
    }
    public Integer getOrderSource() {
        return orderSource;
    }
    public void setOrderSource(Integer orderSource) {
        this.orderSource = orderSource;
    }
    public Integer getInvoiceId() {
        return invoiceId;
    }
    public void setInvoiceId(Integer invoiceId) {
        this.invoiceId = invoiceId;
    }
    public Integer getIsReassign() {
        return isReassign;
    }
    public void setIsReassign(Integer isReassign) {
        this.isReassign = isReassign;
    }
    public Integer getReassignNotice() {
        return reassignNotice;
    }
    public void setReassignNotice(Integer reassignNotice) {
        this.reassignNotice = reassignNotice;
    }
    public String getTrackId() {
        return trackId;
    }
    public void setTrackId(String trackId) {
        this.trackId = trackId;
    }
    public Integer getIsDelete() {
        return isDelete;
    }
    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }
    public Integer getOldState() {
        return oldState;
    }
    public void setOldState(Integer oldState) {
        this.oldState = oldState;
    }
    public String getTelX() {
        return telX;
    }
    public void setTelX(String telX) {
        this.telX = telX;
    }
    public String getBindId() {
        return bindId;
    }
    public void setBindId(String bindId) {
        this.bindId = bindId;
    }
    public String getSplitAllocation() {
        return splitAllocation;
    }
    public void setSplitAllocation(String splitAllocation) {
        this.splitAllocation = splitAllocation;
    }
    public String getTravelId() {
        return travelId;
    }
    public void setTravelId(String travelId) {
        this.travelId = travelId;
    }
    public Integer getIsCreated() {
        return isCreated;
    }
    public void setIsCreated(Integer isCreated) {
        this.isCreated = isCreated;
    }
    public Integer getRecoveryOrder() {
        return recoveryOrder;
    }
    public void setRecoveryOrder(Integer recoveryOrder) {
        this.recoveryOrder = recoveryOrder;
    }
    public Long getPromotionActivityId() {
        return promotionActivityId;
    }
    public void setPromotionActivityId(Long promotionActivityId) {
        this.promotionActivityId = promotionActivityId;
    }
    @Override public String toString() {
    return "OrderPrivateCar{" +
            "id=" + id +
            ", type=" + type +
            ", crossCityOrderId=" + crossCityOrderId +
            ", place=" + place +
            ", userId=" + userId +
            ", serverCarModel='" + serverCarModel + '\'' +
            ", serverCarModelId=" + serverCarModelId +
            ", driverId=" + driverId +
            ", carId=" + carId +
            ", orderNum='" + orderNum + '\'' +
            ", placementLon=" + placementLon +
            ", placementLat=" + placementLat +
            ", placementAddress='" + placementAddress + '\'' +
            ", startLon=" + startLon +
            ", startLat=" + startLat +
            ", startAddress='" + startAddress + '\'' +
            ", endLon=" + endLon +
            ", endLat=" + endLat +
            ", endAddress='" + endAddress + '\'' +
            ", boardingLon=" + boardingLon +
            ", boardingLat=" + boardingLat +
            ", boardingAddress='" + boardingAddress + '\'' +
            ", boardingTime=" + boardingTime +
            ", getoffLon=" + getoffLon +
            ", getoffLat=" + getoffLat +
            ", getoffAddress='" + getoffAddress + '\'' +
            ", getoffTime=" + getoffTime +
            ", mileage=" + mileage +
            ", payManner=" + payManner +
            ", payType=" + payType +
            ", orderMoney=" + orderMoney +
            ", startMileage=" + startMileage +
            ", startMoney=" + startMoney +
            ", mileageKilometers=" + mileageKilometers +
            ", mileageMoney=" + mileageMoney +
            ", duration=" + duration +
            ", durationMoney=" + durationMoney +
            ", wait=" + wait +
            ", waitMoney=" + waitMoney +
            ", longDistance=" + longDistance +
            ", longDistanceMoney=" + longDistanceMoney +
            ", parkMoney=" + parkMoney +
            ", roadTollMoney=" + roadTollMoney +
            ", holidayFee=" + holidayFee +
            ", redPacketMoney=" + redPacketMoney +
            ", couponMoney=" + couponMoney +
            ", redPacketId=" + redPacketId +
            ", couponId=" + couponId +
            ", discount=" + discount +
            ", discountMoney=" + discountMoney +
            ", activityId=" + activityId +
            ", taxiCardId=" + taxiCardId +
            ", userTaxiCardId=" + userTaxiCardId +
            ", discountAmount=" + discountAmount +
            ", companyId=" + companyId +
            ", payMoney=" + payMoney +
            ", thankYouFee=" + thankYouFee +
            ", substitute=" + substitute +
            ", passengers='" + passengers + '\'' +
            ", passengersPhone='" + passengersPhone + '\'' +
            ", state=" + state +
            ", insertTime=" + insertTime +
            ", travelTime=" + travelTime +
            ", snatchOrderTime=" + snatchOrderTime +
            ", setOutTime=" + setOutTime +
            ", arriveTime=" + arriveTime +
            ", startServiceTime=" + startServiceTime +
            ", endServiceTime=" + endServiceTime +
            ", orderType=" + orderType +
            ", orderSource=" + orderSource +
            ", invoiceId=" + invoiceId +
            ", isReassign=" + isReassign +
            ", reassignNotice=" + reassignNotice +
            ", trackId='" + trackId + '\'' +
            ", isDelete=" + isDelete +
            ", oldState=" + oldState +
            ", telX='" + telX + '\'' +
            ", bindId='" + bindId + '\'' +
            ", peopleNum=" + peopleNum +
            ", rideType=" + rideType +
            ", pid=" + pid +
            ", abnormal=" + abnormal +
            ", promotion=" + promotion +
            ", promotionUser='" + promotionUser + '\'' +
            ", promotionPhone='" + promotionPhone + '\'' +
            ", abnormalIntro='" + abnormalIntro + '\'' +
            ", abnormalImg='" + abnormalImg + '\'' +
            ", promotionDriverId=" + promotionDriverId +
            ", promotionMoney=" + promotionMoney +
            ", totalPeopleNum=" + totalPeopleNum +
            ", estimateMileage=" + estimateMileage +
            ", estimateTime=" + estimateTime +
            ", spellSuccess=" + spellSuccess +
            ", splitAllocation='" + splitAllocation + '\'' +
            ", responsibilityType=" + responsibilityType +
            ", promotionActivityId=" + promotionActivityId +
            ", travelId='" + travelId + '\'' +
            ", isCreated=" + isCreated +
            ", recoveryOrder=" + recoveryOrder +
            '}';
}}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/IOrderPrivateCarService.java
@@ -154,7 +154,7 @@
     * @return
     * @throws Exception
     */
    ResultUtil payPrivateCarOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type)throws Exception;
    ResultUtil payPrivateCarOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type, String path, String ip)throws Exception;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -11,7 +11,6 @@
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
@@ -20,6 +19,8 @@
import com.stylefeng.guns.modular.system.model.vo.UnPayOrderVO;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -43,6 +44,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
@@ -970,17 +972,71 @@
                    orderCancelService.saveData(orderPrivateCar1.getId(), 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                    orderPrivateCar1.setState(10);
                    this.updateById(orderPrivateCar1);
                    Driver driver1 = null;
                    Company company = null;
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                    request.setOrderId(orderPrivateCar1.getTravelId());
                    request.setStatus(orderPrivateCar1.getState());
                    if (null != orderPrivateCar1.getDriverId()) {
                        driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
                        company = companyService.selectById(driver1.getCompanyId());
                        request.setDriverId(driver1.getEmpId().toString());
                        request.setSupplierShopId(company.getEnterCode());
                    }
                    if (2 == orderPrivateCar1.getPromotion()) {
                        Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
                        request.setPromoterId(driver2.getEmpId().toString());
                    }
                    OrderUtil.modifyTravelItinerary(request);
                }
                List<OrderTaxi> list1 = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace()));
                for (OrderTaxi orderTaxi : list1) {
                    orderCancelService.saveData(orderTaxi.getId(), 2, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                    orderTaxi.setState(10);
                    orderTaxiService.updateById(orderTaxi);
                    Driver driver1 = null;
                    Company company = null;
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                    request.setOrderId(orderTaxi.getTravelId());
                    request.setStatus(orderTaxi.getState());
                    if (null != orderTaxi.getDriverId()) {
                        driver1 = driverService.selectById(orderTaxi.getDriverId());
                        company = companyService.selectById(driver1.getCompanyId());
                        request.setDriverId(driver1.getEmpId().toString());
                        request.setSupplierShopId(company.getEnterCode());
                    }
                    if (2 == orderTaxi.getPromotion()) {
                        Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                        request.setPromoterId(driver2.getEmpId().toString());
                    }
                    OrderUtil.modifyTravelItinerary(request);
                }
            } else {
                integer = orderCancelService.saveData(id, 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                orderPrivateCar.setState(10);
                this.updateById(orderPrivateCar);
                Driver driver1 = null;
                Company company = null;
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderPrivateCar.getTravelId());
                request.setStatus(orderPrivateCar.getState());
                if (null != orderPrivateCar.getDriverId()) {
                    driver1 = driverService.selectById(orderPrivateCar.getDriverId());
                    company = companyService.selectById(driver1.getCompanyId());
                    request.setDriverId(driver1.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                }
                if (2 == orderPrivateCar.getPromotion()) {
                    Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                    request.setPromoterId(driver2.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(request);
            }
        } else {
            OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -997,6 +1053,24 @@
                    this.updateById(orderPrivateCar);
                }
                this.deleteTask(id);//删除定时任务
                Driver driver1 = null;
                Company company = null;
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderPrivateCar.getTravelId());
                request.setStatus(orderPrivateCar.getState());
                if (null != orderPrivateCar.getDriverId()) {
                    driver1 = driverService.selectById(orderPrivateCar.getDriverId());
                    company = companyService.selectById(driver1.getCompanyId());
                    request.setDriverId(driver1.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                }
                if (2 == orderPrivateCar.getPromotion()) {
                    Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                    request.setPromoterId(driver2.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(request);
                
                new Thread(new Runnable() {
                    @Override
@@ -1114,6 +1188,24 @@
                orderPrivateCar.setTelX("");
                orderPrivateCar.setBindId("");
                this.updateById(orderPrivateCar);
                Driver driver = null;
                Company company = null;
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderPrivateCar.getTravelId());
                request.setStatus(orderPrivateCar.getState());
                if (null != orderPrivateCar.getDriverId()) {
                    driver = driverService.selectById(orderPrivateCar.getDriverId());
                    company = companyService.selectById(driver.getCompanyId());
                    request.setDriverId(driver.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                }
                if (2 == orderPrivateCar.getPromotion()) {
                    Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                    request.setPromoterId(driver1.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(request);
                
                orderCancel.setState(2);
                orderCancel.setPayType(3);
@@ -1907,8 +1999,7 @@
    
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public ResultUtil payPrivateCarOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type) throws Exception {
    public ResultUtil payPrivateCarOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type, String path, String ip) throws Exception {
        OrderPrivateCar orderPrivateCar = this.selectById(orderId);
        if (orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9) {
            return ResultUtil.error("订单已完成支付,不允许重复支付", new ArrayList<>());
@@ -1927,7 +2018,7 @@
        UserCouponRecord userCouponRecord = null;
        if (null != objectId && objectType == 1) {
            userCouponRecord = userCouponRecordService.selectById(objectId);
            if (userCouponRecord.getCompanyId() != orderPrivateCar.getCompanyId()) {
            if (userCouponRecord.getCompanyId().compareTo(orderPrivateCar.getCompanyId()) != 0) {
                return ResultUtil.error("优惠券不能用于此订单", new ArrayList<>());
            }
            if (userCouponRecord.getState() == 2) {
@@ -2084,8 +2175,57 @@
            if (orderMoney == 0) {
                return ResultUtil.error("请使用余额支付");
            }
            String app = type == 1 ? "APP" : "JSAPI";
            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
//            String app = type == 1 ? "APP" : "JSAPI";
//            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
            Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
            if(null == orderPrivateCar.getIsCreated() || 0 == orderPrivateCar.getIsCreated()){
                //调用中台创建订单及拉起支付接口
                TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData();
                tradeOrderCreateData.setTreatShopId(driver.getEmpId().toString());
                tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderPrivateCar.getPromotion() == 2 ? 1 : 0) + "\"}");
                tradeOrderCreateData.setCharge(new BigDecimal(orderMoney));
                tradeOrderCreateData.setOrderId(orderPrivateCar.getTravelId());
                tradeOrderCreateData.setOrderNo("PR" + orderPrivateCar.getId());
                tradeOrderCreateData.setCustomerId(userInfo.getOnconUUID());
                tradeOrderCreateData.setPartnerPayId(orderPrivateCar.getTravelId());
                tradeOrderCreateData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
                tradeOrderCreateData.setOrderDesc("完成订单");
                tradeOrderCreateData.setRetUrl(path);
                tradeOrderCreateData.setClientIp(ip);
                List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
                GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
                goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
                goodsInfo.add(goodsInfoRequest);
                tradeOrderCreateData.setGoodsInfo(goodsInfo);
                TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData);
                PayInfo payInfo = tradeOrderCreate.getPayInfo();
                if(!"000000".equals(payInfo.getRetCode())){
                    return ResultUtil.error(payInfo.getRetMsg());
                }
                orderPrivateCar.setIsCreated(1);
                resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl());
            }else{
                //拉起支付
                TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
                tradePayOff1Data.setPartnerPayId("PR" + orderPrivateCar.getId());
                tradePayOff1Data.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
                tradePayOff1Data.setRetUrl(path);
                tradePayOff1Data.setClientIp(ip);
                tradePayOff1Data.setOrderDesc("完成订单");
                List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
                GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
                goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
                goodsInfo.add(goodsInfoRequest);
                tradePayOff1Data.setGoodsInfo(goodsInfo);
                PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data);
                if(!"000000".equals(payInfo.getRetCode())){
                    return ResultUtil.error(payInfo.getRetMsg());
                }
                resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl());
            }
            paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, "", 1);//添加预支付数据
        }
        if (payType == 2) {//支付宝支付
@@ -2099,12 +2239,7 @@
            if (userInfo.getBalance() == null || userInfo.getBalance() < orderMoney) {
                return ResultUtil.error("余额不足,无法完成支付");
            }
//            if(orderMoney > 0){
//                resultUtil= appOrderController.moneyPay(orderId,userInfo.getId(),orderMoney);
//                if(resultUtil.getCode()==500){
//                    return ResultUtil.error("电子余额不足,无法完成支付");
//                }
//            }
            userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
            
            OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -2277,6 +2412,24 @@
            orderPrivateCar.setTelX("");
            this.updateById(orderPrivateCar);
            
            Driver driver = null;
            Company company = null;
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(orderPrivateCar.getTravelId());
            request.setStatus(orderPrivateCar.getState());
            if (null != orderPrivateCar.getDriverId()) {
                driver = driverService.selectById(orderPrivateCar.getDriverId());
                company = companyService.selectById(driver.getCompanyId());
                request.setDriverId(driver.getEmpId().toString());
                request.setSupplierShopId(company.getEnterCode());
            }
            if (2 == orderPrivateCar.getPromotion()) {
                Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
                request.setPromoterId(driver1.getEmpId().toString());
            }
            OrderUtil.modifyTravelItinerary(request);
            query.setState(2);
            query.setCode(order_id);
            paymentRecordService.updateById(query);
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Company.java
@@ -284,6 +284,11 @@
     */
    @TableField("OnCall")
    private String OnCall;
    /**
     * 中台企业编号
     */
    @TableField("enterCode")
    private String enterCode;
    public String getDetailAddress() {
@@ -733,7 +738,15 @@
    public void setOnCall(String onCall) {
        OnCall = onCall;
    }
    public String getEnterCode() {
        return enterCode;
    }
    public void setEnterCode(String enterCode) {
        this.enterCode = enterCode;
    }
    @Override
    public String toString() {
        return "Company{" +
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Driver.java
@@ -335,6 +335,21 @@
     */
    @TableField("qrCode")
    private String qrCode;
    /**
     * 中台员工ID
     */
    @TableField("empId")
    private Long empId;
    /**
     * 中台员工所属企业ID
     */
    @TableField("enterId")
    private Long enterId;
    /**
     * 中台员工所属企业编号
     */
    @TableField("entercode")
    private String entercode;
    public String getQrCode() {
        return qrCode;
@@ -841,7 +856,31 @@
    public void setAppletsOpenId(String appletsOpenId) {
        this.appletsOpenId = appletsOpenId;
    }
    public Long getEmpId() {
        return empId;
    }
    public void setEmpId(Long empId) {
        this.empId = empId;
    }
    public Long getEnterId() {
        return enterId;
    }
    public void setEnterId(Long enterId) {
        this.enterId = enterId;
    }
    public String getEntercode() {
        return entercode;
    }
    public void setEntercode(String entercode) {
        this.entercode = entercode;
    }
    @Override
    public String toString() {
        return "Driver{" +
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/UserInfo.java
@@ -145,6 +145,11 @@
     */
    private Date bindExpireDate;
    /**
     * 中台用户ID
     */
    @TableField("onconUUID")
    private String onconUUID;
    private Date bindDate;
@@ -364,7 +369,15 @@
    public void setAppletsOpenId(String appletsOpenId) {
        this.appletsOpenId = appletsOpenId;
    }
    public String getOnconUUID() {
        return onconUUID;
    }
    public void setOnconUUID(String onconUUID) {
        this.onconUUID = onconUUID;
    }
    @Override
    public String toString() {
        return "UserInfo{" +
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java
@@ -157,6 +157,7 @@
                
                serverCarModelWarpper.setContentExclusive(contentExclusive);
                serverCarModelWarpper.setContentPrice(contentPrice);
                serverCarModelWarpper.setWaitPrice(jsonObject);
                
                serverCarModelWarpper.setAmount(this.calculationPrice(contentExclusive, distance, duration, wait, waitMoney));
                serverCarModelWarpper.setBuyNowAmount(this.calculationPrice(contentPrice, distance, duration, wait, waitMoney));
@@ -296,7 +297,7 @@
        serverCarModelWarpper.setContentNotTwo(new JSONObject());
        serverCarModelWarpper.setContentPutThree(new JSONObject());
        serverCarModelWarpper.setContentNotThree(new JSONObject());
        serverCarModelWarpper.setContentExclusive(new JSONObject());
        serverCarModelWarpper.setContentExclusive(jsonObject);
        serverCarModelWarpper.setContentPrice(new JSONObject());
        
        return serverCarModelWarpper;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/UserInfoServiceImpl.java
@@ -27,7 +27,6 @@
import com.stylefeng.guns.modular.taxi.model.PaymentRecord;
import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
import com.stylefeng.guns.modular.taxi.service.ITransactionDetailsService;
import org.apache.commons.lang.time.DateUtils;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.HashedCredentialsMatcher;
@@ -51,7 +50,6 @@
import java.net.URLConnection;
import java.security.spec.AlgorithmParameterSpec;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
@@ -236,6 +234,7 @@
        }
        //调中台接口查询用户
        List<QYTUserInfo> infoByPhone = UserUtil.getUserInfoByPhone(phone);
        String onconUUID = null;
        if (null == infoByPhone || infoByPhone.isEmpty()) {
            RegisterViaMobileRequest request = new RegisterViaMobileRequest();
            request.setMobile(phone);
@@ -248,6 +247,7 @@
            if (!"0".equals(register.getStatus())) {
                return ResultUtil.error(register.getDesc());
            }
            onconUUID = register.getOnconUUID();
        } else {
            boolean b = this.checkCaptcha(phone, code);
            if (!b) {
@@ -265,6 +265,9 @@
            userInfo.setConsumption(0D);
            userInfo.setBalance(0D);
            userInfo.setState(1);
            if(null != onconUUID){
                userInfo.setOnconUUID(onconUUID);
            }
            //用户所属企业
            if(null != registAreaCode){
@@ -868,7 +871,8 @@
            nickName = userInfo.getNickName();
        }
        //调中台接口查询用户
        List<QYTUserInfo> infoByPhone = UserUtil.getUserInfoByPhone(phone);
        String onconUUID = null;
                List<QYTUserInfo> infoByPhone = UserUtil.getUserInfoByPhone(phone);
        if (null == infoByPhone || infoByPhone.isEmpty()) {
            RegisterViaMobileRequest request = new RegisterViaMobileRequest();
            request.setMobile(phone);
@@ -881,6 +885,7 @@
            if (!"0".equals(register.getStatus())) {
                return ResultUtil.error(register.getDesc());
            }
            onconUUID = register.getOnconUUID();
        } else {
            boolean b = this.checkCaptcha(phone, code);
            if (!b) {
@@ -895,6 +900,7 @@
            userInfo1.setAvatar(userInfo.getAvatar());
            userInfo1.setSex(userInfo.getSex());
            userInfo1.setNickName(userInfo.getNickName());
            userInfo1.setOnconUUID(onconUUID);
            this.updateById(userInfo1);
        
            if (ToolUtil.isNotEmpty(loginType) && loginType.equals("Applets")) {//小程序登录后绑定手机号码
@@ -944,7 +950,7 @@
            loginWarpper.setPhone(2);
            return ResultUtil.success(loginWarpper);
        }
        userInfo.setOnconUUID(onconUUID);
        userInfo.setPhone(phone);
        userInfo.setUpdateTime(new Date());
        userInfo.setUpdateUser(userInfo.getId());
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java
@@ -29,7 +29,7 @@
@Component
public class PushUtil {
    
    private final String socket_uri = "http://172.21.35.142:6000";
    private final String socket_uri = "http://127.0.0.1:6000";
    @Autowired
    private IOrderTaxiService orderTaxiService;
    
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -1,86 +1,169 @@
package com.stylefeng.guns.modular.system.util;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.account.controller.AppOrderController;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
import com.stylefeng.guns.modular.system.model.UserInfo;
import com.stylefeng.guns.modular.system.service.IUserCouponRecordService;
import com.stylefeng.guns.modular.system.service.IUserInfoService;
import com.stylefeng.guns.modular.system.service.IUserMerchantCouponService;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 定时任务工具类
 */
@Slf4j
@Component
public class TaskUtil {
    @Autowired
    private IUserCouponRecordService userCouponRecordService;
    @Autowired
    private IUserMerchantCouponService userMerchantCouponService;
    @Autowired
    private AppOrderController appOrderController;
    @Autowired
    private IOrderPrivateCarService orderPrivateCarService;
    @Autowired
    private IOrderCrossCityService orderCrossCityService;
    @Autowired
    private IOrderLogisticsService orderLogisticsService;
    @Autowired
    private IOrderTaxiService orderTaxiService;
    @Autowired
    private  ChinaMobileUtil chinaMobileUtil;
    /**
     * 每隔一分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute(){
        try {
            //修改过期的优惠券
            userCouponRecordService.updateTimeOut();
            //修改过期的商家优惠券
            userMerchantCouponService.updateExpired();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 每天的凌晨执行的任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskDay(){
    }
//
//    /**
//     * 每月第一天的1点执行的任务
//     */
//    @Scheduled(cron = "0 0 1 1 * *")
//    public void taskMonth(){
//        try {
//
//        }catch (Exception e){
//            e.printStackTrace();
//        }
//    }
    @Autowired
    private IUserCouponRecordService userCouponRecordService;
    @Autowired
    private IUserMerchantCouponService userMerchantCouponService;
    @Autowired
    private AppOrderController appOrderController;
    @Autowired
    private IOrderPrivateCarService orderPrivateCarService;
    @Autowired
    private IOrderCrossCityService orderCrossCityService;
    @Autowired
    private IOrderLogisticsService orderLogisticsService;
    @Autowired
    private IOrderTaxiService orderTaxiService;
    @Autowired
    private ChinaMobileUtil chinaMobileUtil;
    @Autowired
    private IUserInfoService userInfoService;
    /**
     * 每隔一分钟去处理的定时任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskMinute() {
        try {
            //修改过期的优惠券
            userCouponRecordService.updateTimeOut();
            //修改过期的商家优惠券
            userMerchantCouponService.updateExpired();
            //处理超时未支付的订单
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 每天的凌晨执行的任务
     */
    @Scheduled(fixedRate = 1000 * 60)
    public void taskDay() {
    }
    /**
     * 每天中午12点发送提醒短信
     */
    @Scheduled(cron = "0 0 12 * * ?")
    public void taskMonth() {
        try {
            List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("isDelete", 1)
                    .eq("state", 7).eq("abnormal", 1)
                    .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
            for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
                SendSmsRequest request = new SendSmsRequest();
                request.setDestAddress(userInfo.getPhone());
                request.setTemplateId("TPL202507300002");
                Map<String, String> templateParams = new HashMap<>();
                request.setTemplateParams(templateParams);
                request.setSpId("Y86asr7J");
                SMSUtil.sendSms(request);
            }
            List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("isDelete", 1)
                    .eq("state", 7).eq("abnormal", 1)
                    .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
            for (OrderTaxi orderTaxi : orderTaxis) {
                UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
                SendSmsRequest request = new SendSmsRequest();
                request.setDestAddress(userInfo.getPhone());
                request.setTemplateId("TPL202507300002");
                Map<String, String> templateParams = new HashMap<>();
                request.setTemplateParams(templateParams);
                request.setSpId("Y86asr7J");
                SMSUtil.sendSms(request);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 大于24小时未支付的订单
     */
    public void timoutNoPayment() {
        List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 7)
                .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 24 HOUR)"));
        for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
            //使用备付金进行支付订单
            TradePayOffData tradePayOffData = new TradePayOffData();
            tradePayOffData.setPartnerPayId("PR" + orderPrivateCar.getId());
            tradePayOffData.setTotalFee(Double.valueOf(orderPrivateCar.getOrderMoney() * 100).intValue() + "");
            tradePayOffData.setOrderDesc("完成订单");
            PayInfo payInfo = OrderUtil.tradePayOff(tradePayOffData);
            String retCode = payInfo.getRetCode();
            if(!"000000".equals(retCode)){
                log.error("备付金支付失败:{}", payInfo.getRetMsg());
                continue;
            }
            PayInfoData data = payInfo.getData();
            String status = data.getStatus();
            if("3".equals(status)){
                log.error("备付金支付失败:{}", payInfo.getRetMsg());
                continue;
            }
            //copy原始订单后生成追缴单
            OrderPrivateCar orderPrivateCar1 = new OrderPrivateCar();
            BeanUtils.copyProperties(orderPrivateCar, orderPrivateCar1);
            orderPrivateCar1.setId(null);
            orderPrivateCar1.setRecoveryOrder(1);
            //修改原始订单为支付状态
            orderPrivateCar.setState(8);
            orderPrivateCar.setPayType(5);
            orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney());
            orderPrivateCarService.updateById(orderPrivateCar);
            orderPrivateCarService.insert(orderPrivateCar1);
        }
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -10,6 +10,7 @@
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -26,19 +27,19 @@
//        CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
//        request.setScene("TRAFFIC");
//        request.setPartnerId("522700");
//        request.setOrderNo("0123456");
//        request.setOrderNo("3456789012345678");
//        request.setCustomerId("11448156");
//        request.setDriverId("11448158");
//        request.setSupplierShopId("981100006005951");
//        request.setServiceType(1);
//        String travelItinerary = createTravelItinerary(request);
//        System.err.println(travelItinerary);//1948685426689200128
//        System.err.println(travelItinerary);//1951088602595872768
        
        //修改行程状态
//        ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
//        request.setScene("TRAFFIC");
//        request.setPartnerId("522700");
//        request.setOrderId("1948685426689200128");
//        request.setOrderId("1951088602595872768");
//        request.setStatus(7);
//        request.setDriverId("11448158");
//        request.setSupplierShopId("981100006005951");
@@ -53,24 +54,24 @@
//        tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}");
//        tradeOrderCreateData.setCharge(new BigDecimal("0.01"));
//        tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
//        tradeOrderCreateData.setOrderId("1948685426689200128");
//        tradeOrderCreateData.setOrderNo("0123456");
//        tradeOrderCreateData.setOrderId("1951088602595872768");
//        tradeOrderCreateData.setOrderNo("3456789012345678");
//        tradeOrderCreateData.setCustomerId("11448156");
//        tradeOrderCreateData.setPayPartnerId("5400004");
//        tradeOrderCreateData.setPartnerPayId("1948685426689200128");
//        tradeOrderCreateData.setPartnerPayId("1951088602595872768");
//        tradeOrderCreateData.setCurrency("RMB");
//        tradeOrderCreateData.setTotalFee("1");
//        tradeOrderCreateData.setRetUrl("/home/");
//        tradeOrderCreateData.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay");
//        tradeOrderCreateData.setClientIp("127.0.0.1");
//        tradeOrderCreateData.setNeedLoginFlag("N");
//        tradeOrderCreateData.setOrderDesc("出行订单支付");
//        tradeOrderCreateData.setAccessMode("H5");
//        tradeOrderCreateData.setAccessMode("APP");
//
//        List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
//        GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
//        goodsInfoRequest.setId("981100006005901");
//        goodsInfoRequest.setSubAppId("wxcbad113185a243e1");
//        goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ");
//        goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
//        goodsInfoRequest.setSubOpenId("oVLur61wBKJEO7QPR1dsmzS5TSfs");
//        goodsInfoRequest.setProfitSharing("1");
//        goodsInfoRequest.setAreaInfo("520100");
//        goodsInfoRequest.setPayType("0");
@@ -79,7 +80,7 @@
//        tradeOrderCreateData.setGoodsInfo(goodsInfo);
//        TradeOrderCreate tradeOrderCreate = tradeOrderCreate1(tradeOrderCreateData);
//        System.err.println(tradeOrderCreate);
//        //TradeOrderCreate(orderInfo=OrderInfo(orderId=1948685426689200128, status=null), payInfo=PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=5nUBXayFpfZz%2FXUZiMu9L61szNy2MhjTJ938TeNnX0U%3D, payId=540000420250725000135548, status=null, payTime=null, payFee=null, paymentInfos=null), sign=c9d849ee21dcc401cee968d4d31de04f))
        //TradeOrderCreate(orderInfo=OrderInfo(orderId=1950072223939842048, status=null), payInfo=PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=It5FPM1DUjzwIAin7zwiHvUANWKC6I5USCLE8EKoRkg%3D, payId=540000420250729000135600, status=null, payTime=null, payFee=null, paymentInfos=null), sign=525cb843b1eeb5a0451eeb5fbbe02f0f))
        
        //查询支付单信息
//        GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest();
@@ -89,30 +90,30 @@
//        System.err.println(getPaymentInfo);
        
        //拉起支付
//        TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
//        tradePayOff1Data.setPartnerId("5400004");
//        tradePayOff1Data.setScene("TRAFFIC");
//        tradePayOff1Data.setPartnerPayId("1948685426689200128");
//        tradePayOff1Data.setCurrency("RMB");
//        tradePayOff1Data.setTotalFee("1");
//        tradePayOff1Data.setRetUrl("/home/");
//        tradePayOff1Data.setClientIp("127.0.0.1");
//        tradePayOff1Data.setNeedLoginFlag("N");
//        tradePayOff1Data.setOrderDesc("出行订单支付");
//        tradePayOff1Data.setAccessMode("APP");
//        List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
//        GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
//        goodsInfoRequest.setId("981100006005901");
//        goodsInfoRequest.setSubAppId("wxcbad113185a243e1");
//        goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ");
//        goodsInfoRequest.setProfitSharing("1");
//        goodsInfoRequest.setAreaInfo("520100");
//        goodsInfoRequest.setPayType("0");
//        goodsInfoRequest.setBusinessType("10408");
//        goodsInfo.add(goodsInfoRequest);
//        tradePayOff1Data.setGoodsInfo(goodsInfo);
//        PayInfo payInfo = tradePayOff1(tradePayOff1Data);
//        System.err.println(payInfo);
        TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
        tradePayOff1Data.setPartnerId("5400004");
        tradePayOff1Data.setScene("TRAFFIC");
        tradePayOff1Data.setPartnerPayId("1951088602595872768");
        tradePayOff1Data.setCurrency("RMB");
        tradePayOff1Data.setTotalFee("1");
        tradePayOff1Data.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay");
        tradePayOff1Data.setClientIp("127.0.0.1");
        tradePayOff1Data.setNeedLoginFlag("N");
        tradePayOff1Data.setOrderDesc("出行订单支付");
        tradePayOff1Data.setAccessMode("APP");
        List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
        GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
        goodsInfoRequest.setId("981100006005901");
        goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
        goodsInfoRequest.setSubOpenId("oVLur61wBKJEO7QPR1dsmzS5TSfs");
        goodsInfoRequest.setProfitSharing("1");
        goodsInfoRequest.setAreaInfo("520100");
        goodsInfoRequest.setPayType("0");
        goodsInfoRequest.setBusinessType("10408");
        goodsInfo.add(goodsInfoRequest);
        tradePayOff1Data.setGoodsInfo(goodsInfo);
        PayInfo payInfo = tradePayOff1(tradePayOff1Data);
        System.err.println(payInfo);
        //PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=5nUBXayFpfZz%2FXUZiMu9LzeRXmqmlqaCS%2BHfu5udIt4%3D, payId=540000420250725000135549, status=null, payTime=null, payFee=null, paymentInfos=null), sign=8154ba2728280900b122c56352c1c7fe)
        
        
@@ -178,6 +179,21 @@
     * @return
     */
    public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) {
        tradePayOff1Data.setPartnerId("5400004");
        tradePayOff1Data.setScene("TRAFFIC");
        tradePayOff1Data.setCurrency("RMB");
        tradePayOff1Data.setNeedLoginFlag("N");
        tradePayOff1Data.setAccessMode("APP");
        tradePayOff1Data.getGoodsInfo().forEach(goodsInfoRequest -> {
            goodsInfoRequest.setId("981100006005901");
            goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
            goodsInfoRequest.setProfitSharing("1");
            goodsInfoRequest.setAreaInfo("520100");
            goodsInfoRequest.setPayType("0");
            goodsInfoRequest.setBusinessType("10408");
        });
        TradeRequest request = new TradeRequest<TradePayOff1Data>();
        request.setSceneId("1911676727023968256");
        request.setAppId(QianYunTongProperties.appkey);
@@ -356,6 +372,24 @@
     * @return
     */
    public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) {
        tradeOrderCreateData.setScene("TRAFFIC");
        tradeOrderCreateData.setPartnerId("522700");
        tradeOrderCreateData.setOrderAppId("52270015");
        tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
        tradeOrderCreateData.setPayPartnerId("5400004");
        tradeOrderCreateData.setCurrency("RMB");
        tradeOrderCreateData.setNeedLoginFlag("N");
        tradeOrderCreateData.setAccessMode("APP");
        tradeOrderCreateData.getGoodsInfo().forEach(goodsInfoRequest->{
            goodsInfoRequest.setId("981100006005901");
            goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
            goodsInfoRequest.setProfitSharing("1");
            goodsInfoRequest.setAreaInfo("520100");
            goodsInfoRequest.setPayType("0");
            goodsInfoRequest.setBusinessType("10408");
        });
        TradeRequest request = new TradeRequest<TradeOrderCreateData>();
        request.setSceneId("1945688132719169536");
        request.setAppId(QianYunTongProperties.appkey);
@@ -450,6 +484,28 @@
     * @return
     */
    public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
        tradePayOffData.setPartnerId("5400004");
        tradePayOffData.setScene("TRAFFIC");
        tradePayOffData.setCurrency("RMB");
        tradePayOffData.setRetUrl("");
        tradePayOffData.setClientIp(System.getProperty("http.remoteAddr"));
        tradePayOffData.setNeedLoginFlag("N");
        tradePayOffData.setAccessMode("APP");
        List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>();
        PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest();
        paymentInfoRequest.setPayModeId("501212");
        paymentInfoRequests.add(paymentInfoRequest);
        tradePayOffData.setPaymentInfos(paymentInfoRequests);
        List<GoodsInfo> goodsInfo = new ArrayList<>();
        GoodsInfo goodsInfo1 = new GoodsInfo();
        goodsInfo1.setMerchantCode(":B00000872");
        goodsInfo1.setCustId("CB0000004686");
        goodsInfo1.setCustName("证联消费平台交易客户");
        goodsInfo1.setProfitSharing("1");
        goodsInfo.add(goodsInfo1);
        tradePayOffData.setGoodsInfo(goodsInfo);
        TradeRequest request = new TradeRequest<TradePayOffData>();
        request.setSceneId("1774717104844095488");
        request.setAppId(QianYunTongProperties.appkey);
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/QianYunTongProperties.java
@@ -16,6 +16,7 @@
    /**
     * 私钥地址
     */
//    String privateKeyPath = "C:\\Users\\39373\\Desktop\\黔云通\\private_key_test.pem";
    String privateKeyPath = "C:\\Users\\Administrator\\Desktop\\private_key_test.pem";
    /**
     * 私钥地址
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/SMSUtil.java
@@ -70,12 +70,12 @@
    public static void main(String[] args) {
        SendSmsRequest request = new SendSmsRequest();
        request.setDestAddress("15828353127");
        request.setTemplateId("TPL202410290001");
        request.setTemplateId("TPL202507300002");
        Map<String, String> templateParams = new HashMap<>();
        templateParams.put("code", "1234");
//        templateParams.put("code", "1234");
        request.setTemplateParams(templateParams);
        request.setCode("code");
        request.setSpId("T8d5hdfg");
//        request.setCode("code");
        request.setSpId("Y86asr7J");
        SMSUtil.sendSms(request);
    }
    
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/UserUtil.java
@@ -23,8 +23,8 @@
    
    
    public static void main(String[] args) {
        List<QYTUserInfo> userInfoByPhone = getUserInfoByPhone("15828353127", "981100006005951");
        System.out.println(userInfoByPhone);
//        List<QYTUserInfo> userInfoByPhone = getUserInfoByPhone("15828353127");
//        System.out.println(userInfoByPhone);
    }
    
    
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/DriverPosition.java
@@ -13,6 +13,10 @@
@Document(collection = "driver_position")
public class DriverPosition {
    @Id
    private String id;
    /**
     * 司机id
     */
    private Integer driverId;
    /**
     * 点位
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/ServerCarModelWarpper.java
@@ -64,6 +64,8 @@
    private JSONObject contentExclusive;//独享
    @ApiModelProperty("一口价规则")
    private JSONObject contentPrice;//一口价
    @ApiModelProperty("等待费规则")
    private JSONObject waitPrice;//等待费
    @ApiModelProperty("计价说明(拼车)")
    private String fareTypeNote1;
@@ -362,4 +364,13 @@
        }
        return data;
    }
    public JSONObject getWaitPrice() {
        return waitPrice;
    }
    public void setWaitPrice(JSONObject waitPrice) {
        this.waitPrice = waitPrice;
    }
}
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/model/OrderTaxi.java
@@ -4,7 +4,6 @@
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.stylefeng.guns.modular.system.model.BaseBean;
import java.math.BigDecimal;
import java.util.Date;
@@ -385,6 +384,24 @@
    private String splitAllocation;
    private Integer responsibilityType;
    private Integer promotion;
    private String voice;
    private Date voiceTime;
    private String promotionUser;
    private String promotionPhone;
    private String travelId;
    /**
     * 中台是否已创建订单(0=否,1=是)
     */
    private Integer isCreated;
    private Long promotionActivityId;
@@ -997,7 +1014,63 @@
    public void setSplitAllocation(String splitAllocation) {
        this.splitAllocation = splitAllocation;
    }
    public Integer getPromotion() {
        return promotion;
    }
    public void setPromotion(Integer promotion) {
        this.promotion = promotion;
    }
    public String getVoice() {
        return voice;
    }
    public void setVoice(String voice) {
        this.voice = voice;
    }
    public Date getVoiceTime() {
        return voiceTime;
    }
    public void setVoiceTime(Date voiceTime) {
        this.voiceTime = voiceTime;
    }
    public String getPromotionUser() {
        return promotionUser;
    }
    public void setPromotionUser(String promotionUser) {
        this.promotionUser = promotionUser;
    }
    public String getPromotionPhone() {
        return promotionPhone;
    }
    public void setPromotionPhone(String promotionPhone) {
        this.promotionPhone = promotionPhone;
    }
    public String getTravelId() {
        return travelId;
    }
    public void setTravelId(String travelId) {
        this.travelId = travelId;
    }
    public Integer getIsCreated() {
        return isCreated;
    }
    public void setIsCreated(Integer isCreated) {
        this.isCreated = isCreated;
    }
    @Override
    public String toString() {
        return "OrderTaxi{" +
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/IOrderTaxiService.java
@@ -129,7 +129,7 @@
     * @return
     * @throws Exception
     */
    ResultUtil payTaxiOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type)throws Exception;
    ResultUtil payTaxiOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type, String path, String ip)throws Exception;
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -20,6 +20,8 @@
import com.stylefeng.guns.modular.system.model.vo.UnPayOrderVO;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -146,7 +148,7 @@
    
    @Autowired
    private IDriverServiceService driverServiceService;
    @Autowired
    private TAbnormalPayOrderMapper abnormalPayOrderMapper;
    
@@ -185,10 +187,11 @@
    
    @Value("${callbackPath}")
    private String callbackPath;
    @Autowired
    private TDriverPromotionActivityService driverPromotionActivityService;
    /**
     * 出租车下单操作
     *
@@ -496,17 +499,71 @@
                    orderCancelService.saveData(orderPrivateCar1.getId(), 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                    orderPrivateCar1.setState(10);
                    orderPrivateCarService.updateById(orderPrivateCar1);
                    Driver driver1 = null;
                    Company company = null;
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                    request.setOrderId(orderPrivateCar1.getTravelId());
                    request.setStatus(orderPrivateCar1.getState());
                    if (null != orderPrivateCar1.getDriverId()) {
                        driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
                        company = companyService.selectById(driver1.getCompanyId());
                        request.setDriverId(driver1.getEmpId().toString());
                        request.setSupplierShopId(company.getEnterCode());
                    }
                    if (2 == orderPrivateCar1.getPromotion()) {
                        Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
                        request.setPromoterId(driver2.getEmpId().toString());
                    }
                    OrderUtil.modifyTravelItinerary(request);
                }
                List<OrderTaxi> list1 = this.selectList(new EntityWrapper<OrderTaxi>().eq("type", 2).eq("crossCityOrderId", orderTaxi.getCrossCityOrderId()).eq("place", orderTaxi.getPlace()));
                for (OrderTaxi orderTaxi1 : list1) {
                    orderCancelService.saveData(orderTaxi1.getId(), 2, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                    orderTaxi1.setState(10);
                    this.updateById(orderTaxi1);
                    Driver driver1 = null;
                    Company company = null;
                    //中台修改订单状态
                    ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                    request.setOrderId(orderTaxi1.getTravelId());
                    request.setStatus(orderTaxi1.getState());
                    if (null != orderTaxi1.getDriverId()) {
                        driver1 = driverService.selectById(orderTaxi1.getDriverId());
                        company = companyService.selectById(driver1.getCompanyId());
                        request.setDriverId(driver1.getEmpId().toString());
                        request.setSupplierShopId(company.getEnterCode());
                    }
                    if (2 == orderTaxi1.getPromotion()) {
                        Driver driver2 = driverService.selectById(orderTaxi1.getPromotionDriverId());
                        request.setPromoterId(driver2.getEmpId().toString());
                    }
                    OrderUtil.modifyTravelItinerary(request);
                }
            } else {
                integer = orderCancelService.saveData(id, 2, "无司机接单", "无司机接单", null, null, 2, 1, uid);
                orderTaxi.setState(10);
                this.updateById(orderTaxi);
                Driver driver1 = null;
                Company company = null;
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderTaxi.getTravelId());
                request.setStatus(orderTaxi.getState());
                if (null != orderTaxi.getDriverId()) {
                    driver1 = driverService.selectById(orderTaxi.getDriverId());
                    company = companyService.selectById(driver1.getCompanyId());
                    request.setDriverId(driver1.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                }
                if (2 == orderTaxi.getPromotion()) {
                    Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                    request.setPromoterId(driver2.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(request);
            }
        } else {
            OpenCity openCity = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString());
@@ -523,6 +580,24 @@
                    this.updateById(orderTaxi);
                }
                this.deleteTask(id);//删除定时任务
                Driver driver1 = null;
                Company company = null;
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderTaxi.getTravelId());
                request.setStatus(orderTaxi.getState());
                if (null != orderTaxi.getDriverId()) {
                    driver1 = driverService.selectById(orderTaxi.getDriverId());
                    company = companyService.selectById(driver1.getCompanyId());
                    request.setDriverId(driver1.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                }
                if (2 == orderTaxi.getPromotion()) {
                    Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
                    request.setPromoterId(driver2.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(request);
                
                new Thread(new Runnable() {
                    @Override
@@ -642,6 +717,24 @@
                orderTaxi.setTelX("");
                orderTaxi.setBindId("");
                this.updateById(orderTaxi);
                Driver driver = null;
                Company company = null;
                //中台修改订单状态
                ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
                request.setOrderId(orderTaxi.getTravelId());
                request.setStatus(orderTaxi.getState());
                if (null != orderTaxi.getDriverId()) {
                    driver = driverService.selectById(orderTaxi.getDriverId());
                    company = companyService.selectById(driver.getCompanyId());
                    request.setDriverId(driver.getEmpId().toString());
                    request.setSupplierShopId(company.getEnterCode());
                }
                if (2 == orderTaxi.getPromotion()) {
                    Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
                    request.setPromoterId(driver1.getEmpId().toString());
                }
                OrderUtil.modifyTravelItinerary(request);
                
                orderCancel.setState(2);
                orderCancel.setPayType(3);
@@ -1343,7 +1436,7 @@
    
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public ResultUtil payTaxiOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type) throws Exception {
    public ResultUtil payTaxiOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type, String path, String ip) throws Exception {
        OrderTaxi orderTaxi = this.selectById(orderId);
        if (orderTaxi.getState() == 8 || orderTaxi.getState() == 9) {
            return ResultUtil.error("订单已完成支付,不允许重复支付", "");
@@ -1514,8 +1607,57 @@
            if (orderMoney == 0) {
                return ResultUtil.error("请使用余额支付");
            }
            String app = type == 1 ? "APP" : "JSAPI";
            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
//            String app = type == 1 ? "APP" : "JSAPI";
//            resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_2_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
            Driver driver = driverService.selectById(orderTaxi.getDriverId());
            if(null == orderTaxi.getIsCreated() || 0 == orderTaxi.getIsCreated()){
                //调用中台创建订单及拉起支付接口
                TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData();
                tradeOrderCreateData.setTreatShopId(driver.getEmpId().toString());
                tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderTaxi.getPromotion() == 2 ? 1 : 0) + "\"}");
                tradeOrderCreateData.setCharge(new BigDecimal(orderMoney));
                tradeOrderCreateData.setOrderId(orderTaxi.getTravelId());
                tradeOrderCreateData.setOrderNo("TA" + orderTaxi.getId());
                tradeOrderCreateData.setCustomerId(userInfo.getOnconUUID());
                tradeOrderCreateData.setPartnerPayId(orderTaxi.getTravelId());
                tradeOrderCreateData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
                tradeOrderCreateData.setOrderDesc("完成订单");
                tradeOrderCreateData.setRetUrl(path);
                tradeOrderCreateData.setClientIp(ip);
                List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
                GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
                goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
                goodsInfo.add(goodsInfoRequest);
                tradeOrderCreateData.setGoodsInfo(goodsInfo);
                TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData);
                PayInfo payInfo = tradeOrderCreate.getPayInfo();
                if(!"000000".equals(payInfo.getRetCode())){
                    return ResultUtil.error(payInfo.getRetMsg());
                }
                orderTaxi.setIsCreated(1);
                resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl());
            }else{
                //拉起支付
                TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
                tradePayOff1Data.setPartnerPayId("PR" + orderTaxi.getId());
                tradePayOff1Data.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
                tradePayOff1Data.setRetUrl(path);
                tradePayOff1Data.setClientIp(ip);
                tradePayOff1Data.setOrderDesc("完成订单");
                List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
                GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
                goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
                goodsInfo.add(goodsInfoRequest);
                tradePayOff1Data.setGoodsInfo(goodsInfo);
                PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data);
                if(!"000000".equals(payInfo.getRetCode())){
                    return ResultUtil.error(payInfo.getRetMsg());
                }
                resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl());
            }
            paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderId, 2, 1, orderMoney, "", 1);//添加预支付数据
        }
        if (payType == 2) {//支付宝支付
@@ -1737,10 +1879,10 @@
            map.put("state", map.get("oldState"));
        }
        
        if(Integer.valueOf(String.valueOf(map.get("state"))) ==7 &&  (map.get("responsibilityType")==null || Integer.valueOf(String.valueOf(map.get("responsibilityType")))<4)){
        if (Integer.valueOf(String.valueOf(map.get("state"))) == 7 && (map.get("responsibilityType") == null || Integer.valueOf(String.valueOf(map.get("responsibilityType"))) < 4)) {
            map.put("appealButton", 1);
        }
        if(map.get("abnormalIntro")!=null){
        if (map.get("abnormalIntro") != null) {
            map.put("appealStatus", 1);
        }
        String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId"));
@@ -2082,6 +2224,24 @@
            orderTaxi.setTelX("");
            this.updateById(orderTaxi);
            
            Driver driver = null;
            Company company = null;
            //中台修改订单状态
            ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
            request.setOrderId(orderTaxi.getTravelId());
            request.setStatus(orderTaxi.getState());
            if (null != orderTaxi.getDriverId()) {
                driver = driverService.selectById(orderTaxi.getDriverId());
                company = companyService.selectById(driver.getCompanyId());
                request.setDriverId(driver.getEmpId().toString());
                request.setSupplierShopId(company.getEnterCode());
            }
            if (2 == orderTaxi.getPromotion()) {
                Driver driver1 = driverService.selectById(orderTaxi.getPromotionDriverId());
                request.setPromoterId(driver1.getEmpId().toString());
            }
            OrderUtil.modifyTravelItinerary(request);
            query.setState(2);
            query.setCode(order_id);
            paymentRecordService.updateById(query);
@@ -2297,7 +2457,7 @@
    @Override
    public void addAppeal(Integer uid, Integer orderId, String abnormalIntro, String abnormalImg) {
        OrderTaxi orderTaxi = this.selectById(orderId);
        if(orderTaxi.getState()!=7 || orderTaxi.getAbnormalIntro()!=null){
        if (orderTaxi.getState() != 7 || orderTaxi.getAbnormalIntro() != null) {
            throw new RuntimeException("此订单无法申诉");
        }
        orderTaxi.setAbnormalIntro(abnormalIntro);
@@ -2305,15 +2465,15 @@
        orderTaxi.setAbnormal(2);
        this.baseMapper.updateById(orderTaxi);
    }
    @Override
    public void promotion(Integer orderId) {
        OrderTaxi orderTaxi = this.baseMapper.selectById(orderId);
        UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
        if(orderTaxi.getPromotionDriverId()!=null){
        if (orderTaxi.getPromotionDriverId() != null) {
            String registAreaCode = userInfo.getRegistAreaCode();
            TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 2 + ", bizType) limit 1"));
            if(tDriverPromotionActivity!=null){
            if (tDriverPromotionActivity != null) {
                Double payMoney = orderTaxi.getPayMoney();
                BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
                orderTaxi.setPromotionDriverId(userInfo.getBindDriverId());
@@ -2323,7 +2483,7 @@
            }
        }
        // 是否异常订单
        if (orderTaxi.getResponsibilityType() !=null && orderTaxi.getResponsibilityType() >2) {
        if (orderTaxi.getResponsibilityType() != null && orderTaxi.getResponsibilityType() > 2) {
            TAbnormalPayOrder tAbnormalPayOrder = abnormalPayOrderMapper.selectList(new EntityWrapper<TAbnormalPayOrder>().eq("type", 2).eq("orderNum", orderTaxi.getOrderNum())).stream().findFirst().orElse(null);
            if (tAbnormalPayOrder != null) {
                tAbnormalPayOrder.setPayStatus(2);