diff --git a/ebike-feign/pom.xml b/ebike-feign/pom.xml
index c98e4b9..e5bdd30 100644
--- a/ebike-feign/pom.xml
+++ b/ebike-feign/pom.xml
@@ -73,6 +73,12 @@
2025.1.0
+
+ org.locationtech.jts
+ jts-core
+ 1.18.2
+
+
diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeDto.java b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeDto.java
index 5a3511e..c6dcb8e 100644
--- a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeDto.java
+++ b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeDto.java
@@ -3,7 +3,7 @@ package com.ebike.feign.model.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
import java.io.Serializable;
@@ -21,6 +21,6 @@ public class FeignEbikeDto implements Serializable {
/**
* 定位
*/
- private PGpoint location;
+ private Point location;
}
diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeUserBikeInfo.java b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeUserBikeInfo.java
index 80d749b..1f527e6 100644
--- a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeUserBikeInfo.java
+++ b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikeUserBikeInfo.java
@@ -4,7 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpolygon;
+import org.locationtech.jts.geom.Polygon;
import java.io.Serial;
import java.io.Serializable;
@@ -101,6 +101,6 @@ public class FeignEbikeUserBikeInfo implements Serializable {
/**
* 车辆运营区
*/
- private PGpolygon regionPolygon;
+ private Polygon regionPolygon;
}
diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/vo/EbikeLockVo.java b/ebike-feign/src/main/java/com/ebike/feign/model/vo/EbikeLockVo.java
index 1e7e540..4b1f79d 100644
--- a/ebike-feign/src/main/java/com/ebike/feign/model/vo/EbikeLockVo.java
+++ b/ebike-feign/src/main/java/com/ebike/feign/model/vo/EbikeLockVo.java
@@ -5,7 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
import java.io.Serial;
import java.io.Serializable;
@@ -33,7 +33,7 @@ public class EbikeLockVo implements Serializable {
@NotNull(message = "车辆当前位置不能为空")
- private PGpoint point;
+ private Point point;
}
diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeBikeRadiusVo.java b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeBikeRadiusVo.java
index 44fb12f..9554cd6 100644
--- a/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeBikeRadiusVo.java
+++ b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeBikeRadiusVo.java
@@ -5,7 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
import java.io.Serial;
import java.io.Serializable;
@@ -29,7 +29,7 @@ public class FeignEbikeBikeRadiusVo implements Serializable {
* 用户所在坐标
*/
@NotNull(message = "用户所在坐标不能为空")
- private PGpoint point;
+ private Point point;
/**
* 用户所在坐标
diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeRegionVo.java b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeRegionVo.java
index c2ddfea..a1b035d 100644
--- a/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeRegionVo.java
+++ b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeRegionVo.java
@@ -5,7 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpolygon;
+import org.locationtech.jts.geom.Polygon;
import java.io.Serial;
import java.io.Serializable;
@@ -47,7 +47,7 @@ public class FeignEbikeRegionVo implements Serializable {
/**
* 区域
*/
- private PGpolygon regionPolygon;
+ private Polygon regionPolygon;
/**
* 站点数量
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java
index 7d1987c..626300c 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeBikeInfoController.java
@@ -19,7 +19,10 @@ import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.PrecisionModel;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -189,8 +192,10 @@ public class EbikeBikeInfoController {
log.warn("中控未绑定车辆或不存在,SN={}", ecuSn);
return JsonResult.failed();
}else {
+ GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
+ Point location = geometryFactory.createPoint(new Coordinate(longitude, latitude));
UpdateChain.of(EbikeBikeInfo.class)
- .set(EBIKE_BIKE_INFO.LOCATION,new PGpoint(longitude,latitude))
+ .set(EBIKE_BIKE_INFO.LOCATION,location)
.where(EBIKE_BIKE_INFO.BIKE_INFO_ID.eq(bikeInfo.getBikeInfoId()))
.update();
log.info("更新车辆位置成功,SN={}", ecuSn);
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java
index 1ea07ad..75588c7 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/controller/EbikeRegionController.java
@@ -20,7 +20,10 @@ import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.core.util.StringUtil;
import jakarta.annotation.Resource;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Coordinate;
+import org.locationtech.jts.geom.GeometryFactory;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.PrecisionModel;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -262,8 +265,9 @@ public class EbikeRegionController {
@GetMapping("getRegionByLocation")
public JsonResult> getRegionByLocation(@RequestParam("lng") double lng,
@RequestParam("lat") double lat) {
- PGpoint point = new PGpoint(lng, lat);
- EbikeRegion region = ebikeRegionService.getRegionByLocation(point);
+ GeometryFactory geometryFactory = new GeometryFactory(new PrecisionModel(), 4326);
+ Point location = geometryFactory.createPoint(new Coordinate(lng, lat));
+ EbikeRegion region = ebikeRegionService.getRegionByLocation(location);
return JsonResult.success(region);
}
}
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeInfoMapper.java b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeInfoMapper.java
index 3f55746..130e4fc 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeInfoMapper.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeBikeInfoMapper.java
@@ -4,8 +4,8 @@ import com.cdzy.operations.model.dto.EbikeDto;
import com.mybatisflex.core.BaseMapper;
import com.cdzy.operations.model.entity.EbikeBikeInfo;
import org.apache.ibatis.annotations.Param;
-import org.postgresql.geometric.PGpoint;
-import org.postgresql.geometric.PGpolygon;
+import org.locationtech.jts.geom.Point;
+import org.locationtech.jts.geom.Polygon;
import java.util.List;
@@ -22,7 +22,7 @@ public interface EbikeBikeInfoMapper extends BaseMapper {
* @param polygon 多边形
* @return 列表
*/
- List selectPolygonGeometry(@Param("polygon") PGpolygon polygon);
+ List selectPolygonGeometry(@Param("polygon") Polygon polygon);
/**
* 查询半径范围内的车辆(带距离排序)
@@ -30,7 +30,7 @@ public interface EbikeBikeInfoMapper extends BaseMapper {
* @param radiusMeters 半径距离(米)
* @return 按距离排序的车辆列表
*/
- List selectRadiusGeometryWithOrder(@Param("centerPoint") PGpoint centerPoint,
+ List selectRadiusGeometryWithOrder(@Param("centerPoint") Point centerPoint,
@Param("radius") double radiusMeters);
}
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java
index 0bc24e3..734b0d3 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/mapper/EbikeRegionMapper.java
@@ -2,7 +2,7 @@ package com.cdzy.operations.mapper;
import com.cdzy.operations.model.entity.EbikeRegion;
import com.mybatisflex.core.BaseMapper;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
import java.util.List;
@@ -28,7 +28,7 @@ public interface EbikeRegionMapper extends BaseMapper {
* @param point 用户当前位置
* @return 列表
*/
- List findAllRegionsOrderByDistance(PGpoint point);
+ List findAllRegionsOrderByDistance(Point point);
/**
* 根据当前位置查询当前运营区
@@ -36,5 +36,5 @@ public interface EbikeRegionMapper extends BaseMapper {
* @param point 用户当前位置
* @return 运营区信息
*/
- EbikeRegion findCurrentRegion(PGpoint point);
+ EbikeRegion findCurrentRegion(Point point);
}
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java
index f9c7927..e307c87 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeReportRecord.java
@@ -10,8 +10,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpoint;
-import org.postgresql.geometric.PGpolygon;
+import org.locationtech.jts.geom.Point;
import java.io.Serial;
import java.io.Serializable;
@@ -41,10 +40,10 @@ public class EbikeReportRecord implements Serializable {
/**
* 上报位置
*/
- @Column(typeHandler = PGpointTypeHandler.class)
- @JsonSerialize(using = PGpointSerializer.class)
- @JsonDeserialize(using = PGpointDeserializer.class)
- private PGpoint location;
+ @Column(typeHandler = PointTypeHandler.class)
+ @JsonSerialize(using = PointSerializer.class)
+ @JsonDeserialize(using = PointDeserializer.class)
+ private Point location;
/**
* 上报原因
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeSite.java b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeSite.java
index 709d770..cac79e1 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeSite.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/model/entity/EbikeSite.java
@@ -12,7 +12,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpolygon;
+import org.locationtech.jts.geom.Polygon;
import java.io.Serial;
import java.io.Serializable;
@@ -61,7 +61,7 @@ public class EbikeSite implements Serializable {
@Column(typeHandler = PolygonTypeHandler.class)
@JsonSerialize(using = PolygonSerializer.class)
@JsonDeserialize(using = PolygonDeserializer.class)
- private PGpolygon sitePolygon;
+ private Polygon sitePolygon;
/**
* 站点类型:1-普通站点(停车) 2-禁停区 3-仓库区
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeSiteVo.java b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeSiteVo.java
index 622f3fe..967ebdf 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeSiteVo.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/model/vo/EbikeSiteVo.java
@@ -5,7 +5,7 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
-import org.postgresql.geometric.PGpolygon;
+import org.locationtech.jts.geom.Polygon;
import java.io.Serializable;
@@ -49,7 +49,7 @@ public class EbikeSiteVo implements Serializable {
* 站点区域
*/
@NotNull(message = "站点区域不能为空")
- private PGpolygon sitePolygon;
+ private Polygon sitePolygon;
/**
* 站点类型:1-普通站点(停车) 2-禁停区 3-仓库区
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeRegionService.java b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeRegionService.java
index 4bf2632..873f798 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeRegionService.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/service/EbikeRegionService.java
@@ -4,7 +4,7 @@ import com.cdzy.operations.model.vo.EbikeOperationConfigVo;
import com.cdzy.operations.model.vo.EbikeRegionVo;
import com.mybatisflex.core.service.IService;
import com.cdzy.operations.model.entity.EbikeRegion;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
/**
* 运营区域表 服务层。
@@ -41,8 +41,8 @@ public interface EbikeRegionService extends IService {
/**
* 根据当前位置查询当前运营区信息
- * @param pGpoint 当前位置
+ * @param point 当前位置
* @return 运营区信息
*/
- EbikeRegion getRegionByLocation(PGpoint pGpoint);
+ EbikeRegion getRegionByLocation(Point point);
}
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java
index 52331b8..95e8b61 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeBikeOrderServiceImpl.java
@@ -23,7 +23,7 @@ import com.mybatisflex.core.update.UpdateChain;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -703,7 +703,7 @@ public class EbikeBikeOrderServiceImpl extends ServiceImpl regionList(OrderRegionVo orderRegionVo) {
- PGpoint point = orderRegionVo.getPoint();
+ Point point = orderRegionVo.getPoint();
if (point != null) {
return regionMapper.findAllRegionsOrderByDistance(point);
} else {
diff --git a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeRegionServiceImpl.java b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeRegionServiceImpl.java
index 50794c6..f05ff4b 100644
--- a/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeRegionServiceImpl.java
+++ b/ebike-operations/src/main/java/com/cdzy/operations/service/impl/EbikeRegionServiceImpl.java
@@ -11,7 +11,7 @@ import com.cdzy.operations.service.EbikeRegionService;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
-import org.postgresql.geometric.PGpoint;
+import org.locationtech.jts.geom.Point;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -145,7 +145,7 @@ public class EbikeRegionServiceImpl extends ServiceImpl
-
+