Ver código fonte

oss文件框架增加dubbo/feign调用

lengfaqiang 2 anos atrás
pai
commit
48ddae21f7

+ 38 - 0
sckw-modules-api/sckw-file-api/pom.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.sckw</groupId>
+        <artifactId>sckw-modules-api</artifactId>
+        <version>1.0.0</version>
+    </parent>
+
+
+    <artifactId>sckw-file</artifactId>
+    <version>1.0.0</version>
+    <description>系统基础服务接口</description>
+
+    <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-openfeign-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-core</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 16 - 0
sckw-modules-api/sckw-file-api/src/main/java/com/sckw/file/api/dubbo/FileApiDubboService.java

@@ -0,0 +1,16 @@
+package com.sckw.file.api.dubbo;
+
+import com.sckw.core.web.response.HttpResult;
+
+/**
+ * @author lfdc
+ * @version 1.0
+ * @className FileApiDubboService
+ * @description fileDubbo服务
+ * @company sckw
+ * @date 2023-06-06 10:06:27
+ */
+public interface FileApiDubboService {
+
+    HttpResult fileUpload(String contentType, String oFileName, byte[] bytes);
+}

+ 32 - 0
sckw-modules-api/sckw-file-api/src/main/java/com/sckw/file/api/feign/FileApiFeignService.java

@@ -0,0 +1,32 @@
+package com.sckw.file.api.feign;
+
+import com.sckw.core.web.response.HttpResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @author lfdc
+ * @version 1.0
+ * @className FileApiFeignService
+ * @description 定义oss文件Feign
+ * @company sckw
+ * @date 2023-06-06 10:06:06
+ */
+//name:调⽤的服务名称,和服务提供者yml⽂件中spring.application.name保持⼀致
+//path: 定义当前FeignClient的统一前缀
+//url: 定义当前FeignClient调用地址
+@FeignClient(name = "sckw-file",path = "/file",url = "http://127.0.0.1:10050")
+public interface FileApiFeignService {
+
+    /**
+     * 上传文件至OSS
+     * @param file
+     * @return
+     */
+   @RequestMapping(value = "/fileFeignUpload",method = RequestMethod.POST)
+    public HttpResult fileFeignUpload(@RequestParam("file") MultipartFile file) ;
+
+}

+ 52 - 4
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/FileApiController.java

@@ -2,12 +2,17 @@ package com.sckw.example.controller;
 
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.example.service.FileService;
+import com.sckw.file.api.dubbo.FileApiDubboService;
+import com.sckw.file.api.feign.FileApiFeignService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
+
 /**
  * @author lfdc
  * @version 1.0
@@ -21,19 +26,25 @@ import org.springframework.web.multipart.MultipartFile;
 @RestController
 @RequestMapping("/file")
 @AllArgsConstructor
-//@RequestMapping("/export")
 public class FileApiController {
 
+    @Autowired
+    private FileApiFeignService fileApiFeignService;
+
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    private FileApiDubboService fileApiDubboService;
+
     @Autowired
     private FileService fileService;
 
     /**
      * 上传文件至OSS
+     *
      * @param file
      * @return
      */
