diff --git a/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java b/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java index f16f92f..ddddaba 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java +++ b/ebike-feign/src/main/java/com/ebike/feign/clients/OperationsFeignClient.java @@ -8,10 +8,7 @@ import com.ebike.feign.model.dto.FeignEbikeDto; import com.ebike.feign.model.dto.FeignEbikeReportRecordDto; import com.ebike.feign.model.dto.FeignEbikeUserBikeInfo; import com.ebike.feign.model.dto.FeignEbikeUserLockDto; -import com.ebike.feign.model.vo.EbikeLockVo; -import com.ebike.feign.model.vo.FeignEbikeBikeRadiusVo; -import com.ebike.feign.model.vo.FeignEbikeReportRecordVo; -import com.ebike.feign.model.vo.FeignInspectionSwapOrderVo; +import com.ebike.feign.model.vo.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; @@ -116,4 +113,15 @@ public interface OperationsFeignClient { */ @GetMapping("/ebikeReportRecord/getReportRecord") JsonResult> getReportRecord(@RequestParam("userId") Long userId); + + /** + * 获取当前位置所属运营区 + * + * @param lng 经度 + * @param lat 维度 + * @return 运营区信息 + */ + @GetMapping("/ebikeRegion/getRegionByLocation") + JsonResult getRegionByLocation(@RequestParam("lng") double lng, + @RequestParam("lat") double lat); } 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 new file mode 100644 index 0000000..c2ddfea --- /dev/null +++ b/ebike-feign/src/main/java/com/ebike/feign/model/vo/FeignEbikeRegionVo.java @@ -0,0 +1,70 @@ +package com.ebike.feign.model.vo; + +import com.mybatisflex.annotation.Id; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.postgresql.geometric.PGpolygon; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 运营区域表 实体类。 + * + * @author attiya + * @since 2025-10-22 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class FeignEbikeRegionVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 运营区ID + */ + @Id + private Long regionId; + + private Long operatorId; + + /** + * 运营区名称 + */ + private String regionName; + + /** + * 简称 + */ + private String regionSimpleName; + + /** + * 区域 + */ + private PGpolygon regionPolygon; + + /** + * 站点数量 + */ + private Integer siteNum; + + /** + * 运营区状态:0-未运营 1-运营中 2-停止运营 + */ + private Integer status; + + private LocalDateTime createdAt; + + private Long createdBy; + + private LocalDateTime updatedAt; + + private Long updatedBy; + +} 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 cb92218..1ea07ad 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,6 +20,7 @@ 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.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -142,7 +143,7 @@ public class EbikeRegionController { /** * 开始运营。 * - * @param regionId 运营区主键 + * @param regionId 运营区主键 * @return 分页对象 */ @GetMapping("commenceOperation") @@ -164,7 +165,7 @@ public class EbikeRegionController { /** * 结束运营。 * - * @param regionId 运营区主键 + * @param regionId 运营区主键 * @return 分页对象 */ @GetMapping("stopOperation") @@ -180,7 +181,7 @@ public class EbikeRegionController { /** * 保存运营区默认计费规则。 * - * @param configurationVo 配置信息 + * @param configurationVo 配置信息 * @return 分页对象 */ @PostMapping("defaultConfiguration") @@ -192,13 +193,13 @@ public class EbikeRegionController { /** * 获取运营区默认计费规则。 * - * @param regionId 区域ID + * @param regionId 区域ID * @return 分页对象 */ @GetMapping("getDefaultConfiguration") public JsonResult getDefaultConfiguration(@RequestParam Long regionId) { QueryWrapper queryWrapper = QueryWrapper.create() - .where(EBIKE_DEFAULT_BILLING_CONFIGURATION.REGION_ID.eq(regionId)); + .where(EBIKE_DEFAULT_BILLING_CONFIGURATION.REGION_ID.eq(regionId)); EbikeDefaultBillingConfiguration configuration = defaultConfigurationService.getOne(queryWrapper); return JsonResult.success(configuration); } @@ -207,7 +208,7 @@ public class EbikeRegionController { /** * 保存运营区高峰计费规则。 * - * @param configurationVo 配置信息 + * @param configurationVo 配置信息 * @return 分页对象 */ @PostMapping("specialConfiguration") @@ -219,7 +220,7 @@ public class EbikeRegionController { /** * 获取运营区高峰计费规则。 * - * @param regionId 区域ID + * @param regionId 区域ID * @return 分页对象 */ @GetMapping("getSpecialConfiguration") @@ -231,7 +232,7 @@ public class EbikeRegionController { /** * 保存运营配置。 * - * @param configurationVo 配置信息 + * @param configurationVo 配置信息 * @return 分页对象 */ @PostMapping("operationConfiguration") @@ -243,7 +244,7 @@ public class EbikeRegionController { /** * 获取运营配置。 * - * @param regionId 区域ID + * @param regionId 区域ID * @return 分页对象 */ @GetMapping("getOperationConfiguration") @@ -251,4 +252,18 @@ public class EbikeRegionController { EbikeOperationConfigVo configuration = ebikeRegionService.getOperationConfiguration(regionId); return JsonResult.success(configuration); } + + /** + * 根据当前位置查询查询所属运营区 + * + * @param lng 位置 + * @return 当前运营区信息 + */ + @GetMapping("getRegionByLocation") + public JsonResult getRegionByLocation(@RequestParam("lng") double lng, + @RequestParam("lat") double lat) { + PGpoint point = new PGpoint(lng, lat); + EbikeRegion region = ebikeRegionService.getRegionByLocation(point); + return JsonResult.success(region); + } } 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 ea48606..4bf2632 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,6 +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; /** * 运营区域表 服务层。 @@ -37,4 +38,11 @@ public interface EbikeRegionService extends IService { * @return 配置信息 */ EbikeOperationConfigVo getOperationConfiguration(Long regionId); + + /** + * 根据当前位置查询当前运营区信息 + * @param pGpoint 当前位置 + * @return 运营区信息 + */ + EbikeRegion getRegionByLocation(PGpoint pGpoint); } 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 5788c2e..50794c6 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,6 +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.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -81,7 +82,7 @@ public class EbikeRegionServiceImpl extends ServiceImpl list = ebikeUserService.queryPage(userPageDto); return JsonResult.success(list); } + + /** + * 查询当前位置的所在运营区 + * + * @param lng 经度 + * @param lat 维度 + * @return 运营区信息 + */ + @GetMapping("getRegionByLocation") + public JsonResult getRegionByLocation(@RequestParam("lng") double lng, + @RequestParam("lat") double lat) { + JsonResult jsonResult = operationsFeignClient.getRegionByLocation(lng, lat); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new EbikeException(jsonResult.getMessage()); + } + return JsonResult.success(jsonResult.getData()); + } } \ No newline at end of file