From a0ad613e75498fb4331b7f3eb55b60cec7896d88 Mon Sep 17 00:00:00 2001
From: shenyijian <1178253012@qq.com>
Date: Tue, 28 Nov 2023 14:02:30 +0800
Subject: [PATCH] 无人机 -外网文件地址处理

---
 src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java   |    6 ++++--
 src/main/java/com/dji/sample/common/util/MinioUrlUtils.java                  |   35 +++++++++++++++++++++++++++++++++++
 src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java        |    2 +-
 src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java      |    4 ++--
 src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java |    6 +++---
 5 files changed, 45 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/dji/sample/common/util/MinioUrlUtils.java b/src/main/java/com/dji/sample/common/util/MinioUrlUtils.java
new file mode 100644
index 0000000..a33ab97
--- /dev/null
+++ b/src/main/java/com/dji/sample/common/util/MinioUrlUtils.java
@@ -0,0 +1,35 @@
+package com.dji.sample.common.util;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.net.URL;
+
+@Component
+public class MinioUrlUtils {
+
+    private static String outNetAddress;
+
+
+    private static String endpointAddress;
+
+    public static String getUrl(URL url) {
+        String s = url.toString();
+        int index = s.indexOf('?');
+        if (index != -1) {
+            s = s.substring(0, index);
+            s = s.replace(endpointAddress, outNetAddress);
+        }
+        return s;
+    }
+
+    @Value("${oss.out-net-file-address}")
+    public void setOutNetAddress(String outNetAddress) {
+        MinioUrlUtils.outNetAddress = outNetAddress;
+    }
+
+    @Value("${oss.endpoint}")
+    public void setEndpointAddress(String endpointAddress) {
+        MinioUrlUtils.endpointAddress = endpointAddress;
+    }
+}
diff --git a/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java b/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
index fba96e7..1ddd9db 100644
--- a/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/dji/sample/manage/service/impl/DeviceServiceImpl.java
@@ -333,8 +333,8 @@
             deviceDTO.setLatestWaylineJob(latestJob);
             deviceDTO.setOnlineStatus(true);
             OsdDockReceiver osdDockReceiver = (OsdDockReceiver) RedisOpsUtils.get("osd:" + deviceDTO.getDeviceSn());
-            deviceDTO.setLatitude(osdDockReceiver.getLatitude());
-            deviceDTO.setLongitude(osdDockReceiver.getLongitude());
+            deviceDTO.setLatitude(osdDockReceiver!=null? osdDockReceiver.getLatitude():null);
+            deviceDTO.setLongitude(osdDockReceiver!=null? osdDockReceiver.getLongitude():null);
         });
 
         return devicesList;
diff --git a/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java b/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
index bbbf66f..87a9bc2 100644
--- a/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
+++ b/src/main/java/com/dji/sample/media/service/impl/MediaServiceImpl.java
@@ -152,7 +152,7 @@
                 log.error("保存文件到数据库失败,请手动检查数据;Failed to save the file to the database, please check the data manually.");
                 return null;
             }
-        } else if (!StringUtils.isEmpty(jobId)) { //一键起飞操作需要上传文件
+        } else if (!StringUtils.isEmpty(jobId)) { //一键起飞操作需要
             WaylineJobDTO waylineJobDTO = new WaylineJobDTO();
             waylineJobDTO.setWorkspaceId(device.getWorkspaceId());
             waylineJobDTO.setDockSn(device.getDeviceSn());
diff --git a/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java b/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
index 32f53ef..5ceaab9 100644
--- a/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
+++ b/src/main/java/com/dji/sample/wayline/controller/WaylineFileController.java
@@ -3,6 +3,7 @@
 import com.dji.sample.common.model.CustomClaim;
 import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.common.model.ResponseResult;
+import com.dji.sample.common.util.MinioUrlUtils;
 import com.dji.sample.log.aspect.SysLogAnnotation;
 import com.dji.sample.wayline.model.dto.WaylineFileDTO;
 import com.dji.sample.wayline.model.dto.WaylineFileUploadDTO;
@@ -10,6 +11,7 @@
 import com.dji.sample.wayline.model.param.WaylineQueryParam;
 import com.dji.sample.wayline.service.IWaylineFileService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -78,7 +80,7 @@
 
         try {
             URL url = waylineFileService.getObjectUrl(workspaceId, waylineId);
-            response.sendRedirect(url.toString());
+            response.sendRedirect(MinioUrlUtils.getUrl(url));
 
         } catch (IOException | SQLException e) {
             e.printStackTrace();
@@ -96,7 +98,7 @@
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
-        return ResponseResult.success(url);
+        return ResponseResult.success(MinioUrlUtils.getUrl(url));
     }
 
     /**
diff --git a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
index f0c7a10..9ae0776 100644
--- a/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
+++ b/src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -13,6 +13,7 @@
 import com.dji.sample.common.model.Pagination;
 import com.dji.sample.common.model.PaginationData;
 import com.dji.sample.common.model.ResponseResult;
+import com.dji.sample.common.util.MinioUrlUtils;
 import com.dji.sample.common.util.SpringBeanUtils;
 import com.dji.sample.component.mqtt.model.*;
 import com.dji.sample.component.mqtt.service.IMessageSenderService;
@@ -352,7 +353,6 @@
         // get file url
         //获取航线文件地址
         URL url = waylineFileService.getObjectUrl(waylineJob.getWorkspaceId(), waylineFile.get().getWaylineId());
-
         WaylineTaskCreateDTO flightTask = WaylineTaskCreateDTO.builder()
                 .flightId(waylineJob.getJobId())
                 .executeTime(waylineJob.getBeginTime().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli())
@@ -361,7 +361,7 @@
                 .rthAltitude(waylineJob.getRthAltitude())
                 .outOfControlAction(waylineJob.getOutOfControlAction())
                 .file(WaylineTaskFileDTO.builder()
-                        .url(url.toString())
+                        .url(MinioUrlUtils.getUrl(url))
                         .fingerprint(waylineFile.get().getSign())
                         .build())
                 .build();
@@ -584,7 +584,7 @@
             url = waylineFileService.getObjectUrl(waylineJob.getWorkspaceId(), waylineFile.get().getWaylineId());
             builder.data(RequestsReply.success(WaylineTaskCreateDTO.builder()
                     .file(WaylineTaskFileDTO.builder()
-                            .url(url.toString())
+                            .url(MinioUrlUtils.getUrl(url))
                             .fingerprint(waylineFile.get().getSign())
                             .build())
                     .build()));

--
Gitblit v1.9.3