-    @RequestMapping(value = "/fileUpload",method = RequestMethod.POST)
-    public HttpResult fileUpload(@RequestParam("file")MultipartFile file) {
+    @RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
+    public HttpResult fileUpload(@RequestParam("file") MultipartFile file) {
         //获取上传文件
         String url = fileService.uploadFile(file);
         return HttpResult.ok(url);
@@ -42,9 +53,10 @@ public class FileApiController {
 
     /**
      * OSS下载文件/获取文件地址
+     *
      * @return
      */
-        @GetMapping("/fileDownload")
+    @GetMapping("/fileDownload")
     public HttpResult fileDownload() {
         String fileName = "测试=JPEG.webp";
         //获取上传文件
@@ -52,4 +64,40 @@ public class FileApiController {
         return HttpResult.ok(url);
     }
 
+
+    /**
+     * 基于feign调用
+     *
+     * @param file
+     * @return
+     */
+    @RequestMapping (value = "/fileFeignUpload",method = RequestMethod.POST)
+    public HttpResult fileFeignUpload(@RequestParam("file") MultipartFile file) {
+        //auth 服务 调用 file服务提供的feign接口
+        HttpResult result = fileApiFeignService.fileFeignUpload(file);
+        return result;
+    }
+
+    /**
+     * 基于dubbo调用
+     *
+     * @param file
+     * @return
+     */
+    @GetMapping("fileDubboUpload")
+    public HttpResult fileDubboUpload(@RequestParam("file") MultipartFile file) throws IOException {
+        // 调用 file服务提供的dubbo接口
+        //需要将文件转换成byte否则为空
+        //获取文件类型
+        String contentType = file.getContentType();
+        //获取上传文件的原始文件名
+        String oFileName = file.getOriginalFilename();
+        //把文件转化成byte[]
+        byte[] bytes = file.getBytes();
+
+        HttpResult result = fileApiDubboService.fileUpload(contentType,oFileName,bytes);
+        return result;
+    }
+
+
 }

+ 24 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/dubbo/FileServiceImpl.java

@@ -0,0 +1,24 @@
+package com.sckw.example.dubbo;
+
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.file.api.dubbo.FileApiDubboService;
+import org.apache.dubbo.config.annotation.DubboService;
+
+/**
+ * @author lfdc
+ * @version 1.0
+ * @className FileServiceImpl
+ * @description 实现File的dubbo实现类
+ * @company sckw
+ * @date 2023-06-06 10:06:31
+ */
+@DubboService(group = "design", version = "2.0.0")
+public class FileServiceImpl implements FileApiDubboService {
+
+
+    @Override
+    public HttpResult fileUpload(String contentType, String oFileName, byte[] bytes) {
+        System.out.println("文件类型"+contentType+"文件名称"+oFileName+"文件输出流"+bytes);
+        return HttpResult.ok();
+    }
+}

+ 13 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/feign/FileApiFeignServiceImpl.java

@@ -0,0 +1,13 @@
+package com.sckw.example.feign;
+
+/**
+ * @author lfdc
+ * @version 1.0
+ * @className FileApiFeignServiceImpl
+ * @description file文件feign实现类
+ * @company sckw
+ * @date 2023-06-06 10:06:52
+ */
+public class FileApiFeignServiceImpl {
+
+}

+ 3 - 6
sckw-modules/sckw-example/src/main/java/com/sckw/example/service/FileService.java

@@ -1,9 +1,6 @@
 package com.sckw.example.service;
 
 
-import com.sckw.excel.config.easyexcel.RequestHolder;
-import com.sckw.file.common.enums.FileEnum;
-import com.sckw.file.utils.FileUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -30,9 +27,9 @@ public class FileService {
      */
     public String uploadFile(MultipartFile file) {
         //
-        String url = FileUtils.uploadFile(file, FileEnum.DOCUMENT_ADDRESS);
+//        String url = FileUtils.uploadFile(file, FileEnum.DOCUMENT_ADDRESS);
         //
-        return url;
+        return "url";
     }
 
 
@@ -42,7 +39,7 @@ public class FileService {
      * @return
      */
     public String fileDownload(String fileName) {
-        FileUtils.downloadByObjectName(RequestHolder.getResponse(),fileName);
+//        FileUtils.downloadByObjectName(RequestHolder.getResponse(),fileName);
         return null;
     }
 }

+ 14 - 0
sckw-modules/sckw-file/src/main/java/com/sckw/file/controller/FileApiController.java

@@ -40,6 +40,20 @@ public class FileApiController {
 
     }
 
+    /**
+     * feign接收上传文件至OSS
+     *
+     * @param file
+     * @return
+     */
+    @RequestMapping(value = "/fileFeignUpload", method = RequestMethod.POST)
+    public HttpResult fileFeignUpload(@RequestParam("file") MultipartFile file) {
+        //获取上传文件
+//        String url = fileService.uploadFile(file);
+        return fileService.uploadFile(file);
+
+    }
+
     /**
      * 上传文件至OSS
      *