Pu Zhibing
2025-08-01 67e37149354a618af26545de5fe26138e57c1c35
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
@@ -16,12 +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.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;
@@ -93,6 +94,14 @@
    @Autowired
    private IAdditionalFeeService additionalFeeService;
//    @Autowired
//    private RedissonClient redissonClient;
    @Autowired
    private IOpenCityService openCityService;
    @Autowired
    private ICompanyService companyService;
@@ -500,12 +509,27 @@
     * @throws Exception
     */
    @Override
    public synchronized ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception {
    public ResultUtil grabOrder(Integer orderId, Integer orderType, Integer uid) throws Exception {
        //专车和出租是批量下单,所以这里需要将两种类型的抢单操作通过一个锁来一起控制
        if(1 == orderType || 2 == orderType){
            Boolean lock = redisTemplate.opsForValue().setIfAbsent("grabOrder:" + orderId, "1");
            if(!lock){
                return ResultUtil.error("抢单失败,请稍后重试");
            }
            try {
                if(1 == orderType){
                    return orderPrivateCarService.grabOrder(orderId, uid);
                }
                if(2 == orderType){
                    return orderTaxiService.grabOrder(orderId, uid);
                }
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                redisTemplate.delete("grabOrder:" + orderId);
            }
        }
        switch (orderType){
            case 1://专车
                return orderPrivateCarService.grabOrder(orderId, uid);
            case 2://出租
                return orderTaxiService.grabOrder(orderId, uid);
            case 3://城际
                return ResultUtil.success();//不作任何操作,跨城默认选择的司机
            case 4://同城小件
@@ -611,27 +635,33 @@
     */
    @Override
    public Double queryReassignMoney(Integer orderId, Integer orderType) throws Exception {
        Integer companyId = null;
        Integer openCityId = null;
        switch (orderType){
            case 1://专车
                companyId = orderPrivateCarService.selectById(orderId).getCompanyId();
                OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId);
                openCityId = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()).getId();
                break;
            case 2://出租
                companyId = orderTaxiService.selectById(orderId).getCompanyId();
                OrderTaxi orderTaxi = orderTaxiService.selectById(orderId);
                openCityId = openCityService.openCity1(orderTaxi.getStartLon().toString(), orderTaxi.getStartLat().toString()).getId();
                break;
            case 3://城际
                companyId = orderCrossCityService.selectById(orderId).getCompanyId();
                OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId);
                openCityId = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()).getId();
                break;
            case 4://同城小件
                companyId = orderLogisticsService.selectById(orderId).getCompanyId();
                OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId);
                openCityId = openCityService.openCity1(orderLogistics.getStartLon().toString(), orderLogistics.getStartLat().toString()).getId();
                break;
            case 5://跨城小件
                companyId = orderLogisticsService.selectById(orderId).getCompanyId();
                OrderLogistics orderLogistics1 = orderLogisticsService.selectById(orderId);
                openCityId = openCityService.openCity1(orderLogistics1.getStartLon().toString(), orderLogistics1.getStartLat().toString()).getId();
                break;
            case 6:
                break;
        }
        return sysReformistMapper.queryMoney(companyId);
        return sysReformistMapper.queryMoney(openCityId);
    }
@@ -1008,11 +1038,11 @@
                    }
                    //调用移动的小号接口
                    Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
                    if(String.valueOf(map.get("code")).equals("200")){
                        orderPrivateCar.setTelX(map.get("telX"));
                        orderPrivateCar.setBindId(map.get("bindId"));
                    }
//                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderPrivateCar.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
//                    if(String.valueOf(map.get("code")).equals("200")){
//                        orderPrivateCar.setTelX(map.get("telX"));
//                        orderPrivateCar.setBindId(map.get("bindId"));
//                    }
                    orderPrivateCarService.updateById(orderPrivateCar);
                }
                break;
@@ -1025,11 +1055,11 @@
                    }
                    //调用移动的小号接口
                    Driver driver = driverService.selectById(orderTaxi.getDriverId());
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
                    if(String.valueOf(map.get("code")).equals("200")){
                        orderTaxi.setTelX(map.get("telX"));
                        orderTaxi.setBindId(map.get("bindId"));
                    }
//                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderTaxi.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
//                    if(String.valueOf(map.get("code")).equals("200")){
//                        orderTaxi.setTelX(map.get("telX"));
//                        orderTaxi.setBindId(map.get("bindId"));
//                    }
                    orderTaxiService.updateById(orderTaxi);
                }
                break;
@@ -1042,11 +1072,11 @@
                    }
                    //调用移动的小号接口
                    Driver driver = driverService.selectById(orderCrossCity.getDriverId());
                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
                    if(String.valueOf(map.get("code")).equals("200")){
                        orderCrossCity.setTelX(map.get("telX"));
                        orderCrossCity.setBindId(map.get("bindId"));
                    }
//                    Map<String, String> map = chinaMobileUtil.midAxbBindSend(orderCrossCity.getPassengersPhone(), driver.getPhone(), (System.currentTimeMillis() + 86400000));
//                    if(String.valueOf(map.get("code")).equals("200")){
//                        orderCrossCity.setTelX(map.get("telX"));
//                        orderCrossCity.setBindId(map.get("bindId"));
//                    }
                    orderCrossCityService.updateById(orderCrossCity);
                }
                break;
@@ -1154,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();
@@ -1183,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();