From f53fbbf6bbfcf31ebd04e7563a6d57a07de63c41 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期三, 25 三月 2026 08:48:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/constant/TokenConstants.java                     |    5 
 xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java                    |  253 +-----------------------------
 xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/utils/JwtUtils.java                              |   29 +-
 xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java                           |   29 +++
 xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java |   27 ++-
 xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/XpPricingService.java                             |    1 
 xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java                |   18 +
 xp-robotaxi-gateway-boot/src/main/java/com/xiaopeng/gateway/filter/AuthFilter.java                                        |    8 
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java                              |    3 
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java              |    2 
 xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java         |    3 
 xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/handler/GlobalExceptionHandler.java      |    4 
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java                      |   61 +++++-
 xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/auth/AuthLogic.java                      |    2 
 xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java                          |    3 
 xp-robotaxi-map-boot/pom.xml                                                                                              |    6 
 16 files changed, 157 insertions(+), 297 deletions(-)

diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
index 8fef176..3541fc0 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/controller/OrderMissionController.java
@@ -19,6 +19,7 @@
 import com.xiaopeng.api.feignClient.pushMessage.XpPushMessageClient;
 import com.xiaopeng.api.feignClient.vehicleConvoy.XpVehicleClient;
 import com.xiaopeng.api.model.order.XpOrder;import com.xiaopeng.api.model.vehicleConvoy.XpVehicle;
+import com.xiaopeng.api.vo.OrderType;
 import com.xiaopeng.api.vo.SystemEventType;
 import com.xiaopeng.api.vo.automaticPilot.VehiclePosition;
 import com.xiaopeng.api.vo.automaticPilot.protobuf.*;
@@ -236,7 +237,7 @@
             }else if(dto.getOrderId().contains("TEST")){
                 jsonObject.put("orderType",  com.xiaopeng.api.vo.OrderType.TEST_ORDER);
             }else {
-                jsonObject.put("orderType",  com.xiaopeng.api.vo.OrderType.CRUISE_ORDER);
+                jsonObject.put("orderType",  com.xiaopeng.api.vo.OrderType.USER_ORDER);
             }
             jsonObject.put("orderId", dto.getOrderId());
             jsonObject.put("vin", dto.getVin());
