临时锁车、继续骑行

This commit is contained in:
attiya 2025-04-21 15:31:02 +08:00
parent 596ccfdfa7
commit 95d962edbe
5 changed files with 91 additions and 3 deletions

View File

@ -46,4 +46,6 @@ public interface CmdCode {
String RESTART = "restart";
String TEMP_LOCK = "temp_lock";
String CONTINUE_CYCLING = "continue_cycling";
}

View File

@ -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<UserOrders> page = userOrdersService.page(pageParam.getPage(), queryWrapper);
return JsonResult.success(page);
}

View File

@ -46,4 +46,6 @@ public interface CmdCode {
String RESTART = "restart";
String TEMP_LOCK = "temp_lock";
String CONTINUE_CYCLING = "continue_cycling";
}

View File

@ -40,5 +40,22 @@ public interface UserOrdersService extends IService<UserOrders> {
*/
UserOrders checkHistoryOrder(String userId);
/**
* 车辆位置列表
* @param bikeDto 位置i信息
* @return 列表
*/
List<RspBikeDto> bikeList(ReqBikeDto bikeDto);
/**
* 临时锁车
* @param orderDto 订单信息
*/
void tempLock(ReqOrderDto orderDto);
/**
* 继续骑行
* @param orderDto 订单信息
*/
void continueCycling(ReqOrderDto orderDto);
}

View File

@ -118,6 +118,7 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
}
@Override
@Transactional
public Long doneRide(ReqOrderDto orderDto) {
String userId = orderDto.getUserId();
UserOrders userOrders = getOrder(orderDto);
@ -190,6 +191,48 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
}).toList();
}
@Override
@Transactional
public void tempLock(ReqOrderDto orderDto) {
String userId = orderDto.getUserId();
UserOrders userOrders = getOrder(orderDto);
JsonResult<FeignEbikeBikeInfoDto> jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode());
if (jsonResult.getCode() != Code.SUCCESS) {
throw new RuntimeException("获取车辆信息失败");
}
FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData();
FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo();
CompletableFuture<String> 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<FeignEbikeBikeInfoDto> jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode());
if (jsonResult.getCode() != Code.SUCCESS) {
throw new RuntimeException("获取车辆信息失败");
}
FeignEbikeBikeInfoDto bikeInfoDto = jsonResult.getData();
FeignEbikeEcuInfo ecuInfo = bikeInfoDto.getEbikeEcuInfo();
CompletableFuture<String> 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<UserOrdersMapper, UserOrd
* @return 计费后总金额
*/
BigDecimal defaultCostCalculation(BigDecimal totalAmount,long minutes,ResFeignEbikeSysRcostsetDto feignEbikeSysRcostsetDto){
return totalAmount;
}
}