diff --git a/pom.xml b/pom.xml
index d9f8f1bc..1229b8d2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,7 +32,7 @@
https://github.com/YunaiV/ruoyi-vue-pro
- 3.0.1
+ 3.0.3
17
${java.version}
@@ -133,6 +133,21 @@
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.2.1
+
+
+ attach-sources
+ package
+
+ jar
+
+
+
+
@@ -188,7 +203,7 @@
ZT
中铜 ZStack 私服
- http://172.16.46.63:30708/repository/maven-hosted/
+ http://172.16.46.63:30708/repository/test/
false
@@ -199,7 +214,7 @@
ZT
中铜 ZStack 私服
- http://172.16.46.63:30708/repository/maven-hosted/
+ http://172.16.46.63:30708/repository/test/
diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml
index a15e1e33..5d353506 100644
--- a/yudao-dependencies/pom.xml
+++ b/yudao-dependencies/pom.xml
@@ -8,7 +8,7 @@
ZT
中铜 ZStack 私服
- http://172.16.46.63:30708/repository/maven-hosted/
+ http://172.16.46.63:30708/repository/test/
@@ -26,7 +26,7 @@
https://github.com/YunaiV/ruoyi-vue-pro
- 3.0.1
+ 3.0.3
1.6.0
3.4.5
diff --git a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/businessfile/BusinessFileController.java b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/businessfile/BusinessFileController.java
index a6bc0d83..269d02ee 100644
--- a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/businessfile/BusinessFileController.java
+++ b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/businessfile/BusinessFileController.java
@@ -1,35 +1,33 @@
package cn.iocoder.yudao.module.infra.controller.admin.businessfile;
-import org.springframework.web.bind.annotation.*;
-import jakarta.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.security.access.prepost.PreAuthorize;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-
-import jakarta.validation.constraints.*;
-import jakarta.validation.*;
-import jakarta.servlet.http.*;
-import java.util.*;
-import java.io.IOException;
-
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
-import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
-
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
-
-import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
-import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
-
-import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.*;
+import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFilePageReqVO;
+import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileRespVO;
+import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileSaveReqVO;
+import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileWithUrlRespVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.businessfile.BusinessFileDO;
-import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
import cn.iocoder.yudao.module.infra.service.businessfile.BusinessFileService;
import cn.iocoder.yudao.module.infra.service.file.FileService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.Valid;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 业务附件关联")
@RestController
@@ -104,40 +102,7 @@ public class BusinessFileController {
@Operation(summary = "获得业务附件关联分页(带URL)")
@PreAuthorize("@ss.hasPermission('infra:business-file:query')")
public CommonResult> getBusinessFilePageWithUrl(@Valid BusinessFilePageReqVO pageReqVO) {
- PageResult pageResult = businessFileService.getBusinessFilePage(pageReqVO);
- PageResult result = BeanUtils.toBean(pageResult, BusinessFileWithUrlRespVO.class);
-
- // 批量获取文件信息并设置URL
- List fileIds = result.getList().stream()
- .map(BusinessFileWithUrlRespVO::getFileId)
- .filter(Objects::nonNull)
- .distinct()
- .toList();
-
- // 批量查询文件信息
- Map fileMap = new HashMap<>();
- for (Long fileId : fileIds) {
- FileDO fileDO = fileService.getActiveFileById(fileId);
- if (fileDO != null) {
- fileMap.put(fileId, fileDO);
- }
- }
-
- // 设置文件相关信息
- for (BusinessFileWithUrlRespVO vo : result.getList()) {
- if (vo.getFileId() != null) {
- FileDO fileDO = fileMap.get(vo.getFileId());
- if (fileDO != null) {
- vo.setFilePath(fileDO.getPath());
- vo.setFileUrl(fileDO.getUrl());
- vo.setIsEncrypted(fileDO.getIsEncrypted());
- vo.setFileType(fileDO.getType());
- vo.setFileSize(fileDO.getSize());
- }
- }
- }
-
- return success(result);
+ return success(businessFileService.getBusinessFilePageWithUrl(pageReqVO));
}
@GetMapping("/export-excel")
diff --git a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClient.java b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClient.java
index 3e2b2a6c..cebb848e 100644
--- a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClient.java
+++ b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClient.java
@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import cn.iocoder.yudao.framework.common.util.spring.SpringUtils;
import cn.iocoder.yudao.module.infra.framework.file.core.client.AbstractFileClient;
+import org.apache.commons.lang3.StringUtils;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
@@ -47,6 +48,10 @@ public class S3FileClient extends AbstractFileClient {
} catch (Exception ignored) {}
realExpiration = Duration.ofSeconds(expireSeconds);
}
+ if (path == null){
+ return StringUtils.EMPTY;
+ }
+
// 使用 S3 官方支持的 responseCacheControl 参数,强制浏览器和代理不缓存
GetObjectRequest.Builder getObjectRequestBuilder = GetObjectRequest.builder()
.bucket(config.getBucket())
diff --git a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileService.java b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileService.java
index 21bfc094..d6d2f26d 100644
--- a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileService.java
+++ b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileService.java
@@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.infra.service.businessfile;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFilePageReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileSaveReqVO;
+import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileWithUrlRespVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.businessfile.BusinessFileDO;
import jakarta.validation.Valid;
@@ -60,6 +61,8 @@ public interface BusinessFileService {
*/
PageResult getBusinessFilePage(BusinessFilePageReqVO pageReqVO);
+ PageResult getBusinessFilePageWithUrl(BusinessFilePageReqVO pageReqVO);
+
List batchCreateBusinessFile(List createReqVOList);
/**
diff --git a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileServiceImpl.java b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileServiceImpl.java
index 1098f0d7..fd1b0031 100644
--- a/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileServiceImpl.java
+++ b/yudao-module-infra/yudao-module-infra-server/src/main/java/cn/iocoder/yudao/module/infra/service/businessfile/BusinessFileServiceImpl.java
@@ -6,14 +6,16 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFilePageReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileSaveReqVO;
+import cn.iocoder.yudao.module.infra.controller.admin.businessfile.vo.BusinessFileWithUrlRespVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.businessfile.BusinessFileDO;
+import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileDO;
import cn.iocoder.yudao.module.infra.dal.mysql.businessfile.BusinessFileMapper;
+import cn.iocoder.yudao.module.infra.service.file.FileService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.BUSINESS_FILE_NOT_EXISTS;
@@ -30,6 +32,9 @@ public class BusinessFileServiceImpl implements BusinessFileService {
@Resource
private BusinessFileMapper businessFileMapper;
+ @Resource
+ private FileService fileService;
+
@Override
public Long createBusinessFile(BusinessFileSaveReqVO createReqVO) {
// 插入
@@ -87,6 +92,43 @@ public class BusinessFileServiceImpl implements BusinessFileService {
return businessFileMapper.selectPage(pageReqVO);
}
+ @Override
+ public PageResult getBusinessFilePageWithUrl(BusinessFilePageReqVO pageReqVO) {
+ PageResult pageResult = getBusinessFilePage(pageReqVO);
+ PageResult result = BeanUtils.toBean(pageResult, BusinessFileWithUrlRespVO.class);
+
+ // 批量获取文件信息并设置URL
+ List fileIds = result.getList().stream()
+ .map(BusinessFileWithUrlRespVO::getFileId)
+ .filter(Objects::nonNull)
+ .distinct()
+ .toList();
+
+ // 批量查询文件信息
+ Map fileMap = new HashMap<>();
+ for (Long fileId : fileIds) {
+ FileDO fileDO = fileService.getActiveFileById(fileId);
+ if (fileDO != null) {
+ fileMap.put(fileId, fileDO);
+ }
+ }
+
+ // 设置文件相关信息
+ for (BusinessFileWithUrlRespVO vo : result.getList()) {
+ if (vo.getFileId() != null) {
+ FileDO fileDO = fileMap.get(vo.getFileId());
+ if (fileDO != null) {
+ vo.setFilePath(fileDO.getPath());
+ vo.setFileUrl(fileDO.getUrl());
+ vo.setIsEncrypted(fileDO.getIsEncrypted());
+ vo.setFileType(fileDO.getType());
+ vo.setFileSize(fileDO.getSize());
+ }
+ }
+ }
+ return result;
+ }
+
@Override
public List batchCreateBusinessFile(List createReqVOList) {
List businessFileList = BeanUtils.toBean(createReqVOList, BusinessFileDO.class);