diff --git a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
index 4c46e35..7be6dae 100644
--- a/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
+++ b/xp-robotaxi-automatic-pilot-boot/src/main/java/com/xiaopeng/automaticPilot/service/KafkaConsumerService.java
@@ -583,6 +583,7 @@
             XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData();
             //驶往上车点的行程
             if (3 == xpOrder.getStatus()) {
+                redisService.deleteObject("ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId());
                 //查询司机当前位置到起点的线路
                 origin.setLongitude(longitude);
                 origin.setLatitude(latitude);
@@ -763,6 +764,7 @@
                 if (Objects.isNull(vehiclePosition)) {
                     throw new RuntimeException("车辆位置信息不存在");
                 }
+                redisService.deleteObject("ORDER_NAVIGATION_START_DATA:" + xpOrder.getAppUserId());
                 //查询司机当前位置到起点的线路
                 origin.setLongitude(vehiclePosition.getPoint().getX());
                 origin.setLatitude(vehiclePosition.getPoint().getY());
diff --git a/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/constant/TokenConstants.java b/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/constant/TokenConstants.java
index 27cca2b..f02fe69 100644
--- a/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/constant/TokenConstants.java
+++ b/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/constant/TokenConstants.java
@@ -16,11 +16,6 @@
      * 令牌前缀
      */
     public static final String PREFIX = "Bearer ";
-
-    /**
-     * 令牌秘钥
-     */
-    public final static String SECRET = "iymGhx1XkAAHrex2Zf4ASbiD9P2ksTam";
     
     /**
      * 参数签名
diff --git a/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/utils/JwtUtils.java b/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/utils/JwtUtils.java
index 6af152c..1fc9882 100644
--- a/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/utils/JwtUtils.java
+++ b/xp-robotaxi-common/xp-common-core/src/main/java/com/xiaopeng/common/core/utils/JwtUtils.java
@@ -15,7 +15,6 @@
  */
 public class JwtUtils
 {
-    public static String secret = TokenConstants.SECRET;
 
     /**
      * 从数据声明生成令牌
@@ -23,7 +22,7 @@
      * @param claims 数据声明
      * @return 令牌
      */
-    public static String createToken(Map<String, Object> claims)
+    public static String createToken(Map<String, Object> claims, String secret)
     {
         String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact();
         return token;
@@ -35,7 +34,7 @@
      * @param token 令牌
      * @return 数据声明
      */
-    public static Claims parseToken(String token)
+    public static Claims parseToken(String token, String secret)
     {
         return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
     }
@@ -46,9 +45,9 @@
      * @param token 令牌
      * @return 用户ID
      */
-    public static String getUserKey(String token)
+    public static String getUserKey(String token, String secret)
     {
-        Claims claims = parseToken(token);
+        Claims claims = parseToken(token, secret);
         return getValue(claims, SecurityConstants.USER_KEY);
     }
     /**
@@ -57,9 +56,9 @@
      * @param token 令牌
      * @return 用户ID
      */
-    public static String getOperationUserKey(String token)
+    public static String getOperationUserKey(String token, String secret)
     {
-        Claims claims = parseToken(token);
+        Claims claims = parseToken(token, secret);
         return getValue(claims, SecurityConstants.OPERATION_USER_KEY);
     }
 
@@ -91,9 +90,9 @@
      * @param token 令牌
      * @return 用户类型
      */
-    public static String getUserType(String token)
+    public static String getUserType(String token, String secret)
     {
-        Claims claims = parseToken(token);
+        Claims claims = parseToken(token,  secret);
         return getValue(claims, SecurityConstants.USER_TYPE);
     }
     
@@ -116,9 +115,9 @@
      * @param token 令牌
      * @return 用户ID
      */
-    public static String getUserKeyApplet(String token)
+    public static String getUserKeyApplet(String token, String secret)
     {
-        Claims claims = parseToken(token);
+        Claims claims = parseToken(token,  secret);
         return getValue(claims, SecurityConstants.USER_APPLET_KEY);
     }
     /**
@@ -127,9 +126,9 @@
      * @param token 令牌
      * @return 用户ID
      */
-    public static String getUserId(String token)
+    public static String getUserId(String token, String secret)
     {
-        Claims claims = parseToken(token);
+        Claims claims = parseToken(token,  secret);
         return getValue(claims, SecurityConstants.DETAILS_USER_ID);
     }
 
@@ -151,9 +150,9 @@
      * @param token 令牌
      * @return 用户名
      */
-    public static String getUserName(String token)
+    public static String getUserName(String token, String secret)
     {
-        Claims claims = parseToken(token);
+        Claims claims = parseToken(token,  secret);
         return getValue(claims, SecurityConstants.DETAILS_USERNAME);
     }
 
diff --git a/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/auth/AuthLogic.java b/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/auth/AuthLogic.java
index c118791..39746ae 100644
--- a/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/auth/AuthLogic.java
+++ b/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/auth/AuthLogic.java
@@ -81,7 +81,7 @@
         {
             throw new NotLoginException("未提供token");
         }
-        Claims claims = JwtUtils.parseToken(token);
+        Claims claims = JwtUtils.parseToken(token, tokenService.getSecret());
         String userType = JwtUtils.getUserType(claims);
         LoginUser loginUser = SecurityUtils.getLoginUser();
         if (loginUser == null && "system".equals(userType))
diff --git a/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/handler/GlobalExceptionHandler.java b/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/handler/GlobalExceptionHandler.java
index 149b353..ef00afd 100644
--- a/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/handler/GlobalExceptionHandler.java
+++ b/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/handler/GlobalExceptionHandler.java
@@ -106,7 +106,7 @@
 	public AjaxResult handleRuntimeException(RuntimeException e, HttpServletRequest request) {
 		String requestURI = request.getRequestURI();
 		log.error("请求地址'{}',发生未知异常.", requestURI, e);
-		return AjaxResult.error(e.getMessage());
+		return AjaxResult.error("系统繁忙,请稍后重试");
 	}
 	
 	/**
@@ -116,7 +116,7 @@
 	public AjaxResult handleException(Exception e, HttpServletRequest request) {
 		String requestURI = request.getRequestURI();
 		log.error("请求地址'{}',发生系统异常.", requestURI, e);
-		return AjaxResult.error(e.getMessage());
+		return AjaxResult.error("系统繁忙,请稍后重试");
 	}
 	
 	/**
diff --git a/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java b/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java
index d5a9294..b220da7 100644
--- a/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java
+++ b/xp-robotaxi-common/xp-common-security/src/main/java/com/xiaopeng/common/security/service/TokenService.java
@@ -9,6 +9,7 @@
 import com.xiaopeng.common.core.exception.auth.NotLoginException;
 import com.xiaopeng.api.vo.account.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import com.xiaopeng.common.core.constant.CacheConstants;
 import com.xiaopeng.common.core.constant.SecurityConstants;
@@ -29,6 +30,9 @@
 public class TokenService {
 	@Autowired
 	private RedisService redisService;
+
+    @Value("${token.secret}")
+    private String secret;
 	
 	protected static final long MILLIS_SECOND = 1000;
 	
@@ -62,7 +66,7 @@
 		claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
 		// 接口返回信息
 		Map<String, Object> rspMap = new HashMap<String, Object>();
-		rspMap.put("access_token", JwtUtils.createToken(claimsMap));
+		rspMap.put("access_token", JwtUtils.createToken(claimsMap, secret));
 		rspMap.put("expires_in", expireTime);
 		return rspMap;
 	}
@@ -90,7 +94,7 @@
 		claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
 		// 接口返回信息
 		Map<String, Object> rspMap = new HashMap<String, Object>();
-		rspMap.put("access_token", JwtUtils.createToken(claimsMap));
+		rspMap.put("access_token", JwtUtils.createToken(claimsMap, secret));
 		rspMap.put("expires_in", expireTime);
 		return rspMap;
 	}
@@ -150,7 +154,7 @@
 		LoginUser user = null;
 		try {
 			if (StringUtils.isNotEmpty(token)) {
-				String userkey = JwtUtils.getUserKey(token);
+				String userkey = JwtUtils.getUserKey(token, secret);
 				user = redisService.getCacheObject(getTokenKey(userkey));
 				return user;
 			}
@@ -167,7 +171,7 @@
 		LoginOperationUser user = null;
 		try {
 			if (StringUtils.isNotEmpty(token)) {
-				String userkey = JwtUtils.getOperationUserKey(token);
+				String userkey = JwtUtils.getOperationUserKey(token, secret);
 				user = redisService.getCacheObject(getTokenKey(userkey));
 				return user;
 			}
@@ -190,7 +194,7 @@
 	 */
 	public void delLoginUser(String token) {
 		if (StringUtils.isNotEmpty(token)) {
-			String userkey = JwtUtils.getUserKey(token);
+			String userkey = JwtUtils.getUserKey(token, secret);
 			redisService.deleteObject(getTokenKey(userkey));
 		}
 	}
@@ -253,4 +257,8 @@
 	private String getUserKey(Long userid) {
 		return ACCESS_TOKEN + userid;
 	}
+
+    public String getSecret() {
+        return secret;
+    }
 }
\ No newline at end of file
diff --git a/xp-robotaxi-gateway-boot/src/main/java/com/xiaopeng/gateway/filter/AuthFilter.java b/xp-robotaxi-gateway-boot/src/main/java/com/xiaopeng/gateway/filter/AuthFilter.java
index 8224c36..6d43066 100644
--- a/xp-robotaxi-gateway-boot/src/main/java/com/xiaopeng/gateway/filter/AuthFilter.java
+++ b/xp-robotaxi-gateway-boot/src/main/java/com/xiaopeng/gateway/filter/AuthFilter.java
@@ -5,6 +5,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.cloud.gateway.filter.GlobalFilter;
 import org.springframework.core.Ordered;
@@ -46,6 +47,9 @@
 
 	@Autowired
 	private RedisService redisService;
+
+    @Value("${token.secret}")
+    private String secret;
 	
 	
 	
@@ -69,7 +73,7 @@
 
 
 		String token = getToken(request);
-		Claims claims = JwtUtils.parseToken(token);
+		Claims claims = JwtUtils.parseToken(token, secret);
 		String userkey = JwtUtils.getUserKey(claims);
 		String userid = JwtUtils.getUserId(claims);
 		String username = JwtUtils.getUserName(claims);
@@ -153,7 +157,7 @@
 		if (StringUtils.isEmpty(token)) {
 			throw new NotLoginException("令牌不能为空");
 		}
-		Claims claims = JwtUtils.parseToken(token);
+		Claims claims = JwtUtils.parseToken(token, secret);
 		if (claims == null) {
 			throw new NotLoginException("令牌已过期或验证不正确!");
 		}
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/XpPricingService.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/XpPricingService.java
index 28c1d58..fccfbe9 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/XpPricingService.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/XpPricingService.java
@@ -45,6 +45,5 @@
      */
     String saveOrder(XpOrderDto dto, String uid);
 
-    void testOrder(Long orderId, Integer status);
 
 }
diff --git a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
index 0edb047..1c97da8 100644
--- a/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
+++ b/xp-robotaxi-itinerary-boot/src/main/java/com/xiaopeng/itinerary/service/impl/XpPricingServiceImpl.java
@@ -489,16 +489,16 @@
         }
 
         // 判断当天取消的次数 后台配置 redis 查询
-//        Object cancelOrder = redisService.getCacheObject("CANCEL_ORDER_" + uid);
-//        log.info("取消次数:{}", cancelOrder);
-//        // 静默处理
-//        boolean isSilent = false;
-//        if (cancelOrder != null) {
-//            Integer num = Integer.valueOf(cancelOrder.toString());
-//            if (num >= cancelCount) {
-//                isSilent = true;
-//            }
-//        }
+        Object cancelOrder = redisService.getCacheObject("CANCEL_ORDER_" + uid);
+        log.info("取消次数:{}", cancelOrder);
+        // 静默处理
+        boolean isSilent = false;
+        if (cancelOrder != null) {
+            Integer num = Integer.valueOf(cancelOrder.toString());
+            if (num >= cancelCount) {
+                isSilent = true;
+            }
+        }
 
 
         // 获取起步里程
@@ -522,13 +522,7 @@
 
         // 生成订单数据
         XpOrder xpOrder = new XpOrder();
-
         xpOrder.setMileageKilometers(0.0);
-
-//        xpOrder.setVehicleId(1l);
-
-//        xpOrder.setStartMileage(Double.valueOf(startMileage));
-
         xpOrder.setAppUserId(Long.valueOf(uid));
         xpOrder.setOrderNumber("XP" + System.currentTimeMillis());
         xpOrder.setPlacementLon(dto.getPlacementLon());
@@ -588,10 +582,10 @@
         xpOrder.setId(orderId);
 
         // 静默处理 不推单
-//        if (isSilent) {
-//            log.info("订单取消次数达到上限,执行静默处理,不推单。");
-//            return orderId.toString();
-//        }
+        if (isSilent) {
+            log.info("订单取消次数达到上限,执行静默处理,不推单。");
+            return orderId.toString();
+        }
 
         // 最大距离
         Object maxPushDistanceObj = redisService.getCacheObject(CacheConstants.MAX_PUSH_DISTANCE);
@@ -707,224 +701,5 @@
     }
 
 
-    /**
-     * 测试阶段用于自动完成小程序的整个流程数据状态流转
-     * @param orderId
-     */
-    public void testOrder(Long orderId, Integer status) {
-        XpOrder xpOrder = xpOrderClient.queryOrderById(orderId).getData();
-        Long appUserId = xpOrder.getAppUserId();
-        if (2 == status) {
-            if (xpOrder.getStatus() == 0) {
-                return;
-            }
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(2);
-            xpOrder.setVehicleId(1L);
-            xpOrder.setFleetId(2L);
-            xpOrderClient.updateOrder(xpOrder);
-        }
-        if (3 == status) {
-            //修改状态为接驾中
-            xpOrder = xpOrderClient.queryOrderById(orderId).getData();
-            if (xpOrder.getStatus() == 0) {
-                return;
-            }
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(3);
-            xpOrderClient.updateOrder(xpOrder);
-            //发送订单状态
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":3}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-            //推送车辆位置
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"VEHICLE_LOCATION\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"lon\\\":113.385848,\\\"lat\\\":23.156841}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendVehicleLocation(dto);
-            //发送车辆到达起点的轨迹
-            OrderRouteAndFareDto routeAndFareDto = new OrderRouteAndFareDto();
-            LonLatDto destination = new LonLatDto();
-            destination.setLongitude(xpOrder.getStartLon());
-            destination.setLatitude(xpOrder.getStartLat());
-            routeAndFareDto.setDestination(destination);
-            LonLatDto origin = new LonLatDto();
-            origin.setLongitude(113.385848);
-            origin.setLatitude(23.156841);
-            routeAndFareDto.setOrigin(origin);
-            routeAndFareDto.setRouteType(1);
-            routeAndFareDto.setOrderId(orderId);
-            RouteVo routeVo = xpMapClient.getOrderDistanceAndDuration(routeAndFareDto).getData();
-            com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
-            jsonObject.put("type", "ORDER_ROUTE");
-            jsonObject.put("timestamp", System.currentTimeMillis());
-            com.alibaba.fastjson2.JSONObject content = new com.alibaba.fastjson2.JSONObject();
-            content.put("orderId", orderId.toString());
-            content.put("routeType", 1);
-            com.alibaba.fastjson2.JSONObject route = new com.alibaba.fastjson2.JSONObject();
-            route.put("distance", routeVo.getDistance());
-            route.put("duration", routeVo.getDuration());
-            route.put("routeID", routeVo.getRouteID());
 
-            List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item -> {
-                com.alibaba.fastjson2.JSONObject point = new com.alibaba.fastjson2.JSONObject();
-                point.put("latitude", item.getLatitude());
-                point.put("longitude", item.getLongitude());
-                return point;
-            }).collect(Collectors.toList());
-
-            route.put("polyline", JSON.toJSONString(collect));
-            content.put("route", route.toJSONString());
-            jsonObject.put("content", content.toJSONString());
-            SendMessageDTO messageDTO = new SendMessageDTO();
-            messageDTO.setAppUserId(appUserId.toString());
-            messageDTO.setMessage(jsonObject.toJSONString());
-            xpPushMessageClient.sendRoute(messageDTO);
-        }
-        if (4 == status) {
-            //司机到达起点
-            xpOrder = xpOrderClient.queryOrderById(orderId).getData();
-            if (xpOrder.getStatus() == 0) {
-                return;
-            }
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(4);
-            xpOrderClient.updateOrder(xpOrder);
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":4}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-            //推送车辆位置到起点
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"VEHICLE_LOCATION\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"lon\\\":" + xpOrder.getStartLon() + ",\\\"lat\\\":" + xpOrder.getStartLat() + "}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendVehicleLocation(dto);
-        }
-        if (5 == status) {
-            //乘客上车
-            xpOrder = xpOrderClient.queryOrderById(orderId).getData();
-            if (xpOrder.getStatus() == 0) {
-                return;
-            }
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(5);
-            xpOrder.setBoardingTime(LocalDateTime.now());
-            xpOrder.setBoardingLat(xpOrder.getStartLat());
-            xpOrder.setBoardingLon(xpOrder.getStartLon());
-            xpOrder.setBoardingAddress(xpOrder.getStartAddress());
-            xpOrderClient.updateOrder(xpOrder);
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":5}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-            //推送起点到终点的行驶轨迹
-            OrderRouteAndFareDto routeAndFareDto = new OrderRouteAndFareDto();
-            routeAndFareDto.setDestination(new LonLatDto(xpOrder.getEndLon(), xpOrder.getEndLat()));
-            routeAndFareDto.setOrigin(new LonLatDto(xpOrder.getStartLon(), xpOrder.getStartLat()));
-            routeAndFareDto.setRouteType(2);
-            routeAndFareDto.setOrderId(orderId);
-            RouteVo routeVo = xpMapClient.getOrderDistanceAndDuration(routeAndFareDto).getData();
-            com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject();
-            jsonObject.put("type", "ORDER_ROUTE");
-            jsonObject.put("timestamp", System.currentTimeMillis());
-            com.alibaba.fastjson2.JSONObject content = new com.alibaba.fastjson2.JSONObject();
-            content.put("orderId", orderId.toString());
-            content.put("routeType", 2);
-            com.alibaba.fastjson2.JSONObject route = new com.alibaba.fastjson2.JSONObject();
-            route.put("distance", routeVo.getDistance());
-            route.put("duration", routeVo.getDuration());
-            route.put("routeID", routeVo.getRouteID());
-            List<com.alibaba.fastjson2.JSONObject> collect = routeVo.getPolyline().stream().map(item -> {
-                com.alibaba.fastjson2.JSONObject point = new com.alibaba.fastjson2.JSONObject();
-                point.put("latitude", item.getLatitude());
-                point.put("longitude", item.getLongitude());
-                return point;
-            }).collect(Collectors.toList());
-            route.put("polyline", JSON.toJSONString(collect));
-            content.put("route", route.toJSONString());
-            jsonObject.put("content", content.toJSONString());
-            SendMessageDTO messageDTO = new SendMessageDTO();
-            messageDTO.setAppUserId(appUserId.toString());
-            messageDTO.setMessage(jsonObject.toJSONString());
-            xpPushMessageClient.sendRoute(messageDTO);
-        }
-        if (6 == status) {
-            //开始服务中
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(6);
-            xpOrder.setTripBegin(LocalDateTime.now());
-            xpOrderClient.updateOrder(xpOrder);
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":6}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-        }
-
-        if (7 == status) {
-            //乘客待下车
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(7);
-            xpOrder.setTripEnd(LocalDateTime.now());
-            xpOrder.setGetoffLat(xpOrder.getEndLat());
-            xpOrder.setGetoffLon(xpOrder.getEndLon());
-            xpOrder.setGetoffAddress(xpOrder.getEndAddress());
-            xpOrder.setGetoffTime(LocalDateTime.now());
-            xpOrder.setOrderMoney(new BigDecimal(50));
-            xpOrder.setStartMileage(5D);
-            xpOrder.setStartMoney(new BigDecimal(10));
-            xpOrder.setMileageKilometers(10D);
-            xpOrder.setMileageMoney(new BigDecimal(25));
-            xpOrder.setDuration(20D);
-            xpOrder.setDurationMoney(new BigDecimal(5));
-            xpOrder.setWait(0D);
-            xpOrder.setWaitMoney(new BigDecimal(0));
-            xpOrder.setLongDistance(10D);
-            xpOrder.setLongDistanceType(1);
-            xpOrder.setLongDistancemoney(new BigDecimal(10));
-            xpOrderClient.updateOrder(xpOrder);
-            //推送车辆位置到起点
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"VEHICLE_LOCATION\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"lon\\\":" + xpOrder.getEndLon() + ",\\\"lat\\\":" + xpOrder.getEndLat() + "}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendVehicleLocation(dto);
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":7}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-        }
-        //添加费用明细
-//            XpOrderDetail detail = new XpOrderDetail();
-//            detail.setDetailType(1);
-//            detail.setOrderId(orderId);
-//            detail.setType(1);
-//            detail.setTime("");
-//            detail.setDuration(20D);
-//            detail.setMileage(new BigDecimal(10));
-//            detail.setMoney();
-//            detail.setIsDeleted(false);
-//            detail.setCreateTime(LocalDateTime.now());
-//            detail.setUpdateTime(LocalDateTime.now());
-//            xpOrder
-
-
-        if (8 == status) {
-            //乘客待支付
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(8);
-            xpOrderClient.updateOrder(xpOrder);
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":8}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-        }
-
-        if (9 == status) {
-            //乘客支付成功
-            xpOrder.setAppUserId(null);
-            xpOrder.setStatus(9);
-            xpOrderClient.updateOrder(xpOrder);
-            SendMessageDTO dto = new SendMessageDTO();
-            dto.setAppUserId(appUserId.toString());
-            dto.setMessage("{\"type\":\"ORDER_STATUS\",\"content\":\"{\\\"orderId\\\":\\\"" + orderId + "\\\",\\\"status\\\":9}\",\"timestamp\":\"176569945845456\"}");
-            xpPushMessageClient.sendStatus(dto);
-        }
-    }
 }
diff --git a/xp-robotaxi-map-boot/pom.xml b/xp-robotaxi-map-boot/pom.xml
index 765db80..3af790b 100644
--- a/xp-robotaxi-map-boot/pom.xml
+++ b/xp-robotaxi-map-boot/pom.xml
@@ -242,6 +242,12 @@
             <artifactId>jts-core</artifactId>
             <version>1.19.0</version> <!-- 请使用最新版本 -->
         </dependency>
+        <dependency>
+            <groupId>com.xiaopeng.logan</groupId>
+            <artifactId>xp-evi-oss-sdk</artifactId>
+            <version>1.0.1-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
index bd09ebc..db42bc9 100644
--- a/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
+++ b/xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
@@ -2,6 +2,8 @@
 
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xiaopeng.api.dto.operation.PointAddDto;
@@ -23,6 +25,7 @@
 import com.xiaopeng.common.core.utils.StringUtils;
 import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.common.redis.service.RedisService;
+import com.xiaopeng.evi.oss.service.AliOssService;
 import com.xiaopeng.map.constant.I18nKeyConstant;
 import com.xiaopeng.map.dto.NearestDto;
 import com.xiaopeng.map.mapper.XpPointMapper;
@@ -49,6 +52,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
 import java.time.LocalTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -89,6 +93,9 @@
 
     @Autowired
     private RedissonClient redissonClient;
+
+    @Autowired
+    private AliOssService aliOssService;
 
     @Override
     @Transactional
@@ -294,6 +301,28 @@
     @Override
     public List<XpPoint> listAll(PointListQuery query) {
         List<XpPoint> list = this.baseMapper.listAll(query);
+        for (XpPoint xpPoint : list) {
+            String pointPictures = xpPoint.getPointPictures();
+            if (org.apache.commons.lang3.StringUtils.isNotBlank(pointPictures)) {
+                JSONArray jsonArray = JSONArray.parseArray(pointPictures);
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    JSONObject jsonObject = jsonArray.getJSONObject(i);
+                    if (Objects.isNull(jsonObject)) {
+                        continue;
+                    }
+                    String downloadUrl = jsonObject.getString("url");;
+                    try {
+                        downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
+                    } catch (UnsupportedEncodingException e) {
+                        log.error("获取图片下载地址失败", e);
+                    }
+                    jsonObject.put("url", downloadUrl);
+                }
+                xpPoint.setPointPictures(JSONArray.toJSONString(jsonArray));
+            }
+
+        }
+
         return list;
     }
 
diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
index 2735f3a..b3e8b42 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointServiceImpl.java
@@ -2,6 +2,7 @@
 
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -32,19 +33,16 @@
 import com.xiaopeng.operation.vo.NearestNextVo;
 import com.xiaopeng.operation.vo.NearestVo;
 import com.xiaopeng.operation.vo.OrderDistanceVo;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -73,8 +71,10 @@
 
     @Resource
     private IXpElectronicFenceService xpElectronicFenceService;
-    @Autowired
+
+    @Resource
     private AliOssService aliOssService;
+
 
     @Override
     public NearestVo nearest(NearestDto dto) {
@@ -218,6 +218,28 @@
     @Override
     public List<XpPoint> pointMap(PointMapQuery query) {
         List<XpPoint> list = this.baseMapper.pointMap(query);
+        for (XpPoint xpPoint : list) {
+            String pointPictures = xpPoint.getPointPictures();
+            if (org.apache.commons.lang3.StringUtils.isNotBlank(pointPictures)) {
+                JSONArray jsonArray = JSONArray.parseArray(pointPictures);
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    JSONObject jsonObject = jsonArray.getJSONObject(i);
+                    if (Objects.isNull(jsonObject)) {
+                        continue;
+                    }
+                    String downloadUrl = jsonObject.getString("url");;
+                    try {
+                        downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
+                    } catch (UnsupportedEncodingException e) {
+                        log.error("获取图片下载地址失败", e);
+                    }
+                    jsonObject.put("url", downloadUrl);
+                }
+                xpPoint.setPointPictures(JSONArray.toJSONString(jsonArray));
+            }
+
+        }
+
         return list;
     }
 
