diff --git a/blade-ops-api/blade-resource-api/pom.xml b/blade-ops-api/blade-resource-api/pom.xml index 889149c9..b840b978 100644 --- a/blade-ops-api/blade-resource-api/pom.xml +++ b/blade-ops-api/blade-resource-api/pom.xml @@ -23,6 +23,11 @@ org.springblade blade-starter-tenant + + + org.springblade + blade-starter-oss + diff --git a/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOssClient.java b/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOssClient.java new file mode 100644 index 00000000..5e8dea57 --- /dev/null +++ b/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOssClient.java @@ -0,0 +1,38 @@ +package org.springblade.resource.feign; + +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.core.oss.model.BladeFile; +import org.springblade.core.sms.model.SmsResponse; +import org.springblade.core.tool.api.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.multipart.MultipartFile; + +/** + * 文件上传feign + */ +@FeignClient( + value = AppConstant.APPLICATION_RESOURCE_NAME + , + fallback = IOssClientFallback.class +) +public interface IOssClient { + + String API_PREFIX = "/client"; + // 文件上传 + String FILE_UPLOAD = API_PREFIX + "/file_upload"; + + + + @PostMapping(name = FILE_UPLOAD,consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + R fileUpload(@RequestPart(value = "file") MultipartFile file); + + + + + + +} diff --git a/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOssClientFallback.java b/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOssClientFallback.java new file mode 100644 index 00000000..5b9114e5 --- /dev/null +++ b/blade-ops-api/blade-resource-api/src/main/java/org/springblade/resource/feign/IOssClientFallback.java @@ -0,0 +1,17 @@ +package org.springblade.resource.feign; + +import org.springblade.core.sms.model.SmsResponse; +import org.springblade.core.tool.api.R; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +@Component +public class IOssClientFallback implements IOssClient { + + + + @Override + public R fileUpload(MultipartFile files) { + return R.fail("远程调用失败"); + } +} diff --git a/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java b/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java index 1db1fe6c..40d2b5c1 100644 --- a/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java +++ b/blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java @@ -86,6 +86,17 @@ public class OssBuilder { */ public OssTemplate template(String code) { String tenantId = AuthUtil.getTenantId(); + return template(code, tenantId); + } + + + /** + * 构建存储对象 + * @param code + * @param tenantId + * @return + */ + public OssTemplate template(String code,String tenantId ) { Oss oss = getOss(tenantId, code); Oss ossCached = ossPool.get(tenantId); OssTemplate template = templatePool.get(tenantId); @@ -118,6 +129,7 @@ public class OssBuilder { return template; } + /** * 获取对象存储实体 * diff --git a/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java b/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java new file mode 100644 index 00000000..415a1bab --- /dev/null +++ b/blade-ops/blade-resource/src/main/java/org/springblade/resource/feign/OssClient.java @@ -0,0 +1,31 @@ +package org.springblade.resource.feign; + +import lombok.AllArgsConstructor; +import org.springblade.core.oss.model.BladeFile; +import org.springblade.core.sms.model.SmsResponse; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.core.tool.api.R; +import org.springblade.resource.builder.oss.OssBuilder; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +@NonDS +@RestController +@AllArgsConstructor +public class OssClient implements IOssClient { + + /** + * 对象存储构建类 + */ + private final OssBuilder ossBuilder; + + + @Override + @PostMapping(name = FILE_UPLOAD,consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R fileUpload(@RequestPart("file") MultipartFile file) { + return R.data(ossBuilder.template("minio","000000").putFile(file)); + } +}