From 52123c927f77f41f71461ef0d422525656bd7b6f Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 07 五月 2026 11:53:26 +0800
Subject: [PATCH] 优化营销客户相关
---
src/main/java/com/ruoyi/basic/service/impl/StorageBlobServiceImpl.java | 42 ++++++++++++++++++++++++++++++++++--------
1 files changed, 34 insertions(+), 8 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 b576d23..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("鏂囦欢鍏冩暟鎹繚瀛樺け璐�");
}
@@ -89,9 +90,7 @@
throw new IllegalArgumentException("token涓嶈兘涓虹┖");
}
- String secretStr = StringUtils.hasText(properties.getJwtSecret())
- ? properties.getJwtSecret()
- : "local-file-jwt-secret";
+ String secretStr = properties.getJwtSecret();
SecretKey key = Keys.hmacShaKeyFor(secretStr.getBytes(StandardCharsets.UTF_8));
Claims claims = Jwts.parser()
@@ -111,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());
@@ -125,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