From 2ec6b477938b95608873feefa819c687d69c4a88 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期六, 25 四月 2026 15:09:56 +0800
Subject: [PATCH] Merge branch 'dev_New_pro' of http://114.132.189.42:9002/r/product-inventory-management-after into dev_New_pro
---
src/main/java/com/ruoyi/basic/utils/FileUtil.java | 82 ++++++++++++++++++++++++++++++++++-------
1 files changed, 68 insertions(+), 14 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/utils/FileUtil.java b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
index d964efc..fde28b4 100644
--- a/src/main/java/com/ruoyi/basic/utils/FileUtil.java
+++ b/src/main/java/com/ruoyi/basic/utils/FileUtil.java
@@ -1,7 +1,10 @@
package com.ruoyi.basic.utils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
import com.ruoyi.basic.dto.StorageAttachmentVO;
import com.ruoyi.basic.dto.StorageBlobDTO;
import com.ruoyi.basic.dto.StorageBlobVO;
@@ -52,9 +55,6 @@
* @param storageBlobDTOS 鏂囦欢淇℃伅
*/
public void saveStorageAttachment(ApplicationTypeEnum application, RecordTypeEnum recordType, Long recordId, List<StorageBlobDTO> storageBlobDTOS) {
- if (CollectionUtils.isEmpty(storageBlobDTOS)) {
- throw new RuntimeException("鏂囦欢淇℃伅涓嶈兘涓虹┖");
- }
if (application == null) {
throw new RuntimeException("鏂囦欢鐢ㄩ�斾笉鑳戒负绌�");
}
@@ -66,6 +66,9 @@
}
// 鍒犻櫎鏃ч檮浠朵俊鎭�
deleteStorageAttachmentsByApplicationAndRecordTypeAndRecordId(application, recordType, recordId);
+ if (CollectionUtils.isEmpty(storageBlobDTOS)) {
+ return;
+ }
List<StorageAttachment> storageAttachments = new ArrayList<>();
for (StorageBlobDTO storageBlobDTO : storageBlobDTOS) {
StorageAttachment storageAttachment = new StorageAttachment();
@@ -195,6 +198,46 @@
throw new RuntimeException("鏂囦欢id涓嶈兘涓虹┖");
}
return storageAttachmentMapper.selectByIds(storageAttachmentIds);
+ }
+
+ /**
+ * 閫氳繃璁板綍绫诲瀷鑾峰彇鏂囦欢淇℃伅 attachment锛堝垎椤碉級
+ *
+ * @param page 鍒嗛〉鍙傛暟
+ * @param storageAttachmentDTO 鍏宠仈璁板綍淇℃伅
+ */
+ public IPage<StorageAttachmentVO> getStorageAttachmentVosPageListByApplicationAndRecordTypeAndRecordId(Page page, StorageAttachmentDTO storageAttachmentDTO) {
+ // 鍒嗛〉鏌ヨ绗﹀悎鏉′欢鐨� StorageAttachment 璁板綍
+ LambdaQueryWrapper<StorageAttachment> queryWrapper = new LambdaQueryWrapper<StorageAttachment>()
+ .eq(StorageAttachment::getRecordType, storageAttachmentDTO.getRecordType())
+ .eq(StorageAttachment::getRecordId, storageAttachmentDTO.getRecordId());
+ if (storageAttachmentDTO.getApplication() != null) {
+ queryWrapper.eq(StorageAttachment::getApplication, storageAttachmentDTO.getApplication());
+ }
+ IPage<StorageAttachmentVO> storageAttachmentIPage = storageAttachmentMapper.selectPage(page, queryWrapper);
+
+ // 杞崲涓� StorageAttachmentVO 骞惰幏鍙栧搴旂殑 StorageBlobVO
+ List<StorageAttachmentVO> storageAttachmentVOS = new ArrayList<>();
+ if (CollectionUtils.isNotEmpty(storageAttachmentIPage.getRecords())) {
+ for (StorageAttachment storageAttachment : storageAttachmentIPage.getRecords()) {
+ StorageAttachmentVO storageAttachmentVO = new StorageAttachmentVO();
+ BeanUtils.copyProperties(storageAttachment, storageAttachmentVO);
+ List<StorageBlobVO> storageBlobVOS = getStorageBlobVOsByStorageAttachmentIds(Collections.singletonList(storageAttachment.getId()));
+ if (CollectionUtils.isEmpty(storageBlobVOS)) {
+ storageAttachmentVO.setStorageBlobVOS(new ArrayList<>());
+ } else {
+ storageAttachmentVO.setStorageBlobVOS(storageBlobVOS);
+ }
+ storageAttachmentVOS.add(storageAttachmentVO);
+ }
+ }
+
+ // 鏋勫缓鍒嗛〉缁撴灉
+ IPage<StorageAttachmentVO> resultPage = new Page<>();
+ BeanUtils.copyProperties(storageAttachmentIPage, resultPage);
+ resultPage.setRecords(storageAttachmentVOS);
+
+ return resultPage;
}
/**
@@ -565,8 +608,28 @@
if (storageBlob == null || !StringUtils.hasText(storageBlob.getUidFilename())) {
throw new IllegalArgumentException("鏂囦欢淇℃伅涓嶅畬鏁�");
}
+ String domain = StringUtils.trimTrailingCharacter(properties.getDomain(), '/');
+ String prefix = properties.getUrlPrefix().startsWith("/") ? properties.getUrlPrefix() : "/" + properties.getUrlPrefix();
+ String normalizedActionPath = StringUtils.hasText(actionPath) ? actionPath : "/preview/";
+ if (!normalizedActionPath.startsWith("/")) {
+ normalizedActionPath = "/" + normalizedActionPath;
+ }
+ if (!normalizedActionPath.endsWith("/")) {
+ normalizedActionPath = normalizedActionPath + "/";
+ }
+ String baseUrl = domain + prefix + normalizedActionPath + storageBlob.getUidFilename();
+
+ // -1 琛ㄧず姘镐箙鏈夋晥锛屼笉鐢熸垚 token锛屾敼涓� publicKey 缁勫悎鏍¢獙
+ if (expired != null && BigDecimal.valueOf(-1L).compareTo(expired) == 0) {
+ if (!StringUtils.hasText(storageBlob.getResourceKey())) {
+ throw new IllegalArgumentException("鍏紑閾炬帴缂哄皯publicKey");
+ }
+ return baseUrl + "?publicKey=" + storageBlob.getResourceKey();
+ }
+
long now = System.currentTimeMillis();
- long expiredMillis = expired.multiply(new BigDecimal("60000")).longValue();
+ BigDecimal expiredValue = expired == null ? new BigDecimal("120") : expired;
+ long expiredMillis = expiredValue.multiply(new BigDecimal("60000")).longValue();
if (expiredMillis <= 0L) {
expiredMillis = 2L * 60L * 60L * 1000L;
}
@@ -583,16 +646,7 @@
.signWith(key) // 閲嶇偣锛氫紶鍏ヤ笂闈㈢敓鎴愮殑 key 瀵硅薄锛岃�屼笉鏄� String
.compact();
cacheTokenUsage(token, expiredMillis);
- String domain = StringUtils.trimTrailingCharacter(properties.getDomain(), '/');
- String prefix = properties.getUrlPrefix().startsWith("/") ? properties.getUrlPrefix() : "/" + properties.getUrlPrefix();
- String normalizedActionPath = StringUtils.hasText(actionPath) ? actionPath : "/preview/";
- if (!normalizedActionPath.startsWith("/")) {
- normalizedActionPath = "/" + normalizedActionPath;
- }
- if (!normalizedActionPath.endsWith("/")) {
- normalizedActionPath = normalizedActionPath + "/";
- }
- return domain + prefix + normalizedActionPath + storageBlob.getUidFilename() + "?token=" + token;
+ return baseUrl + "?token=" + token;
}
private void cacheTokenUsage(String token, long expiredMillis) {
--
Gitblit v1.9.3