| | |
| | | package com.xiaopeng.order.controller; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | 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.automaticPilot.VehiclePosition; |
| | | import com.xiaopeng.api.vo.operation.RouteVo; |
| | | import com.xiaopeng.common.core.domain.R; |
| | | import com.xiaopeng.common.redis.service.RedisService; |
| | | import com.xiaopeng.order.model.vo.XpOrderDetailVO; |
| | | import com.xiaopeng.order.service.IXpOrderService; |
| | | import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.data.mongodb.core.MongoTemplate; |
| | | import org.springframework.data.mongodb.core.query.Criteria; |
| | | import org.springframework.data.mongodb.core.query.Query; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | |
| | | private final XpPointClient xpPointClient; |
| | | @Resource |
| | | private final XpVehicleClient xpVehicleClient; |
| | | @Resource |
| | | private RedisService redisService; |
| | | |
| | | @Nullable |
| | | private R<XpOrder> getOrderTripEnd(String orderId) { |
| | |
| | | * 分享行程接口1-订单查询实时轨迹路线 |
| | | */ |
| | | @ApiOperation(value = "分享行程接口1 订单查询实时轨迹路线") |
| | | @GetMapping("/base/v1/mini-program/orderActive/share/queryOrderRoute") |
| | | @GetMapping("/base/v1/mini-program/orderActive/share/queryOrderRoute/{orderId}") |
| | | @XpClientCheck(checkToken = false, checkOtpToken = false) |
| | | public R<RouteVo> queryOrderRoute(@RequestParam String orderId, HttpServletRequest request) { |
| | | public R<RouteVo> queryOrderRoute(@PathVariable("orderId") String orderId, HttpServletRequest request) { |
| | | // 查询订单信息 |
| | | if(StringUtils.isBlank(orderId) ){ |
| | | return R.fail("参数不能为空"); |
| | |
| | | if (r != null && r.getCode() != 200) { |
| | | return r; |
| | | } |
| | | QueryOrderRouteDTO dto = new QueryOrderRouteDTO(); |
| | | return xpOrderController.queryOrderRoute(dto,request); |
| | | |
| | | // 查询订单信息 |
| | | XpOrder xpOrder = xpOrderService.getById(orderId); |
| | | |
| | | String key = ""; |
| | | //接驾情况,获取车辆位置到起点的导航 |
| | | if (xpOrder.getStatus() < 5) { |
| | | key = "ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId(); |
| | | } |
| | | //服务中,获取起点到终点的导航数据 |
| | | if (xpOrder.getStatus() >= 5) { |
| | | key = "ORDER_NAVIGATION_END_DATA:" + xpOrder.getAppUserId(); |
| | | } |
| | | Object cacheObject = redisService.getCacheObject(key); |
| | | RouteVo routeVo = JSON.parseObject(cacheObject.toString(), RouteVo.class); |
| | | XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData(); |
| | | VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class); |
| | | routeVo.setDirection(null != vehiclePosition ? vehiclePosition.getCourse() : 90); |
| | | return R.ok(routeVo); |
| | | } |
| | | |
| | | /** |