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