From 9a66aa395b78b5df07058560eec181a66d6db2b9 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期二, 30 九月 2025 11:41:51 +0800
Subject: [PATCH] 优化指派逻辑

---
 UserZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 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 807cc03..bc09638 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
@@ -431,11 +431,8 @@
                                         }
                                         String value = redisUtil.getValue("DRIVER" + drivers.get(j).getId());
                                         if (null != value) {
-//                                Map<String, String> distance1 = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 0);//计算距离
-//                                Integer d = Integer.valueOf(distance1.get("distance"));
-                                            String[] split = value.split(",");
-                                            double distance = GDMapGeocodingUtil.getDistance(orderPrivateCar.getStartLat(), orderPrivateCar.getStartLon(), Double.valueOf(split[1]), Double.valueOf(split[0]));
-                                            int d = Double.valueOf(distance).intValue();
+                                            Map<String, Double> distance1 = geodesyUtil.getDistance(orderPrivateCar.getStartLat() + "," + orderPrivateCar.getStartLon(), value);
+                                            int d = distance1.get("WGS84").intValue();
                                             if ((0 == m && null == driver) || (d < m)) {
                                                 driver = drivers.get(j);
                                                 m = d;
@@ -452,11 +449,11 @@
                                 for (Driver driver : ds) {
                                     String value = redisUtil.getValue("DRIVER" + driver.getId());
                                     if (null != value) {
-                                        Map<String, Double> distance = geodesyUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value);
-                                        Double wgs84 = distance.get("WGS84");
-                                        if ((0 == m && null == dr) || (wgs84.intValue() < m.intValue())) {
+                                        Map<String, String> distance = gdMapElectricFenceUtil.getDistance(startLon + "," + startLat, value, 1);
+                                        int distance1 = Integer.parseInt(distance.get("distance"));
+                                        if ((0 == m && null == dr) || (distance1 < m.intValue())) {
                                             dr = driver;
-                                            m = wgs84.intValue();
+                                            m = distance1;
                                         }
                                     }
                                 }
@@ -480,6 +477,7 @@
                                     dr.setState(3);
                                 }
                                 driverService.updateById(dr);
+                                redisUtil.setStrValue("DRIVER_ORDER" + dr.getId(), orderPrivateCar.getId().toString(), 600);
                                 new Thread(new Runnable() {
                                     @Override
                                     public void run() {
@@ -1378,6 +1376,11 @@
         if(!lock){
             return ResultUtil.error("系统繁忙,请稍后重试");
         }
+        String key = orderId + "_during_payment";
+        if(redisUtil.hasKey(key)){
+            return ResultUtil.error("支付中,不能重复发起支付");
+        }
+        redisUtil.setStrValue(key, UUIDUtil.getRandomCode(), 10);
         try {
             OrderPrivateCar orderPrivateCar = this.selectById(orderId);
             if(orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9){
@@ -1888,7 +1891,6 @@
         if(!lock){
             return;
         }
-
         try {
             PaymentRecord query = paymentRecordService.query(1, null, null, Integer.valueOf(id), 1, type, null);
             if(null != query){

--
Gitblit v1.7.1