longz
2026-06-15 7e7462d129b81ed8cba5d05e218ae71c38c5efe1
添加支付方式字段并优化订单处理逻辑
8个文件已修改
157 ■■■■■ 已修改文件
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityInfoWrapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/dao/mapping/OrderCrossCityMapper.xml
@@ -85,6 +85,7 @@
        a.isReassign as isReassign,
        a.orderSource as orderSource,
        a.companyId as companyId,
        a.payManner as payManner,
        a.peopleNumber as peopleNumber,
        a.remark as remark
        from t_order_cross_city a
@@ -106,6 +107,7 @@
            a.endAddress as endAddress,
            a.state as state,
            a.driverId as driverId,
            a.payManner as payManner,
            a.peopleNumber as peopleNumber,
            (select nickName from t_user where id = a.userId)as `user`,
            a.remark as remark
@@ -129,6 +131,7 @@
            a.endAddress as endAddress,
            a.state as state,
            a.driverId as driverId,
            a.payManner as payManner,
            a.peopleNumber as peopleNumber,
            (select nickName from t_user where id = a.userId)as `user`,
            a.remark as remark
@@ -151,6 +154,7 @@
            a.endAddress as endAddress,
            a.state as state,
            a.driverId as driverId,
            a.payManner as payManner,
            a.peopleNumber as peopleNumber,
            (select nickName from t_user where id = a.userId)as `user`,
            a.remark as remark
@@ -177,6 +181,7 @@
        a.endAddress as endAddress,
        a.state as state,
        a.orderMoney as orderMoney,
        a.payManner as payManner,
        a.peopleNumber as peopleNumber,
        UNIX_TIMESTAMP(a.travelTime) as travelTime,
        a.remark as remark,
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -1774,10 +1774,13 @@
            if (!cbyzxOrderPayHelper.isCreateSuccess(response)) {
                return ResultUtil.error(cbyzxOrderPayHelper.extractMessage(response), response);
            }
            order.setPayManner(1);
            orderCrossCityMapper.updateById(order);
            paymentRecordService.saveData(1, order.getDriverId(), 2, crossCityOrderId, 3, 1, order.getOrderMoney(), outTradeNo, 1);
            return ResultUtil.success(response);
        } else if (type == 3) {
            order.setState(2);
            order.setPayManner(2);
            order.setPayMoney(order.getOrderMoney());
            orderCrossCityMapper.updateById(order);
DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/warpper/OrderCrossCityInfoWrapper.java
@@ -45,6 +45,8 @@
    private Integer peopleNumber;
    @ApiModelProperty("支付金额")
    private Double payMoney;
    @ApiModelProperty("支付方式(1=线上支付/司机代付,2=线下支付)")
    private Integer payManner;
    @ApiModelProperty("座位")
    private String seatNumber;
@@ -217,6 +219,14 @@
        this.payMoney = payMoney;
    }
    public Integer getPayManner() {
        return payManner;
    }
    public void setPayManner(Integer payManner) {
        this.payManner = payManner;
    }
    public String getSeatNumber() {
        return seatNumber;
    }
@@ -254,6 +264,7 @@
                ", phone='" + phone + '\'' +
                ", peopleNumber=" + peopleNumber +
                ", payMoney=" + payMoney +
                ", payManner=" + payManner +
                ", seatNumber='" + seatNumber + '\'' +
                '}';
    }
@@ -280,6 +291,7 @@
            orderInfoWarpper.setTrackId(null != map.get("trackId") ? String.valueOf(map.get("trackId")) : "");
            orderInfoWarpper.setPeopleNumber(null != map.get("peopleNumber") ? Integer.valueOf(String.valueOf(map.get("peopleNumber"))) : 0);
            orderInfoWarpper.setPayMoney(null != map.get("payMoney") ? Double.valueOf(String.valueOf(map.get("payMoney"))) : 0);
            orderInfoWarpper.setPayManner(null != map.get("payManner") ? Integer.valueOf(String.valueOf(map.get("payManner"))) : null);
            orderInfoWarpper.setSeatNumber(null != map.get("seatNumber") ? String.valueOf(map.get("seatNumber")) : "");
        }
        return orderInfoWarpper;
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TCompanyController.java
@@ -71,15 +71,6 @@
    @Autowired
    private ITDriverServiceService tDriverServiceService;
    @Autowired
    private ITOrderPrivateCarService orderPrivateCarService;
    @Autowired
    private ITOrderTaxiService orderTaxiService;
    @Autowired
    private ITOrderCrossCityService orderCrossCityService;
    @Autowired
    private ITCarService tCarService;
