From ac6ef73cfe1e985e22498dba759a212e6bc3334b Mon Sep 17 00:00:00 2001 From: attiya <2413103649@qq.com> Date: Thu, 17 Apr 2025 15:31:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E9=94=81=E9=80=BB=E8=BE=91=E5=B0=81?= =?UTF-8?q?=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orders/component/EbikeCoreHandler.java | 12 +++--- .../cdzy/orders/model/entity/UserOrders.java | 3 ++ .../service/impl/UserOrdersServiceImpl.java | 43 ++++++++++++------- .../orders/EbikeOrdersApplicationTests.java | 27 ++++++++++++ 4 files changed, 63 insertions(+), 22 deletions(-) diff --git a/ebike-orders/src/main/java/com/cdzy/orders/component/EbikeCoreHandler.java b/ebike-orders/src/main/java/com/cdzy/orders/component/EbikeCoreHandler.java index f5c185a6..b7df1706 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/component/EbikeCoreHandler.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/component/EbikeCoreHandler.java @@ -9,6 +9,7 @@ import com.cdzy.orders.mapper.EbikeParamValueMapper; import com.cdzy.orders.model.entity.EbikeCmd; import com.cdzy.orders.model.entity.EbikeParam; import com.cdzy.orders.model.entity.EbikeParamValue; +import com.ebike.feign.model.rsp.FeignEbikeEcuInfo; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; import org.springframework.stereotype.Component; @@ -41,16 +42,14 @@ public class EbikeCoreHandler { /** * 下发命令 * - * @param ecuID 中控ID + * @param ebikeEcuInfo 中控信息 * @return 一致性返回 */ - public CompletableFuture executeCommand(Long ecuID, String cmdCode,Long bikeId,String userId) { + public CompletableFuture executeCommand(FeignEbikeEcuInfo ebikeEcuInfo, String cmdCode, Long bikeId, String userId) { CompletableFuture future = new CompletableFuture<>(); -// EbikeEcuInfoService ebikeEcuInfoService = SpringContextHolder.getBean(EbikeEcuInfoService.class); -// EbikeEcuInfo ebikeEcuInfo = ebikeEcuInfoService.getById(ecuID); CMDMsg cmdMsg = new CMDMsg(); -// cmdMsg.setDeviceId(ebikeEcuInfo.getEcuSn()); -// cmdMsg.setGroup(ebikeEcuInfo.getOperatorCode()); + cmdMsg.setDeviceId(ebikeEcuInfo.getEcuSn()); + cmdMsg.setGroup(ebikeEcuInfo.getOperatorCode()); String tid = UUID.randomUUID().toString().replace("-", ""); String command = getCommand(cmdCode, tid); cmdMsg.setCommand(command); @@ -173,7 +172,6 @@ public class EbikeCoreHandler { }); jsonObject.put(ebikeParam.getParamName(), param); }); - System.out.println(jsonObject.toJSONString()); return jsonObject.toJSONString(); } } diff --git a/ebike-orders/src/main/java/com/cdzy/orders/model/entity/UserOrders.java b/ebike-orders/src/main/java/com/cdzy/orders/model/entity/UserOrders.java index 222b04da..37e961ea 100644 --- a/ebike-orders/src/main/java/com/cdzy/orders/model/entity/UserOrders.java +++ b/ebike-orders/src/main/java/com/cdzy/orders/model/entity/UserOrders.java @@ -130,4 +130,7 @@ public class UserOrders implements Serializable { */ private Integer tempLock; + @Column(isLogicDelete = true,onInsertValue = "0") + private Integer isDelete; + } 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 83a88c91..67805070 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 @@ -2,8 +2,11 @@ package com.cdzy.orders.service.impl; import com.alibaba.fastjson2.JSONObject; import com.cdzy.common.enums.Code; +import com.cdzy.common.model.CoreResult; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.ResGPSDto; +import com.cdzy.orders.component.EbikeCoreHandler; +import com.cdzy.orders.enums.CmdCode; import com.cdzy.orders.enums.EbikeRegionInOperation; import com.cdzy.orders.enums.OrderStatus; import com.cdzy.orders.enums.OrderType; @@ -31,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.List; import java.util.Objects; +import java.util.concurrent.CompletableFuture; import static com.cdzy.orders.model.entity.table.UserOrdersTableDef.USER_ORDERS; @@ -55,10 +59,14 @@ public class UserOrdersServiceImpl extends ServiceImpl jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode()); - if (jsonResult.getCode() != Code.SUCCESS){ + if (jsonResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取车辆信息失败"); } FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo(); JsonResult operationResult = operateFeignClient.getOperationById(bikeInfoDto.getReginId()); - if (operationResult.getCode() != Code.SUCCESS){ + if (operationResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取运营区信息失败"); } FeignEbikeRegionDto regionDto = operationResult.getData(); - if (regionDto.getRegionId() == EbikeRegionInOperation.OUT){ + if (regionDto.getRegionId() == EbikeRegionInOperation.OUT) { throw new RuntimeException("当前运营区已停止运营"); } String jsonString = JSONObject.toJSONString(redisUtil.get(ecuInfo.getEcuSn())); @@ -90,8 +98,13 @@ public class UserOrdersServiceImpl extends ServiceImpl stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.UNLOCK, Long.valueOf(bikeInfoDto.getBikeId()), userId); + String response = stringCompletableFuture.join(); + JSONObject jsonObject = JSONObject.parseObject(response); + if (jsonObject.getInteger("code") != 0) { + throw new RuntimeException("开锁失败"); + } userOrders.setBikeId(bikeInfoDto.getBikeId()); String stringBuilder = resGpsDto.getLongitude() + "," + resGpsDto.getLatitude(); userOrders.setRidePoint(stringBuilder); @@ -111,7 +124,7 @@ public class UserOrdersServiceImpl extends ServiceImpl jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode()); - if (jsonResult.getCode() != Code.SUCCESS){ + if (jsonResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取车辆信息失败"); } FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); @@ -120,12 +133,12 @@ public class UserOrdersServiceImpl extends ServiceImpl operateJsonResult = operateFeignClient.getRegionFeeConfigById(bikeInfoDto.getReginId()); - if (operateJsonResult.getCode() != Code.SUCCESS){ + JsonResult operateJsonResult = operateFeignClient.getRegionFeeConfigById(bikeInfoDto.getReginId()); + if (operateJsonResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取计费规则失败"); } JsonResult regionResult = operateFeignClient.getOperationById(bikeInfoDto.getReginId()); - if (regionResult.getCode() != Code.SUCCESS){ + if (regionResult.getCode() != Code.SUCCESS) { throw new RuntimeException("获取运营区信息失败"); } FeignEbikeRegionDto regionDto = regionResult.getData(); @@ -167,16 +180,16 @@ public class UserOrdersServiceImpl extends ServiceImpl bikeList(ReqBikeDto bikeDto) { - List nearbyMembers = redisUtil.findNearbyMembers(bikeDto.getLongitude(), bikeDto.getLatitude(), bikeDto.getRadius()==null?3.0:bikeDto.getRadius()); + public List bikeList(ReqBikeDto bikeDto) { + List nearbyMembers = redisUtil.findNearbyMembers(bikeDto.getLongitude(), bikeDto.getLatitude(), bikeDto.getRadius() == null ? 3.0 : bikeDto.getRadius()); return nearbyMembers.stream().filter(Objects::nonNull).map(redisPoint -> { String jsonString = JSONObject.toJSONString(redisUtil.get(redisPoint.getMember())); ResGPSDto resGpsDto = JSONObject.parseObject(jsonString, ResGPSDto.class); - return new RspBikeDto(redisPoint.getMember(), resGpsDto.getSoc(),redisPoint.getPoint().getX(), redisPoint.getPoint().getY()); + return new RspBikeDto(redisPoint.getMember(), resGpsDto.getSoc(), redisPoint.getPoint().getX(), redisPoint.getPoint().getY()); }).toList(); } - boolean bikeInOperation(double lng, double lat,Long orgId,Long regionId){ + boolean bikeInOperation(double lng, double lat, Long orgId, Long regionId) { return redisUtil.isPointInOperation(lng, lat, orgId, regionId); } } diff --git a/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java b/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java index 392a8d9a..938c6b51 100644 --- a/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java +++ b/ebike-orders/src/test/java/com/cdzy/orders/EbikeOrdersApplicationTests.java @@ -1,15 +1,23 @@ package com.cdzy.orders; +import com.cdzy.common.enums.Code; +import com.cdzy.common.model.JsonResult; +import com.cdzy.orders.component.EbikeCoreHandler; +import com.cdzy.orders.enums.CmdCode; import com.cdzy.orders.mapper.UserOrdersMapper; import com.cdzy.orders.model.dto.res.RedisPoint; import com.cdzy.orders.model.entity.UserOrders; import com.cdzy.orders.uitls.RedisUtil; import com.cdzy.orders.uitls.TimeUtils; +import com.ebike.feign.clients.MaintenanceFeignClient; +import com.ebike.feign.model.rsp.FeignEbikeBikeInfoDto; +import com.ebike.feign.model.rsp.FeignEbikeEcuInfo; import jakarta.annotation.Resource; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; import java.util.List; +import java.util.concurrent.CompletableFuture; @SpringBootTest class EbikeOrdersApplicationTests { @@ -20,6 +28,12 @@ class EbikeOrdersApplicationTests { @Resource UserOrdersMapper ordersMapper; + @Resource + EbikeCoreHandler ebikeCoreHandler; + + @Resource + MaintenanceFeignClient maintenanceFeignClient; + @Test void contextLoads() { double lng = 103.975457 ; @@ -35,4 +49,17 @@ class EbikeOrdersApplicationTests { System.out.println(minutes); } + @Test + void send() { + JsonResult jsonResult = maintenanceFeignClient.getEbikeInfoByCode("250306001002"); + if (jsonResult.getCode() != Code.SUCCESS){ + throw new RuntimeException("获取车辆信息失败"); + } + FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData(); + FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo(); + CompletableFuture stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.FIND_EBIKE, 259806209647882240L, "267412794681929728"); + stringCompletableFuture.join(); + System.out.println("成功"); + } + }