ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/constant/CloudConstant.java ÐÞ¸Ä @@ -8,7 +8,7 @@ * * @author Lion Li */ public class CloudConstant { public class OssConstant { /** * OSS模åKEY @@ -18,12 +18,12 @@ /** * 对象åå¨é ç½®KEY */ public static final String CLOUD_STORAGE_CONFIG_KEY = "CloudStorageConfig"; public static final String OSS_CONFIG_KEY = "OssConfig"; /** * ç¼åé ç½®KEY */ public static final String CACHE_CONFIG_KEY = SYS_OSS_KEY + CLOUD_STORAGE_CONFIG_KEY; public static final String CACHE_CONFIG_KEY = SYS_OSS_KEY + OSS_CONFIG_KEY; /** * é¢è§åè¡¨èµæºå¼å ³Key ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/CloudServiceEnumd.java
ÎļþÒÑɾ³ý ruoyi-oss/src/main/java/com/ruoyi/oss/enumd/OssEnumd.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,63 @@ package com.ruoyi.oss.enumd; import com.ruoyi.common.utils.StringUtils; 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<?> serviceClass; public static Class<?> getServiceClass(String value) { for (OssEnumd clazz : values()) { if (clazz.getValue().equals(value)) { return clazz.getServiceClass(); } } return null; } public static String getServiceName(String value) { for (OssEnumd clazz : values()) { if (clazz.getValue().equals(value)) { return StringUtils.uncapitalize(clazz.getServiceClass().getSimpleName()); } } return null; } } ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
@@ -4,12 +4,12 @@ import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.reflect.ReflectUtils; import com.ruoyi.oss.constant.CloudConstant; import com.ruoyi.oss.enumd.CloudServiceEnumd; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.CloudStorageProperties; import com.ruoyi.oss.service.ICloudStorageStrategy; import com.ruoyi.oss.service.abstractd.AbstractCloudStorageStrategy; 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; @@ -26,14 +26,14 @@ /** * æå¡å®ä¾ç¼å */ private static final Map<String, ICloudStorageStrategy> SERVICES = new ConcurrentHashMap<>(); private static final Map<String, IOssStrategy> SERVICES = new ConcurrentHashMap<>(); /** * åå§åå·¥å */ public static void init() { log.info("åå§åOSSå·¥å"); RedisUtils.subscribe(CloudConstant.CACHE_CONFIG_KEY, String.class, msg -> { RedisUtils.subscribe(OssConstant.CACHE_CONFIG_KEY, String.class, msg -> { refreshService(msg); log.info("订é å·æ°OSSé ç½® => " + msg); }); @@ -42,9 +42,9 @@ /** * è·åé»è®¤å®ä¾ */ public static ICloudStorageStrategy instance() { public static IOssStrategy instance() { // è·åredis é»è®¤ç±»å String type = RedisUtils.getCacheObject(CloudConstant.CACHE_CONFIG_KEY); String type = RedisUtils.getCacheObject(OssConstant.CACHE_CONFIG_KEY); if (StringUtils.isEmpty(type)) { throw new OssException("æä»¶å卿å¡ç±»åæ æ³æ¾å°!"); } @@ -54,8 +54,8 @@ /** * æ ¹æ®ç±»åè·åå®ä¾ */ public static ICloudStorageStrategy instance(String type) { ICloudStorageStrategy service = SERVICES.get(type); public static IOssStrategy instance(String type) { IOssStrategy service = SERVICES.get(type); if (service == null) { refreshService(type); service = SERVICES.get(type); @@ -64,14 +64,14 @@ } private static void refreshService(String type) { Object json = RedisUtils.getCacheObject(CloudConstant.SYS_OSS_KEY + type); CloudStorageProperties properties = JsonUtils.parseObject(json.toString(), CloudStorageProperties.class); Object json = RedisUtils.getCacheObject(OssConstant.SYS_OSS_KEY + type); OssProperties properties = JsonUtils.parseObject(json.toString(), OssProperties.class); if (properties == null) { throw new OssException("ç³»ç»å¼å¸¸, '" + type + "'é 置信æ¯ä¸åå¨!"); } // è·åredisé ç½®ä¿¡æ¯ å建对象 å¹¶ç¼å ICloudStorageStrategy service = (ICloudStorageStrategy) ReflectUtils.newInstance(CloudServiceEnumd.getServiceClass(type)); ((AbstractCloudStorageStrategy)service).init(properties); IOssStrategy service = (IOssStrategy) ReflectUtils.newInstance(OssEnumd.getServiceClass(type)); ((AbstractOssStrategy)service).init(properties); SERVICES.put(type, service); } ruoyi-oss/src/main/java/com/ruoyi/oss/properties/OssProperties.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/properties/CloudStorageProperties.java ÐÞ¸Ä @@ -10,7 +10,7 @@ * @author Lion Li */ @Data public class CloudStorageProperties { public class OssProperties { /** * åå ruoyi-oss/src/main/java/com/ruoyi/oss/service/IOssStrategy.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/service/ICloudStorageStrategy.java ÐÞ¸Ä @@ -9,7 +9,7 @@ * * @author Lion Li */ public interface ICloudStorageStrategy { public interface IOssStrategy { void createBucket(); ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractOssStrategy.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/service/abstractd/AbstractCloudStorageStrategy.java ÐÞ¸Ä @@ -5,8 +5,8 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.properties.CloudStorageProperties; import com.ruoyi.oss.service.ICloudStorageStrategy; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.IOssStrategy; import java.io.InputStream; @@ -15,11 +15,11 @@ * * @author Lion Li */ public abstract class AbstractCloudStorageStrategy implements ICloudStorageStrategy { public abstract class AbstractOssStrategy implements IOssStrategy { protected CloudStorageProperties properties; protected OssProperties properties; public abstract void init(CloudStorageProperties properties); public abstract void init(OssProperties properties); @Override public abstract void createBucket(); ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunOssStrategy.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/AliyunCloudStorageStrategy.java ÐÞ¸Ä @@ -9,10 +9,10 @@ import com.aliyun.oss.model.PutObjectRequest; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.enumd.CloudServiceEnumd; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.CloudStorageProperties; import com.ruoyi.oss.service.abstractd.AbstractCloudStorageStrategy; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -22,12 +22,12 @@ * * @author Lion Li */ public class AliyunCloudStorageStrategy extends AbstractCloudStorageStrategy { public class AliyunOssStrategy extends AbstractOssStrategy { private OSSClient client; @Override public void init(CloudStorageProperties cloudStorageProperties) { public void init(OssProperties cloudStorageProperties) { properties = cloudStorageProperties; try { ClientConfiguration configuration = new ClientConfiguration(); @@ -57,7 +57,7 @@ @Override public String getServiceType() { return CloudServiceEnumd.ALIYUN.getValue(); return OssEnumd.ALIYUN.getValue(); } @Override ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioOssStrategy.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/MinioCloudStorageStrategy.java ÐÞ¸Ä @@ -2,11 +2,11 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.enumd.CloudServiceEnumd; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.enumd.PolicyType; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.CloudStorageProperties; import com.ruoyi.oss.service.abstractd.AbstractCloudStorageStrategy; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import io.minio.*; import org.springframework.http.MediaType; @@ -18,12 +18,12 @@ * * @author Lion Li */ public class MinioCloudStorageStrategy extends AbstractCloudStorageStrategy { public class MinioOssStrategy extends AbstractOssStrategy { private MinioClient minioClient; @Override public void init(CloudStorageProperties cloudStorageProperties) { public void init(OssProperties cloudStorageProperties) { properties = cloudStorageProperties; try { minioClient = MinioClient.builder() @@ -57,7 +57,7 @@ @Override public String getServiceType() { return CloudServiceEnumd.MINIO.getValue(); return OssEnumd.MINIO.getValue(); } @Override ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudOssStrategy.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QcloudCloudStorageStrategy.java ÐÞ¸Ä @@ -9,10 +9,10 @@ import com.qcloud.cos.region.Region; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.enumd.CloudServiceEnumd; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.CloudStorageProperties; import com.ruoyi.oss.service.abstractd.AbstractCloudStorageStrategy; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -22,12 +22,12 @@ * * @author Lion Li */ public class QcloudCloudStorageStrategy extends AbstractCloudStorageStrategy { public class QcloudOssStrategy extends AbstractOssStrategy { private COSClient client; @Override public void init(CloudStorageProperties cloudStorageProperties) { public void init(OssProperties cloudStorageProperties) { properties = cloudStorageProperties; try { COSCredentials credentials = new BasicCOSCredentials( @@ -65,7 +65,7 @@ @Override public String getServiceType() { return CloudServiceEnumd.QCLOUD.getValue(); return OssEnumd.QCLOUD.getValue(); } @Override ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuOssStrategy.java
ÎļþÃû´Ó ruoyi-oss/src/main/java/com/ruoyi/oss/service/impl/QiniuCloudStorageStrategy.java ÐÞ¸Ä @@ -8,10 +8,10 @@ import com.qiniu.storage.UploadManager; import com.qiniu.util.Auth; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.enumd.CloudServiceEnumd; import com.ruoyi.oss.enumd.OssEnumd; import com.ruoyi.oss.exception.OssException; import com.ruoyi.oss.properties.CloudStorageProperties; import com.ruoyi.oss.service.abstractd.AbstractCloudStorageStrategy; import com.ruoyi.oss.properties.OssProperties; import com.ruoyi.oss.service.abstractd.AbstractOssStrategy; import java.io.InputStream; @@ -20,14 +20,14 @@ * * @author Lion Li */ public class QiniuCloudStorageStrategy extends AbstractCloudStorageStrategy { public class QiniuOssStrategy extends AbstractOssStrategy { private UploadManager uploadManager; private BucketManager bucketManager; private Auth auth; @Override public void init(CloudStorageProperties cloudStorageProperties) { public void init(OssProperties cloudStorageProperties) { properties = cloudStorageProperties; try { Configuration config = new Configuration(getRegion(properties.getRegion())); @@ -62,7 +62,7 @@ @Override public String getServiceType() { return CloudServiceEnumd.QINIU.getValue(); return OssEnumd.QINIU.getValue(); } @Override ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
@@ -15,7 +15,7 @@ import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.constant.CloudConstant; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.factory.OssFactory; import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.system.domain.bo.SysOssConfigBo; @@ -54,7 +54,7 @@ for (SysOssConfig config : list) { String configKey = config.getConfigKey(); if ("0".equals(config.getStatus())) { RedisUtils.setCacheObject(CloudConstant.CACHE_CONFIG_KEY, configKey); RedisUtils.setCacheObject(OssConstant.CACHE_CONFIG_KEY, configKey); } setConfigCache(true, config); } @@ -114,7 +114,7 @@ @Override public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { if (isValid) { if (CollUtil.containsAny(ids, CloudConstant.SYSTEM_DATA_IDS)) { if (CollUtil.containsAny(ids, OssConstant.SYSTEM_DATA_IDS)) { throw new ServiceException("ç³»ç»å ç½®, ä¸å¯å é¤!"); } } @@ -157,7 +157,7 @@ .set(SysOssConfig::getStatus, "1")); row += baseMapper.updateById(sysOssConfig); if (row > 0) { RedisUtils.setCacheObject(CloudConstant.CACHE_CONFIG_KEY, sysOssConfig.getConfigKey()); RedisUtils.setCacheObject(OssConstant.CACHE_CONFIG_KEY, sysOssConfig.getConfigKey()); } return row; } @@ -169,7 +169,7 @@ * @return ç¼åé®key */ private String getCacheKey(String configKey) { return CloudConstant.SYS_OSS_KEY + configKey; return OssConstant.SYS_OSS_KEY + configKey; } /** @@ -184,7 +184,7 @@ RedisUtils.setCacheObject( getCacheKey(config.getConfigKey()), JsonUtils.toJsonString(config)); RedisUtils.publish(CloudConstant.CACHE_CONFIG_KEY, config.getConfigKey(), msg -> { RedisUtils.publish(OssConstant.CACHE_CONFIG_KEY, config.getConfigKey(), msg -> { log.info("åå¸å·æ°OSSé ç½® => " + msg); }); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java
@@ -10,7 +10,7 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.factory.OssFactory; import com.ruoyi.oss.service.ICloudStorageStrategy; 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; @@ -56,7 +56,7 @@ public SysOss upload(MultipartFile file) { String originalfileName = file.getOriginalFilename(); String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); ICloudStorageStrategy storage = OssFactory.instance(); IOssStrategy storage = OssFactory.instance(); UploadResult uploadResult; try { uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); @@ -81,7 +81,7 @@ } List<SysOss> list = listByIds(ids); for (SysOss sysOss : list) { ICloudStorageStrategy storage = OssFactory.instance(sysOss.getService()); IOssStrategy storage = OssFactory.instance(sysOss.getService()); storage.delete(sysOss.getUrl()); } return removeByIds(ids);