@@ -793,7 +784,7 @@
            return null;
        }
        for (Integer cancelledType : cancelledTypes) {
            if (hasDriverUnfinishedOrder(driverIds, cancelledType)) {
            if (hasDriverEnabledService(driverIds, cancelledType)) {
                return "当前公司内存在司机正在使用" + getServiceName(cancelledType) + "业务,无法变动";
            }
        }
@@ -852,29 +843,13 @@
        }
    }
    private boolean hasDriverUnfinishedOrder(List<Integer> driverIds, Integer serviceType) {
    private boolean hasDriverEnabledService(List<Integer> driverIds, Integer serviceType) {
        if (driverIds == null || driverIds.isEmpty() || serviceType == null) {
            return false;
        }
        if (Integer.valueOf(1).equals(serviceType)) {
            return orderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>()
                .eq("isDelete", 1)
                .in("driverId", driverIds)
                .notIn("state", 8, 9, 10, 12)) > 0;
        }
        if (Integer.valueOf(2).equals(serviceType)) {
            return orderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>()
                .eq("isDelete", 1)
                .in("driverId", driverIds)
                .notIn("state", 8, 9, 10, 12)) > 0;
        }
        if (Integer.valueOf(3).equals(serviceType)) {
            return orderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>()
                .eq("isDelete", 1)
                .in("driverId", driverIds)
                .notIn("state", 8, 9, 10, 12)) > 0;
        }
        return false;
        return tDriverServiceService.selectCount(new EntityWrapper<TDriverService>()
            .in("driverId", driverIds)
            .eq("type", serviceType)) > 0;
    }
    private String getServiceName(Integer serviceType) {
ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TOrderPrivateCarController.java
@@ -55,6 +55,21 @@
    @Autowired
    private ITDriverService tDriverService;
    @Autowired
    private ITOrderTaxiService tOrderTaxiService;
    @Autowired
    private ITOrderCrossCityService tOrderCrossCityService;
    @Autowired
    private ITCompanyCityService tCompanyCityService;
    @Autowired
    private GDMapGeocodingUtil gdMapGeocodingUtil;
    @Autowired
    private GDMapElectricFenceUtil gdMapElectricFenceUtil;
    
    @Autowired
    private PushMinistryOfTransportUtil pushMinistryOfTransportUtil;
@@ -596,7 +611,10 @@
    public Object add(TOrderPrivateCar privateCar) {
        TUser user = userService.selectOne(new EntityWrapper<TUser>().eq("phone", privateCar.getPassengersPhone()));
        if (ToolUtil.isNotEmpty(user)) {///  用户是平台用户
            privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + privateCar.selectList(null).size() + 1).substring(1));
            if (hasUnfinishedTravelOrder(user.getId())) {
                return new ErrorTip(500, "该乘客有未完成的订单");
            }
            privateCar.setOrderNum(getPrivateCarOrderNum());
            privateCar.setUserId(user.getId());
            privateCar.setState(1);
            privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime()));
@@ -619,6 +637,7 @@
            } else {
                privateCar.setOrderType(1);
            }
            fillDispatchPrivateCarOrder(privateCar);
            tOrderPrivateCarService.insert(privateCar);
        } else {///  用户不是平台用户时
            TUser tUser = new TUser();
@@ -629,7 +648,7 @@
            userService.insert(tUser);
            ///  存入订单信息
            privateCar.setOrderNum("PRIVATE" + String.valueOf(1000000 + tOrderPrivateCarService.selectList(null).size() + 1).substring(1));
            privateCar.setOrderNum(getPrivateCarOrderNum());
            privateCar.setUserId(tUser.getId());
            privateCar.setState(1);
            privateCar.setInsertTime(DateUtil.parseTime(DateUtil.getTime()));
@@ -653,6 +672,7 @@
            } else {
                privateCar.setOrderType(1);
            }
            fillDispatchPrivateCarOrder(privateCar);
            tOrderPrivateCarService.insert(privateCar);
        }
