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