@@ -232,22 +254,31 @@
             query.setOperationStatusIds(statusIds);
         }
         List<XpPoint> list = this.baseMapper.listAll(query);
+
         for (XpPoint xpPoint : list) {
-            if (StringUtils.hasLength(xpPoint.getPointPictures())) {
-                JSONObject jsonObject = JSONObject.parseObject(xpPoint.getPointPictures());
-                if(jsonObject!=null){
-                    String downloadUrl = null;
+            String pointPictures = xpPoint.getPointPictures();
+            if (org.apache.commons.lang3.StringUtils.isNotBlank(pointPictures)) {
+                JSONArray jsonArray = JSONArray.parseArray(pointPictures);
+                for (int i = 0; i < jsonArray.size(); i++) {
+                    JSONObject jsonObject = jsonArray.getJSONObject(i);
+                    if (Objects.isNull(jsonObject)) {
+                        continue;
+                    }
+                    String downloadUrl = jsonObject.getString("url");;
                     try {
-                        // 1
-                        downloadUrl= aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
-                    } catch (Exception e) {
-                        e.printStackTrace();
+                        downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
+                    } catch (UnsupportedEncodingException e) {
+                        log.error("获取图片下载地址失败", e);
                     }
                     jsonObject.put("url", downloadUrl);
-                    xpPoint.setPointPictures(jsonObject.toJSONString());
                 }
+                xpPoint.setPointPictures(JSONArray.toJSONString(jsonArray));
             }
+
         }
+
+
+
         return list;
     }
 
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 ea3d41d..06f5472 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
@@ -675,6 +675,7 @@
         // 1. 更新订单状态为已取消(0)
         lambdaUpdate().set(XpOrder::getStatus, 0)
                 .eq(XpOrder::getId, order.getId()).update();
+        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
 
         // 2. 保存取消记录
         XpOrderCancel orderCancel = new XpOrderCancel();
@@ -783,6 +784,7 @@
         Long appUserId = order.getAppUserId();
         order.setAppUserId(null);
         this.updateById(order);
+        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 7, 24L, TimeUnit.HOURS);
 
         // 消息推送
         Map<String, Object> params1 = new HashMap<>();
@@ -2906,6 +2908,7 @@
                 addTaxiPassengerVo.setUid(appUserId.toString());
                 order.setAppUserId(null);
                 this.updateById(order);
+                redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 2, 24L, TimeUnit.HOURS);
 
                 //构建推送消息
                 Map<String, Object> params = new HashMap<>();
diff --git a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
index 95e48e7..66bcf17 100644
--- a/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
+++ b/xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpTestOrderServiceImpl.java
@@ -278,6 +278,7 @@
             xpOrder.setVehicleId(datum.getVehicleId());
             xpOrder.setFleetId(xpVehicle.getFleetId());
             this.save(xpOrder);
+            redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), 1, 24L, TimeUnit.HOURS);
             //缓存导航数据,用于下单后推送导航给车端和乘客端
             redisService.setCacheObject("TEST_ORDER_NAVIGATION_END_DATA:" + datum.getVehicleId(), JSON.toJSONString(routeVo), 24L, TimeUnit.HOURS);
             //下发XPU消息
@@ -691,7 +692,7 @@
         order.setDuration(new BigDecimal(duration).divide(new BigDecimal(60), 2, RoundingMode.HALF_EVEN).doubleValue());
         order.setVehicleId(null);
         this.updateById(order);
-
+        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 7, 24L, TimeUnit.HOURS);
 
         //给XPU推送订单取消的报文
         PushOrderDto pushOrderDto = new PushOrderDto();
