From 08a361bf4439c5da2ab2cfd4525e50079f51016f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 19 九月 2025 10:27:59 +0800
Subject: [PATCH] 修改附近车辆查询逻辑

---
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverWorkServiceImpl.java |   11 +++++++++++
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java                      |   16 ++++++++++++++--
 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverWorkService.java         |    7 +++++++
 3 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
index 70e2b5d..bd27f37 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -17,8 +17,12 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.geo.Circle;
+import org.springframework.data.geo.Distance;
+import org.springframework.data.geo.Metrics;
 import org.springframework.data.geo.Point;
 import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.geo.GeoJsonPoint;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -149,8 +153,16 @@
     })
     public ResultUtil<List<Map<String, Object>>> queryNearbyCar(String lon, String lat){
         //mongodb查询附近5公里范围内的坐标
-        Query query = Query.query(Criteria.where("point").nearSphere(new Point(Double.parseDouble(lon), Double.parseDouble(lat))).maxDistance(5000));
+        //找到中心点
+        GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.parseDouble(lon), Double.parseDouble(lat));
+        //构造半径
+        Distance distanceR = new Distance(5, Metrics.KILOMETERS);
+        //画圆
+        Circle circle = new Circle(geoJsonPoint, distanceR);
+        // 构造query对象
+        Query query = Query.query(Criteria.where("point").withinSphere(circle));
         List<DriverPosition> driverPositions = mongoTemplate.find(query, DriverPosition.class);
+
         log.info("地理空间检索出的数据:{}", JSON.toJSONString(driverPositions));
         List<Map<String, Object>> collect = new ArrayList<>();
         if(driverPositions.size() > 0){
@@ -158,7 +170,7 @@
             List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().in("id", driverIds)
                     .eq("authState", 2).eq("state", 2));
             collect = drivers.stream().map(driver -> {
-                String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(driver.getId()));
+                String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + driver.getId());
                 if(ToolUtil.isNotEmpty(value)){
                     Optional<DriverPosition> driverPosition = driverPositions.stream().filter(position -> position.getDriverId().equals(driver.getId())).findFirst();
                     Map<String, Object> map = new HashMap<>();
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverWorkService.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverWorkService.java
new file mode 100644
index 0000000..eb29af0
--- /dev/null
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/IDriverWorkService.java
@@ -0,0 +1,7 @@
+package com.stylefeng.guns.modular.system.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.stylefeng.guns.modular.system.model.DriverWork;
+
+public interface IDriverWorkService extends IService<DriverWork> {
+}
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverWorkServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverWorkServiceImpl.java
new file mode 100644
index 0000000..546f86a
--- /dev/null
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverWorkServiceImpl.java
@@ -0,0 +1,11 @@
+package com.stylefeng.guns.modular.system.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.stylefeng.guns.modular.system.dao.DriverWorkMapper;
+import com.stylefeng.guns.modular.system.model.DriverWork;
+import com.stylefeng.guns.modular.system.service.IDriverWorkService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DriverWorkServiceImpl extends ServiceImpl<DriverWorkMapper, DriverWork> implements IDriverWorkService {
+}

--
Gitblit v1.7.1