1.com/qaup/collision/datacollector/service/AuthService.java修改获取token的方法--添加参数baseUrl 2.application-prod中添加data.collector.airport-api.glide-url 滑行路由基础url变量 3.com/qaup/collision/datacollector/service/DataCollectorService.java 将arrival-route和departure-route方法的基础路由改为airportGlideUrl

This commit is contained in:
haotianmingyue 2025-10-22 10:29:27 +08:00
parent f513cbb228
commit d02a6532ea
5 changed files with 30 additions and 18 deletions

View File

@ -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}

View File

@ -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:

View File

@ -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<Void> requestEntity = new HttpEntity<>(headers);
ResponseEntity<Response<List<ExternalAircraftData>>> 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<Void> requestEntity = new HttpEntity<>(headers);
ResponseEntity<Response<List<ExternalAirportVehicleData>>> 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<FlightNotificationDTO> 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;

View File

@ -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;
}

View File

@ -24,6 +24,7 @@ public class JacksonConfig {
* WebSocket专用ObjectMapper配置支持Java 8时间类型
* 用于WebSocket消息转换和其他JSON处理
*/
// @Bean("webSocketObjectMapper")
@Bean
@Primary
public ObjectMapper websocketObjectMapper() {