From 052a3249c21c76435e2af5e76036e3c503d12218 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 21 五月 2025 13:56:37 +0800
Subject: [PATCH] 修改bug

---
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java           |   23 +++++++++++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java                 |    9 ++++
 DriverOKTravel/guns-admin/pom.xml                                                                                 |    8 ++++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java |   20 +++++++---
 DriverOKTravel/guns-admin/src/main/resources/application.yml                                                      |    5 ++
 DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java       |   35 +++++++++++++++++
 6 files changed, 94 insertions(+), 6 deletions(-)

diff --git a/DriverOKTravel/guns-admin/pom.xml b/DriverOKTravel/guns-admin/pom.xml
index 41bd38f..b851f1d 100644
--- a/DriverOKTravel/guns-admin/pom.xml
+++ b/DriverOKTravel/guns-admin/pom.xml
@@ -226,6 +226,14 @@
             <artifactId>commons-codec</artifactId>
             <version>1.13</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
index 577daa2..a0d647a 100644
--- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/crossCity/server/impl/LineSiteServiceImpl.java
@@ -16,14 +16,20 @@
 import com.stylefeng.guns.modular.system.util.GDMapElectricFenceUtil;
 import com.stylefeng.guns.modular.system.util.RedisUtil;
 import com.stylefeng.guns.modular.system.util.SystemException;
+import com.stylefeng.guns.modular.system.util.model.GeoFencingPolygon;
 import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
 import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
 import org.springframework.beans.factory.annotation.Autowired;
+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.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
@@ -46,9 +52,9 @@
 
     @Autowired
     private DateUtil dateUtil;
-
+    
     @Autowired
-    private GDMapElectricFenceUtil gdMapElectricFenceUtil;
+    private MongoTemplate mongoTemplate;
 
     @Autowired
     private RedisUtil redisUtil;
@@ -306,12 +312,14 @@
                 }
             }
             if(Integer.valueOf(map.get("type").toString()) == 2){//电子围栏
-                String gid = map.get("gid").toString();
-                List<String> list1 = gdMapElectricFenceUtil.monitorElectricFenc("", lonLat);
-                if(list1.contains(gid)){
+                String[] split = lonLat.split(",");
+                GeoJsonPoint point = new GeoJsonPoint(Double.valueOf(split[0]), Double.valueOf(split[1]));
+                Query query = Query.query(Criteria.where("geoJsonPolygon").intersects(point));
+                List<GeoFencingPolygon> geoFencingPolygons = mongoTemplate.find(query, GeoFencingPolygon.class);
+                List<Integer> s_sites = geoFencingPolygons.stream().map(GeoFencingPolygon::getSiteId).collect(Collectors.toList());
+                if(s_sites.contains(siteId)){
                     return true;
                 }
-                continue;
             }
         }
         return false;
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java
new file mode 100644
index 0000000..5a2f93b
--- /dev/null
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoFencingPolygon.java
@@ -0,0 +1,35 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+import org.springframework.data.mongodb.core.geo.GeoJsonPolygon;
+import org.springframework.data.mongodb.core.index.GeoSpatialIndexType;
+import org.springframework.data.mongodb.core.index.GeoSpatialIndexed;
+import org.springframework.data.mongodb.core.mapping.Document;
+
+import java.io.Serializable;
+
+/**
+ * 地理围栏-多边形
+ * @author zhibing.pu
+ * @date 2023/4/29 23:53
+ */
+@Data
+@Document(collection = "geo_fencing")
+public class GeoFencingPolygon implements Serializable {
+    private static final long serialVersionUID = 4508868382007529971L;
+
+    private String id;
+    /**
+     * 站点id
+     */
+    private Integer siteId;
+    /**
+     * 站点名称
+     */
+    private String name;
+    /**
+     * 多边形经纬度
+     */
+    @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
+    private GeoJsonPolygon geoJsonPolygon;
+}
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java
new file mode 100644
index 0000000..bb04b82
--- /dev/null
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/GeoJson.java
@@ -0,0 +1,9 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+
+@Data
+public class GeoJson {
+    private String type;
+    private Double[] coordinates;
+}
diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java
new file mode 100644
index 0000000..a7f14dc
--- /dev/null
+++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/model/LocationQuery.java
@@ -0,0 +1,23 @@
+package com.stylefeng.guns.modular.system.util.model;
+
+import lombok.Data;
+
+@Data
+public class LocationQuery {
+    /**
+     * 当前经纬度[xxx,xxx]
+     **/
+    private Double[] coordinates;
+    /**
+     * 距离,如:200,500,1,3,5,10,20
+     **/
+    private Double distance;
+    /**
+     * 距离单位,如:m,km
+     **/
+    private String unit;
+    /**
+     * 位置类型:1-景点,2-加油站,3-酒店
+     **/
+    private Integer type;
+}
\ No newline at end of file
diff --git a/DriverOKTravel/guns-admin/src/main/resources/application.yml b/DriverOKTravel/guns-admin/src/main/resources/application.yml
index fb973dd..9d204f1 100644
--- a/DriverOKTravel/guns-admin/src/main/resources/application.yml
+++ b/DriverOKTravel/guns-admin/src/main/resources/application.yml
@@ -102,7 +102,12 @@
 juhe: #聚合数据
   appKey: c4b903ff5624f661d0af962ef8b3f424 #
 
+---
 
+spring:
+  data:
+    mongodb:
+      uri: mongodb://127.0.0.1:27017/admin
 ---
 
 jiguang:

--
Gitblit v1.7.1