| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.google.common.collect.ImmutableMap; |
| | | import com.xiaopeng.api.dto.account.GetUserCouponDto; |
| | | import com.xiaopeng.api.dto.automaticPilot.PushOrderDto; |
| | | import com.xiaopeng.api.dto.operation.LonLatDto; |
| | | import com.xiaopeng.api.dto.order.GetOrderNumDto; |
| | | import com.xiaopeng.api.dto.order.HistoryEndPointsDto; |
| | |
| | | import com.xiaopeng.api.dto.vehicleConvoy.BaseVehicleUserDto; |
| | | import com.xiaopeng.api.feignClient.account.XpAppUserClient; |
| | | import com.xiaopeng.api.feignClient.account.XpAppUserCouponClient; |
| | | import com.xiaopeng.api.feignClient.automaticPilot.OrderMissionClient; |
| | | import com.xiaopeng.api.feignClient.operation.XpPointClient; |
| | | import com.xiaopeng.api.feignClient.operation.XpPricingClient; |
| | | import com.xiaopeng.api.feignClient.operation.XpSystemSettingClient; |
| | |
| | | import com.xiaopeng.api.model.vehicleConvoy.XpFleet; |
| | | import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; |
| | | import com.xiaopeng.api.vo.account.UserCouponVo; |
| | | import com.xiaopeng.api.vo.automaticPilot.proto.down.cloudOrderOperation.OrderOperationType; |
| | | import com.xiaopeng.api.vo.order.*; |
| | | import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo; |
| | | import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo; |
| | | import com.xiaopeng.common.core.constant.CacheConstants; |
| | | import com.xiaopeng.common.core.domain.R; |
| | |
| | | private final XpSystemSettingClient xpSystemSettingClient; |
| | | private final OrderTrajectoryService orderTrajectoryService; |
| | | private final XpPushMessageClient xpPushMessageClient; |
| | | private final OrderMissionClient orderMissionClient; |
| | | |
| | | @Autowired |
| | | private MongoTemplate mongoTemplate; |
| | |
| | | // TODO 加配置文件取 |
| | | cancelTaxiPassengerVo.setAppId(""); |
| | | |
| | | |
| | | BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.cancelTaxiPassenger(cancelTaxiPassengerVo); |
| | | if (baseVehicleUserDto.getCode() != 200) { |
| | | throw new RuntimeException("取消订单失败"); |
| | |
| | | Integer i = Integer.valueOf(cacheObject.toString()); |
| | | redisService.setCacheCancelOrder("CANCEL_ORDER_" + uid, i + 1); |
| | | } |
| | | |
| | | // 下发命令 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.VEHICLE_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | } |
| | | |
| | | @Override |
| | |
| | | xpOrderCancelService.save(xpOrderCancel); |
| | | |
| | | |
| | | // 推送消息 |
| | | R<XpVehicle> xpVehicleR = xpVehicleClient.queryById(order.getVehicleId()); |
| | | XpVehicle xpVehicle = xpVehicleR.getData(); |
| | | |
| | | |
| | | // 消息推送 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | Map<String, Object> content = new HashMap<>(); |
| | |
| | | sendMessageDTO.setAppUserId(String.valueOf(order.getAppUserId())); |
| | | xpPushMessageClient.sendStatus(sendMessageDTO); |
| | | log.info("订单取消消息推送完毕"); |
| | | |
| | | // 下发命令 |
| | | PushOrderDto pushOrderDto = new PushOrderDto(); |
| | | pushOrderDto.setOrderId(order.getId()); |
| | | pushOrderDto.setVin(xpVehicle.getVehicleVin()); |
| | | pushOrderDto.setOperation_type(OrderOperationType.CLOUD_CANCEL_ORDER); |
| | | orderMissionClient.cancelOrder(pushOrderDto); |
| | | } |
| | | |
| | | /** |
| | |
| | | evaluate.setFeedbackContent(dto.getFeedbackContent()); |
| | | evaluate.setFeedbackPictures(dto.getFeedbackPictures()); |
| | | evaluate.setFeedbackTypeId(dto.getFeedbackTypeId()); |
| | | evaluate.setCreateTime(LocalDateTime.now()); |
| | | xpOrderEvaluateService.save(evaluate); |
| | | |
| | | } |
| | |
| | | orderDetailVo.setFeedbackPictures(evaluate.getFeedbackPictures()); |
| | | orderDetailVo.setFeedbackContent(evaluate.getFeedbackContent()); |
| | | orderDetailVo.setOrderRating(evaluate.getOrderRating()); |
| | | XpFeedbackType feedbackType = xpSystemSettingClient.getFeedbackTypeById(evaluate.getFeedbackTypeId()).getData(); |
| | | orderDetailVo.setFeedbackTypeName(feedbackType.getFeedbackType()); |
| | | if(evaluate.getFeedbackTypeId()!=null){ |
| | | XpFeedbackType feedbackType = xpSystemSettingClient.getFeedbackTypeById(evaluate.getFeedbackTypeId()).getData(); |
| | | orderDetailVo.setFeedbackTypeName(feedbackType.getFeedbackType()); |
| | | } |
| | | |
| | | } |
| | | List<OrderTrajectory> trajectories = mongoTemplate.find( |
| | | new Query(Criteria.where("orderId").is(orderId)) |
| | |
| | | @Transactional |
| | | // @ShardingTransactionType(TransactionType.BASE) |
| | | public void popOrder(PopOrderDto dto) { |
| | | |
| | | XpOrder order = this.getById(dto.getOrderId()); |
| | | order.setAcceptanceTime(LocalDateTime.now()); |
| | | |
| | | AddTaxiPassengerVo addTaxiPassengerVo = new AddTaxiPassengerVo(); |
| | | R<XpVehicle> byVehicleVin = xpVehicleClient.findByVehicleVin(dto.getXpVehicleVin()); |
| | | if (byVehicleVin.getCode()==200){ |
| | | order.setVehicleId(byVehicleVin.getData().getId()); |
| | | addTaxiPassengerVo.setVin(byVehicleVin.getData().getVehicleVin()); |
| | | } |
| | | order.setStatus(2); |
| | | |
| | | // Redis弹出这个队列元素 |
| | | // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间 |
| | | String popFirstElement = redisService.popFirstElement(order.getQueueName()); |
| | | XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity(); |
| | | String[] split = popFirstElement.split("_"); |
| | | xpGeoQueryEntity.setOrderId(split[0]); |
| | | String[] split1 = split[1].split(","); |
| | | xpGeoQueryEntity.setLocation(new GeoJsonPoint(Double.parseDouble(split1[0]), Double.parseDouble(split1[1]))); |
| | | xpGeoQueryEntity.setTimestamp(new Date()); |
| | | // 计算2个时间的秒数 |
| | | LocalDateTime createTime = order.getCreateTime(); |
| | | LocalDateTime acceptanceTime = order.getAcceptanceTime(); |
| | | xpGeoQueryEntity.setSeconds((int) Duration.between(createTime, acceptanceTime).getSeconds()); |
| | | String currentTimeSlot = DateUtils.getCurrentTimeSlot(); |
| | | xpGeoQueryEntity.setTime(currentTimeSlot); |
| | | // 存mongo数据 |
| | | xpPricingClient.saveXpGeoQueryEntity(xpGeoQueryEntity); |
| | | this.updateById(order); |
| | | addTaxiPassengerVo.setUid(order.getAppUserId().toString()); |
| | | addTaxiPassengerVo.setOrderNo(order.getOrderNumber()); |
| | | // TODO appid |
| | | addTaxiPassengerVo.setAppId(""); |
| | | |
| | | BaseVehicleUserDto baseVehicleUserDto = userVehicleClient.addTaxiPassenger(addTaxiPassengerVo); |
| | | if(baseVehicleUserDto.getCode()==200){ |
| | | |
| | | // Redis弹出这个队列元素 |
| | | // value 订单Id_经纬度_状态_用户id_订单编号_距离_时间 |
| | | String popFirstElement = redisService.popFirstElement(order.getQueueName()); |
| | | XpGeoQueryEntity xpGeoQueryEntity = new XpGeoQueryEntity(); |
| | | String[] split = popFirstElement.split("_"); |
| | | xpGeoQueryEntity.setOrderId(split[0]); |
| | | // 存mongo数据 |
| | | xpPricingClient.updateXpGeoQueryEntity(split[0]); |
| | | this.updateById(order); |
| | | |
| | | } |
| | | } |
| | | |
| | | |