| 
					
				 | 
			
			
				@@ -1,44 +1,59 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ruoyi.oss.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import cn.hutool.core.io.IoUtil; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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.config.CloudStorageConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.oss.enumd.CloudServiceEnumd; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.oss.exception.OssException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.oss.factory.OssFactory; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.oss.properties.CloudStorageProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.ruoyi.oss.properties.QiniuProperties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ruoyi.oss.service.abstractd.AbstractCloudStorageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.InitializingBean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.context.annotation.Lazy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import java.io.InputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 七牛云存储 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author Lion Li 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Lazy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService implements InitializingBean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private UploadManager uploadManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private BucketManager bucketManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private String token; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private final UploadManager uploadManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private final BucketManager bucketManager; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private final String token; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	private final QiniuProperties properties; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public QiniuCloudStorageServiceImpl(CloudStorageConfig config) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.config = config; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		// 初始化 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private void init() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public QiniuCloudStorageServiceImpl(CloudStorageProperties properties) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.properties = properties.getQiniu(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// z0 z1 z2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		Configuration config = new Configuration(Region.autoRegion()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		// 默认不使用https 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		config.useHttpsDomains = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		uploadManager = new UploadManager(config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		Auth auth = Auth.create(this.config.getAccessKey(), this.config.getSecretKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		token = auth.uploadToken(this.config.getBucketName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		Auth auth = Auth.create( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.properties.getAccessKey(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			this.properties.getSecretKey()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		token = auth.uploadToken(this.properties.getBucketName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		bucketManager = new BucketManager(auth, config); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public String getServiceType() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return CloudServiceEnumd.QINIU.getValue(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public String upload(byte[] data, String path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		try { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -49,14 +64,14 @@ public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} catch (Exception e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			throw new OssException("上传文件失败,请核对七牛配置信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return config.getDomain() + "/" + path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return this.properties.getDomain() + "/" + path; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	public void delete(String path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			path = path.replace(config.getDomain() + "/", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			Response res = bucketManager.delete(config.getBucketName(), path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			path = path.replace(this.properties.getDomain() + "/", ""); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Response res = bucketManager.delete(this.properties.getBucketName(), path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			if (!res.isOK()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 				throw new RuntimeException("删除七牛文件出错:" + res.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			} 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -66,19 +81,18 @@ public class QiniuCloudStorageServiceImpl extends AbstractCloudStorageService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public String upload(InputStream inputStream, String path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		byte[] data = IoUtil.readBytes(inputStream); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return this.upload(data, path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public String uploadSuffix(byte[] data, String suffix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return upload(data, getPath(this.properties.getPrefix(), suffix)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public String uploadSuffix(byte[] data, String suffix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return upload(data, getPath(config.getPrefix(), suffix)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public String uploadSuffix(InputStream inputStream, String suffix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return upload(inputStream, getPath(this.properties.getPrefix(), suffix)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public String uploadSuffix(InputStream inputStream, String suffix) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		return upload(inputStream, getPath(config.getPrefix(), suffix)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void afterPropertiesSet() throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		OssFactory.register(getServiceType(),this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |