From 39e8bb722006c55fb986a7394bfb4747d482b8c4 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 14 Oct 2025 14:28:48 +0800
Subject: [PATCH] 修改forest动态服务请求
---
ard-work/src/main/java/com/ard/work/component/forest/TokenInterceptor.java | 4 +-
ard-work/src/main/java/com/ard/work/component/forest/MyAddressSource.java | 24 ++++++++++++
ard-work/src/main/java/com/ard/work/component/forest/TyClient.java | 25 ++++++------
ard-work/src/main/java/com/ard/work/component/websocket/interceptor/TyHandshakeInterceptor.java | 6 ---
ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java | 2
ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java | 18 --------
ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java | 25 +++++-------
ard-work/src/main/java/com/ard/work/service/IArdServerService.java | 5 --
8 files changed, 52 insertions(+), 57 deletions(-)
diff --git a/ard-work/src/main/java/com/ard/work/component/forest/MyAddressSource.java b/ard-work/src/main/java/com/ard/work/component/forest/MyAddressSource.java
new file mode 100644
index 0000000..c707967
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/work/component/forest/MyAddressSource.java
@@ -0,0 +1,24 @@
+package com.ard.work.component.forest;
+
+import com.ard.work.domain.entity.ArdServerInfo;
+import com.ard.work.service.IArdServerService;
+import com.dtflys.forest.callback.AddressSource;
+import com.dtflys.forest.http.ForestAddress;
+import com.dtflys.forest.http.ForestRequest;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+public class MyAddressSource implements AddressSource {
+
+ @Resource
+ private IArdServerService ardServerService;
+ @Override
+ public ForestAddress getAddress(ForestRequest request) {
+ String serverKey = (String) request.getVariableValue("serverId");
+ ArdServerInfo serverInfo = ardServerService.selectArdServerManagementById(serverKey);
+ // 返回 Forest 地址对象
+ return new ForestAddress(serverInfo.getHost(), serverInfo.getHttpPort());
+ }
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/work/component/forest/TokenInterceptor.java b/ard-work/src/main/java/com/ard/work/component/forest/TokenInterceptor.java
index e0d89c4..006fa86 100644
--- a/ard-work/src/main/java/com/ard/work/component/forest/TokenInterceptor.java
+++ b/ard-work/src/main/java/com/ard/work/component/forest/TokenInterceptor.java
@@ -22,8 +22,8 @@
@Override
public boolean beforeExecute(ForestRequest req) {
log.debug("invoke Simple beforeExecute");
- String baseUrl = (String) req.getVariableValue("baseUrl");
- AccessTokenReceiver accessToken = ardServerService.getAccessTokenByBaseUrl(baseUrl);
+ String serverId = (String) req.getVariableValue("serverId");
+ AccessTokenReceiver accessToken = ardServerService.getAccessToken(serverId);
req.addHeader("x-cid", accessToken.getCompanyId());
req.addHeader("x-token", accessToken.getAccessToken());
return true; // 继续执行请求返回true
diff --git a/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java b/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
index cc39ed4..a5f3c23 100644
--- a/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
+++ b/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
@@ -15,43 +15,44 @@
* @author liusuyi
* @date 2024年10月21日14:45
**/
+@Address(source = MyAddressSource.class)
public interface TyClient {
/**
* 获取云盒TOKEN
*/
- @Post("{baseUrl}" + TyConst.POST_TOKEN)
- TyHttpCommonReceiver<AccessTokenReceiver> getToken(@Var("baseUrl") String baseUrl, @JSONBody TokenDTO tokenDTO);
+ @Post(TyConst.POST_TOKEN)
+ TyHttpCommonReceiver<AccessTokenReceiver> getToken(@Var("serverId") String serverId, @JSONBody TokenDTO tokenDTO);
/**
* 获取云盒列表
*/
- @Get(value = "{baseUrl}" + TyConst.GET_BOX_LIST, interceptor = TokenInterceptor.class)
- TyHttpCommonReceiver<List<BoxInfoReceiver>> getBoxList(@Var("baseUrl") String baseUrl);
+ @Get(value = TyConst.GET_BOX_LIST, interceptor = TokenInterceptor.class)
+ TyHttpCommonReceiver<List<BoxInfoReceiver>> getBoxList(@Var("serverId") String serverId);
/**
* 获取直播地址
*/
- @Get(value = "{baseUrl}" + TyConst.GET_BOX_LIVE_URL, interceptor = TokenInterceptor.class)
- TyHttpCommonReceiver<BoxStreamUrlReceiver> getBoxLiveUrl(@Var("baseUrl") String baseUrl,
+ @Get(value = TyConst.GET_BOX_LIVE_URL, interceptor = TokenInterceptor.class)
+ TyHttpCommonReceiver<BoxStreamUrlReceiver> getBoxLiveUrl(@Var("serverId") String serverId,
@Var("boxSn") String boxSn);
/**
* 获取飞行历史
*/
- @Post(value = "{baseUrl}" + TyConst.POST_BOX_HISTORY, interceptor = TokenInterceptor.class)
- TyHttpCommonReceiver<List<BoxHistoryReceiver>> getBoxHistory(@Var("baseUrl") String baseUrl,
+ @Post(value = TyConst.POST_BOX_HISTORY, interceptor = TokenInterceptor.class)
+ TyHttpCommonReceiver<List<BoxHistoryReceiver>> getBoxHistory(@Var("serverId") String serverId,
@JSONBody BoxHistoryDTO boxHistoryDTO);
/**
* 获取任务照片
*/
- @Post(value = "{baseUrl}" + TyConst.POST_BOX_PHOTOS, interceptor = TokenInterceptor.class)
- TyHttpCommonReceiver<List<BoxPhotosReceiver>> getBoxPhotos(@Var("baseUrl") String baseUrl,
+ @Post(value = TyConst.POST_BOX_PHOTOS, interceptor = TokenInterceptor.class)
+ TyHttpCommonReceiver<List<BoxPhotosReceiver>> getBoxPhotos(@Var("serverId") String serverId,
@JSONBody BoxPhotosDTO boxPhotosDTO);
/**
* 修改云盒设置
*/
- @Post(value = "{baseUrl}" + TyConst.POST_BOX_UPDATE, interceptor = TokenInterceptor.class)
- TyHttpCommonReceiver<?> updateBoxSettings(@Var("baseUrl") String baseUrl, @JSONBody BoxSettingsDTO boxSettingsDTO);
+ @Post(value = TyConst.POST_BOX_UPDATE, interceptor = TokenInterceptor.class)
+ TyHttpCommonReceiver<?> updateBoxSettings(@Var("serverId") String serverId, @JSONBody BoxSettingsDTO boxSettingsDTO);
}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java b/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
index f8c2d81..6adfc48 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
+++ b/ard-work/src/main/java/com/ard/work/component/websocket/handler/TyMessageHandler.java
@@ -45,7 +45,7 @@
MessageType messageType = MessageType.fromString(baseMessage.getType());
switch (messageType) {
case STREAM:
-
+
break;
case STATE:
handleStateMessage(payload, userId);
diff --git a/ard-work/src/main/java/com/ard/work/component/websocket/interceptor/TyHandshakeInterceptor.java b/ard-work/src/main/java/com/ard/work/component/websocket/interceptor/TyHandshakeInterceptor.java
index ea42faa..c857f44 100644
--- a/ard-work/src/main/java/com/ard/work/component/websocket/interceptor/TyHandshakeInterceptor.java
+++ b/ard-work/src/main/java/com/ard/work/component/websocket/interceptor/TyHandshakeInterceptor.java
@@ -19,12 +19,6 @@
String userId = segments[segments.length - 1];
attributes.put("userId", userId);
}
- //从header中获取userId
-// String userId = request.getHeaders().getFirst("userId");
-// if (userId != null)
-// {
-// attributes.put("userId", userId);
-// }
return true;
}
diff --git a/ard-work/src/main/java/com/ard/work/service/IArdServerService.java b/ard-work/src/main/java/com/ard/work/service/IArdServerService.java
index bfd0108..b77619e 100644
--- a/ard-work/src/main/java/com/ard/work/service/IArdServerService.java
+++ b/ard-work/src/main/java/com/ard/work/service/IArdServerService.java
@@ -64,8 +64,5 @@
* 根据 id 获取 token
*/
public AccessTokenReceiver getAccessToken(String id);
- /**
- * 根据 baseUrl 获取 token(给拦截器使用)
- */
- public AccessTokenReceiver getAccessTokenByBaseUrl(String baseUrl);
+
}
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java
index beb5cf0..a86bdeb 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/ArdServerServiceImpl.java
@@ -114,8 +114,7 @@
.timeStamp(timeStamp)
.build();
try {
- String baseUrl = "http://" + serverInfo.getHost() + ":" + serverInfo.getHttpPort();
- TyHttpCommonReceiver<AccessTokenReceiver> getTokenRes = tyClient.getToken(baseUrl, gtd);
+ TyHttpCommonReceiver<AccessTokenReceiver> getTokenRes = tyClient.getToken(id, gtd);
accessToken = getTokenRes.getContent();
} catch (Exception e) {
log.error("获取token失败:{}", e.getMessage());
@@ -133,19 +132,4 @@
return new Date().getTime();
}
- /**
- * 根据 baseUrl 获取 服务器http接口token(给拦截器使用)
- */
- @Override
- public AccessTokenReceiver getAccessTokenByBaseUrl(String baseUrl) {
- // 找到对应的 serverId
- List<ArdServerInfo> servers = selectArdServerManagementList(new ArdServerInfo());
- for (ArdServerInfo server : servers) {
- String _baseUrl = "http://" + server.getHost() + ":" + server.getHttpPort();
- if (_baseUrl.equals(baseUrl)) {
- return getAccessToken(server.getId());
- }
- }
- return null;
- }
}
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
index e54d009..cc586d0 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
@@ -113,8 +113,7 @@
@Override
public BoxStreamUrlReceiver getBoxLiveUrl(String boxSn) {
ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxSn);
- String baseUrl="http://"+ardDroneInfo.getArdServerInfo().getHost()+":"+ardDroneInfo.getArdServerInfo().getHttpPort();
- TyHttpCommonReceiver<BoxStreamUrlReceiver> boxLiveUrl = tyClient.getBoxLiveUrl(baseUrl,boxSn);
+ TyHttpCommonReceiver<BoxStreamUrlReceiver> boxLiveUrl = tyClient.getBoxLiveUrl(ardDroneInfo.getServerInfoId(),boxSn);
return boxLiveUrl.getContent();
}
@@ -126,8 +125,8 @@
@Override
public List<BoxHistoryReceiver> getBoxHistory(BoxHistoryDTO boxHistoryDTO) {
ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxHistoryDTO.getBoxSn());
- String baseUrl="http://"+ardDroneInfo.getArdServerInfo().getHost()+":"+ardDroneInfo.getArdServerInfo().getHttpPort();
- TyHttpCommonReceiver<List<BoxHistoryReceiver>> boxHistory = tyClient.getBoxHistory(baseUrl,boxHistoryDTO);
+ TyHttpCommonReceiver<List<BoxHistoryReceiver>> boxHistory = tyClient.getBoxHistory(ardDroneInfo.getServerInfoId(),
+ boxHistoryDTO);
return boxHistory.getContent();
}
@@ -139,8 +138,7 @@
@Override
public List<BoxPhotosReceiver> getBoxPhotos(BoxPhotosDTO boxPhotosDTO) {
ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxPhotosDTO.getBoxSn());
- String baseUrl="http://"+ardDroneInfo.getArdServerInfo().getHost()+":"+ardDroneInfo.getArdServerInfo().getHttpPort();
- TyHttpCommonReceiver<List<BoxPhotosReceiver>> boxPhotos = tyClient.getBoxPhotos(baseUrl,boxPhotosDTO);
+ TyHttpCommonReceiver<List<BoxPhotosReceiver>> boxPhotos = tyClient.getBoxPhotos(ardDroneInfo.getServerInfoId(),boxPhotosDTO);
return boxPhotos.getContent();
}
@@ -150,8 +148,7 @@
@Override
public Boolean updateBoxSettings(BoxSettingsDTO boxSettingsDTO) {
ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxSettingsDTO.getBoxSn());
- String baseUrl="http://"+ardDroneInfo.getArdServerInfo().getHost()+":"+ardDroneInfo.getArdServerInfo().getHttpPort();
- TyHttpCommonReceiver<?> result = tyClient.updateBoxSettings(baseUrl,boxSettingsDTO);
+ TyHttpCommonReceiver<?> result = tyClient.updateBoxSettings(ardDroneInfo.getServerInfoId(),boxSettingsDTO);
return result.getState() == 1;
}
@@ -845,14 +842,12 @@
*/
@Override
public List<BoxInfoReceiver> getBoxSnToList(String id) {
- ArdServerInfo ardServerInfos = ardServerService.selectArdServerManagementById(id);
- String baseUrl = "http://" + ardServerInfos.getHost() + ":" + ardServerInfos.getHttpPort();
List<BoxInfoReceiver> lisbox = new ArrayList<>();
try {
- lisbox = tyClient.getBoxList(baseUrl).getContent();
+ lisbox = tyClient.getBoxList(id).getContent();
return lisbox;
} catch (Exception e) {
- log.error("获取云盒列表失败: {}", baseUrl, e);
+ log.error("获取云盒列表失败: {}", id, e);
return lisbox;
}
}
@@ -860,12 +855,12 @@
private List<BoxInfoReceiver> getBoxList(List<ArdServerInfo> ls) {
return ls.stream()
.flatMap(ardServerInfo -> {
- String baseUrl = "http://" + ardServerInfo.getHost() + ":" + ardServerInfo.getHttpPort();
+
try {
- List<BoxInfoReceiver> boxes = tyClient.getBoxList(baseUrl).getContent();
+ List<BoxInfoReceiver> boxes = tyClient.getBoxList(ardServerInfo.getId()).getContent();
return Optional.ofNullable(boxes).orElse(Collections.emptyList()).stream();
} catch (Exception e) {
- log.error("获取云盒列表失败: {}", baseUrl, e);
+ log.error("获取云盒列表失败: {}", ardServerInfo.getId(), e);
return Stream.empty();
}
})
--
Gitblit v1.9.3