From e919aa5e0fca3b90b245c787c160454abd944f8c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 18 四月 2026 15:23:04 +0800
Subject: [PATCH] 添加蓝牙解锁相关功能接口

---
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java |   65 ++++++++++++++++++++++++++++++++
 1 files changed, 65 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
index 6d8ca7d..09fb510 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -642,9 +642,25 @@
         Long userId = order.getAppUserId();
         if (order.getStatus() == 1) {
             order.setStatus(0);
+            Long appUserId = order.getAppUserId();
             order.setAppUserId(null);
             baseMapper.updateById(order);
+            order.setAppUserId(appUserId);
             redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+            //删除蓝牙秘钥
+            String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+            if(StringUtils.isNotBlank(token)){
+                redisService.deleteObject("rt:bluetooth:unlock:" + token);
+                redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+                XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+                BluetoothDeliverVo vo = new BluetoothDeliverVo();
+                vo.setVim(xpVehicle.getVehicleVin());
+                vo.setPassengerUid(order.getAppUserId());
+                BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+                if(null == delete || delete.getCode() != 0){
+                    log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+                }
+            }
             // 消息推送
             Map<String, Object> params = new HashMap<>();
             Map<String, Object> content = new HashMap<>();
@@ -1670,9 +1686,25 @@
             addCruiseMission(xpVehicle.getId());
         }
         order.setStatus(0);
+        Long appUserId = order.getAppUserId();
         order.setAppUserId(null);
         baseMapper.updateById(order);
+        order.setAppUserId(appUserId);
         redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+        //删除蓝牙秘钥
+        String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+        if(StringUtils.isNotBlank(token)){
+            redisService.deleteObject("rt:bluetooth:unlock:" + token);
+            redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+            XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+            BluetoothDeliverVo vo = new BluetoothDeliverVo();
+            vo.setVim(xpVehicle.getVehicleVin());
+            vo.setPassengerUid(order.getAppUserId());
+            BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+            if(null == delete || delete.getCode() != 0){
+                log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+            }
+        }
 
         XpOrderCancel xpOrderCancel = new XpOrderCancel();
         xpOrderCancel.setOrderId(orderId);
@@ -1696,7 +1728,23 @@
         order.setStatus(0);
         order.setAppUserId(null);
         baseMapper.updateById(order);
+        order.setAppUserId(appUserId);
         redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
+        //删除蓝牙秘钥
+        String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + order.getId());
+        if(StringUtils.isNotBlank(token)){
+            redisService.deleteObject("rt:bluetooth:unlock:" + token);
+            redisService.deleteObject("rt:bluetooth:unlock:order:" + order.getId());
+            XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+            BluetoothDeliverVo vo = new BluetoothDeliverVo();
+            vo.setVim(xpVehicle.getVehicleVin());
+            vo.setPassengerUid(order.getAppUserId());
+            BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+            if(null == delete || delete.getCode() != 0){
+                log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+            }
+        }
+
         XpOrderCancel xpOrderCancel = new XpOrderCancel();
         xpOrderCancel.setOrderId(Long.valueOf(orderId));
         xpOrderCancel.setUserId(1l);
@@ -2044,10 +2092,26 @@
             throw new RuntimeException("订单状态错误");
         }
         order.setStatus(8);
+        Long appUserId = order.getAppUserId();
         order.setAppUserId(null);
         order.setTripEnd(LocalDateTime.now());
         baseMapper.updateById(order);
+        order.setAppUserId(appUserId);
         redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 8, 24L, TimeUnit.HOURS);
+        //删除蓝牙秘钥
+        String token = redisService.getCacheObject("rt:bluetooth:unlock:order:" + orderId);
+        if(StringUtils.isNotBlank(token)){
+            redisService.deleteObject("rt:bluetooth:unlock:" + token);
+            redisService.deleteObject("rt:bluetooth:unlock:order:" + orderId);
+            XpVehicle xpVehicle = xpVehicleClient.queryById(order.getVehicleId()).getData();
+            BluetoothDeliverVo vo = new BluetoothDeliverVo();
+            vo.setVim(xpVehicle.getVehicleVin());
+            vo.setPassengerUid(order.getAppUserId());
+            BaseVehicleUserDto delete = bluetoothUnlockClient.delete(vo);
+            if(null == delete || delete.getCode() != 0){
+                log.error("删除蓝牙解锁失败:{} {}", delete.getMsg(), order.getOrderNumber());
+            }
+        }
 
         // 根据订单所属开通城市id 查询定价
         XpPricing pricing = bootCommonService.getXpPricing(order.getCityId(),order.getVehicleId());
@@ -3331,6 +3395,7 @@
                     throw new ServiceException("下发蓝牙token失败");
                 }
                 if(deliver.getCode() != 0){
+                    log.error("下发蓝牙token失败:{} {}", deliver.getMsg(), order.getOrderNumber());
                     throw new ServiceException(deliver.getMsg());
                 }
                 log.info("下发蓝牙token成功:{} {}", deliver.getData(), order.getOrderNumber());

--
Gitblit v1.7.1