diff --git a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
index b9e0565..81bbc37 100644
--- a/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
+++ b/xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpPolicyApplicationServiceImpl.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -37,6 +38,7 @@
 import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
+import java.io.UnsupportedEncodingException;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.*;
@@ -260,18 +262,23 @@
                 xpPolicyApplicationVO.setVehicleCode(xpVehicle.getVehicleCode());
                 xpPolicyApplicationVO.setAuditRemarks(xpPolicyApplication.getAuditRemarks());
                 if (xpPolicyApplicationVO.getAuditStatus() == 2 && StringUtils.isNotBlank(xpVehicle.getPolicyInformation())) {
-                    JSONObject jsonObject = JSONObject.parseObject(xpVehicle.getPolicyInformation());
-                    if(jsonObject!=null){
-                        String downloadUrl = null;
-                        try {
+                    JSONArray jsonArray = JSONArray.parseArray(xpVehicle.getPolicyInformation());
+                        for (int i = 0; i < jsonArray.size(); i++) {
+                            JSONObject jsonObject = jsonArray.getJSONObject(i);
+                            if (Objects.isNull(jsonObject)) {
+                                continue;
+                            }
                             // 1
-                            downloadUrl= aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
-                        } catch (Exception e) {
-                            e.printStackTrace();
+                            String downloadUrl = jsonObject.getString("url");;
+                            try {
+                                downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true);
+                            } catch (UnsupportedEncodingException e) {
+                                log.error("获取图片下载地址失败", e);
+                            }
+                            jsonObject.put("url", downloadUrl);
                         }
-                        jsonObject.put("url", downloadUrl);
-                        xpPolicyApplicationVO.setPolicyInformation(jsonObject.toJSONString());
-                    }
+                    xpPolicyApplicationVO.setPolicyInformation(JSONArray.toJSONString(jsonArray));
+
                 }
             }
             queryPolicyInfoVO.setStatus(xpPolicyApplication.getAuditStatus());

--
Gitblit v1.7.1