From bc7678e6d564b9696fbd1eddebf1584522ad7440 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Mon, 13 Oct 2025 11:08:47 +0800
Subject: [PATCH] minio集成到公共模块
---
ard-common/src/main/java/com/ard/common/config/OssConfiguration.java | 129 ++++++++++++
ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineFileServiceImpl.java | 2
ard-admin/src/main/java/com/ard/web/controller/common/CommonController.java | 58 +++++
ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AliyunOssServiceImpl.java | 2
ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceFirmwareServiceImpl.java | 2
ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssAspectHandler.java | 2
ard-work/src/main/java/com/ard/work/service/impl/KmzFileServiceImpl.java | 13
ard-common/src/main/java/com/ard/common/utils/file/MinioUtil.java | 15
ard-admin/src/main/resources/application.yml | 5
ard-common/pom.xml | 11 +
ard-common/src/main/java/com/ard/common/utils/file/FileUploadUtils.java | 180 ++++++++++-------
ard-sample/src/main/java/com/ard/sample/manage/service/impl/LogsFileServiceImpl.java | 2
ard-admin/src/main/java/com/ard/web/core/config/SwaggerConfig.java | 20 +
ard-work/pom.xml | 6
/dev/null | 44 ----
ard-common/src/main/java/com/ard/common/core/domain/entity/MinioUploadResult.java | 28 ++
ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/MinIOServiceImpl.java | 2
ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AmazonS3ServiceImpl.java | 2
ard-sample/src/main/java/com/ard/sample/storage/service/impl/StorageServiceImpl.java | 2
ard-common/src/main/java/com/ard/common/utils/file/MimeTypeUtils.java | 4
ard-work/src/main/java/com/ard/work/component/netty/handler/ClientHandler.java | 2
ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java | 2
ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssServiceContext.java | 2
ard-admin/src/main/resources/application-prod.yml | 11
24 files changed, 377 insertions(+), 169 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/common/CommonController.java b/ard-admin/src/main/java/com/ard/web/controller/common/CommonController.java
index 0b38fdd..d8fd6fe 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/common/CommonController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/common/CommonController.java
@@ -4,14 +4,16 @@
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+
+import com.ard.common.core.domain.entity.MinioUploadResult;
+import com.ard.work.domain.entity.MinioSysFile;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import com.ard.common.config.UavConfig;
import com.ard.common.constant.Constants;
@@ -21,11 +23,14 @@
import com.ard.common.utils.file.FileUtils;
import com.ard.framework.config.ServerConfig;
+import static com.ard.common.utils.file.MinioUtil.uploadFile;
+
/**
* 通用请求处理
*
* @author ruoyi
*/
+@Api(tags = "通用请求处理")
@RestController
@RequestMapping("/common")
public class CommonController
@@ -160,4 +165,49 @@
log.error("下载文件失败", e);
}
}
+
+
+ /**
+ * minio上传文件
+ */
+ @ApiOperation("minio文件上传")
+ @PostMapping("/uploadMinio")
+ public AjaxResult uploadFileMinio(@RequestPart MultipartFile file) {
+ try
+ {
+ // 上传并返回新文件名称
+ String url = FileUploadUtils.uploadMinio(file);
+ MinioUploadResult minioUploadResult = MinioUploadResult.builder()
+ .url(url)
+ .newFileName(FileUtils.getName(url))
+ .originalFilename(file.getOriginalFilename())
+ .build();
+ return AjaxResult.success(minioUploadResult);
+ }
+ catch (Exception e)
+ {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
+ /**
+ * minio文件上传-指定桶
+ */
+ @ApiOperation("minio文件上传-指定桶")
+ @PostMapping("/uploadMinio/{bucketName}")
+ public AjaxResult upload(@RequestPart("file")MultipartFile file,
+ @PathVariable String bucketName) {
+ try {
+ // 上传并返回访问地址
+ String url = FileUploadUtils.uploadMinio(file,bucketName);
+ MinioUploadResult minioUploadResult = MinioUploadResult.builder()
+ .url(url)
+ .newFileName(FileUtils.getName(url))
+ .originalFilename(file.getOriginalFilename())
+ .build();
+ return AjaxResult.success(minioUploadResult);
+ } catch (Exception e) {
+ return AjaxResult.error(e.getMessage());
+ }
+ }
+
}
diff --git a/ard-admin/src/main/java/com/ard/web/controller/data/MinioFileController.java b/ard-admin/src/main/java/com/ard/web/controller/data/MinioFileController.java
deleted file mode 100644
index 4671d0d..0000000
--- a/ard-admin/src/main/java/com/ard/web/controller/data/MinioFileController.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.ard.web.controller.data;
-
-import com.ard.common.utils.file.FileUtils;
-import com.ard.work.domain.entity.MinioSysFile;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import static com.ard.work.component.minio.utils.MinioUtil.uploadFile;
-
-/**
- * 文件请求处理
- *
- * @author ard
- */
-@Api(tags = "MinIo文件上传")
-@RestController
-@RequestMapping("/minoFile")
-public class MinioFileController {
- private static final Logger log = LoggerFactory.getLogger(MinioFileController.class);
-
- /**
- * 文件上传-指定桶名称
- */
- @ApiOperation("文件上传-指定桶名称")
- @PostMapping("upload/{bucketName}/{fileName}")
- public MinioSysFile upload(@RequestPart("file")MultipartFile file,
- @PathVariable String bucketName,
- @PathVariable String fileName) {
- try {
- // 上传并返回访问地址
- String url = uploadFile(bucketName,fileName,file);
- MinioSysFile minioSysFile = new MinioSysFile();
- minioSysFile.setName(FileUtils.getName(url));
- minioSysFile.setUrl(url);
- return minioSysFile;
- } catch (Exception e) {
- log.error("上传文件失败", e);
- //return R.fail(e.getMessage());
- return null;
- }
- }
-
-}
diff --git a/ard-admin/src/main/java/com/ard/web/core/config/SwaggerConfig.java b/ard-admin/src/main/java/com/ard/web/core/config/SwaggerConfig.java
index 9066a3c..ec9e1f9 100644
--- a/ard-admin/src/main/java/com/ard/web/core/config/SwaggerConfig.java
+++ b/ard-admin/src/main/java/com/ard/web/core/config/SwaggerConfig.java
@@ -148,7 +148,25 @@
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
}
-
+ @Bean
+ public Docket commonApi() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .enable(true)
+ .groupName("公共请求接口") // 分组名
+ .apiInfo(apiInfo("公共请求管理接口"))
+ .select()
+ // 扫描指定包下,但只扫描加了 @ApiOperation 注解的方法
+ .apis(requestHandler ->
+ requestHandler.declaringClass().getPackage().getName().startsWith("com.ard.web.controller" +
+ ".common") &&
+ requestHandler.isAnnotatedWith(io.swagger.annotations.ApiOperation.class)
+ )
+ .paths(PathSelectors.any())
+ .build()
+ /* 设置安全模式,swagger可以设置访问token */
+ .securitySchemes(securitySchemes())
+ .securityContexts(securityContexts());
+ }
/**
* 安全模式,这里指定token通过Authorization头请求头传递
*/
diff --git a/ard-admin/src/main/resources/application-prod.yml b/ard-admin/src/main/resources/application-prod.yml
index 24a7827..73cc8d8 100644
--- a/ard-admin/src/main/resources/application-prod.yml
+++ b/ard-admin/src/main/resources/application-prod.yml
@@ -2,10 +2,12 @@
server:
# 服务器的HTTP端口,默认为8080
port: 8080
+
# token配置
token:
# 是否允许账户多终端同时登录(true允许 false不允许)
soloLogin: true
+
# 日志配置
logging:
level:
@@ -23,14 +25,6 @@
enable: false
username: admin
password: ardkj12345
-# MyBatis Plus配置
-mybatis-plus:
- # 搜索指定包别名
- typeAliasesPackage: com.ard.**.domain
- # 配置mapper的扫描,找到所有的mapper.xml映射文件
- mapperLocations: classpath*:mapper/**/*Mapper.xml
- # 加载全局的配置文件
- configLocation: classpath:mybatis/mybatis-config.xml
# 地图资源配置
geoserver:
@@ -64,6 +58,7 @@
license: khjd7FzUTzJgaArNv97XdA2nKQtYfESOvBHLqjC6MpvPqxCfuQ82nOlTgzoiLp7UoZujARopN2A1ctPFaJ8oHiHQrn3IRV4wqN3hdSM40xXj02YVvTWQBT54WS8Ks+E8Zatp3gk2T0+7cM5a5a3mWzxLMv7CNqw2z9pFBoOBdpY=
host: 192.168.1.15
port: 123
+
#流媒体
mediamtx:
apiHost: 192.168.1.3
diff --git a/ard-admin/src/main/resources/application.yml b/ard-admin/src/main/resources/application.yml
index d55c1bd..cd292d3 100644
--- a/ard-admin/src/main/resources/application.yml
+++ b/ard-admin/src/main/resources/application.yml
@@ -6,8 +6,8 @@
version: 3.8.8
# 版权年份
copyrightYear: 2024
- # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
- profile: D:/ruoyi/uploadPath
+ # 文件路径 示例( Windows配置D:/ard/uploadPath,Linux配置 /home/ard/uploadPath)
+ profile: /home/ard/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数字计算 char 字符验证
@@ -148,7 +148,6 @@
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
-
#健康监控
boot:
admin:
diff --git a/ard-common/pom.xml b/ard-common/pom.xml
index d02e140..cdf374a 100644
--- a/ard-common/pom.xml
+++ b/ard-common/pom.xml
@@ -125,6 +125,17 @@
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
+
+ <!-- Minio 文件存储 -->
+ <dependency>
+ <groupId>io.minio</groupId>
+ <artifactId>minio</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git a/ard-common/src/main/java/com/ard/common/config/OssConfiguration.java b/ard-common/src/main/java/com/ard/common/config/OssConfiguration.java
new file mode 100644
index 0000000..7e62abc
--- /dev/null
+++ b/ard-common/src/main/java/com/ard/common/config/OssConfiguration.java
@@ -0,0 +1,129 @@
+package com.ard.common.config;
+
+import io.minio.MinioClient;
+import okhttp3.OkHttpClient;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+
+/**
+ * @author sean
+ * @version 0.2
+ * @date 2021/12/9
+ */
+@Component
+@ConfigurationProperties(prefix = "oss")
+public class OssConfiguration {
+
+ /**
+ * @see com.ard.sample.component.oss.model.enums.OssTypeEnum
+ */
+ public static String provider;
+
+ /**
+ * Whether to use the object storage service.
+ */
+ public static boolean enable;
+
+ /**
+ * The protocol needs to be included at the beginning of the address.
+ */
+ public static String endpoint;
+
+ public static String accessKey;
+
+ public static String secretKey;
+
+ public static String region;
+
+ public static Long expire;
+
+ public static String roleSessionName;
+
+ public static String roleArn;
+
+ public static String bucket;
+
+ public static String objectDirPrefix;
+
+ public void setProvider(String provider) {
+ OssConfiguration.provider = provider;
+ }
+
+ public void setEnable(boolean enable) {
+ OssConfiguration.enable = enable;
+ }
+
+ public void setEndpoint(String endpoint) {
+ OssConfiguration.endpoint = endpoint;
+ }
+
+ public void setAccessKey(String accessKey) {
+ OssConfiguration.accessKey = accessKey;
+ }
+
+ public void setSecretKey(String secretKey) {
+ OssConfiguration.secretKey = secretKey;
+ }
+
+ public void setRegion(String region) {
+ OssConfiguration.region = region;
+ }
+
+ public void setExpire(Long expire) {
+ OssConfiguration.expire = expire;
+ }
+
+ public void setRoleSessionName(String roleSessionName) {
+ OssConfiguration.roleSessionName = roleSessionName;
+ }
+
+ public void setRoleArn(String roleArn) {
+ OssConfiguration.roleArn = roleArn;
+ }
+
+ public void setBucket(String bucket) {
+ OssConfiguration.bucket = bucket;
+ }
+
+ public void setObjectDirPrefix(String objectDirPrefix) {
+ OssConfiguration.objectDirPrefix = objectDirPrefix;
+ }
+
+
+ @Bean
+ public MinioClient getMinioClient() throws KeyManagementException, NoSuchAlgorithmException {// 忽略 SSL 证书校验(仅开发环境)
+ // 忽略 SSL 验证
+ TrustManager[] trustAllCerts = new TrustManager[]{
+ new X509TrustManager() {
+ @Override public void checkClientTrusted(X509Certificate[] chain, String authType) {}
+ @Override public void checkServerTrusted(X509Certificate[] chain, String authType) {}
+ @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; }
+ }
+ };
+
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
+
+ OkHttpClient okHttpClient = new OkHttpClient.Builder()
+ .sslSocketFactory(sslContext.getSocketFactory(), (X509TrustManager)trustAllCerts[0])
+ .hostnameVerifier((hostname, session) -> true)
+ .build();
+
+ return MinioClient.builder()
+ .endpoint(endpoint)
+ .credentials(accessKey, secretKey)
+ .httpClient(okHttpClient)
+ .build();
+ }
+}
+
+
+
diff --git a/ard-common/src/main/java/com/ard/common/core/domain/entity/MinioUploadResult.java b/ard-common/src/main/java/com/ard/common/core/domain/entity/MinioUploadResult.java
new file mode 100644
index 0000000..a21a958
--- /dev/null
+++ b/ard-common/src/main/java/com/ard/common/core/domain/entity/MinioUploadResult.java
@@ -0,0 +1,28 @@
+package com.ard.common.core.domain.entity;
+
+import com.ard.common.annotation.DataScope;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * Description: Minio上传结果
+ * Author: lsy
+ * Date: 2025年10月13日10:42
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class MinioUploadResult {
+
+ /** 新文件名(上传后保存名) */
+ private String newFileName;
+
+ /** 文件完整访问 URL */
+ private String url;
+
+ /** 上传前原始文件名 */
+ private String originalFilename;
+}
diff --git a/ard-common/src/main/java/com/ard/common/utils/file/FileUploadUtils.java b/ard-common/src/main/java/com/ard/common/utils/file/FileUploadUtils.java
index f5b7234..1a0727d 100644
--- a/ard-common/src/main/java/com/ard/common/utils/file/FileUploadUtils.java
+++ b/ard-common/src/main/java/com/ard/common/utils/file/FileUploadUtils.java
@@ -4,8 +4,8 @@
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Objects;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.web.multipart.MultipartFile;
+
+import com.ard.common.config.OssConfiguration;
import com.ard.common.config.UavConfig;
import com.ard.common.constant.Constants;
import com.ard.common.exception.file.FileNameLengthLimitExceededException;
@@ -14,18 +14,19 @@
import com.ard.common.utils.DateUtils;
import com.ard.common.utils.StringUtils;
import com.ard.common.utils.uuid.Seq;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.web.multipart.MultipartFile;
/**
* 文件上传工具类
*
* @author ruoyi
*/
-public class FileUploadUtils
-{
+public class FileUploadUtils {
/**
* 默认大小 50M
*/
- public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024L;
+ public static final long DEFAULT_MAX_SIZE = 50 * 1024 * 1024;
/**
* 默认的文件名最大长度 100
@@ -33,18 +34,25 @@
public static final int DEFAULT_FILE_NAME_LENGTH = 100;
/**
- * 默认上传的地址
+ * 本地默认上传的地址
*/
private static String defaultBaseDir = UavConfig.getProfile();
- public static void setDefaultBaseDir(String defaultBaseDir)
- {
+ /**
+ * Minio默认上传的地址
+ */
+ private static String bucketName = OssConfiguration.bucket;
+
+ public static void setDefaultBaseDir(String defaultBaseDir) {
FileUploadUtils.defaultBaseDir = defaultBaseDir;
}
- public static String getDefaultBaseDir()
- {
+ public static String getDefaultBaseDir() {
return defaultBaseDir;
+ }
+
+ public static String getBucketName() {
+ return bucketName;
}
/**
@@ -54,14 +62,10 @@
* @return 文件名称
* @throws Exception
*/
- public static final String upload(MultipartFile file) throws IOException
- {
- try
- {
+ public static final String upload(MultipartFile file) throws IOException {
+ try {
return upload(getDefaultBaseDir(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
throw new IOException(e.getMessage(), e);
}
}
@@ -70,18 +74,14 @@
* 根据文件路径上传
*
* @param baseDir 相对应用的基目录
- * @param file 上传的文件
+ * @param file 上传的文件
* @return 文件名称
* @throws IOException
*/
- public static final String upload(String baseDir, MultipartFile file) throws IOException
- {
- try
- {
+ public static final String upload(String baseDir, MultipartFile file) throws IOException {
+ try {
return upload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
throw new IOException(e.getMessage(), e);
}
}
@@ -89,22 +89,20 @@
/**
* 文件上传
*
- * @param baseDir 相对应用的基目录
- * @param file 上传的文件
+ * @param baseDir 相对应用的基目录
+ * @param file 上传的文件
* @param allowedExtension 上传文件类型
* @return 返回上传成功的文件名
- * @throws FileSizeLimitExceededException 如果超出最大大小
+ * @throws FileSizeLimitExceededException 如果超出最大大小
* @throws FileNameLengthLimitExceededException 文件名太长
- * @throws IOException 比如读写文件出错时
- * @throws InvalidExtensionException 文件校验异常
+ * @throws IOException 比如读写文件出错时
+ * @throws InvalidExtensionException 文件校验异常
*/
public static final String upload(String baseDir, MultipartFile file, String[] allowedExtension)
throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
- InvalidExtensionException
- {
+ InvalidExtensionException {
int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
- if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
- {
+ if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {
throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
}
@@ -118,30 +116,73 @@
}
/**
- * 编码文件名
+ * 以默认BucketName配置上传到Minio服务器
+ *
+ * @param file 上传的文件
+ * @return 文件名称
+ * @throws Exception
*/
- public static final String extractFilename(MultipartFile file)
- {
- return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
- FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
+ public static final String uploadMinio(MultipartFile file) throws IOException {
+ try {
+ return uploadMinino(getBucketName(), file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
+ } catch (Exception e) {
+ throw new IOException(e.getMessage(), e);
+ }
}
- public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
- {
+ /**
+ * 自定义bucketName配置上传到Minio服务器
+ *
+ * @param file 上传的文件
+ * @return 文件名称
+ * @throws Exception
+ */
+ public static final String uploadMinio(MultipartFile file, String bucketName) throws IOException {
+ try {
+ return uploadMinino(bucketName, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
+ } catch (Exception e) {
+ throw new IOException(e.getMessage(), e);
+ }
+ }
+
+ private static String uploadMinino(String bucketName, MultipartFile file, String[] allowedExtension)
+ throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
+ InvalidExtensionException {
+ int fileNamelength = file.getOriginalFilename().length();
+ if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) {
+ throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
+ }
+ assertAllowed(file, allowedExtension);
+ try {
+ String fileName = extractFilename(file);
+ String pathFileName = MinioUtil.uploadFile(bucketName, fileName, file);
+ return pathFileName;
+ } catch (Exception e) {
+ throw new IOException(e.getMessage(), e);
+ }
+ }
+
+ /**
+ * 编码文件名
+ */
+ public static final String extractFilename(MultipartFile file) {
+ return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
+ FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType),
+ getExtension(file));
+ }
+
+ public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
File desc = new File(uploadDir + File.separator + fileName);
- if (!desc.exists())
- {
- if (!desc.getParentFile().exists())
- {
+ if (!desc.exists()) {
+ if (!desc.getParentFile().exists()) {
desc.getParentFile().mkdirs();
}
}
return desc;
}
- public static final String getPathFileName(String uploadDir, String fileName) throws IOException
- {
+ public static final String getPathFileName(String uploadDir, String fileName) throws IOException {
int dirLastIndex = UavConfig.getProfile().length() + 1;
String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
@@ -156,40 +197,28 @@
* @throws InvalidExtensionException
*/
public static final void assertAllowed(MultipartFile file, String[] allowedExtension)
- throws FileSizeLimitExceededException, InvalidExtensionException
- {
+ throws FileSizeLimitExceededException, InvalidExtensionException {
long size = file.getSize();
- if (size > DEFAULT_MAX_SIZE)
- {
+ if (size > DEFAULT_MAX_SIZE) {
throw new FileSizeLimitExceededException(DEFAULT_MAX_SIZE / 1024 / 1024);
}
String fileName = file.getOriginalFilename();
String extension = getExtension(file);
- if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
- {
- if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
- {
+ if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension)) {
+ if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION) {
throw new InvalidExtensionException.InvalidImageExtensionException(allowedExtension, extension,
fileName);
- }
- else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION)
- {
+ } else if (allowedExtension == MimeTypeUtils.FLASH_EXTENSION) {
throw new InvalidExtensionException.InvalidFlashExtensionException(allowedExtension, extension,
fileName);
- }
- else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION)
- {
+ } else if (allowedExtension == MimeTypeUtils.MEDIA_EXTENSION) {
throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
fileName);
- }
- else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
- {
+ } else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION) {
throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
fileName);
- }
- else
- {
+ } else {
throw new InvalidExtensionException(allowedExtension, extension, fileName);
}
}
@@ -202,12 +231,9 @@
* @param allowedExtension
* @return
*/
- public static final boolean isAllowedExtension(String extension, String[] allowedExtension)
- {
- for (String str : allowedExtension)
- {
- if (str.equalsIgnoreCase(extension))
- {
+ public static final boolean isAllowedExtension(String extension, String[] allowedExtension) {
+ for (String str : allowedExtension) {
+ if (str.equalsIgnoreCase(extension)) {
return true;
}
}
@@ -220,13 +246,11 @@
* @param file 表单文件
* @return 后缀名
*/
- public static final String getExtension(MultipartFile file)
- {
+ public static final String getExtension(MultipartFile file) {
String extension = FilenameUtils.getExtension(file.getOriginalFilename());
- if (StringUtils.isEmpty(extension))
- {
+ if (StringUtils.isEmpty(extension)) {
extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
}
return extension;
}
-}
+}
\ No newline at end of file
diff --git a/ard-common/src/main/java/com/ard/common/utils/file/MimeTypeUtils.java b/ard-common/src/main/java/com/ard/common/utils/file/MimeTypeUtils.java
index 9e65285..7445f51 100644
--- a/ard-common/src/main/java/com/ard/common/utils/file/MimeTypeUtils.java
+++ b/ard-common/src/main/java/com/ard/common/utils/file/MimeTypeUtils.java
@@ -36,7 +36,9 @@
// 视频格式
"mp4", "avi", "rmvb",
// pdf
- "pdf" };
+ "pdf",
+ // kmz
+ "kmz"};
public static String getExtension(String prefix)
{
diff --git a/ard-work/src/main/java/com/ard/work/component/minio/utils/MinioUtil.java b/ard-common/src/main/java/com/ard/common/utils/file/MinioUtil.java
similarity index 97%
rename from ard-work/src/main/java/com/ard/work/component/minio/utils/MinioUtil.java
rename to ard-common/src/main/java/com/ard/common/utils/file/MinioUtil.java
index 35744eb..9c2aa55 100644
--- a/ard-work/src/main/java/com/ard/work/component/minio/utils/MinioUtil.java
+++ b/ard-common/src/main/java/com/ard/common/utils/file/MinioUtil.java
@@ -1,22 +1,26 @@
-package com.ard.work.component.minio.utils;
+package com.ard.common.utils.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-
import com.ard.common.utils.ServletUtils;
import com.ard.common.utils.spring.SpringUtils;
-import io.minio.*;
+import io.minio.SetBucketPolicyArgs;
import org.springframework.web.multipart.MultipartFile;
+import io.minio.GetPresignedObjectUrlArgs;
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
import io.minio.http.Method;
/**
* Minio 文件存储工具类
- *
+ *
* @author ruoyi
*/
-public class MinioUtil {
+public class MinioUtil
+{
+
/**
* 判断桶是否存在
*
@@ -214,5 +218,4 @@
throw new IOException(e.getMessage(), e);
}
}
-
}
diff --git a/ard-sample/src/main/java/com/ard/sample/component/oss/model/OssConfiguration.java b/ard-sample/src/main/java/com/ard/sample/component/oss/model/OssConfiguration.java
deleted file mode 100644
index 72a047b..0000000
--- a/ard-sample/src/main/java/com/ard/sample/component/oss/model/OssConfiguration.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.ard.sample.component.oss.model;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * @author sean
- * @version 0.2
- * @date 2021/12/9
- */
-@ConfigurationProperties(prefix = "oss")
-@Component
-public class OssConfiguration {
-
- /**
- * @see com.ard.sample.component.oss.model.enums.OssTypeEnum
- */
- public static String provider;
-
- /**
- * Whether to use the object storage service.
- */
- public static boolean enable;
-
- /**
- * The protocol needs to be included at the beginning of the address.
- */
- public static String endpoint;
-
- public static String accessKey;
-
- public static String secretKey;
-
- public static String region;
-
- public static Long expire;
-
- public static String roleSessionName;
-
- public static String roleArn;
-
- public static String bucket;
-
- public static String objectDirPrefix;
-
- public void setProvider(String provider) {
- OssConfiguration.provider = provider;
- }
-
- public void setEnable(boolean enable) {
- OssConfiguration.enable = enable;
- }
-
- public void setEndpoint(String endpoint) {
- OssConfiguration.endpoint = endpoint;
- }
-
- public void setAccessKey(String accessKey) {
- OssConfiguration.accessKey = accessKey;
- }
-
- public void setSecretKey(String secretKey) {
- OssConfiguration.secretKey = secretKey;
- }
-
- public void setRegion(String region) {
- OssConfiguration.region = region;
- }
-
- public void setExpire(Long expire) {
- OssConfiguration.expire = expire;
- }
-
- public void setRoleSessionName(String roleSessionName) {
- OssConfiguration.roleSessionName = roleSessionName;
- }
-
- public void setRoleArn(String roleArn) {
- OssConfiguration.roleArn = roleArn;
- }
-
- public void setBucket(String bucket) {
- OssConfiguration.bucket = bucket;
- }
-
- public void setObjectDirPrefix(String objectDirPrefix) {
- OssConfiguration.objectDirPrefix = objectDirPrefix;
- }
-}
-
-
-
diff --git a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AliyunOssServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AliyunOssServiceImpl.java
index f6e2d14..1c52b51 100644
--- a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AliyunOssServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AliyunOssServiceImpl.java
@@ -12,7 +12,7 @@
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.aliyuncs.sts.model.v20150401.AssumeRoleResponse;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.model.enums.OssTypeEnum;
import com.ard.sample.component.oss.service.IOssService;
import com.ard.sample.media.model.CredentialsDTO;
diff --git a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AmazonS3ServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AmazonS3ServiceImpl.java
index 4e587d1..c68d201 100644
--- a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AmazonS3ServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/AmazonS3ServiceImpl.java
@@ -12,7 +12,7 @@
import com.amazonaws.services.securitytoken.model.AssumeRoleResult;
import com.amazonaws.services.securitytoken.model.Credentials;
import com.ard.sample.component.AuthInterceptor;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.model.enums.OssTypeEnum;
import com.ard.sample.component.oss.service.IOssService;
import com.ard.sample.media.model.CredentialsDTO;
diff --git a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/MinIOServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/MinIOServiceImpl.java
index ca85fb6..901ef70 100644
--- a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/MinIOServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/MinIOServiceImpl.java
@@ -1,6 +1,6 @@
package com.ard.sample.component.oss.service.impl;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.model.enums.OssTypeEnum;
import com.ard.sample.component.oss.service.IOssService;
import com.ard.sample.media.model.CredentialsDTO;
diff --git a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssAspectHandler.java b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssAspectHandler.java
index 2a47422..44afd4b 100644
--- a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssAspectHandler.java
+++ b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssAspectHandler.java
@@ -1,6 +1,6 @@
package com.ard.sample.component.oss.service.impl;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssServiceContext.java b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssServiceContext.java
index 785b8a0..ecc6fd6 100644
--- a/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssServiceContext.java
+++ b/ard-sample/src/main/java/com/ard/sample/component/oss/service/impl/OssServiceContext.java
@@ -1,6 +1,6 @@
package com.ard.sample.component.oss.service.impl;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.model.enums.OssTypeEnum;
import com.ard.sample.component.oss.service.IOssService;
import com.ard.sample.media.model.CredentialsDTO;
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceFirmwareServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceFirmwareServiceImpl.java
index 6af1dc1..189c3fb 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceFirmwareServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/DeviceFirmwareServiceImpl.java
@@ -8,7 +8,7 @@
import com.ard.sample.common.model.ResponseResult;
import com.ard.sample.component.mqtt.model.*;
import com.ard.sample.component.mqtt.service.impl.MessageSenderServiceImpl;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.service.impl.OssServiceContext;
import com.ard.common.core.redis.RedisConst;
import com.ard.common.core.redis.RedisOpsUtils;
diff --git a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LogsFileServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LogsFileServiceImpl.java
index a857608..54afa8d 100644
--- a/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LogsFileServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/manage/service/impl/LogsFileServiceImpl.java
@@ -3,7 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ard.sample.component.mqtt.model.EventsResultStatusEnum;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.service.impl.OssServiceContext;
import com.ard.sample.manage.mapper.ILogsFileMapper;
import com.ard.sample.manage.model.dto.LogsFileDTO;
diff --git a/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java
index 82b538e..d884feb 100644
--- a/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/media/service/impl/FileServiceImpl.java
@@ -4,7 +4,7 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ard.sample.common.model.Pagination;
import com.ard.sample.common.model.PaginationData;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.service.impl.OssServiceContext;
import com.ard.sample.manage.model.dto.DeviceDictionaryDTO;
import com.ard.sample.manage.model.enums.DeviceDomainEnum;
diff --git a/ard-sample/src/main/java/com/ard/sample/storage/service/impl/StorageServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/storage/service/impl/StorageServiceImpl.java
index a449570..3054078 100644
--- a/ard-sample/src/main/java/com/ard/sample/storage/service/impl/StorageServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/storage/service/impl/StorageServiceImpl.java
@@ -2,7 +2,7 @@
import com.ard.sample.component.mqtt.model.*;
import com.ard.sample.component.mqtt.service.IMessageSenderService;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.service.impl.OssServiceContext;
import com.ard.sample.media.model.StsCredentialsDTO;
import com.ard.sample.storage.service.IStorageService;
diff --git a/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineFileServiceImpl.java b/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineFileServiceImpl.java
index 8d70191..aa753df 100644
--- a/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineFileServiceImpl.java
+++ b/ard-sample/src/main/java/com/ard/sample/wayline/service/impl/WaylineFileServiceImpl.java
@@ -7,7 +7,7 @@
import com.ard.common.core.page.TableSupport;
import com.ard.sample.common.model.Pagination;
import com.ard.sample.common.model.PaginationData;
-import com.ard.sample.component.oss.model.OssConfiguration;
+import com.ard.common.config.OssConfiguration;
import com.ard.sample.component.oss.service.impl.OssServiceContext;
import com.ard.sample.manage.model.enums.DeviceDomainEnum;
import com.ard.sample.wayline.mapper.IWaylineFileMapper;
diff --git a/ard-work/pom.xml b/ard-work/pom.xml
index 6d3b0ce..0a3c6c7 100644
--- a/ard-work/pom.xml
+++ b/ard-work/pom.xml
@@ -86,11 +86,7 @@
<artifactId>gt-epsg-hsql</artifactId>
<version>28.2</version>
</dependency>
- <!--minio-->
- <dependency>
- <groupId>io.minio</groupId>
- <artifactId>minio</artifactId>
- </dependency>
+
<!--DOM4j-->
<dependency>
<groupId>org.dom4j</groupId>
diff --git a/ard-work/src/main/java/com/ard/work/component/minio/config/MinioConfig.java b/ard-work/src/main/java/com/ard/work/component/minio/config/MinioConfig.java
deleted file mode 100644
index c7c00b9..0000000
--- a/ard-work/src/main/java/com/ard/work/component/minio/config/MinioConfig.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.ard.work.component.minio.config;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import io.minio.MinioClient;
-
-/**
- * Minio 配置信息
- *
- * @author ruoyi
- */
-@Data
-@Configuration
-@ConfigurationProperties(prefix = "minio")
-public class MinioConfig {
-
- /**
- * 服务地址
- */
- private String url;
-
- /**
- * 用户名
- */
- private String accessKey;
-
- /**
- * 密码
- */
- private String secretKey;
-
- /**
- * 存储桶名称
- */
- private String bucketName;
-
-
- @Bean
- public MinioClient getMinioClient() {
- return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
- }
-}
diff --git a/ard-work/src/main/java/com/ard/work/component/netty/handler/ClientHandler.java b/ard-work/src/main/java/com/ard/work/component/netty/handler/ClientHandler.java
index 88c39bd..c3eab84 100644
--- a/ard-work/src/main/java/com/ard/work/component/netty/handler/ClientHandler.java
+++ b/ard-work/src/main/java/com/ard/work/component/netty/handler/ClientHandler.java
@@ -47,7 +47,7 @@
String host = remoteAddress.getHostString();
int port = remoteAddress.getPort();
- log.info("与天宇服务器 [{}] 连接成功 ({}:{})", serverId, host, port);
+ log.info("与边缘服务器 [{}] 连接成功 ({}:{})", serverId, host, port);
// 针对当前连接的服务器进行注册
tyService.registerMessage(serverId);
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/KmzFileServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/KmzFileServiceImpl.java
index db67fd3..b56251f 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/KmzFileServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/KmzFileServiceImpl.java
@@ -1,7 +1,7 @@
package com.ard.work.service.impl;
-import com.ard.work.component.minio.config.MinioConfig;
-import com.ard.work.component.minio.utils.MinioUtil;
+import com.ard.common.config.OssConfiguration;
+import com.ard.common.utils.file.MinioUtil;
import com.ard.work.config.WaylinePlaningConfig;
import com.ard.work.domain.dto.wayline.*;
import com.ard.work.domain.entity.UavWayline;
@@ -34,9 +34,6 @@
@Slf4j
@Transactional
public class KmzFileServiceImpl implements IKmzFileService {
-
- @Resource
- private MinioConfig minioConfig;
@Resource
private IGeoToolsService geoToolsService;
@@ -430,9 +427,9 @@
//构建记录
String objectKey = fileName;
//若已经存在,则先删除,再添加
- if (MinioUtil.exists(minioConfig.getBucketName(), objectKey))
- MinioUtil.delete(minioConfig.getBucketName(), objectKey);
- String kmzUrl = MinioUtil.uploadInputStream(minioConfig.getBucketName(), objectKey, inputStream,
+ if (MinioUtil.exists(OssConfiguration.bucket, objectKey))
+ MinioUtil.delete(OssConfiguration.bucket, objectKey);
+ String kmzUrl = MinioUtil.uploadInputStream(OssConfiguration.bucket, objectKey, inputStream,
inputStream.available(), "application/octet-stream");
// 更新航线kmz地址
UavWayline uavWayline = UavWayline.builder()
--
Gitblit v1.9.3