@@ -664,4 +684,77 @@
        System.out.println("添加订单推单调用结果:" + result);
        return SUCCESS_TIP;
    }
    private String getPrivateCarOrderNum() {
        return "PR" + new java.text.SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + UUIDUtil.getRandomCode().substring(0, 5);
    }
    private boolean hasUnfinishedTravelOrder(Integer userId) {
        if (userId == null) {
            return false;
        }
        return tOrderPrivateCarService.selectCount(new EntityWrapper<TOrderPrivateCar>()
                .eq("isDelete", 1)
                .eq("userId", userId)
                .notIn("state", 8, 9, 10, 12)) > 0
                || tOrderTaxiService.selectCount(new EntityWrapper<TOrderTaxi>()
                .eq("isDelete", 1)
                .eq("userId", userId)
                .notIn("state", 8, 9, 10, 12)) > 0
                || tOrderCrossCityService.selectCount(new EntityWrapper<TOrderCrossCity>()
                .eq("isDelete", 1)
                .eq("userId", userId)
                .notIn("state", 8, 9, 10, 12)) > 0;
    }
    private void fillDispatchPrivateCarOrder(TOrderPrivateCar privateCar) {
        privateCar.setIsDelete(1);
        privateCar.setTotalPeopleNum(1);
        fillPlacementAndCompany(privateCar);
        fillEstimateDistance(privateCar);
    }
    private void fillPlacementAndCompany(TOrderPrivateCar privateCar) {
        if (privateCar.getStartLon() == null || privateCar.getStartLat() == null) {
            return;
        }
        try {
            Map<String, String> geocode = gdMapGeocodingUtil.geocode(privateCar.getStartLon().toString(), privateCar.getStartLat().toString());
            if (ToolUtil.isNotEmpty(geocode.get("address"))) {
                privateCar.setPlacementAddress(geocode.get("address"));
            }
            if (ToolUtil.isNotEmpty(geocode.get("districtCode"))) {
                TCompanyCity companyCity = tCompanyCityService.selectOne(new EntityWrapper<TCompanyCity>()
                        .eq("areaCode", Integer.valueOf(geocode.get("districtCode")))
                        .eq("state", 1));
                if (companyCity != null) {
                    privateCar.setCompanyId(companyCity.getCompanyId());
                }
            }
        } catch (Exception e) {
            System.err.println("管理端添加快车单补充下单地/公司失败:" + e.getMessage());
        }
    }
    private void fillEstimateDistance(TOrderPrivateCar privateCar) {
        if (privateCar.getStartLon() == null || privateCar.getStartLat() == null
                || privateCar.getEndLon() == null || privateCar.getEndLat() == null) {
            return;
        }
        try {
            Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance(
                    privateCar.getStartLon() + "," + privateCar.getStartLat(),
                    privateCar.getEndLon() + "," + privateCar.getEndLat(), 1);
            if (distanceMap != null) {
                if (ToolUtil.isNotEmpty(distanceMap.get("distance"))) {
                    privateCar.setEstimateMileage(Double.valueOf(distanceMap.get("distance")));
                }
                if (ToolUtil.isNotEmpty(distanceMap.get("duration"))) {
                    privateCar.setEstimateTime(Double.valueOf(distanceMap.get("duration")) / 60);
                }
            }
        } catch (Exception e) {
            System.err.println("管理端添加快车单补充预估距离失败:" + e.getMessage());
        }
    }
}
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/OrderCrossCityServiceImpl.java
@@ -853,6 +853,7 @@
            
            orderCrossCity.setState(2);//已支付,订单状态修改为待出发
            orderCrossCity.setPayType(3);
            orderCrossCity.setPayManner(1);
            orderCrossCity.setPayMoney(orderMoney);
            orderCrossCity.setPayTime(new Date());
            
@@ -1105,6 +1106,7 @@
            
            orderCrossCity.setState(2);//已支付,订单状态修改为待出发
            orderCrossCity.setPayType(3);
            orderCrossCity.setPayManner(1);
            orderCrossCity.setPayMoney(orderMoney);
            orderCrossCity.setPayTime(new Date());
            
@@ -1176,6 +1178,7 @@
            transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行订单", query.getAmount(), 2, 1, 1, 3, query.getOrderId());
            orderCrossCity.setState(2);//先支付再服务
            orderCrossCity.setPayType(type);
            orderCrossCity.setPayManner(1);
            orderCrossCity.setPayMoney(query.getAmount());
            orderCrossCity.setBillNo(no);
            orderCrossCity.setPayTime(new Date());
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -3117,6 +3117,7 @@
        orderPrivateCar.setState(1);
        orderPrivateCar.setPayType(payType);
        orderPrivateCar.setPayManner(1);
        orderPrivateCar.setPayMoney(payAmount);
        orderPrivateCar.setPayTime(new Date());
        orderPrivateCar.setPrepayStage(2);
UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -2604,6 +2604,7 @@
        orderTaxi.setState(1);
        orderTaxi.setPayType(payType);
        orderTaxi.setPayManner(1);
        orderTaxi.setPayMoney(payAmount);
        orderTaxi.setPayTime(new Date());
        orderTaxi.setPrepayStage(2);