feat(order): 添加订单修改功能和队列名称字段
- 在XpOrder模型中新增queueName字段用于存储队列名称
- 添加updateOrder接口用于修改订单信息
- 实现updateOrder接口的降级处理逻辑
- 在订单服务中实现updateOrder的具体业务逻辑
- 修改车辆ID设置逻辑从VIN获取车辆ID并更新到订单
- 将订单加入队列时同步更新订单的队列名称信息
- 优化定价服务中的订单队列管理流程
| | |
| | | log.error("订单出队失败,原因: {}", cause.getMessage()); |
| | | return R.fail(); |
| | | } |
| | | |
| | | @Override |
| | | public R<?> updateOrder(XpOrder xpOrder) { |
| | | log.error("更新订单失败,原因: {}", cause.getMessage()); |
| | | return R.fail(); |
| | | } |
| | | }; |
| | | } |
| | | } |
| | |
| | | @PostMapping("/inner/order/popOrder") |
| | | R<?> popOrder(@RequestBody PopOrderDto dto); |
| | | |
| | | /** |
| | | * 修改订单信息 |
| | | * |
| | | * @param xpOrder 订单信息 |
| | | */ |
| | | @PostMapping("/inner/order/updateOrder") |
| | | R<?> updateOrder(@RequestBody XpOrder xpOrder); |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value = "行程结束时间") |
| | | private LocalDateTime tripEnd; |
| | | |
| | | |
| | | @ApiModelProperty(value = "队列名称") |
| | | @TableField("queue_name") |
| | | private String queueName; |
| | | } |
| | |
| | | // 尾部 |
| | | redisService.addToTail(s, orderId + "_" + xpPoint.getPointLon() + "," + xpPoint.getPointLat() + "_0" + "_" + uid + "_" + xpOrder.getOrderNumber() + "_" + distance + "_" + duration + "_" + routeAndFareDto.getRoutePlanRule()); |
| | | } |
| | | xpOrder.setQueueName(s); |
| | | xpOrderClient.updateOrder(xpOrder); |
| | | |
| | | return orderId; |
| | | } |
| | | } |
| | | |
| | | String key = CacheConstants.QUEUE_POINT_ID + "-" + xpPoint.getId() + "-" + xpPoint.getPointLon() + "," + xpPoint.getPointLat(); |
| | | redisService.setCacheList(key, Arrays.asList(orderId + "_" + xpPoint.getPointLon() + "," + xpPoint.getPointLat() + "_0" + "_" + uid + "_" + xpOrder.getOrderNumber() + "_" + distance + "_" + duration + "_" + routeAndFareDto.getRoutePlanRule())); |
| | | xpOrder.setQueueName(key); |
| | | xpOrderClient.updateOrder(xpOrder); |
| | | return orderId; |
| | | |
| | | // |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 修改订单信息 |
| | | * |
| | | * @param xpOrder 订单信息 |
| | | */ |
| | | @PostMapping("/inner/order/updateOrder") |
| | | public R<?> updateOrder(@RequestBody XpOrder xpOrder){ |
| | | return xpOrderService.updateById(xpOrder)?R.ok():R.fail(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 新增订单 |
| | |
| | | |
| | | XpOrder order = this.getById(dto.getOrderId()); |
| | | order.setAcceptanceTime(LocalDateTime.now()); |
| | | order.setVehicleId(dto.getXpVehicleId()); |
| | | |
| | | R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin()); |
| | | if (byVehicleVin.getCode()==200){ |
| | | order.setVehicleId(byVehicleVin.getData().getId()); |
| | | } |
| | | order.setStatus(2); |
| | | |
| | | // Redis弹出这个队列元素 |
| | | // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间 |
| | | String popFirstElement = redisService.popFirstElement(dto.getQueueName()); |
| | | String popFirstElement = redisService.popFirstElement(order.getQueueName()); |
| | | XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity(); |
| | | String[] split = popFirstElement.split("_"); |
| | | xpGeoQueryEntity.setOrderId(split[0]); |