This commit is contained in:
ls
2024-10-12 09:52:06 +08:00
parent 76defc45b7
commit 08175e2602
6 changed files with 101 additions and 75 deletions

View File

@@ -70,6 +70,7 @@ services:
# context: ../physical-web
container_name: physical-web
image: registry.cn-shanghai.aliyuncs.com/physical/physical-web
hostname: physical-web
depends_on:
- physical-launcher
networks:

View File

@@ -13,6 +13,7 @@ import java.net.URLDecoder;
/**
* minio文件上传工具类
*
* @author: jeecg-boot
*/
@Slf4j
@@ -21,10 +22,8 @@ public class MinioUtil {
private static String minioName;
private static String minioPass;
private static String bucketName;
public static void setMinioUrl(String minioUrl) {
MinioUtil.minioUrl = minioUrl;
}
private static String minioPublicUrl;
private static MinioClient minioClient = null;
public static void setMinioName(String minioName) {
MinioUtil.minioName = minioName;
@@ -34,22 +33,33 @@ public class MinioUtil {
MinioUtil.minioPass = minioPass;
}
public static void setBucketName(String bucketName) {
MinioUtil.bucketName = bucketName;
}
public static String getMinioUrl() {
return minioUrl;
}
public static void setMinioUrl(String minioUrl) {
MinioUtil.minioUrl = minioUrl;
}
public static String getMinioPublicUrl() {
return minioPublicUrl;
}
public static void setMinioPublicUrl(String minioPublicUrl) {
MinioUtil.minioPublicUrl = minioPublicUrl;
}
public static String getBucketName() {
return bucketName;
}
private static MinioClient minioClient = null;
public static void setBucketName(String bucketName) {
MinioUtil.bucketName = bucketName;
}
/**
* 上传文件
*
* @param file
* @return
*/
@@ -64,13 +74,13 @@ public class MinioUtil {
//update-end-author:liusq date:20210809 for: 过滤上传文件类型
String newBucket = bucketName;
if(oConvertUtils.isNotEmpty(customBucket)){
if (oConvertUtils.isNotEmpty(customBucket)) {
newBucket = customBucket;
}
try {
initMinio(minioUrl, minioName,minioPass);
initMinio(minioUrl, minioName, minioPass);
// 检查存储桶是否已经存在
if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(newBucket).build())) {
if (minioClient.bucketExists(BucketExistsArgs.builder().bucket(newBucket).build())) {
log.info("Bucket already exists.");
} else {
// 创建一个名为ota的存储桶
@@ -80,28 +90,28 @@ public class MinioUtil {
InputStream stream = file.getInputStream();
// 获取文件名
String orgName = file.getOriginalFilename();
if("".equals(orgName)){
orgName=file.getName();
if ("".equals(orgName)) {
orgName = file.getName();
}
orgName = CommonUtils.getFileName(orgName);
String objectName = bizPath+"/"
+( orgName.indexOf(".")==-1
?orgName + "_" + System.currentTimeMillis()
:orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."))
);
String objectName = bizPath + "/"
+ (orgName.indexOf(".") == -1
? orgName + "_" + System.currentTimeMillis()
: orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."))
);
// 使用putObject上传一个本地文件到存储桶中。
if(objectName.startsWith(SymbolConstant.SINGLE_SLASH)){
if (objectName.startsWith(SymbolConstant.SINGLE_SLASH)) {
objectName = objectName.substring(1);
}
PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)
.bucket(newBucket)
.contentType("application/octet-stream")
.stream(stream,stream.available(),-1).build();
.stream(stream, stream.available(), -1).build();
minioClient.putObject(objectArgs);
stream.close();
fileUrl = minioUrl+newBucket+"/"+objectName;
}catch (Exception e){
fileUrl = minioPublicUrl + newBucket + "/" + objectName;
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return fileUrl;
@@ -109,21 +119,23 @@ public class MinioUtil {
/**
* 文件上传
*
* @param file
* @param bizPath
* @return
*/
public static String upload(MultipartFile file, String bizPath) throws Exception {
return upload(file,bizPath,null);
return upload(file, bizPath, null);
}
/**
* 获取文件流
*
* @param bucketName
* @param objectName
* @return
*/
public static InputStream getMinioFile(String bucketName,String objectName){
public static InputStream getMinioFile(String bucketName, String objectName) {
InputStream inputStream = null;
try {
initMinio(minioUrl, minioName, minioPass);
@@ -138,39 +150,41 @@ public class MinioUtil {
/**
* 删除文件
*
* @param bucketName
* @param objectName
* @throws Exception
*/
public static void removeObject(String bucketName, String objectName) {
try {
initMinio(minioUrl, minioName,minioPass);
initMinio(minioUrl, minioName, minioPass);
RemoveObjectArgs objectArgs = RemoveObjectArgs.builder().object(objectName)
.bucket(bucketName).build();
minioClient.removeObject(objectArgs);
}catch (Exception e){
} catch (Exception e) {
log.info("文件删除失败" + e.getMessage());
}
}
/**
* 获取文件外链
*
* @param bucketName
* @param objectName
* @param expires
* @return
*/
public static String getObjectUrl(String bucketName, String objectName, Integer expires) {
initMinio(minioUrl, minioName,minioPass);
try{
initMinio(minioUrl, minioName, minioPass);
try {
//update-begin---author:liusq Date:20220121 for获取文件外链报错提示method不能为空导致文件下载和预览失败----
GetPresignedObjectUrlArgs objectArgs = GetPresignedObjectUrlArgs.builder().object(objectName)
.bucket(bucketName)
.expiry(expires).method(Method.GET).build();
//update-begin---author:liusq Date:20220121 for获取文件外链报错提示method不能为空导致文件下载和预览失败----
String url = minioClient.getPresignedObjectUrl(objectArgs);
return URLDecoder.decode(url,"UTF-8");
}catch (Exception e){
return URLDecoder.decode(url, "UTF-8");
} catch (Exception e) {
log.info("文件路径获取失败" + e.getMessage());
}
return null;
@@ -178,12 +192,13 @@ public class MinioUtil {
/**
* 初始化客户端
*
* @param minioUrl
* @param minioName
* @param minioPass
* @return
*/
private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
private static MinioClient initMinio(String minioUrl, String minioName, String minioPass) {
if (minioClient == null) {
try {
minioClient = MinioClient.builder()
@@ -199,13 +214,14 @@ public class MinioUtil {
/**
* 上传文件到minio
*
* @param stream
* @param relativePath
* @return
*/
public static String upload(InputStream stream,String relativePath) throws Exception {
initMinio(minioUrl, minioName,minioPass);
if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
public static String upload(InputStream stream, String relativePath) throws Exception {
initMinio(minioUrl, minioName, minioPass);
if (minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
log.info("Bucket already exists.");
} else {
// 创建一个名为ota的存储桶
@@ -215,10 +231,10 @@ public class MinioUtil {
PutObjectArgs objectArgs = PutObjectArgs.builder().object(relativePath)
.bucket(bucketName)
.contentType("application/octet-stream")
.stream(stream,stream.available(),-1).build();
.stream(stream, stream.available(), -1).build();
minioClient.putObject(objectArgs);
stream.close();
return minioUrl+bucketName+"/"+relativePath;
return minioUrl + bucketName + "/" + relativePath;
}
}

View File

@@ -11,6 +11,7 @@ import org.springframework.context.annotation.Configuration;
/**
* Minio文件上传配置文件
*
* @author: jeecg-boot
*/
@Slf4j
@@ -19,6 +20,8 @@ import org.springframework.context.annotation.Configuration;
public class MinioConfig {
@Value(value = "${jeecg.minio.minio_url}")
private String minioUrl;
@Value(value = "${jeecg.minio.minio_public_url}")
private String minioPublicUrl;
@Value(value = "${jeecg.minio.minio_name}")
private String minioName;
@Value(value = "${jeecg.minio.minio_pass}")
@@ -27,17 +30,18 @@ public class MinioConfig {
private String bucketName;
@Bean
public void initMinio(){
if(!minioUrl.startsWith(CommonConstant.STR_HTTP)){
public void initMinio() {
if (!minioUrl.startsWith(CommonConstant.STR_HTTP)) {
minioUrl = "http://" + minioUrl;
}
if(!minioUrl.endsWith(SymbolConstant.SINGLE_SLASH)){
if (!minioUrl.endsWith(SymbolConstant.SINGLE_SLASH)) {
minioUrl = minioUrl.concat(SymbolConstant.SINGLE_SLASH);
}
MinioUtil.setMinioUrl(minioUrl);
MinioUtil.setMinioName(minioName);
MinioUtil.setMinioPass(minioPass);
MinioUtil.setBucketName(bucketName);
MinioUtil.setMinioPublicUrl(minioPublicUrl);
}
}

View File

@@ -14,4 +14,4 @@ EXPOSE 8080
#ADD ./src/main/resources/jeecg ./config/jeecg
ADD ./target/physical-launcher-3.7.0.jar ./
CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar physical-launcher-3.7.0.jar --spring.profiles.active=prod
CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar physical-launcher-3.7.0.jar --spring.profiles.active=test

View File

@@ -245,7 +245,7 @@ jeecg:
file-view-domain: http://fileview.jeecg.com
# minio文件上传
minio:
minio_url: http://physical-oss:9000
minio_url: http://physical-minio:9000
minio_name: root
minio_pass: 12345678
bucketName: physical

View File

@@ -12,7 +12,7 @@ server:
include-stacktrace: ALWAYS
include-message: ALWAYS
servlet:
context-path: /jeecg-boot
context-path: /physical
compression:
enabled: true
min-response-size: 1024
@@ -67,7 +67,7 @@ spring:
quartz:
job-store-type: jdbc
initialize-schema: embedded
#定时任务启动开关true-开 false-关
#定时任务开关true-开 false-关
auto-startup: true
#延迟1秒启动定时任务
startup-delay: 1s
@@ -95,10 +95,10 @@ spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
aop:
proxy-target-class: true
jpa:
open-in-view: false
aop:
proxy-target-class: true
#配置freemarker
freemarker:
# 设置模板后缀名
@@ -124,7 +124,7 @@ spring:
static-locations: classpath:/static/,classpath:/public/
autoconfigure:
exclude:
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
- com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
- org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration
datasource:
druid:
@@ -166,9 +166,9 @@ spring:
slow-sql-millis: 5000
datasource:
master:
url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
url: jdbc:mysql://physical-mysql:3306/physical-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置
#multi-datasource1:
@@ -177,11 +177,15 @@ spring:
#password: root
#driver-class-name: com.mysql.cj.jdbc.Driver
#redis 配置
redis:
database: 0
host: 192.168.1.188
port: 6379
password: ''
data:
redis:
host: physical-redis
password: ''
port: 6379
database: 0
main:
allow-bean-definition-overriding=true:
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml
@@ -189,13 +193,13 @@ mybatis-plus:
# 关闭MP3.0自带的banner
banner: false
db-config:
#主键类型
#主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
id-type: ASSIGN_ID
# 默认数据库表下划线命名
table-underline: true
configuration:
# 这个配置会将执行的sql打印出来在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 返回类型为Map,显示null对应的字段
call-setters-on-nulls: true
#jeecg专用配置
@@ -205,26 +209,26 @@ jeecg:
# 平台上线安全配置
firewall:
# 数据源安全 (开启后Online报表和图表的数据源为必填)
dataSourceSafe: false
dataSourceSafe: true
# 低代码模式dev:开发模式prod:发布模式——关闭所有在线开发配置能力)
lowCodeMode: dev
lowCodeMode: prod
# 签名密钥串(前后端要一致,正式发布请自行修改)
signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
#签名拦截接口
signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys,/sys/sendChangePwdSms,/sys/user/sendChangePhoneSms,/sys/sms,/desform/api/sendVerifyCode
# local\minio\alioss
uploadType: local
uploadType: minio
# 前端访问地址
domainUrl:
pc: http://localhost:3100
app: http://localhost:8051
path:
#文件上传根目录 设置
upload: D://opt//upFiles
upload: /opt/jeecg-boot/upload
#webapp文件路径
webapp: D://opt//webapp
webapp: /opt/jeecg-boot/webapp
shiro:
excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/bigscreen/category/**,/bigscreen/visual/**,/bigscreen/map/**,/jmreport/bigscreen2/**
excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/bigscreen/category/**,/bigscreen/visual/**,/bigscreen/map/**,/jmreport/bigscreen2/**,/api/getUserInfo,/api/sys/common/**,/sys/common/**
#阿里云oss存储和大鱼短信秘钥配置
oss:
accessKey: ??
@@ -235,20 +239,21 @@ jeecg:
# ElasticSearch 设置
elasticsearch:
cluster-name: jeecg-ES
cluster-nodes: 192.168.1.188:9200
check-enabled: false
cluster-nodes: 127.0.0.1:9200
check-enabled: true
# 在线预览文件服务器地址配置
file-view-domain: http://127.0.0.1:8012
file-view-domain: http://fileview.jeecg.com
# minio文件上传
minio:
minio_url: http://minio.jeecg.com
minio_name: ??
minio_pass: ??
bucketName: ??
minio_url: http://127.0.0.1:9000/
minio_public_url: http://58.215.212.230:8005/oss/
minio_name: root
minio_pass: 12345678
bucketName: physical
#大屏报表参数设置
jmreport:
#多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)
saasMode:
saasMode:
# 平台上线安全配置(v1.6.2+ 新增)
firewall:
# 数据源安全 (开启后不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
@@ -268,18 +273,18 @@ jeecg:
logRetentionDays: 30
#分布式锁配置
redisson:
address: 127.0.0.1:6379
address: physical-redis:6379
password:
type: STANDALONE
enabled: true
#cas单点登录
cas:
prefixUrl: http://cas.example.org:8443/cas
#Mybatis输出sql日志
logging:
level:
org.flywaydb: debug
org.jeecg.modules.system.mapper: info
#cas单点登录
cas:
prefixUrl: http://cas.example.org:8443/cas
#swagger
knife4j:
#开启增强配置
@@ -287,7 +292,7 @@ knife4j:
#开启生产环境屏蔽
production: false
basic:
enable: true
enable: false
username: jeecg
password: jeecg1314
#第三方登录