关锁逻辑封装
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.alibaba.fastjson2.JSONObject;
|
||||||
import com.cdzy.common.enums.Code;
|
import com.cdzy.common.enums.Code;
|
||||||
import com.cdzy.common.model.CoreResult;
|
|
||||||
import com.cdzy.common.model.JsonResult;
|
import com.cdzy.common.model.JsonResult;
|
||||||
import com.cdzy.common.model.ResGPSDto;
|
import com.cdzy.common.model.ResGPSDto;
|
||||||
import com.cdzy.orders.component.EbikeCoreHandler;
|
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.EbikeRegionInOperation;
|
||||||
import com.cdzy.orders.enums.OrderStatus;
|
import com.cdzy.orders.enums.OrderStatus;
|
||||||
import com.cdzy.orders.enums.OrderType;
|
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.ReqBikeDto;
|
||||||
import com.cdzy.orders.model.dto.req.ReqOrderDto;
|
import com.cdzy.orders.model.dto.req.ReqOrderDto;
|
||||||
import com.cdzy.orders.model.dto.res.RedisPoint;
|
import com.cdzy.orders.model.dto.res.RedisPoint;
|
||||||
import com.cdzy.orders.model.dto.res.RspBikeDto;
|
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.RedisUtil;
|
||||||
import com.cdzy.orders.uitls.TimeUtils;
|
import com.cdzy.orders.uitls.TimeUtils;
|
||||||
import com.ebike.feign.clients.MaintenanceFeignClient;
|
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.ebike.feign.model.rsp.FeignEbikeRegionDto;
|
||||||
import com.mybatisflex.core.query.QueryWrapper;
|
import com.mybatisflex.core.query.QueryWrapper;
|
||||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
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 jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@ -121,6 +120,7 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long doneRide(ReqOrderDto orderDto) {
|
public Long doneRide(ReqOrderDto orderDto) {
|
||||||
|
String userId = orderDto.getUserId();
|
||||||
UserOrders userOrders = getOrder(orderDto);
|
UserOrders userOrders = getOrder(orderDto);
|
||||||
userOrders.setEndTime(LocalDateTime.now());
|
userOrders.setEndTime(LocalDateTime.now());
|
||||||
JsonResult<FeignEbikeBikeInfoDto> jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode());
|
JsonResult<FeignEbikeBikeInfoDto> jsonResult = maintenanceFeignClient.getEbikeInfoByCode(orderDto.getBikeCode());
|
||||||
@ -150,7 +150,13 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, UserOrd
|
|||||||
//TODO:区域校验:校验是否在停车区内;时间校验:根据规则做时间校验、判断收费多少.需要支付则为待支付状态、不需要则为取消状态
|
//TODO:区域校验:校验是否在停车区内;时间校验:根据规则做时间校验、判断收费多少.需要支付则为待支付状态、不需要则为取消状态
|
||||||
userOrders.setStatus(OrderStatus.PENDING_PAYMENT);
|
userOrders.setStatus(OrderStatus.PENDING_PAYMENT);
|
||||||
userOrdersMapper.update(userOrders);
|
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();
|
return userOrders.getOrderId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user