From dd69bfc1fb8e5e28dde754fab7f23bfb1a18faa5 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 05 六月 2026 16:58:07 +0800
Subject: [PATCH] config(dev): 更新开发环境配置和文件上传功能 - 调整文件上传路径配置 - 修复OA环境文件链接前缀配置 - 在审批实例服务中添加报销相关数据删除逻辑 - 实现申请人姓名自动填充功能 - 添加文件下载预览路由的正则表达式支持 - 为企业新闻VO添加附件列表兼容别名 - 完善员工入职服务的异常处理 - 新增账户附件管理控制器 - 实现文件上传接口并返回完整文件信息

---
 src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java |   38 +++++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
index 4fb85e2..9ad80ae 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java
@@ -20,6 +20,7 @@
 import javax.crypto.SecretKey;
 import java.io.File;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
@@ -39,7 +40,7 @@
     private final FileUtil fileUtil;
 
     @Override
-    public List<StorageBlobVO> upload(List<MultipartFile> files) {
+    public List<StorageBlobVO> upload(List<MultipartFile> files, Boolean isPublic) {
         if (CollectionUtils.isEmpty(files)) {
             throw new IllegalArgumentException("鏂囦欢涓嶈兘涓虹┖");
         }
@@ -65,7 +66,7 @@
             StorageBlobVO storageBlob;
             try {
                 file.transferTo(dest);
-                storageBlob = getStorageBlob(file, originalFileName, fileName, relativePath);
+                storageBlob = getStorageBlob(file, originalFileName, fileName, relativePath, isPublic);
                 if (storageBlob == null || storageBlob.getId() == null) {
                     throw new RuntimeException("鏂囦欢鍏冩暟鎹繚瀛樺け璐�");
                 }
@@ -109,13 +110,35 @@
         return new File(new File(properties.getPath(), path), fileName);
     }
 
+    @Override
+    public File getPublicFile(String fileName, String publicKey) {
+        if (!StringUtils.hasText(fileName)) {
+            throw new IllegalArgumentException("鏂囦欢鍚嶄笉鑳戒负绌�");
+        }
+        if (!StringUtils.hasText(publicKey)) {
+            throw new IllegalArgumentException("publicKey涓嶈兘涓虹┖");
+        }
+        StorageBlob storageBlob = storageBlobMapper.selectOne(new LambdaQueryWrapper<StorageBlob>()
+                .eq(StorageBlob::getUidFilename, fileName)
+                .eq(StorageBlob::getResourceKey, publicKey)
+                .last("limit 1"));
+        if (storageBlob == null) {
+            throw new IllegalArgumentException("鍏紑鏂囦欢涓嶅瓨鍦ㄦ垨publicKey涓嶅尮閰�");
+        }
+        String path = storageBlob.getPath();
+        if (!StringUtils.hasText(path)) {
+            return new File(properties.getPath(), fileName);
+        }
+        return new File(new File(properties.getPath(), path), fileName);
+    }
+
     private StorageBlob findStorageBlob(String fileName) {
         return storageBlobMapper.selectOne(new LambdaQueryWrapper<StorageBlob>()
                 .eq(StorageBlob::getUidFilename, fileName)
                 .last("limit 1"));
     }
 
-    private StorageBlobVO getStorageBlob(MultipartFile file, String originalFileName, String fileName, String relativePath) {
+    private StorageBlobVO getStorageBlob(MultipartFile file, String originalFileName, String fileName, String relativePath, Boolean isPublic) {
         StorageBlobVO storageBlob = new StorageBlobVO();
         storageBlob.setResourceKey(UUID.randomUUID().toString().replace("-", ""));
         storageBlob.setContentType(file.getContentType());
@@ -123,8 +146,13 @@
         storageBlob.setUidFilename(fileName);
         storageBlob.setByteSize(file.getSize());
         storageBlob.setPath(relativePath);
-        storageBlob.setPreviewURL(fileUtil.buildSignedPreviewUrl(storageBlob));
-        storageBlob.setDownloadURL(fileUtil.buildSignedDownloadUrl(storageBlob));
+        if (isPublic) {
+            storageBlob.setPreviewURL(fileUtil.buildSignedUrl(storageBlob, "/preview/", BigDecimal.valueOf(-1)));
+            storageBlob.setDownloadURL(fileUtil.buildSignedUrl(storageBlob, "/download/", BigDecimal.valueOf(-1)));
+        } else {
+            storageBlob.setPreviewURL(fileUtil.buildSignedPreviewUrl(storageBlob));
+            storageBlob.setDownloadURL(fileUtil.buildSignedDownloadUrl(storageBlob));
+        }
         int affectedRows = storageBlobMapper.insert(storageBlob);
         if (affectedRows <= 0) {
             throw new RuntimeException("鏂囦欢鍏冩暟鎹繚瀛樺け璐�");

--
Gitblit v1.9.3