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: airport-api:
base-url: ${AIRPORT_API_BASE_URL:http://localhost:8090} base-url: ${AIRPORT_API_BASE_URL:http://localhost:8090}
# 滑行路由
glide-url: ${AIRPORT_API_GLIDE_URL:http://localhost:8099}
auth: auth:
username: ${AIRPORT_API_USERNAME:dianxin} username: ${AIRPORT_API_USERNAME:dianxin}
password: ${AIRPORT_API_PASSWORD:dianxin@123} password: ${AIRPORT_API_PASSWORD:dianxin@123}

View File

@ -34,9 +34,14 @@ spring:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
main:
# 允许同名bean覆盖
allow-bean-definition-overriding: true
# 默认激活的profile开发环境 # 默认激活的profile开发环境
profiles: profiles:
active: dev,druid # active: dev,druid
active: prod,druid
# 文件上传 # 文件上传
servlet: servlet:

View File

@ -45,6 +45,10 @@ public class DataCollectorDao {
@Value("${data.collector.airport-api.base-url}") @Value("${data.collector.airport-api.base-url}")
private String airportBaseUrl; private String airportBaseUrl;
// 滑行路由基础url
@Value("${data.collector.airport-api.glide-url}")
private String airportGlideUrl;
// 无人车厂商数据源相关配置 // 无人车厂商数据源相关配置
@Value("${data.collector.vehicle-api.base-url}") @Value("${data.collector.vehicle-api.base-url}")
private String vehicleBaseUrl; private String vehicleBaseUrl;
@ -68,7 +72,7 @@ public class DataCollectorDao {
.toUriString(); .toUriString();
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", authService.getToken()); headers.set("Authorization", authService.getToken(baseUrl));
HttpEntity<Void> requestEntity = new HttpEntity<>(headers); HttpEntity<Void> requestEntity = new HttpEntity<>(headers);
ResponseEntity<Response<List<ExternalAircraftData>>> response = restTemplate.exchange( ResponseEntity<Response<List<ExternalAircraftData>>> response = restTemplate.exchange(
@ -116,7 +120,7 @@ public class DataCollectorDao {
.toUriString(); .toUriString();
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", authService.getToken()); headers.set("Authorization", authService.getToken(baseUrl));
HttpEntity<Void> requestEntity = new HttpEntity<>(headers); HttpEntity<Void> requestEntity = new HttpEntity<>(headers);
ResponseEntity<Response<List<ExternalAirportVehicleData>>> response = restTemplate.exchange( 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) { public AircraftRouteDTO getArrivalRoute(String inRunway, String outRunway, String contactCross, String seat) {
try { try {
String token = authService.getToken(); String token = authService.getToken(airportGlideUrl);
if (token == null) { if (token == null) {
log.error("无法获取有效的认证token"); log.error("无法获取有效的认证token");
return null; return null;
} }
String url = UriComponentsBuilder.fromUriString(airportBaseUrl) String url = UriComponentsBuilder.fromUriString(airportGlideUrl)
.path("/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat") .path("/runwayPathPlanningController/findArrTaxiwayByRunwayAndContactCrossAndSeat")
.queryParam("inRunway", inRunway) .queryParam("inRunway", inRunway)
.queryParam("outRunway", outRunway) .queryParam("outRunway", outRunway)
@ -255,13 +259,13 @@ public class DataCollectorDao {
*/ */
public AircraftRouteDTO getDepartureRoute(String inRunway, String outRunway, String startSeat) { public AircraftRouteDTO getDepartureRoute(String inRunway, String outRunway, String startSeat) {
try { try {
String token = authService.getToken(); String token = authService.getToken(airportGlideUrl);
if (token == null) { if (token == null) {
log.error("无法获取有效的认证token"); log.error("无法获取有效的认证token");
return null; return null;
} }
String url = UriComponentsBuilder.fromUriString(airportBaseUrl) String url = UriComponentsBuilder.fromUriString(airportGlideUrl)
.path("/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat") .path("/runwayPathPlanningController/findDepTaxiwayByRunwayAndContactCrossAndSeat")
.queryParam("inRunway", inRunway) .queryParam("inRunway", inRunway)
.queryParam("outRunway", outRunway) .queryParam("outRunway", outRunway)
@ -304,7 +308,7 @@ public class DataCollectorDao {
*/ */
public AircraftStatusDTO getAircraftStatus() { public AircraftStatusDTO getAircraftStatus() {
try { try {
String token = authService.getToken(); String token = authService.getToken(airportBaseUrl);
if (token == null) { if (token == null) {
log.error("无法获取有效的认证token"); log.error("无法获取有效的认证token");
return null; return null;
@ -351,7 +355,7 @@ public class DataCollectorDao {
*/ */
public AircraftRouteParamsDTO getAircraftRouteParams(String flightNo, String routeType) { public AircraftRouteParamsDTO getAircraftRouteParams(String flightNo, String routeType) {
try { try {
String token = authService.getToken(); String token = authService.getToken(airportBaseUrl);
if (token == null) { if (token == null) {
log.error("无法获取有效的认证token"); log.error("无法获取有效的认证token");
return null; return null;
@ -400,7 +404,7 @@ public class DataCollectorDao {
*/ */
public List<FlightNotificationDTO> getFlightNotifications(String endpoint, String baseUrl) { public List<FlightNotificationDTO> getFlightNotifications(String endpoint, String baseUrl) {
try { try {
String token = authService.getToken(); String token = authService.getToken(airportBaseUrl);
if (token == null) { if (token == null) {
log.error("无法获取有效的认证token"); log.error("无法获取有效的认证token");
return Collections.emptyList(); return Collections.emptyList();
@ -465,7 +469,7 @@ public class DataCollectorDao {
try { try {
// 获取认证token // 获取认证token
String token = authService.getToken(); String token = authService.getToken(vehicleBaseUrl);
if (token == null) { if (token == null) {
log.warn("无法获取认证token跳过车辆 {} 的状态采集", vehicleId); log.warn("无法获取认证token跳过车辆 {} 的状态采集", vehicleId);
return null; return null;

View File

@ -41,7 +41,7 @@ public class AuthService {
} }
//登录获取Token //登录获取Token
public String loginAndGetToken() { public String loginAndGetToken(String baseUrl) {
String loginUrl = UriComponentsBuilder String loginUrl = UriComponentsBuilder
.fromUriString(baseUrl) .fromUriString(baseUrl)
.path(loginEndpoint) .path(loginEndpoint)
@ -75,7 +75,7 @@ public class AuthService {
} }
//Token续时 //Token续时
public String refreshToken() { public String refreshToken(String baseUrl) {
String refreshUrl = UriComponentsBuilder String refreshUrl = UriComponentsBuilder
.fromUriString(baseUrl) .fromUriString(baseUrl)
.path(refreshEndpoint) .path(refreshEndpoint)
@ -105,7 +105,7 @@ public class AuthService {
log.error("Failed to refresh token: ", e); log.error("Failed to refresh token: ", e);
} }
// 如果续期失败尝试重新登录 // 如果续期失败尝试重新登录
return loginAndGetToken(); return loginAndGetToken(baseUrl);
} }
//创造带有Token的请求头 //创造带有Token的请求头
@ -118,18 +118,18 @@ public class AuthService {
} }
//获取Token //获取Token
public String getToken() { public String getToken(String baseUrl) {
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
if (token == null) { if (token == null) {
return loginAndGetToken(); return loginAndGetToken(baseUrl);
} }
// 如果token已过期重新登录 // 如果token已过期重新登录
if (currentTime >= tokenExpiryTime) { if (currentTime >= tokenExpiryTime) {
return loginAndGetToken(); return loginAndGetToken(baseUrl);
} }
// 如果token即将过期比如还有10分钟过期尝试续期 // 如果token即将过期比如还有10分钟过期尝试续期
if (currentTime >= tokenExpiryTime - 600_000) { if (currentTime >= tokenExpiryTime - 600_000) {
return refreshToken(); return refreshToken(baseUrl);
} }
return token; return token;
} }

View File

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