From 940b996e2d663c1599fcfc7073dc52422e255561 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 10 五月 2022 09:40:40 +0800 Subject: [PATCH] !175 [重大改动] 基于S3协议重新实现 OSS模块 支持自定义域名 * [重大改动] 基于S3协议重新实现 OSS模块 支持自定义域名 --- ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java | 6 script/sql/update/sqlserver/update-4.1-4.2.sql | 24 ++ ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java | 188 +++++++++++++++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java | 8 script/sql/ry_vue_4.X.sql | 11 script/sql/update/update-4.1-4.2.sql | 9 ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java | 56 ++-- ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java | 6 script/sql/update/postgres/update-4.1-4.2.sql | 11 + pom.xml | 12 /dev/null | 127 ----------- script/sql/postgres/postgres_ry_vue_4.X.sql | 12 ruoyi-oss/pom.xml | 30 -- script/sql/sqlserver/sqlserver_ry_vue_4.X.sql | 17 + script/sql/update/oracle/update-4.1-4.2.sql | 10 ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java | 16 - script/sql/oracle/oracle_ry_vue_4.X.sql | 12 ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java | 20 + ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java | 5 ruoyi-ui/src/views/system/oss/config.vue | 38 +-- ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java | 7 21 files changed, 366 insertions(+), 259 deletions(-) diff --git a/pom.xml b/pom.xml index b5e00a9..3992517 100644 --- a/pom.xml +++ b/pom.xml @@ -45,11 +45,7 @@ <guava.version>30.0-jre</guava.version> <!-- OSS 閰嶇疆 --> - <qiniu.version>7.9.5</qiniu.version> - <aliyun.oss.version>3.14.0</aliyun.oss.version> - <qcloud.cos.version>5.6.72</qcloud.cos.version> - <minio.version>8.3.8</minio.version> - + <aws-java-sdk-s3.version>1.12.215</aws-java-sdk-s3.version> <!-- SMS 閰嶇疆 --> <aliyun.sms.version>2.0.9</aliyun.sms.version> <tencent.sms.version>3.1.500</tencent.sms.version> @@ -197,6 +193,12 @@ </dependency> <dependency> + <groupId>com.amazonaws</groupId> + <artifactId>aws-java-sdk-s3</artifactId> + <version>${aws-java-sdk-s3.version}</version> + </dependency> + + <dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525</artifactId> <version>${aliyun.sms.version}</version> diff --git a/ruoyi-oss/pom.xml b/ruoyi-oss/pom.xml index d1ed2c9..9698650 100644 --- a/ruoyi-oss/pom.xml +++ b/ruoyi-oss/pom.xml @@ -24,34 +24,8 @@ </dependency> <dependency> - <groupId>com.qiniu</groupId> - <artifactId>qiniu-java-sdk</artifactId> - <version>${qiniu.version}</version> - </dependency> - <dependency> - <groupId>com.aliyun.oss</groupId> - <artifactId>aliyun-sdk-oss</artifactId> - <version>${aliyun.oss.version}</version> - </dependency> - <dependency> - <groupId>com.qcloud</groupId> - <artifactId>cos_api</artifactId> - <version>${qcloud.cos.version}</version> - <exclusions> - <exclusion> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-log4j12</artifactId> - </exclusion> - <exclusion> - <groupId>org.bouncycastle</groupId> - <artifactId>bcprov-jdk15on</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>io.minio</groupId> - <artifactId>minio</artifactId> - <version>${minio.version}</version> + <groupId>com.amazonaws</groupId> + <artifactId>aws-java-sdk-s3</artifactId> </dependency> </dependencies> diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java index 6c00cd8..1d1a777 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java @@ -36,6 +36,11 @@ List<Integer> SYSTEM_DATA_IDS = Arrays.asList(1, 2, 3, 4); /** + * 浜戞湇鍔″晢 + */ + String[] CLOUD_SERVICE = new String[] {"aliyun", "qcloud", "qiniu"}; + + /** * https 鐘舵�� */ String IS_HTTPS = "Y"; diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java new file mode 100644 index 0000000..6f6be8f --- /dev/null +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/core/OssClient.java @@ -0,0 +1,188 @@ +package com.ruoyi.oss.core; + +import cn.hutool.core.util.IdUtil; +import com.amazonaws.ClientConfiguration; +import com.amazonaws.Protocol; +import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.AWSCredentialsProvider; +import com.amazonaws.auth.AWSStaticCredentialsProvider; +import com.amazonaws.auth.BasicAWSCredentials; +import com.amazonaws.client.builder.AwsClientBuilder; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3Client; +import com.amazonaws.services.s3.model.CannedAccessControlList; +import com.amazonaws.services.s3.model.CreateBucketRequest; +import com.amazonaws.services.s3.model.ObjectMetadata; +import com.amazonaws.services.s3.model.PutObjectRequest; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.oss.constant.OssConstant; +import com.ruoyi.oss.entity.UploadResult; +import com.ruoyi.oss.enumd.PolicyType; +import com.ruoyi.oss.exception.OssException; +import com.ruoyi.oss.properties.OssProperties; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; + +/** + * S3 瀛樺偍鍗忚 鎵�鏈夊吋瀹筍3鍗忚鐨勪簯鍘傚晢鍧囨敮鎸� + * 闃块噷浜� 鑵捐浜� 涓冪墰浜� minio + * + * @author Lion Li + */ +public class OssClient { + + private final String configKey; + + private final OssProperties properties; + + private final AmazonS3 client; + + public OssClient(String configKey, OssProperties ossProperties) { + this.configKey = configKey; + this.properties = ossProperties; + try { + AwsClientBuilder.EndpointConfiguration endpointConfig = + new AwsClientBuilder.EndpointConfiguration(properties.getEndpoint(), properties.getRegion()); + + AWSCredentials credentials = new BasicAWSCredentials(properties.getAccessKey(), properties.getSecretKey()); + AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials); + ClientConfiguration clientConfig = new ClientConfiguration(); + if (OssConstant.IS_HTTPS.equals(properties.getIsHttps())) { + clientConfig.setProtocol(Protocol.HTTPS); + } else { + clientConfig.setProtocol(Protocol.HTTP); + } + this.client = AmazonS3Client.builder() + .withEndpointConfiguration(endpointConfig) + .withClientConfiguration(clientConfig) + .withCredentials(credentialsProvider) + .disableChunkedEncoding() + .build(); + + createBucket(); + } catch (Exception e) { + if (e instanceof OssException) { + throw e; + } + throw new OssException("閰嶇疆閿欒! 璇锋鏌ョ郴缁熼厤缃�:[" + e.getMessage() + "]"); + } + } + + public void createBucket() { + try { + String bucketName = properties.getBucketName(); + if (client.doesBucketExistV2(bucketName)) { + return; + } + CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); + createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead); + client.createBucket(createBucketRequest); + client.setBucketPolicy(bucketName, getPolicy(bucketName, PolicyType.READ)); + } catch (Exception e) { + throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵归厤缃俊鎭�:[" + e.getMessage() + "]"); + } + } + + public UploadResult upload(byte[] data, String path, String contentType) { + return upload(new ByteArrayInputStream(data), path, contentType); + } + + public UploadResult upload(InputStream inputStream, String path, String contentType) { + try { + ObjectMetadata metadata = new ObjectMetadata(); + metadata.setContentType(contentType); + metadata.setContentLength(inputStream.available()); + client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata)); + } catch (Exception e) { + throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鏌ラ厤缃俊鎭�:[" + e.getMessage() + "]"); + } + return UploadResult.builder().url(getUrl() + "/" + path).filename(path).build(); + } + + public void delete(String path) { + path = path.replace(getUrl() + "/", ""); + try { + client.deleteObject(properties.getBucketName(), path); + } catch (Exception e) { + throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鏌ラ厤缃俊鎭�:[" + e.getMessage() + "]"); + } + } + + public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { + return upload(data, getPath(properties.getPrefix(), suffix), contentType); + } + + public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { + return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); + } + + public String getUrl() { + String domain = properties.getDomain(); + if (StringUtils.isNotBlank(domain)) { + return domain; + } + String endpoint = properties.getEndpoint(); + String header = OssConstant.IS_HTTPS.equals(properties.getIsHttps()) ? "https://" : "http://"; + // 浜戞湇鍔″晢鐩存帴杩斿洖 + if (StringUtils.containsAny(endpoint, OssConstant.CLOUD_SERVICE)){ + return header + properties.getBucketName() + "." + endpoint; + } + // minio 鍗曠嫭澶勭悊 + return header + endpoint + "/" + properties.getBucketName(); + } + + public String getPath(String prefix, String suffix) { + // 鐢熸垚uuid + String uuid = IdUtil.fastSimpleUUID(); + // 鏂囦欢璺緞 + String path = DateUtils.datePath() + "/" + uuid; + if (StringUtils.isNotBlank(prefix)) { + path = prefix + "/" + path; + } + return path + suffix; + } + + + public String getConfigKey() { + return configKey; + } + + private static String getPolicy(String bucketName, PolicyType policyType) { + StringBuilder builder = new StringBuilder(); + builder.append("{\n\"Statement\": [\n{\n\"Action\": [\n"); + if (policyType == PolicyType.WRITE) { + builder.append("\"s3:GetBucketLocation\",\n\"s3:ListBucketMultipartUploads\"\n"); + } else if (policyType == PolicyType.READ_WRITE) { + builder.append("\"s3:GetBucketLocation\",\n\"s3:ListBucket\",\n\"s3:ListBucketMultipartUploads\"\n"); + } else { + builder.append("\"s3:GetBucketLocation\"\n"); + } + builder.append("],\n\"Effect\": \"Allow\",\n\"Principal\": \"*\",\n\"Resource\": \"arn:aws:s3:::"); + builder.append(bucketName); + builder.append("\"\n},\n"); + if (policyType == PolicyType.READ) { + builder.append("{\n\"Action\": [\n\"s3:ListBucket\"\n],\n\"Effect\": \"Deny\",\n\"Principal\": \"*\",\n\"Resource\": \"arn:aws:s3:::"); + builder.append(bucketName); + builder.append("\"\n},\n"); + } + builder.append("{\n\"Action\": "); + switch (policyType) { + case WRITE: + builder.append("[\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:PutObject\"\n],\n"); + break; + case READ_WRITE: + builder.append("[\n\"s3:AbortMultipartUpload\",\n\"s3:DeleteObject\",\n\"s3:GetObject\",\n\"s3:ListMultipartUploadParts\",\n\"s3:PutObject\"\n],\n"); + break; + default: + builder.append("\"s3:GetObject\",\n"); + break; + } + builder.append("\"Effect\": \"Allow\",\n\"Principal\": \"*\",\n\"Resource\": \"arn:aws:s3:::"); + builder.append(bucketName); + builder.append("/*\"\n}\n],\n\"Version\": \"2012-10-17\"\n}\n"); + return builder.toString(); + } + +} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java deleted file mode 100644 index e16a673..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.ruoyi.oss.enumd; - -import com.ruoyi.oss.service.impl.AliyunOssStrategy; -import com.ruoyi.oss.service.impl.MinioOssStrategy; -import com.ruoyi.oss.service.impl.QcloudOssStrategy; -import com.ruoyi.oss.service.impl.QiniuOssStrategy; -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 瀵硅薄瀛樺偍鏈嶅姟鍟嗘灇涓� - * - * @author Lion Li - */ -@Getter -@AllArgsConstructor -public enum OssEnumd { - - /** - * 涓冪墰浜� - */ - QINIU("qiniu", QiniuOssStrategy.class), - - /** - * 闃块噷浜� - */ - ALIYUN("aliyun", AliyunOssStrategy.class), - - /** - * 鑵捐浜� - */ - QCLOUD("qcloud", QcloudOssStrategy.class), - - /** - * minio - */ - MINIO("minio", MinioOssStrategy.class); - - private final String value; - - private final Class<?> beanClass; - - public static OssEnumd find(String value) { - for (OssEnumd enumd : values()) { - if (enumd.getValue().equals(value)) { - return enumd; - } - } - return null; - } - -} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java index e1925dc..606f0f4 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/PolicyType.java @@ -1,19 +1,3 @@ -/* - * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * Neither the name of the dreamlu.net developer nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * Author: Chill 搴勯獮 (smallchill@163.com) - */ package com.ruoyi.oss.enumd; import lombok.AllArgsConstructor; diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java index 9ac887e..7065c4a 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java @@ -3,14 +3,14 @@ import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.redis.RedisUtils; -import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.oss.constant.OssConstant; -import com.ruoyi.oss.enumd.OssEnumd; +import com.ruoyi.oss.core.OssClient; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.OssProperties; -import com.ruoyi.oss.service.IOssStrategy; -import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import lombok.extern.slf4j.Slf4j; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; /** * 鏂囦欢涓婁紶Factory @@ -20,17 +20,19 @@ @Slf4j public class OssFactory { + private static final Map<String, OssClient> CLIENT_CACHE = new ConcurrentHashMap<>(); + /** * 鍒濆鍖栧伐鍘� */ public static void init() { log.info("鍒濆鍖朞SS宸ュ巶"); - RedisUtils.subscribe(OssConstant.CACHE_CONFIG_KEY, String.class, type -> { - AbstractOssStrategy strategy = getStrategy(type); + RedisUtils.subscribe(OssConstant.CACHE_CONFIG_KEY, String.class, configKey -> { + OssClient client = getClient(configKey); // 鏈垵濮嬪寲涓嶅鐞� - if (strategy.isInit) { - refresh(type); - log.info("璁㈤槄鍒锋柊OSS閰嶇疆 => " + type); + if (client != null) { + refresh(configKey); + log.info("璁㈤槄鍒锋柊OSS閰嶇疆 => " + configKey); } }); } @@ -38,42 +40,38 @@ /** * 鑾峰彇榛樿瀹炰緥 */ - public static IOssStrategy instance() { + public static OssClient instance() { // 鑾峰彇redis 榛樿绫诲瀷 - String type = RedisUtils.getCacheObject(OssConstant.CACHE_CONFIG_KEY); - if (StringUtils.isEmpty(type)) { + String configKey = RedisUtils.getCacheObject(OssConstant.CACHE_CONFIG_KEY); + if (StringUtils.isEmpty(configKey)) { throw new OssException("鏂囦欢瀛樺偍鏈嶅姟绫诲瀷鏃犳硶鎵惧埌!"); } - return instance(type); + return instance(configKey); } /** * 鏍规嵁绫诲瀷鑾峰彇瀹炰緥 */ - public static IOssStrategy instance(String type) { - OssEnumd enumd = OssEnumd.find(type); - if (enumd == null) { - throw new OssException("鏂囦欢瀛樺偍鏈嶅姟绫诲瀷鏃犳硶鎵惧埌!"); + public static OssClient instance(String configKey) { + OssClient client = getClient(configKey); + if (client == null) { + refresh(configKey); + return getClient(configKey); } - AbstractOssStrategy strategy = getStrategy(type); - if (!strategy.isInit) { - refresh(type); - } - return strategy; + return client; } - private static void refresh(String type) { - Object json = RedisUtils.getCacheObject(OssConstant.SYS_OSS_KEY + type); + private static void refresh(String configKey) { + Object json = RedisUtils.getCacheObject(OssConstant.SYS_OSS_KEY + configKey); OssProperties properties = JsonUtils.parseObject(json.toString(), OssProperties.class); if (properties == null) { - throw new OssException("绯荤粺寮傚父, '" + type + "'閰嶇疆淇℃伅涓嶅瓨鍦�!"); + throw new OssException("绯荤粺寮傚父, '" + configKey + "'閰嶇疆淇℃伅涓嶅瓨鍦�!"); } - getStrategy(type).init(properties); + CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); } - private static AbstractOssStrategy getStrategy(String type) { - OssEnumd enumd = OssEnumd.find(type); - return (AbstractOssStrategy) SpringUtils.getBean(enumd.getBeanClass()); + private static OssClient getClient(String configKey) { + return CLIENT_CACHE.get(configKey); } } diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java index d09bfdb..a017779 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java @@ -11,11 +11,16 @@ public class OssProperties { /** - * 鍩熷悕 + * 璁块棶绔欑偣 */ private String endpoint; /** + * 鑷畾涔夊煙鍚� + */ + private String domain; + + /** * 鍓嶇紑 */ private String prefix; diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java deleted file mode 100644 index 981c23e..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.ruoyi.oss.service; - -import com.ruoyi.oss.entity.UploadResult; -import com.ruoyi.oss.enumd.OssEnumd; - -import java.io.InputStream; - -/** - * 瀵硅薄瀛樺偍绛栫暐 - * - * @author Lion Li - */ -public interface IOssStrategy { - - /** - * 鍒涘缓瀛樺偍妗� - */ - void createBucket(); - - /** - * 鑾峰彇鏈嶅姟鍟嗙被鍨� - * @return 瀵硅薄瀛樺偍鏈嶅姟鍟嗘灇涓� - */ - OssEnumd getServiceType(); - - /** - * 鏂囦欢涓婁紶 - * - * @param data 鏂囦欢瀛楄妭鏁扮粍 - * @param path 鏂囦欢璺緞锛屽寘鍚枃浠跺悕 - * @param contentType 鏂囦欢绫诲瀷 - * @return 杩斿洖http鍦板潃 - */ - UploadResult upload(byte[] data, String path, String contentType); - - /** - * 鏂囦欢鍒犻櫎 - * - * @param path 鏂囦欢璺緞锛屽寘鍚枃浠跺悕 - */ - void delete(String path); - - /** - * 鏂囦欢涓婁紶 - * - * @param data 鏂囦欢瀛楄妭鏁扮粍 - * @param suffix 鍚庣紑 - * @param contentType 鏂囦欢绫诲瀷 - * @return 杩斿洖http鍦板潃 - */ - UploadResult uploadSuffix(byte[] data, String suffix, String contentType); - - /** - * 鏂囦欢涓婁紶 - * - * @param inputStream 瀛楄妭娴� - * @param path 鏂囦欢璺緞锛屽寘鍚枃浠跺悕 - * @param contentType 鏂囦欢绫诲瀷 - * @return 杩斿洖http鍦板潃 - */ - UploadResult upload(InputStream inputStream, String path, String contentType); - - /** - * 鏂囦欢涓婁紶 - * - * @param inputStream 瀛楄妭娴� - * @param suffix 鍚庣紑 - * @param contentType 鏂囦欢绫诲瀷 - * @return 杩斿洖http鍦板潃 - */ - UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType); - -} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java deleted file mode 100644 index ae17c19..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.ruoyi.oss.service.abstractd; - -import cn.hutool.core.io.IoUtil; -import cn.hutool.core.util.IdUtil; -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.oss.entity.UploadResult; -import com.ruoyi.oss.enumd.OssEnumd; -import com.ruoyi.oss.properties.OssProperties; -import com.ruoyi.oss.service.IOssStrategy; - -import java.io.InputStream; - -/** - * 瀵硅薄瀛樺偍绛栫暐(鏀寔涓冪墰銆侀樋閲屼簯銆佽吘璁簯銆乵inio) - * - * @author Lion Li - */ -public abstract class AbstractOssStrategy implements IOssStrategy { - - protected OssProperties properties; - public boolean isInit = false; - - public void init(OssProperties properties) { - this.properties = properties; - } - - @Override - public abstract void createBucket(); - - @Override - public abstract OssEnumd getServiceType(); - - public String getPath(String prefix, String suffix) { - // 鐢熸垚uuid - String uuid = IdUtil.fastSimpleUUID(); - // 鏂囦欢璺緞 - String path = DateUtils.datePath() + "/" + uuid; - if (StringUtils.isNotBlank(prefix)) { - path = prefix + "/" + path; - } - return path + suffix; - } - - @Override - public abstract UploadResult upload(byte[] data, String path, String contentType); - - @Override - public abstract void delete(String path); - - @Override - public UploadResult upload(InputStream inputStream, String path, String contentType) { - byte[] data = IoUtil.readBytes(inputStream); - return this.upload(data, path, contentType); - } - - @Override - public abstract UploadResult uploadSuffix(byte[] data, String suffix, String contentType); - - @Override - public abstract UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType); - - /** - * 鑾峰彇鍩熷悕璁块棶閾炬帴 - * - * @return 鍩熷悕璁块棶閾炬帴 - */ - public abstract String getEndpointLink(); -} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java deleted file mode 100644 index 62c2922..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.ruoyi.oss.service.impl; - -import com.aliyun.oss.ClientConfiguration; -import com.aliyun.oss.OSSClient; -import com.aliyun.oss.common.auth.DefaultCredentialProvider; -import com.aliyun.oss.common.comm.Protocol; -import com.aliyun.oss.model.CannedAccessControlList; -import com.aliyun.oss.model.CreateBucketRequest; -import com.aliyun.oss.model.ObjectMetadata; -import com.aliyun.oss.model.PutObjectRequest; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.oss.constant.OssConstant; -import com.ruoyi.oss.entity.UploadResult; -import com.ruoyi.oss.enumd.OssEnumd; -import com.ruoyi.oss.exception.OssException; -import com.ruoyi.oss.properties.OssProperties; -import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; -import org.springframework.stereotype.Component; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; - -/** - * 闃块噷浜戝瓨鍌ㄧ瓥鐣� - * - * @author Lion Li - */ -@Component -public class AliyunOssStrategy extends AbstractOssStrategy { - - private OSSClient client; - - @Override - public void init(OssProperties ossProperties) { - super.init(ossProperties); - try { - ClientConfiguration configuration = new ClientConfiguration(); - if (OssConstant.IS_HTTPS.equals(ossProperties.getIsHttps())) { - configuration.setProtocol(Protocol.HTTPS); - } - DefaultCredentialProvider credentialProvider = new DefaultCredentialProvider( - properties.getAccessKey(), properties.getSecretKey()); - client = new OSSClient(properties.getEndpoint(), credentialProvider, configuration); - createBucket(); - } catch (Exception e) { - throw new OssException("闃块噷浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�:[" + e.getMessage() + "]"); - } - isInit = true; - } - - @Override - public void createBucket() { - try { - String bucketName = properties.getBucketName(); - if (client.doesBucketExist(bucketName)) { - return; - } - CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); - createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead); - client.createBucket(createBucketRequest); - } catch (Exception e) { - throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵归樋閲屼簯閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - } - - @Override - public OssEnumd getServiceType() { - return OssEnumd.ALIYUN; - } - - @Override - public UploadResult upload(byte[] data, String path, String contentType) { - return upload(new ByteArrayInputStream(data), path, contentType); - } - - @Override - public UploadResult upload(InputStream inputStream, String path, String contentType) { - try { - ObjectMetadata metadata = new ObjectMetadata(); - metadata.setContentType(contentType); - client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata)); - } catch (Exception e) { - throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鏌ラ樋閲屼簯閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); } - - @Override - public void delete(String path) { - path = path.replace(getEndpointLink() + "/", ""); - try { - client.deleteObject(properties.getBucketName(), path); - } catch (Exception e) { - throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鏌ラ樋閲屼簯閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - } - - @Override - public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { - return upload(data, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { - return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public String getEndpointLink() { - String endpoint = properties.getEndpoint(); - StringBuilder sb = new StringBuilder(endpoint); - if (StringUtils.containsAnyIgnoreCase(endpoint, "http://")) { - sb.insert(7, properties.getBucketName() + "."); - } else if (StringUtils.containsAnyIgnoreCase(endpoint, "https://")) { - sb.insert(8, properties.getBucketName() + "."); - } else { - throw new OssException("Endpoint閰嶇疆閿欒"); - } - return sb.toString(); - } -} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java deleted file mode 100644 index f5be957..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.ruoyi.oss.service.impl; - -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.oss.constant.OssConstant; -import com.ruoyi.oss.entity.UploadResult; -import com.ruoyi.oss.enumd.OssEnumd; -import com.ruoyi.oss.enumd.PolicyType; -import com.ruoyi.oss.exception.OssException; -import com.ruoyi.oss.properties.OssProperties; -import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; -import io.minio.*; -import io.minio.http.HttpUtils; -import okhttp3.HttpUrl; -import org.springframework.http.MediaType; -import org.springframework.stereotype.Component; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; - -/** - * minio瀛樺偍绛栫暐 - * - * @author Lion Li - */ -@Component -public class MinioOssStrategy extends AbstractOssStrategy { - - private MinioClient minioClient; - - @Override - public void init(OssProperties ossProperties) { - super.init(ossProperties); - try { - MinioClient.Builder builder = MinioClient.builder(); - if (OssConstant.IS_HTTPS.equals(ossProperties.getIsHttps())) { - HttpUrl url = HttpUtils.getBaseUrl(properties.getEndpoint()) - .newBuilder().scheme("https").build(); - builder.endpoint(url); - } else { - builder.endpoint(properties.getEndpoint()); - } - minioClient = builder.credentials(properties.getAccessKey(), properties.getSecretKey()).build(); - createBucket(); - } catch (Exception e) { - throw new OssException("Minio瀛樺偍閰嶇疆閿欒! 璇锋鏌ョ郴缁熼厤缃�:[" + e.getMessage() + "]"); - } - isInit = true; - } - - @Override - public void createBucket() { - try { - String bucketName = properties.getBucketName(); - boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build()); - if (exists) { - return; - } - // 涓嶅瓨鍦ㄥ氨鍒涘缓妗� - minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); - minioClient.setBucketPolicy(SetBucketPolicyArgs.builder() - .bucket(bucketName) - .config(getPolicy(bucketName, PolicyType.READ)) - .build()); - } catch (Exception e) { - throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵筂inio閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - } - - @Override - public OssEnumd getServiceType() { - return OssEnumd.MINIO; - } - - @Override - public UploadResult upload(byte[] data, String path, String contentType) { - return upload(new ByteArrayInputStream(data), path, contentType); - } - - @Override - public UploadResult upload(InputStream inputStream, String path, String contentType) { - try { - // 瑙e喅 inputStream.available() 鍐� socket 涓嬩紶杈撳欢杩熼棶棰� 瀵艰嚧鑾峰彇鏁板�间笉绮剧‘ - Thread.sleep(1000); - minioClient.putObject(PutObjectArgs.builder() - .bucket(properties.getBucketName()) - .object(path) - .contentType(StringUtils.blankToDefault(contentType, MediaType.APPLICATION_OCTET_STREAM_VALUE)) - .stream(inputStream, inputStream.available(), -1) - .build()); - } catch (Exception e) { - throw new OssException("涓婁紶鏂囦欢澶辫触锛岃鏍稿Minio閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); - } - - @Override - public void delete(String path) { - path = path.replace(getEndpointLink() + "/", ""); - try { - minioClient.removeObject(RemoveObjectArgs.builder() - .bucket(properties.getBucketName()) - .object(path) - .build()); - } catch (Exception e) { - throw new OssException(e.getMessage()); - } - } - - @Override - public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { - return upload(data, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { - return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public String getEndpointLink() { - return properties.getEndpoint() + "/" + properties.getBucketName(); - } - - private String getPolicy(String bucketName, PolicyType policyType) { - StringBuilder builder = new StringBuilder(); - builder.append("{\n"); - builder.append(" \"Statement\": [\n"); - builder.append(" {\n"); - builder.append(" \"Action\": [\n"); - if (policyType == PolicyType.WRITE) { - builder.append(" \"s3:GetBucketLocation\",\n"); - builder.append(" \"s3:ListBucketMultipartUploads\"\n"); - } else if (policyType == PolicyType.READ_WRITE) { - builder.append(" \"s3:GetBucketLocation\",\n"); - builder.append(" \"s3:ListBucket\",\n"); - builder.append(" \"s3:ListBucketMultipartUploads\"\n"); - } else { - builder.append(" \"s3:GetBucketLocation\"\n"); - } - builder.append(" ],\n"); - builder.append(" \"Effect\": \"Allow\",\n"); - builder.append(" \"Principal\": \"*\",\n"); - builder.append(" \"Resource\": \"arn:aws:s3:::"); - builder.append(bucketName); - builder.append("\"\n"); - builder.append(" },\n"); - if (PolicyType.READ.equals(policyType)) { - builder.append(" {\n"); - builder.append(" \"Action\": [\n"); - builder.append(" \"s3:ListBucket\"\n"); - builder.append(" ],\n"); - builder.append(" \"Effect\": \"Deny\",\n"); - builder.append(" \"Principal\": \"*\",\n"); - builder.append(" \"Resource\": \"arn:aws:s3:::"); - builder.append(bucketName); - builder.append("\"\n"); - builder.append(" },\n"); - } - builder.append(" {\n"); - builder.append(" \"Action\": "); - switch (policyType) { - case WRITE: - builder.append("[\n"); - builder.append(" \"s3:AbortMultipartUpload\",\n"); - builder.append(" \"s3:DeleteObject\",\n"); - builder.append(" \"s3:ListMultipartUploadParts\",\n"); - builder.append(" \"s3:PutObject\"\n"); - builder.append(" ],\n"); - break; - case READ_WRITE: - builder.append("[\n"); - builder.append(" \"s3:AbortMultipartUpload\",\n"); - builder.append(" \"s3:DeleteObject\",\n"); - builder.append(" \"s3:GetObject\",\n"); - builder.append(" \"s3:ListMultipartUploadParts\",\n"); - builder.append(" \"s3:PutObject\"\n"); - builder.append(" ],\n"); - break; - default: - builder.append("\"s3:GetObject\",\n"); - break; - } - builder.append(" \"Effect\": \"Allow\",\n"); - builder.append(" \"Principal\": \"*\",\n"); - builder.append(" \"Resource\": \"arn:aws:s3:::"); - builder.append(bucketName); - builder.append("/*\"\n"); - builder.append(" }\n"); - builder.append(" ],\n"); - builder.append(" \"Version\": \"2012-10-17\"\n"); - builder.append("}\n"); - return builder.toString(); - } -} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java deleted file mode 100644 index 756462e..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.ruoyi.oss.service.impl; - -import com.qcloud.cos.COSClient; -import com.qcloud.cos.ClientConfig; -import com.qcloud.cos.auth.BasicCOSCredentials; -import com.qcloud.cos.auth.COSCredentials; -import com.qcloud.cos.http.HttpProtocol; -import com.qcloud.cos.model.*; -import com.qcloud.cos.region.Region; -import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.oss.constant.OssConstant; -import com.ruoyi.oss.entity.UploadResult; -import com.ruoyi.oss.enumd.OssEnumd; -import com.ruoyi.oss.exception.OssException; -import com.ruoyi.oss.properties.OssProperties; -import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; -import org.springframework.stereotype.Component; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; - -/** - * 鑵捐浜戝瓨鍌ㄧ瓥鐣� - * - * @author Lion Li - */ -@Component -public class QcloudOssStrategy extends AbstractOssStrategy { - - private COSClient client; - - @Override - public void init(OssProperties ossProperties) { - super.init(ossProperties); - try { - COSCredentials credentials = new BasicCOSCredentials( - properties.getAccessKey(), properties.getSecretKey()); - // 鍒濆鍖栧鎴风閰嶇疆 - ClientConfig clientConfig = new ClientConfig(); - // 璁剧疆bucket鎵�鍦ㄧ殑鍖哄煙锛屽崕鍗楋細gz 鍗庡寳锛歵j 鍗庝笢锛歴h - clientConfig.setRegion(new Region(properties.getRegion())); - if (OssConstant.IS_HTTPS.equals(properties.getIsHttps())) { - clientConfig.setHttpProtocol(HttpProtocol.https); - } else { - clientConfig.setHttpProtocol(HttpProtocol.http); - } - client = new COSClient(credentials, clientConfig); - createBucket(); - } catch (Exception e) { - throw new OssException("鑵捐浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�:[" + e.getMessage() + "]"); - } - isInit = true; - } - - @Override - public void createBucket() { - try { - String bucketName = properties.getBucketName(); - if (client.doesBucketExist(bucketName)) { - return; - } - CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName); - createBucketRequest.setCannedAcl(CannedAccessControlList.PublicRead); - client.createBucket(createBucketRequest); - } catch (Exception e) { - throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵硅吘璁簯閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - } - - @Override - public OssEnumd getServiceType() { - return OssEnumd.QCLOUD; - } - - @Override - public UploadResult upload(byte[] data, String path, String contentType) { - return upload(new ByteArrayInputStream(data), path, contentType); - } - - @Override - public UploadResult upload(InputStream inputStream, String path, String contentType) { - try { - ObjectMetadata metadata = new ObjectMetadata(); - metadata.setContentType(contentType); - client.putObject(new PutObjectRequest(properties.getBucketName(), path, inputStream, metadata)); - } catch (Exception e) { - throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鏌ヨ吘璁簯閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); - } - - @Override - public void delete(String path) { - path = path.replace(getEndpointLink() + "/", ""); - try { - client.deleteObject(new DeleteObjectRequest(properties.getBucketName(), path)); - } catch (Exception e) { - throw new OssException("涓婁紶鏂囦欢澶辫触锛岃妫�鑵捐浜戞煡閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - } - - @Override - public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { - return upload(data, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { - return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public String getEndpointLink() { - String endpoint = properties.getEndpoint(); - StringBuilder sb = new StringBuilder(endpoint); - if (StringUtils.containsAnyIgnoreCase(endpoint, "http://")) { - sb.insert(7, properties.getBucketName() + "."); - } else if (StringUtils.containsAnyIgnoreCase(endpoint, "https://")) { - sb.insert(8, properties.getBucketName() + "."); - } else { - throw new OssException("Endpoint閰嶇疆閿欒"); - } - return sb.toString(); - } -} diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java deleted file mode 100644 index 20f13ec..0000000 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.ruoyi.oss.service.impl; - -import cn.hutool.core.util.ArrayUtil; -import com.qiniu.http.Response; -import com.qiniu.storage.BucketManager; -import com.qiniu.storage.Configuration; -import com.qiniu.storage.Region; -import com.qiniu.storage.UploadManager; -import com.qiniu.util.Auth; -import com.ruoyi.oss.constant.OssConstant; -import com.ruoyi.oss.entity.UploadResult; -import com.ruoyi.oss.enumd.OssEnumd; -import com.ruoyi.oss.exception.OssException; -import com.ruoyi.oss.properties.OssProperties; -import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; -import org.springframework.stereotype.Component; - -import java.io.InputStream; - -/** - * 涓冪墰浜戝瓨鍌ㄧ瓥鐣� - * - * @author Lion Li - */ -@Component -public class QiniuOssStrategy extends AbstractOssStrategy { - - private UploadManager uploadManager; - private BucketManager bucketManager; - private Auth auth; - - - @Override - public void init(OssProperties ossProperties) { - super.init(ossProperties); - try { - Configuration config = new Configuration(getRegion(properties.getRegion())); - // https璁剧疆 - config.useHttpsDomains = OssConstant.IS_HTTPS.equals(properties.getIsHttps()); - uploadManager = new UploadManager(config); - auth = Auth.create(properties.getAccessKey(), properties.getSecretKey()); - bucketManager = new BucketManager(auth, config); - createBucket(); - } catch (Exception e) { - throw new OssException("涓冪墰浜戝瓨鍌ㄩ厤缃敊璇�! 璇锋鏌ョ郴缁熼厤缃�:[" + e.getMessage() + "]"); - } - isInit = true; - } - - @Override - public void createBucket() { - try { - String bucketName = properties.getBucketName(); - if (ArrayUtil.contains(bucketManager.buckets(), bucketName)) { - return; - } - bucketManager.createBucket(bucketName, properties.getRegion()); - } catch (Exception e) { - throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵逛竷鐗涗簯閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - } - - @Override - public OssEnumd getServiceType() { - return OssEnumd.QINIU; - } - - @Override - public UploadResult upload(byte[] data, String path, String contentType) { - try { - String token = auth.uploadToken(properties.getBucketName()); - Response res = uploadManager.put(data, path, token, null, contentType, false); - if (!res.isOK()) { - throw new RuntimeException("涓婁紶涓冪墰鍑洪敊锛�" + res.error); - } - } catch (Exception e) { - throw new OssException("涓婁紶鏂囦欢澶辫触锛岃鏍稿涓冪墰閰嶇疆淇℃伅:[" + e.getMessage() + "]"); - } - return UploadResult.builder().url(getEndpointLink() + "/" + path).filename(path).build(); - } - - @Override - public void delete(String path) { - try { - path = path.replace(getEndpointLink() + "/", ""); - Response res = bucketManager.delete(properties.getBucketName(), path); - if (!res.isOK()) { - throw new RuntimeException("鍒犻櫎涓冪墰鏂囦欢鍑洪敊锛�" + res.error); - } - } catch (Exception e) { - throw new OssException(e.getMessage()); - } - } - - @Override - public UploadResult uploadSuffix(byte[] data, String suffix, String contentType) { - return upload(data, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public UploadResult uploadSuffix(InputStream inputStream, String suffix, String contentType) { - return upload(inputStream, getPath(properties.getPrefix(), suffix), contentType); - } - - @Override - public String getEndpointLink() { - return properties.getEndpoint(); - } - - private Region getRegion(String region) { - switch (region) { - case "z0": - return Region.region0(); - case "z1": - return Region.region1(); - case "z2": - return Region.region2(); - case "na0": - return Region.regionNa0(); - case "as0": - return Region.regionAs0(); - default: - return Region.autoRegion(); - } - } - -} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java index a8340df..577f17f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOssConfig.java @@ -5,7 +5,6 @@ import com.ruoyi.common.core.domain.BaseEntity; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; /** * 瀵硅薄瀛樺偍閰嶇疆瀵硅薄 sys_oss_config @@ -54,6 +53,11 @@ private String endpoint; /** + * 鑷畾涔夊煙鍚� + */ + private String domain; + + /** * 鏄惁https锛�0鍚� 1鏄級 */ private String isHttps; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java index 9a66e38..ddcdeee 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/SysOssConfigBo.java @@ -35,8 +35,8 @@ /** * 閰嶇疆key */ - @ApiModelProperty(value = "configKey", required = true) - @NotBlank(message = "configKey涓嶈兘涓虹┖", groups = {AddGroup.class, EditGroup.class}) + @ApiModelProperty(value = "閰嶇疆key", required = true) + @NotBlank(message = "閰嶇疆key涓嶈兘涓虹┖", groups = {AddGroup.class, EditGroup.class}) @Size(min = 2, max = 100, message = "configKey闀垮害蹇呴』浠嬩簬2鍜�20 涔嬮棿") private String configKey; @@ -59,8 +59,8 @@ /** * 妗跺悕绉� */ - @ApiModelProperty(value = "bucketName", required = true) - @NotBlank(message = "bucketName涓嶈兘涓虹┖", groups = {AddGroup.class, EditGroup.class}) + @ApiModelProperty(value = "妗跺悕绉�", required = true) + @NotBlank(message = "妗跺悕绉颁笉鑳戒负绌�", groups = {AddGroup.class, EditGroup.class}) @Size(min = 2, max = 100, message = "bucketName闀垮害蹇呴』浠嬩簬2鍜�100涔嬮棿") private String bucketName; @@ -73,10 +73,16 @@ /** * 璁块棶绔欑偣 */ - @ApiModelProperty(value = "endpoint", required = true) - @NotBlank(message = "endpoint涓嶈兘涓虹┖", groups = {AddGroup.class, EditGroup.class}) + @ApiModelProperty(value = "璁块棶绔欑偣", required = true) + @NotBlank(message = "璁块棶绔欑偣涓嶈兘涓虹┖", groups = {AddGroup.class, EditGroup.class}) @Size(min = 2, max = 100, message = "endpoint闀垮害蹇呴』浠嬩簬2鍜�100涔嬮棿") private String endpoint; + + /** + * 鑷畾涔夊煙鍚� + */ + @ApiModelProperty("鑷畾涔夊煙鍚�") + private String domain; /** * 鏄惁https锛圷=鏄�,N=鍚︼級 @@ -93,7 +99,7 @@ /** * 鍩� */ - @ApiModelProperty(value = "region") + @ApiModelProperty(value = "鍩�") private String region; /** diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java index 0fb08dd..20edaca 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/SysOssConfigVo.java @@ -63,6 +63,12 @@ private String endpoint; /** + * 鑷畾涔夊煙鍚� + */ + @ApiModelProperty("鑷畾涔夊煙鍚�") + private String domain; + + /** * 鏄惁https锛圷=鏄�,N=鍚︼級 */ @ApiModelProperty("鏄惁https锛圷=鏄�,N=鍚︼級") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index 19423f4..25dfd5c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -7,9 +7,9 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.oss.core.OssClient; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.factory.OssFactory; -import com.ruoyi.oss.service.IOssStrategy; import com.ruoyi.system.domain.SysOss; import com.ruoyi.system.domain.bo.SysOssBo; import com.ruoyi.system.domain.vo.SysOssVo; @@ -65,7 +65,7 @@ public SysOss upload(MultipartFile file) { String originalfileName = file.getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); - IOssStrategy storage = OssFactory.instance(); + OssClient storage = OssFactory.instance(); UploadResult uploadResult; try { uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); @@ -78,7 +78,7 @@ oss.setFileSuffix(suffix); oss.setFileName(uploadResult.getFilename()); oss.setOriginalName(originalfileName); - oss.setService(storage.getServiceType().getValue()); + oss.setService(storage.getConfigKey()); baseMapper.insert(oss); return oss; } @@ -90,7 +90,7 @@ } List<SysOss> list = baseMapper.selectBatchIds(ids); for (SysOss sysOss : list) { - IOssStrategy storage = OssFactory.instance(sysOss.getService()); + OssClient storage = OssFactory.instance(sysOss.getService()); storage.delete(sysOss.getUrl()); } return baseMapper.deleteBatchIds(ids) > 0; diff --git a/ruoyi-ui/src/views/system/oss/config.vue b/ruoyi-ui/src/views/system/oss/config.vue index 152727e..54ad98c 100644 --- a/ruoyi-ui/src/views/system/oss/config.vue +++ b/ruoyi-ui/src/views/system/oss/config.vue @@ -2,14 +2,13 @@ <div class="app-container"> <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> <el-form-item label="閰嶇疆key" prop="configKey"> - <el-select v-model="queryParams.configKey" placeholder="璇烽�夋嫨閰嶇疆key" clearable size="small"> - <el-option - v-for="configKey in configKeyOptions" - :key="configKey.configKey" - :label="configKey.label" - :value="configKey.configKey" - /> - </el-select> + <el-input + v-model="queryParams.configKey" + placeholder="閰嶇疆key" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> </el-form-item> <el-form-item label="妗跺悕绉�" prop="bucketName"> <el-input @@ -77,6 +76,7 @@ <el-table-column label="涓诲缓" align="center" prop="ossConfigId" v-if="false"/> <el-table-column label="閰嶇疆key" align="center" prop="configKey" /> <el-table-column label="璁块棶绔欑偣" align="center" prop="endpoint" width="200" /> + <el-table-column label="鑷畾涔夊煙鍚�" align="center" prop="domain" width="200" /> <el-table-column label="妗跺悕绉�" align="center" prop="bucketName" /> <el-table-column label="鍓嶇紑" align="center" prop="prefix" /> <el-table-column label="鍩�" align="center" prop="region" /> @@ -122,17 +122,13 @@ <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> <el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form-item label="閰嶇疆key" prop="configKey"> - <el-select v-model="form.configKey" placeholder="璇烽�夋嫨閰嶇疆key"> - <el-option - v-for="configKey in configKeyOptions" - :key="configKey.configKey" - :label="configKey.label" - :value="configKey.configKey" - /> - </el-select> + <el-input v-model="form.configKey" placeholder="璇疯緭鍏ラ厤缃甼ey" /> </el-form-item> <el-form-item label="璁块棶绔欑偣" prop="endpoint"> <el-input v-model="form.endpoint" placeholder="璇疯緭鍏ヨ闂珯鐐�" /> + </el-form-item> + <el-form-item label="鑷畾涔夊煙鍚�" prop="domain"> + <el-input v-model="form.domain" placeholder="璇疯緭鍏ヨ嚜瀹氫箟鍩熷悕" /> </el-form-item> <el-form-item label="accessKey" prop="accessKey"> <el-input v-model="form.accessKey" placeholder="璇疯緭鍏ccessKey" /> @@ -204,14 +200,6 @@ total: 0, // 瀵硅薄瀛樺偍閰嶇疆琛ㄦ牸鏁版嵁 ossConfigList: [], - // configKeyOptions - configKeyOptions: [], - configKeyDatas: [ - { configKey: "minio", label: "Minio" }, - { configKey: "qiniu", label: "涓冪墰浜�" }, - { configKey: "aliyun", label: "闃块噷浜�" }, - { configKey: "qcloud", label: "鑵捐浜�" }, - ], // 寮瑰嚭灞傛爣棰� title: "", // 鏄惁鏄剧ず寮瑰嚭灞� @@ -276,7 +264,6 @@ }, created() { this.getList(); - this.configKeyOptions = this.configKeyDatas; }, methods: { /** 鏌ヨ瀵硅薄瀛樺偍閰嶇疆鍒楄〃 */ @@ -303,6 +290,7 @@ bucketName: undefined, prefix: undefined, endpoint: undefined, + domain: undefined, isHttps: "N", region: undefined, status: "1", diff --git a/script/sql/oracle/oracle_ry_vue_4.X.sql b/script/sql/oracle/oracle_ry_vue_4.X.sql index 68b29e9..583f526 100644 --- a/script/sql/oracle/oracle_ry_vue_4.X.sql +++ b/script/sql/oracle/oracle_ry_vue_4.X.sql @@ -904,6 +904,7 @@ bucket_name varchar(255) default '', prefix varchar(255) default '', endpoint varchar(255) default '', + domain varchar(255) default '', is_https char(1) default 'N', region varchar(255) default '', status char(1) default '1', @@ -925,6 +926,7 @@ comment on column sys_oss_config.bucket_name is '妗跺悕绉�'; comment on column sys_oss_config.prefix is '鍓嶇紑'; comment on column sys_oss_config.endpoint is '璁块棶绔欑偣'; +comment on column sys_oss_config.domain is '鑷畾涔夊煙鍚�'; comment on column sys_oss_config.is_https is '鏄惁https锛圷=鏄�,N=鍚︼級'; comment on column sys_oss_config.region is '鍩�'; comment on column sys_oss_config.status is '鐘舵�侊紙0=姝e父,1=鍋滅敤锛�'; @@ -935,10 +937,12 @@ comment on column sys_oss_config.update_by is '鏇存柊鑰�'; comment on column sys_oss_config.update_time is '鏇存柊鏃堕棿'; -insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'http://localhost:9000', 'N', '', '0', '', NULL, 'admin', sysdate, 'admin', sysdate); -insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://XXX.XXXX.com', 'N', 'z0', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); -insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://oss-cn-beijing.aliyuncs.com', 'N', '', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); -insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'http://cos.ap-beijing.myqcloud.com', 'N', 'ap-beijing', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); +insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'localhost:9000', '','N', '', '0', '', NULL, 'admin', sysdate, 'admin', sysdate); +insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); +insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); +insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', 'localhost:9000', '','N', '', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); + -- ---------------------------- -- 閽╁瓙 锛岀敤浜巗ession杩炴帴涔嬪悗 鑷姩璁剧疆榛樿鐨刣ate绫诲瀷鏍煎紡鍖� 绠�鍖栨椂闂存煡璇� diff --git a/script/sql/postgres/postgres_ry_vue_4.X.sql b/script/sql/postgres/postgres_ry_vue_4.X.sql index 850491f..f4e3026 100644 --- a/script/sql/postgres/postgres_ry_vue_4.X.sql +++ b/script/sql/postgres/postgres_ry_vue_4.X.sql @@ -917,6 +917,7 @@ bucket_name varchar(255) default ''::varchar, prefix varchar(255) default ''::varchar, endpoint varchar(255) default ''::varchar, + domain varchar(255) default ''::varchar, is_https char default 'N'::bpchar, region varchar(255) default ''::varchar, status char default '1'::bpchar, @@ -937,6 +938,7 @@ comment on column sys_oss_config.bucket_name is '妗跺悕绉�'; comment on column sys_oss_config.prefix is '鍓嶇紑'; comment on column sys_oss_config.endpoint is '璁块棶绔欑偣'; +comment on column sys_oss_config.domain is '鑷畾涔夊煙鍚�'; comment on column sys_oss_config.is_https is '鏄惁https锛圷=鏄�,N=鍚︼級'; comment on column sys_oss_config.region is '鍩�'; comment on column sys_oss_config.status is '鐘舵�侊紙0=姝e父,1=鍋滅敤锛�'; @@ -947,7 +949,9 @@ comment on column sys_oss_config.update_time is '鏇存柊鏃堕棿'; comment on column sys_oss_config.remark is '澶囨敞'; -insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'http://localhost:9000', 'N', '', '0', '', 'admin', now(), 'admin', now(), null); -insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://XXX.XXXX.com', 'N', 'z0', '1', '', 'admin', now(), 'admin', now(), null); -insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://oss-cn-beijing.aliyuncs.com', 'N', '', '1', '', 'admin', now(), 'admin', now(), null); -insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'http://cos.ap-beijing.myqcloud.com', 'N', 'ap-beijing', '1', '', 'admin', now(), 'admin', now(), null); +insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'localhost:9000', '','N', '', '0', '', 'admin', now(), 'admin', now(), null); +insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1', '', 'admin', now(), 'admin', now(), null); +insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1', '', 'admin', now(), 'admin', now(), null); +insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '', 'admin', now(), 'admin', now(), null); +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', 'localhost:9000', '','N', '', '1', '', 'admin', now(), 'admin', now(), NULL); + diff --git a/script/sql/ry_vue_4.X.sql b/script/sql/ry_vue_4.X.sql index e190186..2384b14 100644 --- a/script/sql/ry_vue_4.X.sql +++ b/script/sql/ry_vue_4.X.sql @@ -668,6 +668,7 @@ bucket_name varchar(255) default '' comment '妗跺悕绉�', prefix varchar(255) default '' comment '鍓嶇紑', endpoint varchar(255) default '' comment '璁块棶绔欑偣', + domain varchar(255) default '' comment '鑷畾涔夊煙鍚�', is_https char(1) default 'N' comment '鏄惁https锛圷=鏄�,N=鍚︼級', region varchar(255) default '' comment '鍩�', status char(1) default '1' comment '鐘舵�侊紙0=姝e父,1=鍋滅敤锛�', @@ -680,7 +681,9 @@ primary key (oss_config_id) ) engine=innodb comment='瀵硅薄瀛樺偍閰嶇疆琛�'; -insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'http://localhost:9000', 'N', '', '0', '', 'admin', sysdate(), 'admin', sysdate(), NULL); -insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://XXX.XXXX.com', 'N', 'z0', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); -insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'http://oss-cn-beijing.aliyuncs.com', 'N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); -insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'http://cos.ap-beijing.myqcloud.com', 'N', 'ap-beijing', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (1, 'minio', 'ruoyi', 'ruoyi123', 'ruoyi', '', 'localhost:9000', '','N', '', '0', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (2, 'qiniu', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 's3-cn-north-1.qiniucs.com', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (3, 'aliyun', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi', '', 'oss-cn-beijing.aliyuncs.com', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (4, 'qcloud', 'XXXXXXXXXXXXXXX', 'XXXXXXXXXXXXXXX', 'ruoyi-1250000000', '', 'cos.ap-beijing.myqcloud.com', '','N', 'ap-beijing', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', 'localhost:9000', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); + diff --git a/script/sql/sqlserver/sqlserver_ry_vue_4.X.sql b/script/sql/sqlserver/sqlserver_ry_vue_4.X.sql index d37f1b4..2bf4b51 100644 --- a/script/sql/sqlserver/sqlserver_ry_vue_4.X.sql +++ b/script/sql/sqlserver/sqlserver_ry_vue_4.X.sql @@ -2193,6 +2193,7 @@ [bucket_name] nvarchar(255) DEFAULT '' NULL, [prefix] nvarchar(255) DEFAULT '' NULL, [endpoint] nvarchar(255) DEFAULT '' NULL, + [domain] nvarchar(255) DEFAULT '' NULL, [is_https] nchar(1) DEFAULT ('N') NULL, [region] nvarchar(255) DEFAULT '' NULL, [status] nchar(1) DEFAULT ('1') NULL, @@ -2250,6 +2251,12 @@ 'SCHEMA', N'dbo', 'TABLE', N'sys_oss_config', 'COLUMN', N'endpoint' +GO +EXEC sp_addextendedproperty + 'MS_Description', N'鑷畾涔夊煙鍚�', + 'SCHEMA', N'dbo', + 'TABLE', N'sys_oss_config', + 'COLUMN', N'domain' GO EXEC sp_addextendedproperty 'MS_Description', N'鏄惁https锛圷=鏄�,N=鍚︼級', @@ -2311,11 +2318,13 @@ 'TABLE', N'sys_oss_config' GO -INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'1', N'minio', N'lihongbo', N'lihongbo.123', N'ruoyi', N'', N'http://81.70.150.73:9000', N'N', N'', N'0', N'', N'admin', getdate(), N'admin', getdate(), NULL) +INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [domain], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'1', N'minio', N'ruoyi', N'ruoyi123', N'ruoyi', N'', N'localhost:9000', N'',N'N', N'', N'0', N'', N'admin', getdate(), N'admin', getdate(), NULL) GO -INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'2', N'qiniu', N'XXXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi', N'', N'http://XXX.XXXX.com', N'N', N'z0', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) +INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [domain], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'2', N'qiniu', N'XXXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi', N'', N's3-cn-north-1.qiniucs.com', N'',N'N', N'', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) GO -INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'3', N'aliyun', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi', N'', N'http://oss-cn-beijing.aliyuncs.com', N'N', N'', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) +INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [domain], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'3', N'aliyun', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi', N'', N'oss-cn-beijing.aliyuncs.com', N'',N'N', N'', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) GO -INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'4', N'qcloud', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi-1250000000', N'', N'http://cos.ap-beijing.myqcloud.com', N'N', N'ap-beijing', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) +INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [domain], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'4', N'qcloud', N'XXXXXXXXXXXXXXX', N'XXXXXXXXXXXXXXX', N'ruoyi-1250000000', N'', N'cos.ap-beijing.myqcloud.com', N'',N'N', N'ap-beijing', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) +GO +INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [domain], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'4', N'image', N'ruoyi', N'ruoyi123', N'ruoyi', N'image', N'localhost:9000', N'',N'N', N'', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) GO diff --git a/script/sql/update/oracle/update-4.1-4.2.sql b/script/sql/update/oracle/update-4.1-4.2.sql new file mode 100644 index 0000000..a4b52fd --- /dev/null +++ b/script/sql/update/oracle/update-4.1-4.2.sql @@ -0,0 +1,10 @@ +ALTER TABLE "SYS_OSS_CONFIG" ADD ("DOMAIN" VARCHAR2(255)); + +COMMENT ON COLUMN "SYS_OSS_CONFIG"."DOMAIN" IS '鑷畾涔夊煙鍚�'; + +update sys_oss_config set endpoint = 'localhost:9000' where oss_config_id = 1; +update sys_oss_config set endpoint = 's3-cn-north-1.qiniucs.com', region = '' where oss_config_id = 2; +update sys_oss_config set endpoint = 'oss-cn-beijing.aliyuncs.com' where oss_config_id = 3; +update sys_oss_config set endpoint = 'cos.ap-beijing.myqcloud.com' where oss_config_id = 4; + +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', 'localhost:9000', '','N', '', '1', '', NULL, 'admin', sysdate, 'admin', sysdate); diff --git a/script/sql/update/postgres/update-4.1-4.2.sql b/script/sql/update/postgres/update-4.1-4.2.sql new file mode 100644 index 0000000..435dd39 --- /dev/null +++ b/script/sql/update/postgres/update-4.1-4.2.sql @@ -0,0 +1,11 @@ +ALTER TABLE "sys_oss_config" ADD COLUMN "domain" varchar(255); + +COMMENT ON COLUMN "sys_oss_config"."domain" IS '鑷畾涔夊煙鍚�'; + +update sys_oss_config set endpoint = 'localhost:9000' where oss_config_id = 1; +update sys_oss_config set endpoint = 's3-cn-north-1.qiniucs.com', region = '' where oss_config_id = 2; +update sys_oss_config set endpoint = 'oss-cn-beijing.aliyuncs.com' where oss_config_id = 3; +update sys_oss_config set endpoint = 'cos.ap-beijing.myqcloud.com' where oss_config_id = 4; + +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', 'localhost:9000', '','N', '', '1', '', 'admin', now(), 'admin', now(), NULL); + diff --git a/script/sql/update/sqlserver/update-4.1-4.2.sql b/script/sql/update/sqlserver/update-4.1-4.2.sql new file mode 100644 index 0000000..4a07d51 --- /dev/null +++ b/script/sql/update/sqlserver/update-4.1-4.2.sql @@ -0,0 +1,24 @@ +ALTER TABLE [sys_oss_config] ADD [domain] nvarchar(255) DEFAULT '' NULL +GO + +EXEC sp_addextendedproperty +'MS_Description', N'鑷畾涔夊煙鍚�', +'SCHEMA', N'dbo', +'TABLE', N'sys_oss_config', +'COLUMN', N'domain' +GO + +UPDATE [sys_oss_config] SET [access_key] = N'ruoyi', [secret_key] = N'ruoyi123', [endpoint] = N'localhost:9000' WHERE [oss_config_id] = 1 +GO + +UPDATE [sys_oss_config] SET [endpoint] = N's3-cn-north-1.qiniucs.com' WHERE [oss_config_id] = 2 +GO + +UPDATE [sys_oss_config] SET [endpoint] = N'oss-cn-beijing.aliyuncs.com' WHERE [oss_config_id] = 3 +GO + +UPDATE [sys_oss_config] SET [endpoint] = N'cos.ap-beijing.myqcloud.com' WHERE [oss_config_id] = 4 +GO + +INSERT INTO [sys_oss_config] ([oss_config_id], [config_key], [access_key], [secret_key], [bucket_name], [prefix], [endpoint], [domain], [is_https], [region], [status], [ext1], [create_by], [create_time], [update_by], [update_time], [remark]) VALUES (N'4', N'image', N'ruoyi', N'ruoyi123', N'ruoyi', N'image', N'localhost:9000', N'',N'N', N'', N'1', N'', N'admin', getdate(), N'admin', getdate(), NULL) +GO diff --git a/script/sql/update/update-4.1-4.2.sql b/script/sql/update/update-4.1-4.2.sql new file mode 100644 index 0000000..28a9ad7 --- /dev/null +++ b/script/sql/update/update-4.1-4.2.sql @@ -0,0 +1,9 @@ +alter table sys_oss_config add column domain varchar(255) null default '' COMMENT '鑷畾涔夊煙鍚�'; + +update sys_oss_config set endpoint = 'localhost:9000' where oss_config_id = 1; +update sys_oss_config set endpoint = 's3-cn-north-1.qiniucs.com', region = '' where oss_config_id = 2; +update sys_oss_config set endpoint = 'oss-cn-beijing.aliyuncs.com' where oss_config_id = 3; +update sys_oss_config set endpoint = 'cos.ap-beijing.myqcloud.com' where oss_config_id = 4; + +insert into sys_oss_config values (5, 'image', 'ruoyi', 'ruoyi123', 'ruoyi', 'image', 'localhost:9000', '','N', '', '1', '', 'admin', sysdate(), 'admin', sysdate(), NULL); + -- Gitblit v1.9.3