开锁逻辑封装
This commit is contained in:
parent
fbf4c288a0
commit
ac6ef73cfe
@ -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<String> executeCommand(Long ecuID, String cmdCode,Long bikeId,String userId) {
|
||||
public CompletableFuture<String> executeCommand(FeignEbikeEcuInfo ebikeEcuInfo, String cmdCode, Long bikeId, String userId) {
|
||||
CompletableFuture<String> 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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,4 +130,7 @@ public class UserOrders implements Serializable {
|
||||
*/
|
||||
private Integer tempLock;
|
||||
|
||||
@Column(isLogicDelete = true,onInsertValue = "0")
|
||||
private Integer isDelete;
|
||||
|
||||
}
|
||||
|
||||
@ -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<UserOrdersMapper, UserOrd
|
||||
@Resource
|
||||
OperateFeignClient operateFeignClient;
|
||||
|
||||
@Resource
|
||||
EbikeCoreHandler ebikeCoreHandler;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Long saveRide(ReqOrderDto orderDto) {
|
||||
UserOrders history = checkHistoryOrder(orderDto.getUserId());
|
||||
String userId = orderDto.getUserId();
|
||||
UserOrders history = checkHistoryOrder(userId);
|
||||
if (history != null && history.getStatus() == OrderStatus.IN_PROGRESS) {
|
||||
throw new RuntimeException("请完成当前订单后再试");
|
||||
}
|
||||
@ -66,7 +74,7 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
|
||||
throw new RuntimeException("请支付未支付订单后再试");
|
||||
}
|
||||
UserOrders userOrders = new UserOrders();
|
||||
userOrders.setUserId(orderDto.getUserId());
|
||||
userOrders.setUserId(userId);
|
||||
userOrders.setBikeCode(orderDto.getBikeCode());
|
||||
userOrders.setOrderType(OrderType.ONCE);
|
||||
userOrders.setStartTime(LocalDateTime.now());
|
||||
@ -90,8 +98,13 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
|
||||
if (!pointInOperation){
|
||||
throw new RuntimeException("当前车辆再运营区外");
|
||||
}
|
||||
//TODO:开锁,并且等待结果
|
||||
|
||||
//开锁,并且等待结果
|
||||
CompletableFuture<String> 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);
|
||||
|
||||
@ -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<FeignEbikeBikeInfoDto> jsonResult = maintenanceFeignClient.getEbikeInfoByCode("250306001002");
|
||||
if (jsonResult.getCode() != Code.SUCCESS){
|
||||
throw new RuntimeException("获取车辆信息失败");
|
||||
}
|
||||
FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData();
|
||||
FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo();
|
||||
CompletableFuture<String> stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.FIND_EBIKE, 259806209647882240L, "267412794681929728");
|
||||
stringCompletableFuture.join();
|
||||
System.out.println("成功");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user