From 95d962edbefe434686fc8f4e8de9ceecd55fca56 Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Mon, 21 Apr 2025 15:31:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E9=94=81=E8=BD=A6=E3=80=81?= =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E9=AA=91=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cdzy/ebikemaintenance/enums/CmdCode.java | 2 + .../controller/EbikeUserOrdersController.java | 29 ++++++++++-- .../java/com/cdzy/orders/enums/CmdCode.java | 2 + .../orders/service/UserOrdersService.java | 17 +++++++ .../service/impl/UserOrdersServiceImpl.java | 44 +++++++++++++++++++ 5 files changed, 91 insertions(+), 3 deletions(-) diff --git a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/enums/CmdCode.java b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/enums/CmdCode.java index de0d67ae..d3374f4d 100644 --- a/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/enums/CmdCode.java +++ b/ebike-maintenance/src/main/java/com/cdzy/ebikemaintenance/enums/CmdCode.java @@ -46,4 +46,6 @@ public interface CmdCode { String RESTART = "restart"; String TEMP_LOCK = "temp_lock"; + + String CONTINUE_CYCLING = "continue_cycling"; } 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 1e35765b..d865da70 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 @@ -70,6 +70,30 @@ public class EbikeUserOrdersController { return JsonResult.success(userOrders); } + /** + * 临时锁车。 + * + * @param orderDto 骑行信息 + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @PostMapping("tempLock") + public JsonResult tempLock(@RequestBody @Validated ReqOrderDto orderDto) { + userOrdersService.tempLock(orderDto); + return JsonResult.success(); + } + + /** + * 继续骑行。 + * + * @param orderDto 骑行信息 + * @ {@code 200} 添加成功,{@code 500} 添加失败 + */ + @PostMapping("continueCycling") + public JsonResult continueCycling(@RequestBody @Validated ReqOrderDto orderDto) { + userOrdersService.continueCycling(orderDto); + return JsonResult.success(); + } + /** * 完成骑行(关锁还车)。 * @@ -83,7 +107,6 @@ public class EbikeUserOrdersController { } - /** * 根据用户订单表主键获取详细信。 * @@ -103,10 +126,10 @@ public class EbikeUserOrdersController { * @ 分页对象 */ @GetMapping("page") - public JsonResult page(@Validated PageParam pageParam,@RequestParam(value = "bikeId",required = false) Long bikeId) { + public JsonResult page(@Validated PageParam pageParam, @RequestParam(value = "bikeId", required = false) Long bikeId) { QueryWrapper queryWrapper = QueryWrapper.create() .from(USER_ORDERS) - .where(USER_ORDERS.BIKE_ID.eq(bikeId,bikeId != null)); + .where(USER_ORDERS.BIKE_ID.eq(bikeId, bikeId != null)); Page page = userOrdersService.page(pageParam.getPage(), queryWrapper); return JsonResult.success(page); } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/enums/CmdCode.java b/ebike-orders/src/main/java/com/cdzy/orders/enums/CmdCode.java index 612f2c76..c39a53da 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/enums/CmdCode.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/enums/CmdCode.java @@ -46,4 +46,6 @@ public interface CmdCode { String RESTART = "restart"; String TEMP_LOCK = "temp_lock"; + + String CONTINUE_CYCLING = "continue_cycling"; } 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 cb73b78c..e86fc90a 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 @@ -40,5 +40,22 @@ public interface UserOrdersService extends IService { */ UserOrders checkHistoryOrder(String userId); + /** + * 车辆位置列表 + * @param bikeDto 位置i信息 + * @return 列表 + */ List bikeList(ReqBikeDto bikeDto); + + /** + * 临时锁车 + * @param orderDto 订单信息 + */ + void tempLock(ReqOrderDto orderDto); + + /** + * 继续骑行 + * @param orderDto 订单信息 + */ + void continueCycling(ReqOrderDto orderDto); } 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 4d24f1d8..b8a3dd55 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 @@ -118,6 +118,7 @@ public class UserOrdersServiceImpl extends ServiceImpl jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode()); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取车辆信息失败"); + } + FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); + FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo(); + CompletableFuture stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.TEMP_LOCK, Long.valueOf(bikeInfoDto.getBikeId()), userId); + String response = stringCompletableFuture.join(); + JSONObject jsonObject = JSONObject.parseObject(response); + if (jsonObject.getInteger("code") != 0) { + throw new RuntimeException("关锁失败"); + } + userOrders.setTempLock(1); + userOrdersMapper.update(userOrders); + } + + @Override + @Transactional + public void continueCycling(ReqOrderDto orderDto) { + String userId = orderDto.getUserId(); + UserOrders userOrders = getOrder(orderDto); + JsonResult jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode()); + if (jsonResult.getCode() != Code.SUCCESS) { + throw new RuntimeException("获取车辆信息失败"); + } + FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); + FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo(); + CompletableFuture stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.CONTINUE_CYCLING, Long.valueOf(bikeInfoDto.getBikeId()), userId); + String response = stringCompletableFuture.join(); + JSONObject jsonObject = JSONObject.parseObject(response); + if (jsonObject.getInteger("code") != 0) { + throw new RuntimeException("开锁失败"); + } + userOrders.setTempLock(0); + userOrdersMapper.update(userOrders); + } + boolean bikeInOperation(double lng, double lat, Long orgId, Long regionId) { return redisUtil.isPointInOperation(lng, lat, orgId, regionId); } @@ -267,6 +310,7 @@ public class UserOrdersServiceImpl extends ServiceImpl