liujie
2026-02-13 0eb01e97fbd07b69b9c4e884181dc22f559c9eb2
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -40,6 +40,7 @@
import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
import com.xiaopeng.api.vo.account.UserCouponVo;
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;
@@ -768,7 +769,8 @@
        xpOrderCancelService.save(xpOrderCancel);
        // 推送消息
        // 消息推送
        Map<String, Object> params = new HashMap<>();
        Map<String, Object> content = new HashMap<>();
@@ -1684,26 +1686,35 @@
    @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]);
        // 存mongo数据
        xpPricingClient.updateXpGeoQueryEntity(split[0]);
        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);
        }
    }