From 67e37149354a618af26545de5fe26138e57c1c35 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 01 八月 2025 11:46:34 +0800
Subject: [PATCH] 新增加三方相关业务流程

---
 DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java |  138 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 99 insertions(+), 39 deletions(-)

diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
index c56d645..83b5f5e 100644
--- a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/OrderServiceImpl.java
+++ b/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;
@@ -54,28 +55,28 @@
 
     @Autowired
     private GDMapGeocodingUtil gdMapGeocodingUtil;
-
+    
     @Autowired
     private IDriverService driverService;
-
+    
     @Autowired
     private TaskUtil taskUtil;
-
+    
     @Autowired
     private ChinaMobileUtil chinaMobileUtil;
     
-    @Autowired
-    private RedisTemplate redisTemplate;
-
+    @Resource
+    private RedisTemplate<String, Object> redisTemplate;
+    
     @Autowired
     private PushUtil pushUtil;
-
+    
     @Autowired
     private IOrderPrivateCarService orderPrivateCarService;
-
+    
     @Autowired
     private IOrderCrossCityService orderCrossCityService;
-
+    
     @Autowired
     private IOrderLogisticsService orderLogisticsService;
 
@@ -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();

--
Gitblit v1.7.1