diff --git a/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java b/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java index d865da70..dc476201 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/controller/EbikeUserOrdersController.java @@ -106,6 +106,30 @@ public class EbikeUserOrdersController { return JsonResult.success(orderId); } + /** + * 检查车辆是否在运营区内。 + * + * @param bikeCode 车辆编号 + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @GetMapping("checkBikeInOperation") + public JsonResult checkBikeInOperation(@RequestParam("bikeCode")String bikeCode) { + boolean inOperation = userOrdersService.checkBikeInOperation(bikeCode); + return JsonResult.success(inOperation); + } + + /** + * 检查车辆是否在停车区内。 + * + * @param bikeCode 车辆编号 + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @GetMapping("checkBikeInParking") + public JsonResult checkBikeInParking(@RequestParam("bikeCode")String bikeCode) { + boolean inParking = userOrdersService.checkBikeInParking(bikeCode); + return JsonResult.success(inParking); + } + /** * 根据用户订单表主键获取详细信。 diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java b/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java index e86fc90a..4cc165a5 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/UserOrdersService.java @@ -58,4 +58,18 @@ public interface UserOrdersService extends IService { * @param orderDto 订单信息 */ void continueCycling(ReqOrderDto orderDto); + + /** + * 判断车辆当前位置是否在运营区内 + * @param bikeCode 车辆编号 + * @return true/false + */ + boolean checkBikeInOperation(String bikeCode); + + /** + * 判断车辆当前位置是否在停车区内 + * @param bikeCode 车辆编号 + * @return true/false + */ + boolean checkBikeInParking(String bikeCode); } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java index 3e1b72c5..f468ceeb 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/service/impl/UserOrdersServiceImpl.java @@ -238,6 +238,42 @@ public class UserOrdersServiceImpl extends ServiceImpl jsonResult = maintenanceFeignClient.getEbikeInfoByCode(bikeCode); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取车辆信息失败"); + } + FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); + FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo(); + JsonResult regionResult = operateFeignClient.getOperationById(bikeInfoDto.getReginId()); + if (regionResult.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取运营区信息失败"); + } + FeignEbikeRegionDto regionDto = regionResult.getData(); + String jsonString = JSONObject.toJSONString(redisUtil.get(ecuInfo.getEcuSn())); + ResGPSDto resGpsDto = JSONObject.parseObject(jsonString, ResGPSDto.class); + return bikeInOperation(resGpsDto.getLongitude(),resGpsDto.getLatitude(),regionDto.getOrgId(),bikeInfoDto.getReginId()); + } + + @Override + public boolean checkBikeInParking(String bikeCode) { + JsonResult jsonResult = maintenanceFeignClient.getEbikeInfoByCode(bikeCode); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取车辆信息失败"); + } + FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); + FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo(); + JsonResult regionResult = operateFeignClient.getOperationById(bikeInfoDto.getReginId()); + if (regionResult.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取运营区信息失败"); + } + FeignEbikeRegionDto regionDto = regionResult.getData(); + String jsonString = JSONObject.toJSONString(redisUtil.get(ecuInfo.getEcuSn())); + ResGPSDto resGpsDto = JSONObject.parseObject(jsonString, ResGPSDto.class); + return redisUtil.isPointInParking(resGpsDto.getLongitude(),resGpsDto.getLatitude(),regionDto.getOrgId()); + } + boolean bikeInOperation(double lng, double lat, Long orgId, Long regionId) { return redisUtil.isPointInOperation(lng, lat, orgId, regionId); } @@ -254,8 +290,8 @@ public class UserOrdersServiceImpl extends ServiceImpl