From d02a6532ea2166bc3e123ee422cf3c54d5fcedf5 Mon Sep 17 00:00:00 2001 From: haotianmingyue <2421912570@qq.com> Date: Wed, 22 Oct 2025 10:29:27 +0800 Subject: [PATCH] =?UTF-8?q?1.com/qaup/collision/datacollector/service/Auth?= =?UTF-8?q?Service.java=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96token=E7=9A=84?= =?UTF-8?q?=E6=96=B9=E6=B3=95--=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0baseUrl?= =?UTF-8?q?=202.application-prod=E4=B8=AD=E6=B7=BB=E5=8A=A0data.collector.?= =?UTF-8?q?airport-api.glide-url=20=E6=BB=91=E8=A1=8C=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=9F=BA=E7=A1=80url=E5=8F=98=E9=87=8F=203.com/qaup/collision/?= =?UTF-8?q?datacollector/service/DataCollectorService.java=20=E5=B0=86arri?= =?UTF-8?q?val-route=E5=92=8Cdeparture-route=E6=96=B9=E6=B3=95=E7=9A=84?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E8=B7=AF=E7=94=B1=E6=94=B9=E4=B8=BAairportGl?= =?UTF-8?q?ideUrl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-prod.yml | 2 ++ qaup-admin/src/main/resources/application.yml | 7 +++++- .../datacollector/dao/DataCollectorDao.java | 24 +++++++++++-------- .../datacollector/service/AuthService.java | 14 +++++------ .../websocket/config/JacksonConfig.java | 1 + 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/qaup-admin/src/main/resources/application-prod.yml b/qaup-admin/src/main/resources/application-prod.yml index f429b52e..64857506 100644 --- a/qaup-admin/src/main/resources/application-prod.yml +++ b/qaup-admin/src/main/resources/application-prod.yml @@ -60,6 +60,8 @@ data: # 机场数据源配置(支持环境变量) airport-api: base-url: ${AIRPORT_API_BASE_URL:http://localhost:8090} + # 滑行路由 + glide-url: ${AIRPORT_API_GLIDE_URL:http://localhost:8099} auth: username: ${AIRPORT_API_USERNAME:dianxin} password: ${AIRPORT_API_PASSWORD:dianxin@123} diff --git a/qaup-admin/src/main/resources/application.yml b/qaup-admin/src/main/resources/application.yml index 5091b1b8..1d6b169f 100644 --- a/qaup-admin/src/main/resources/application.yml +++ b/qaup-admin/src/main/resources/application.yml @@ -34,9 +34,14 @@ spring: # 国际化资源文件路径 basename: i18n/messages + main: + # 允许同名bean覆盖 + allow-bean-definition-overriding: true + # 默认激活的profile(开发环境) profiles: - active: dev,druid + # active: dev,druid + active: prod,druid # 文件上传 servlet: diff --git a/qaup-collision/src/main/java/com/qaup/collision/datacollector/dao/DataCollectorDao.java b/qaup-collision/src/main/java/com/qaup/collision/datacollector/dao/DataCollectorDao.java index 3845833b..db53ee71 100644 --- a/qaup-collision/src/main/java/com/qaup/collision/datacollector/dao/DataCollectorDao.java +++ b/qaup-collision/src/main/java/com/qaup/collision/datacollector/dao/DataCollectorDao.java @@ -45,6 +45,10 @@ public class DataCollectorDao { @Value("${data.collector.airport-api.base-url}") private String airportBaseUrl; + // 滑行路由基础url + @Value("${data.collector.airport-api.glide-url}") + private String airportGlideUrl; + // 无人车厂商数据源相关配置 @Value("${data.collector.vehicle-api.base-url}") private String vehicleBaseUrl; @@ -68,7 +72,7 @@ public class DataCollectorDao { .toUriString(); HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", authService.getToken()); + headers.set("Authorization", authService.getToken(baseUrl)); HttpEntity requestEntity = new HttpEntity<>(headers); ResponseEntity>> response = restTemplate.exchange( @@ -116,7 +120,7 @@ public class DataCollectorDao { .toUriString(); HttpHeaders headers = new HttpHeaders(); - headers.set("Authorization", authService.getToken()); + headers.set("Authorization", authService.getToken(baseUrl)); HttpEntity requestEntity = new HttpEntity<>(headers); ResponseEntity>> response = restTemplate.exchange( @@ -202,13 +206,13 @@ public class DataCollectorDao { */ public AircraftRouteDTO getArrivalRoute(String inRunway, String outRunway, String contactCross, String seat) { try { - String token = authService.getToken(); + String token = authService.getToken(airportGlideUrl); if (token == null) { log.error("无法获取有效的认证token"); return null; } - String url = UriComponentsBuilder.fromUriString(airportBaseUrl) + String url = UriComponentsBuilder.fromUriString(airportGlideUrl) .path("/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat") .queryParam("inRunway", inRunway) .queryParam("outRunway", outRunway) @@ -255,13 +259,13 @@ public class DataCollectorDao { */ public AircraftRouteDTO getDepartureRoute(String inRunway, String outRunway, String startSeat) { try { - String token = authService.getToken(); + String token = authService.getToken(airportGlideUrl); if (token == null) { log.error("无法获取有效的认证token"); return null; } - String url = UriComponentsBuilder.fromUriString(airportBaseUrl) + String url = UriComponentsBuilder.fromUriString(airportGlideUrl) .path("/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat") .queryParam("inRunway", inRunway) .queryParam("outRunway", outRunway) @@ -304,7 +308,7 @@ public class DataCollectorDao { */ public AircraftStatusDTO getAircraftStatus() { try { - String token = authService.getToken(); + String token = authService.getToken(airportBaseUrl); if (token == null) { log.error("无法获取有效的认证token"); return null; @@ -351,7 +355,7 @@ public class DataCollectorDao { */ public AircraftRouteParamsDTO getAircraftRouteParams(String flightNo, String routeType) { try { - String token = authService.getToken(); + String token = authService.getToken(airportBaseUrl); if (token == null) { log.error("无法获取有效的认证token"); return null; @@ -400,7 +404,7 @@ public class DataCollectorDao { */ public List getFlightNotifications(String endpoint, String baseUrl) { try { - String token = authService.getToken(); + String token = authService.getToken(airportBaseUrl); if (token == null) { log.error("无法获取有效的认证token"); return Collections.emptyList(); @@ -465,7 +469,7 @@ public class DataCollectorDao { try { // 获取认证token - String token = authService.getToken(); + String token = authService.getToken(vehicleBaseUrl); if (token == null) { log.warn("无法获取认证token,跳过车辆 {} 的状态采集", vehicleId); return null; diff --git a/qaup-collision/src/main/java/com/qaup/collision/datacollector/service/AuthService.java b/qaup-collision/src/main/java/com/qaup/collision/datacollector/service/AuthService.java index 0050fb00..c3a4ef70 100644 --- a/qaup-collision/src/main/java/com/qaup/collision/datacollector/service/AuthService.java +++ b/qaup-collision/src/main/java/com/qaup/collision/datacollector/service/AuthService.java @@ -41,7 +41,7 @@ public class AuthService { } //登录获取Token - public String loginAndGetToken() { + public String loginAndGetToken(String baseUrl) { String loginUrl = UriComponentsBuilder .fromUriString(baseUrl) .path(loginEndpoint) @@ -75,7 +75,7 @@ public class AuthService { } //Token续时 - public String refreshToken() { + public String refreshToken(String baseUrl) { String refreshUrl = UriComponentsBuilder .fromUriString(baseUrl) .path(refreshEndpoint) @@ -105,7 +105,7 @@ public class AuthService { log.error("Failed to refresh token: ", e); } // 如果续期失败,尝试重新登录 - return loginAndGetToken(); + return loginAndGetToken(baseUrl); } //创造带有Token的请求头 @@ -118,18 +118,18 @@ public class AuthService { } //获取Token - public String getToken() { + public String getToken(String baseUrl) { long currentTime = System.currentTimeMillis(); if (token == null) { - return loginAndGetToken(); + return loginAndGetToken(baseUrl); } // 如果token已过期,重新登录 if (currentTime >= tokenExpiryTime) { - return loginAndGetToken(); + return loginAndGetToken(baseUrl); } // 如果token即将过期(比如还有10分钟过期),尝试续期 if (currentTime >= tokenExpiryTime - 600_000) { - return refreshToken(); + return refreshToken(baseUrl); } return token; } diff --git a/qaup-collision/src/main/java/com/qaup/collision/websocket/config/JacksonConfig.java b/qaup-collision/src/main/java/com/qaup/collision/websocket/config/JacksonConfig.java index ab93ef26..a4f47f11 100644 --- a/qaup-collision/src/main/java/com/qaup/collision/websocket/config/JacksonConfig.java +++ b/qaup-collision/src/main/java/com/qaup/collision/websocket/config/JacksonConfig.java @@ -24,6 +24,7 @@ public class JacksonConfig { * WebSocket专用ObjectMapper配置,支持Java 8时间类型 * 用于WebSocket消息转换和其他JSON处理 */ + // @Bean("webSocketObjectMapper") @Bean @Primary public ObjectMapper websocketObjectMapper() {