xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/ActiveOrderController.java
New file @@ -0,0 +1,53 @@ package com.xiaopeng.itinerary.controller; import com.xiaopeng.api.dto.order.OrderChangeDto; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.itinerary.service.ActiveOrderService; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; /** * <p> * 订单行程 * </p> */ @Slf4j @RestController @RequestMapping("") @Api(tags = "费用管理") public class ActiveOrderController { @Resource private ActiveOrderService activeOrderService; /** * 行程中 修改目的地 确认按钮 * 修改目的地, * 1.重新确认路线 * 2.确认价格 */ @ApiOperation(value = "行程中 修改目的地 确认按钮", notes = "", tags = {"小程序-行程中修改目的地"}) @PostMapping("/api/v1/mini-program/order/orderChange") @XpClientCheck(checkToken = false, checkOtpToken = true) public R<?> orderChange(@RequestBody @Validated OrderChangeDto dto, HttpServletRequest request) { String uid = request.getHeader("XP-Uid"); activeOrderService.orderChange(dto, uid); return R.ok(); } } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/controller/XpPricingController.java
@@ -57,8 +57,6 @@ private final IXpGeoQueryEntityService xpGeoQueryEntityService; private final RedisService redisService; private final ImageTagProcessor imageTagProcessor; @Resource private ActiveOrderService activeOrderService; public XpPricingController(XpPricingService xpPricingService, IXpGeoQueryEntityService xpGeoQueryEntityService, RedisService redisService, ImageTagProcessor imageTagProcessor) { @@ -143,21 +141,6 @@ } /** * 行程中 修改目的地 确认按钮 * 修改目的地, * 1.重新确认路线 * 2.确认价格 */ @ApiOperation(value = "行程中 修改目的地 确认按钮", notes = "", tags = {"小程序-行程中修改目的地"}) @PostMapping("/api/v1/mini-program/order/orderChange") @XpClientCheck(checkToken = false, checkOtpToken = true) public R<?> orderChange(@RequestBody @Validated OrderChangeDto dto, HttpServletRequest request) { String uid = request.getHeader("XP-Uid"); activeOrderService.orderChange(dto, uid); return R.ok(); } xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/ActiveOrderServiceImpl.java
@@ -125,14 +125,14 @@ log.info("当前区域暂未开通,下单失败 {}", uid); throw new ServiceException("当前区域未开通服务", I18nKeyConstant.NO_CURRENT_REGION); } boolean inTime = xpPointClient.nowInTimePoint(dto.getEndPointId()).getData(); if (!inTime) { throw new ServiceException("终点点位未开通服务", I18nKeyConstant.NO_CURRENT_REGION); } // 终点 XpPoint endXpPoint = xpPointService.getById(dto.getEndPointId()); if(endXpPoint ==null || endXpPoint.getOperationStatus()!=2){ throw new ServiceException("该站点已停止运营", 200,I18nKeyConstant.NO_CURRENT_POINT); } boolean inTime = xpPointClient.nowInTimePoint(dto.getEndPointId()).getData(); if (!inTime) { throw new ServiceException("当前点位未开通服务", I18nKeyConstant.NO_CURRENT_REGION); } //修改订单数据 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/ActiveOrderController.java
New file @@ -0,0 +1,146 @@ package com.xiaopeng.order.controller; import com.xiaopeng.api.dto.QueryOrderRouteDTO; import com.xiaopeng.api.feignClient.operation.XpPointClient; import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient; import com.xiaopeng.api.model.operation.XpPoint; import com.xiaopeng.api.model.order.XpOrder; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.order.model.vo.XpOrderDetailVO; import com.xiaopeng.order.service.IXpOrderService; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.Nullable; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.time.Duration; import java.time.LocalDateTime; @RestController @Api(tags = "订单") @RequiredArgsConstructor(onConstructor_ = @Lazy) public class ActiveOrderController { @Autowired private MongoTemplate mongoTemplate; @Resource XpOrderController xpOrderController; @Resource private final IXpOrderService xpOrderService; @Resource private final XpPointClient xpPointClient; @Resource private final XpVehicleClient xpVehicleClient; @Nullable private R<XpOrder> getOrderTripEnd(String orderId) { XpOrder xpOrder = xpOrderService.getById(orderId); if(xpOrder == null){ return R.fail("订单不存在"); } if(xpOrder.getTripEnd() != null){ Duration duration = Duration.between(xpOrder.getTripEnd(), LocalDateTime.now()); if(duration.toHours()>=24){ return R.fail("行程结束已超过24小时查看行程信息,请联系客服"); } } return R.ok(xpOrder); } /** * 分享行程接口1-订单查询实时轨迹路线 */ @ApiOperation(value = "分享行程接口1 订单查询实时轨迹路线") @GetMapping("/base/v1/mini-program/orderActive/share/queryOrderRoute") @XpClientCheck(checkToken = false, checkOtpToken = false) public R<RouteVo> queryOrderRoute(@RequestParam String orderId, HttpServletRequest request) { // 查询订单信息 if(StringUtils.isBlank(orderId) ){ return R.fail("参数不能为空"); } R r = getOrderTripEnd(orderId); if (r != null && r.getCode() != 200) { return r; } QueryOrderRouteDTO dto = new QueryOrderRouteDTO(); return xpOrderController.queryOrderRoute(dto,request); } /** * 分享行程接口2-订单查询轨迹路线 */ @ApiOperation(value = "分享行程接口2-订单查询轨迹路线") @GetMapping("/base/v1/mini-program/orderActive/share/queryOrderTrajectory") @XpClientCheck(checkToken = false, checkOtpToken = false) public R<RouteVo> queryOrderTrajectory(@RequestParam String orderId,HttpServletRequest request) { if(StringUtils.isBlank(orderId) ){ return R.fail("参数不能为空"); } R r = getOrderTripEnd(orderId); if (r != null && r.getCode() != 200) { return r; } return xpOrderController.queryOrderTrajectory(orderId,request); } /** * 分享行程接口3-订单信息 */ @ApiOperation(value = "分享行程接口3-订单查询实时轨迹路线") @GetMapping("/base/v1/mini-program/orderActive/share/orderInfo") @XpClientCheck(checkToken = false, checkOtpToken = false) public R<XpOrderDetailVO> shareOrderInfo(@RequestParam String orderId, HttpServletRequest request) { // 查询订单信息 if(orderId == null){ return R.fail("参数不能为空"); } R<XpOrder> r = getOrderTripEnd(orderId); if (r != null && r.getCode() != 200) { return R.fail(r.getMsg()); } XpOrder xpOrder = r.getData(); XpOrderDetailVO xpOrderDetailVO = new XpOrderDetailVO(); BeanUtils.copyProperties(xpOrder, xpOrderDetailVO); R<XpPoint> xpPointR = xpPointClient.queryById(xpOrder.getStartPointId()); if (xpPointR.getCode() == R.SUCCESS) { XpPoint startPoint = xpPointR.getData(); xpOrderDetailVO.setStartParkingTimeLimit(startPoint.getParkingTimeLimit()); } R<XpPoint> xpPointR1 = xpPointClient.queryById(xpOrder.getEndPointId()); if (xpPointR1.getCode() == R.SUCCESS) { XpPoint endPoint = xpPointR1.getData(); xpOrderDetailVO.setEndParkingTimeLimit(endPoint.getParkingTimeLimit()); } if (xpOrder.getVehicleId() != null) { R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId()); XpVehicle vehicle = xpVehicleR.getData(); xpOrderDetailVO.setVehicleId(vehicle.getId()); xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel()); xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor()); xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber()); xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures()); } return R.ok(xpOrderDetailVO); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/XpOrderController.java
@@ -566,6 +566,9 @@ @PostMapping("/api/v1/mini-program/order/queryOrderRoute") @XpClientCheck(checkToken = false, checkOtpToken = true) public R<RouteVo> queryOrderRoute(@Validated @RequestBody QueryOrderRouteDTO dto, HttpServletRequest request) { if(dto.getOrderId() == null){ return R.fail("参数不能为空"); } String uid = request.getHeader("XP-Uid"); // 查询订单信息 XpOrder xpOrder = xpOrderService.getById(dto.getOrderId()); @@ -595,7 +598,9 @@ @GetMapping("/api/v1/mini-program/order/queryOrderTrajectory") @XpClientCheck(checkToken = false, checkOtpToken = true) public R<RouteVo> queryOrderTrajectory(@RequestParam String orderId, HttpServletRequest request) { String uid = request.getHeader("XP-Uid"); if(orderId == null){ return R.fail("参数不能为空"); } List<OrderTrajectory> trajectories = mongoTemplate.find( new Query(Criteria.where("orderId").is(Long.valueOf(orderId))) .with(Sort.by(Sort.Direction.ASC, "locatetime")), xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/XpOrderDetailVO.java
@@ -135,6 +135,8 @@ @ApiModelProperty(value = "车辆vin码") private String vehicleVin; @ApiModelProperty(value = "车辆颜色") private String vehicleColor; @ApiModelProperty(value = "车牌号") private String plateNumber; xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -3467,6 +3467,8 @@ R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId()); XpVehicle vehicle = xpVehicleR.getData(); xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel()); xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor()); xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber()); xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures()); } @@ -3493,6 +3495,11 @@ R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(xpOrder.getVehicleId()); XpVehicle vehicle = xpVehicleR.getData(); xpOrderDetailVO.setVehicleVin(vehicle.getVehicleVin()); xpOrderDetailVO.setVehicleModel(vehicle.getVehicleModel()); xpOrderDetailVO.setVehicleColor(vehicle.getVehicleColor()); xpOrderDetailVO.setPlateNumber(vehicle.getPlateNumber()); xpOrderDetailVO.setVehiclePictures(vehicle.getVehiclePictures()); } Boolean cancelShow = isCancelShow(xpOrder,xpOrderDetailVO.getVehicleVin()); //是否能取消行程 xpOrderDetailVO.setCancelShow(cancelShow);