From c3b7673c16d026e57f8759b4cee99a42bf3c57f2 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 24 九月 2025 09:15:44 +0800
Subject: [PATCH] 修改bug

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |  104 ++++++++++++++++++++-------------------------------
 1 files changed, 41 insertions(+), 63 deletions(-)

diff --git a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index d2c80a8..d1cded1 100644
--- a/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -35,6 +35,7 @@
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
 
 import javax.annotation.Resource;
@@ -210,7 +211,7 @@
     public synchronized ResultUtil<BaseWarpper> saveOrderPrivateCar(Integer serverCarModelId, Date travelTime, Integer reservation, Integer instead, String placementLon, String placementLat, String startLon, String startLat,
                                           String startAddress, String endLon, String endLat, String endAddress, String name, String phone, Integer orderSource, Integer driverId, Integer type, Integer uid,
                                                                     BigDecimal estimatedPrice,String cityCode,Integer carIndex) throws Exception {
-
+        long timeMillis = System.currentTimeMillis();
         //如果出行时间大于当前10分钟则默认为预约单
         if(travelTime.getTime() > (System.currentTimeMillis() + 600000)){
             reservation = 2;
@@ -287,24 +288,24 @@
         orderPrivateCar.setTravelTime(travelTime);
         orderPrivateCar.setOrderType(reservation);
         orderPrivateCar.setOrderSource(orderSource);
+        Driver driver2 = driverService.selectById(driverId);
         if(orderSource == 2){//扫码下单
-            Driver driver = driverService.selectById(driverId);
-            if(null == driver){
+            if(null == driver2){
                 return ResultUtil.error("司机信息有误,无法完成下单");
             }
-            if(driver.getAuthState() == 1){
+            if(driver2.getAuthState() == 1){
                 return ResultUtil.error("司机信息还未完成审核,无法完成下单");
             }
-            if(driver.getAuthState() == 3){
+            if(driver2.getAuthState() == 3){
                 return ResultUtil.error("司机账户已被冻结,无法提供服务");
             }
-            if(driver.getAuthState() == 4){
+            if(driver2.getAuthState() == 4){
                 return ResultUtil.error("司机信息未通过审核,无法提供服务");
             }
-            if(driver.getState() == 1){
+            if(driver2.getState() == 1){
                 return ResultUtil.error("司机还未上线,无法提供服务");
             }
-            if(driver.getState() == 3){
+            if(driver2.getState() == 3){
                 return ResultUtil.error("司机正在服务中,无法提供服务");
             }
             List<DriverService> query = driverServiceService.query(driverId, 1);
@@ -313,15 +314,15 @@
             }
 
             orderPrivateCar.setDriverId(driverId);
-            orderPrivateCar.setCompanyId(driver.getFranchiseeId() != null && driver.getFranchiseeId() != 0 ? driver.getFranchiseeId() : (
-                    driver.getCompanyId() != null && driver.getCompanyId() != 0 ? driver.getCompanyId() : 1));
+            orderPrivateCar.setCompanyId(driver2.getFranchiseeId() != null && driver2.getFranchiseeId() != 0 ? driver2.getFranchiseeId() : (
+                    driver2.getCompanyId() != null && driver2.getCompanyId() != 0 ? driver2.getCompanyId() : 1));
             orderPrivateCar.setState(2);
-            orderPrivateCar.setCarId(driver.getCarId());
-            CarService query1 = carServiceMapper.query(1, driver.getCarId());
+            orderPrivateCar.setCarId(driver2.getCarId());
+            CarService query1 = carServiceMapper.query(1, driver2.getCarId());
             orderPrivateCar.setServerCarModelId(query1.getServerCarModelId());
             orderPrivateCar.setSnatchOrderTime(new Date());
-            driver.setState(3);
-            driverService.updateById(driver);
+            driver2.setState(3);
+            driverService.updateById(driver2);
         }
         // 查询城市的订单额度
         OpenCity openCity = openCityService.selectOne(new EntityWrapper<OpenCity>()
@@ -341,7 +342,17 @@
         // 查询预估价格
         ResultUtil<List<ServerCarModelWarpper>> listResultUtil = serverCarModelService.queryServerCarModel(startLon + "," + startLat, endLon + "," + endLat, 1);
         List<ServerCarModelWarpper> data = listResultUtil.getData();
-        data = data.stream().filter(e -> serverCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList());
+        if(Objects.isNull(serverCarModelId)){
+            //获取经营业务
+            CarService query = new CarService();
+            query.setCarId(driver2.getCarId());
+            CarService service = carServiceMapper.selectOne(query);
+            if(Objects.nonNull(service)){
+                serverCarModelId = service.getServerCarModelId();
+            }
+        }
+        Integer finalServerCarModelId = serverCarModelId;
+        data = data.stream().filter(e -> finalServerCarModelId.equals(e.getId())).sorted(Comparator.comparing(ServerCarModelWarpper::getAmount)).collect(Collectors.toList());
         if(Objects.nonNull(openCity) && !CollectionUtils.isEmpty(data) && BigDecimal.valueOf(data.get(0).getAmount()).compareTo(openCity.getOrderMagnitude()) > 0){
             orderPrivateCar.setIsReassign(1);
             orderPrivateCar.setIsDelete(1);
@@ -363,7 +374,9 @@
             return ResultUtil.success(baseWarpper);
         }else {
             if(orderSource == 2){
-                orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
+                if(!CollectionUtils.isEmpty(data)){
+                    orderPrivateCar.setEstimatedPrice(data.get(0).getAmount());
+                }
             }else {
                 orderPrivateCar.setEstimatedPrice(data.get(carIndex).getAmount());
             }
@@ -392,18 +405,9 @@
                 }
                 AssignOrder assignOrder = assignOrderService.selectOne(new EntityWrapper<AssignOrder>().eq("companyId", query.getId()).eq("type", 1));
                 if(null != assignOrder){//配置了指派规则才处理
-                    boolean lock = redisUtil.lock("order_lock", 10);
+                    boolean lock = redisUtil.lock("order_lock", 10, 30);
                     if(!lock){
-                        int num1 = 1;
-                        while (num1 <= 10){
-                            Thread.sleep(3000);//等待3秒
-                            lock = redisUtil.lock("order_lock", 10);
-                            if(lock){
-                                break;
-                            }else{
-                                num1++;
-                            }
-                        }
+                        return ResultUtil.error("系统繁忙,请稍后重试");
                     }
                     try {
                         //获取空闲司机
@@ -1030,18 +1034,9 @@
      */
     @Override
     public ResultUtil cancleOrderPrivateCar(Integer id, Integer payType, Integer cancleId, Integer type) throws Exception {
-        boolean lock = redisUtil.lock(id + "_cancleOrder", 10);
+        boolean lock = redisUtil.lock(id + "_cancleOrder", 10, 30);
         if(!lock){
-            int num1 = 1;
-            while (num1 <= 10){
-                Thread.sleep(3000);//等待3秒
-                lock = redisUtil.lock(id + "_cancleOrder", 10);
-                if(lock){
-                    break;
-                }else{
-                    num1++;
-                }
-            }
+            return ResultUtil.error("系统繁忙,请稍后重试");
         }
         ResultUtil resultUtil = ResultUtil.success("");
         try {
@@ -1380,18 +1375,9 @@
 
     @Override
     public ResultUtil payPrivateCarOrder(Integer payType, Integer orderId, Integer couponId, Integer type) throws Exception {
-        boolean lock = redisUtil.lock(orderId + "_payment", 10);
+        boolean lock = redisUtil.lock(orderId + "_payment", 10, 30);
         if(!lock){
-            int num1 = 1;
-            while (num1 <= 10){
-                Thread.sleep(3000);//等待3秒
-                lock = redisUtil.lock(orderId + "_payment", 10);
-                if(lock){
-                    break;
-                }else{
-                    num1++;
-                }
-            }
+            return ResultUtil.error("系统繁忙,请稍后重试");
         }
         try {
             OrderPrivateCar orderPrivateCar = this.selectById(orderId);
@@ -1898,21 +1884,11 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public synchronized void payOrderPrivateCarCallback(Integer id, String order_id, Integer type) throws Exception {
-        boolean lock = redisUtil.lock(order_id + "_paymentCallback", 10);
+        boolean lock = redisUtil.lock(order_id + "_paymentCallback", 10, 30);
         if(!lock){
-            int num1 = 1;
-            while (num1 <= 10){
-                Thread.sleep(3000);//等待3秒
-                lock = redisUtil.lock(order_id + "_paymentCallback", 10);
-                if(lock){
-                    break;
-                }else{
-                    num1++;
-                }
-            }
+            return;
         }
-        
-        
+
         try {
             PaymentRecord query = paymentRecordService.query(1, null, null, Integer.valueOf(id), 1, type, null);
             if(null != query){
@@ -1924,7 +1900,9 @@
                 transactionDetailsService.saveData(orderPrivateCar.getUserId(), "完成订单", query.getAmount(), 2, 1, 1, 1, query.getOrderId());
 //                orderPrivateCar.setState(8);
                 orderPrivateCar.setPayType(type);
-                orderPrivateCar.setTransactionId(order_id);
+                if(!StringUtils.hasLength(orderPrivateCar.getTransactionId())){
+                    orderPrivateCar.setTransactionId(order_id);
+                }
                 this.updateById(orderPrivateCar);
         
 //                UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());

--
Gitblit v1.7.1