From ba482fb9b73b43e5fbe6a0e206a103535f8a0c42 Mon Sep 17 00:00:00 2001
From: Xiajijian <1176061145@qq.com>
Date: Wed, 29 Oct 2025 17:20:34 +0800
Subject: [PATCH] 1.航线(kmz)业务增加,Minio文件路径字段。 2.增加方法从URL中提取文件路径部分。

---
 ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml                      |    5 ++
 ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java                   |   25 ++----------
 ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInformation.java            |    4 ++
 ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java            |    2 +
 ard-route/src/main/java/com/ard/route/util/ToolUtils.java                              |   34 +++++++++++++++++
 ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java |    4 +
 6 files changed, 53 insertions(+), 21 deletions(-)

diff --git a/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java b/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
index e38cfb0..5097bce 100644
--- a/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
+++ b/ard-oss/src/main/java/com/ard/oss/service/impl/MinIOServiceImpl.java
@@ -127,28 +127,13 @@
     @Override
     public Boolean deleteObject(String bucket, String objectKey) {
         try {
-            // 检查文件是否存在
-            client.statObject(StatObjectArgs.builder()
-                    .bucket(bucket)
-                    .object(objectKey)
-                    .build());
-
-            // 文件存在,执行删除
-            client.removeObject(RemoveObjectArgs.builder()
-                    .bucket(bucket)
-                    .object(objectKey)
-                    .build());
-
-            log.info("成功删除文件: {}/{}", bucket, objectKey);
-            return true;
-        } catch (ErrorResponseException e) {
-            // 文件不存在的情况
-            log.warn("文件不存在: {}/{}", bucket, objectKey);
+            client.removeObject(RemoveObjectArgs.builder().bucket(bucket).object(objectKey).build());
+        } catch (MinioException | NoSuchAlgorithmException | IOException | InvalidKeyException e) {
+            log.error("Failed to delete file.");
+            e.printStackTrace();
             return false;
-        } catch (Exception e) {
-            log.error("删除文件失败: {}/{}", bucket, objectKey, e);
-            throw new RuntimeException("删除文件失败: " + e.getMessage(), e);
         }
+        return true;
     }
 
     @Override
diff --git a/ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInformation.java b/ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInformation.java
index 2473649..5b2777a 100644
--- a/ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInformation.java
+++ b/ard-route/src/main/java/com/ard/route/domain/route/ArdRouteInformation.java
@@ -34,4 +34,8 @@
     @Excel(name = "文件大小")
     private Double upFileSize;
 
+    /** Minio文件路径 */
+    @Excel(name = "Minio文件路径")
+    private String minioUpPath;
+
 }
diff --git a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java
index b9d2823..f011984 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/ArdRouteInformationServiceImpl.java
@@ -13,6 +13,7 @@
 import com.ard.route.service.IArdRouteInformationService;
 import org.springframework.web.multipart.MultipartFile;
 
+import static com.ard.route.util.ToolUtils.extractFilePath;
 import static com.ard.route.util.ToolUtils.getFileNameWithoutExtension;
 
 /**
@@ -88,7 +89,7 @@
         // 删除航线(kmz)文件
         for (String id : ids) {
             ArdRouteInformation information = ardRouteInformationMapper.selectArdRouteInformationById(id);
-            ossService.deleteObject("kmz", information.getUpPath());
+            ossService.deleteObject("kmz", information.getMinioUpPath());
         }
         return ardRouteInformationMapper.deleteArdRouteInformationByIds(ids);
     }
@@ -117,6 +118,7 @@
             ArdRouteInformation information = new ArdRouteInformation();
             information.setFileName(file.getOriginalFilename());
             information.setFileNameNew(getFileNameWithoutExtension(url));
+            information.setMinioUpPath(extractFilePath(url));
             information.setUpPath(url);
             information.setUpFileSize((double) file.getSize());
             insertArdRouteInformation(information);
diff --git a/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java b/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
index 2db7981..0beae7b 100644
--- a/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
+++ b/ard-route/src/main/java/com/ard/route/service/impl/UavRouteServiceImpl.java
@@ -38,6 +38,7 @@
 import java.util.zip.ZipOutputStream;
 
 import static com.ard.route.util.RouteFileUtils.*;
+import static com.ard.route.util.ToolUtils.extractFilePath;
 import static com.ard.route.util.ToolUtils.getFileNameWithoutExtension;
 
 /**
@@ -210,6 +211,7 @@
                 ArdRouteInformation ardRouteInformation = new ArdRouteInformation();
                 ardRouteInformation.setFileName(fileName);
                 ardRouteInformation.setFileNameNew(getFileNameWithoutExtension(kmzFilePath));
+                ardRouteInformation.setMinioUpPath(extractFilePath(kmzFilePath));
                 ardRouteInformation.setUpPath(kmzFilePath);
                 ardRouteInformation.setUpFileSize(fileSize);
                 ardRouteInformation.setCreateBy(SecurityUtils.getUsername());
diff --git a/ard-route/src/main/java/com/ard/route/util/ToolUtils.java b/ard-route/src/main/java/com/ard/route/util/ToolUtils.java
index 3721f3f..3080eb8 100644
--- a/ard-route/src/main/java/com/ard/route/util/ToolUtils.java
+++ b/ard-route/src/main/java/com/ard/route/util/ToolUtils.java
@@ -40,4 +40,38 @@
         return fileNameWithExt;
     }
 
+    /**
+     * 从URL中提取文件路径部分
+     * @param url 完整的URL字符串
+     * @return 文件路径部分
+     */
+    public static String extractFilePath(String url) {
+        if (url == null || url.isEmpty()) {
+            return "";
+        }
+
+        // 找到最后一个 "kmz/" 的位置,加上4以包含 "kmz/"
+        int index = url.lastIndexOf("kmz/");
+        if (index != -1) {
+            return url.substring(index + 4); // +4 跳过 "kmz/"
+        }
+
+        // 如果没有找到 "kmz/",尝试其他方式
+        return extractPathByDomain(url);
+    }
+
+    /**
+     * 备选方法:通过域名后的第一个斜杠来提取
+     */
+    private static String extractPathByDomain(String url) {
+        // 移除协议头
+        String withoutProtocol = url.replaceFirst("^https?://", "");
+        // 找到第一个斜杠位置
+        int slashIndex = withoutProtocol.indexOf("/");
+        if (slashIndex != -1) {
+            return withoutProtocol.substring(slashIndex + 1);
+        }
+        return "";
+    }
+
 }
diff --git a/ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml b/ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml
index c525b94..e790ff9 100644
--- a/ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml
+++ b/ard-route/src/main/resources/mapper/ArdRouteInformationMapper.xml
@@ -9,6 +9,7 @@
         <result property="fileName"    column="file_name"    />
         <result property="fileNameNew"    column="file_name_new"    />
         <result property="upPath"    column="up_path"    />
+        <result property="minioUpPath"    column="minio_up_path"    />
         <result property="upFileSize"    column="up_file_size"    />
         <result property="createBy"    column="create_by"    />
         <result property="createTime"    column="create_time"    />
@@ -21,6 +22,7 @@
                file_name,
                file_name_new,
                up_path,
+               minio_up_path,
                up_file_size,
                create_by,
                create_time,
@@ -50,6 +52,7 @@
             <if test="fileName != null">file_name,</if>
             <if test="fileNameNew != null">file_name_new,</if>
             <if test="upPath != null">up_path,</if>
+            <if test="minioUpPath != null">minio_up_path,</if>
             <if test="upFileSize != null">up_file_size,</if>
             <if test="createBy != null">create_by,</if>
             <if test="createTime != null">create_time,</if>
@@ -61,6 +64,7 @@
             <if test="fileName != null">#{fileName},</if>
             <if test="fileNameNew != null">#{fileNameNew},</if>
             <if test="upPath != null">#{upPath},</if>
+            <if test="minioUpPath != null">#{minioUpPath},</if>
             <if test="upFileSize != null">#{upFileSize},</if>
             <if test="createBy != null">#{createBy},</if>
             <if test="createTime != null">#{createTime},</if>
@@ -75,6 +79,7 @@
             <if test="fileName != null">file_name = #{fileName},</if>
             <if test="fileNameNew != null">file_name_new = #{fileNameNew},</if>
             <if test="upPath != null">up_path = #{upPath},</if>
+            <if test="minioUpPath != null">minio_up_path = #{minioUpPath},</if>
             <if test="upFileSize != null">up_file_size = #{upFileSize},</if>
             <if test="createBy != null">create_by = #{createBy},</if>
             <if test="createTime != null">create_time = #{createTime},</if>

--
Gitblit v1.9.3