关锁逻辑封装
This commit is contained in:
parent
ac6ef73cfe
commit
44165f4dac
@ -2,7 +2,6 @@ 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;
|
||||
@ -10,10 +9,13 @@ import com.cdzy.orders.enums.CmdCode;
|
||||
import com.cdzy.orders.enums.EbikeRegionInOperation;
|
||||
import com.cdzy.orders.enums.OrderStatus;
|
||||
import com.cdzy.orders.enums.OrderType;
|
||||
import com.cdzy.orders.mapper.UserOrdersMapper;
|
||||
import com.cdzy.orders.model.dto.req.ReqBikeDto;
|
||||
import com.cdzy.orders.model.dto.req.ReqOrderDto;
|
||||
import com.cdzy.orders.model.dto.res.RedisPoint;
|
||||
import com.cdzy.orders.model.dto.res.RspBikeDto;
|
||||
import com.cdzy.orders.model.entity.UserOrders;
|
||||
import com.cdzy.orders.service.UserOrdersService;
|
||||
import com.cdzy.orders.uitls.RedisUtil;
|
||||
import com.cdzy.orders.uitls.TimeUtils;
|
||||
import com.ebike.feign.clients.MaintenanceFeignClient;
|
||||
@ -24,9 +26,6 @@ import com.ebike.feign.model.rsp.FeignEbikeEcuInfo;
|
||||
import com.ebike.feign.model.rsp.FeignEbikeRegionDto;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.cdzy.orders.model.entity.UserOrders;
|
||||
import com.cdzy.orders.mapper.UserOrdersMapper;
|
||||
import com.cdzy.orders.service.UserOrdersService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -121,6 +120,7 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
|
||||
|
||||
@Override
|
||||
public Long doneRide(ReqOrderDto orderDto) {
|
||||
String userId = orderDto.getUserId();
|
||||
UserOrders userOrders = getOrder(orderDto);
|
||||
userOrders.setEndTime(LocalDateTime.now());
|
||||
JsonResult<FeignEbikeBikeInfoDto> jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode());
|
||||
@ -150,7 +150,13 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
|
||||
//TODO:区域校验:校验是否在停车区内;时间校验:根据规则做时间校验、判断收费多少.需要支付则为待支付状态、不需要则为取消状态
|
||||
userOrders.setStatus(OrderStatus.PENDING_PAYMENT);
|
||||
userOrdersMapper.update(userOrders);
|
||||
//TODO:关锁
|
||||
//关锁,并且等待结果
|
||||
CompletableFuture<String> stringCompletableFuture = ebikeCoreHandler.executeCommand(ecuInfo, CmdCode.LOCK, Long.valueOf(bikeInfoDto.getBikeId()), userId);
|
||||
String response = stringCompletableFuture.join();
|
||||
JSONObject jsonObject = JSONObject.parseObject(response);
|
||||
if (jsonObject.getInteger("code") != 0) {
|
||||
throw new RuntimeException("关锁失败");
|
||||
}
|
||||
return userOrders.getOrderId();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user