From db2b00978eb478cc5f842cb4ba06c29276f6abca Mon Sep 17 00:00:00 2001
From: luliqiang <kidgrow>
Date: Mon, 15 Jun 2020 16:15:49 +0800
Subject: [PATCH] FileCenter 扩展Feign调用接口【增加imageType参数(Xray/Logo)】

---
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java          |   29 +++++++++++---
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java              |    6 +-
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java         |   20 ++++++++++
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/util/FileUtil.java                             |   16 +++++++
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/model/FileInfo.java                            |    7 +++
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java |    2 
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java                      |    2 +
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java                         |    5 +-
 kidgrow-business/kidgrow-filecenter/pom.xml                                                                                                    |    4 +-
 9 files changed, 76 insertions(+), 15 deletions(-)

diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java
index 030bc28..3530019 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java
@@ -7,6 +7,7 @@
 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;
 
@@ -30,9 +31,9 @@
     /**
      * 根据条件查询
      * @param file
+     * @param imgType 文件类型:X光片/医院Logo[Xray/Logo]
      */
     @PostMapping(value = "/files-upload",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    FileInfo feignUpload(@RequestPart("file") MultipartFile file);
-
+    FileInfo feignUpload(@RequestPart("file") MultipartFile file,@RequestParam("imgType") String imgType);
 
 }
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
index fc724c6..32c536d 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java
@@ -30,7 +30,7 @@
                 return null;
             }
             @Override
-            public FileInfo feignUpload(@RequestPart("file") MultipartFile file) {
+            public FileInfo feignUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) {
                 return null;
             }
         };
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/model/FileInfo.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/model/FileInfo.java
index f1b9def..bcf5181 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/model/FileInfo.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/model/FileInfo.java
@@ -35,6 +35,13 @@
      * 是否图片
      */
     private Boolean isImg;
+
+    /**
+     * 图片类型
+     * Xray还是logo
+     */
+    @TableField(exist = false)
+    private String imgType;
     /**
      * 上传文件类型
      */
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
index 8d05b81..b3311a4 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
@@ -18,6 +18,8 @@
 public interface IFileService extends IService<FileInfo> {
     FileInfo upload(MultipartFile file ) throws Exception;
 
+    FileInfo upload(MultipartFile file ,String imgType) throws Exception;
+
     PageResult<FileInfo> findList(Map<String, Object> params);
 
     void delete(String id);
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
index 6a66532..527487e 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
@@ -48,6 +48,26 @@
         return fileInfo;
     }
 
+    @Override
+    public FileInfo upload(MultipartFile file,String imgType) throws Exception {
+        FileInfo fileInfo = FileUtil.getFileInfo(file);
+        FileInfo oldFileInfo = baseMapper.selectById(fileInfo.getId());
+        if (oldFileInfo != null) {
+            return oldFileInfo;
+        }
+        if (!fileInfo.getName().contains(FILE_SPLIT)) {
+            throw new IllegalArgumentException("缺少后缀名");
+        }
+        fileInfo.setImgType(imgType); // X光片或者Logo
+        uploadFile(file, fileInfo);
+        // 设置文件来源
+        fileInfo.setSource(fileType());
+        // 将文件信息保存到数据库
+        baseMapper.insert(fileInfo);
+
+        return fileInfo;
+    }
+
     /**
      * 文件来源
      *
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/util/FileUtil.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/util/FileUtil.java
index 0e9d05e..3cac468 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/util/FileUtil.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/util/FileUtil.java
@@ -32,7 +32,21 @@
         fileInfo.setId(IdUtil.fastSimpleUUID());
         fileInfo.setName(file.getOriginalFilename());
         fileInfo.setContentType(file.getContentType());
-        fileInfo.setIsImg(fileInfo.getContentType().startsWith("image/"));
+        if (fileInfo.getContentType().startsWith("image/")) {
+            fileInfo.setIsImg(true);
+        }
+        else if (fileInfo.getContentType().startsWith("multipart")){
+            String extendName = file.getOriginalFilename().substring(file.getOriginalFilename().indexOf(".")+1,file.getOriginalFilename().length()).toLowerCase();
+            if (extendName.equals("png") || extendName.equals("bmp") || extendName.equals("jpg") || extendName.equals("jpeg") || extendName.equals("gif")) {
+                fileInfo.setIsImg(true);
+            } else  {
+                fileInfo.setIsImg(false);
+            }
+
+        } else  {
+            fileInfo.setIsImg(false);
+        }
+
         fileInfo.setSize(file.getSize());
         fileInfo.setCreateTime(new Date());
         return fileInfo;
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
index e22afd5..aca4c2e 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
@@ -67,13 +67,30 @@
             int last = file.getOriginalFilename().length();
             String fileType = file.getOriginalFilename().substring(begin, last);
             String fileName= UUID.randomUUID().toString().replaceAll("-","")+fileType;
-            if(clientID.equals("hospital")){//医院端平台,根据医院ID,科室ID进行OSS存储
-                String orgID=httpServletRequest.getHeader(SecurityConstants.USER_ORG_ID_HEADER);
-                String depID=httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER);
-                String fileFolder="KidgrowAI/"+orgID+"/"+depID+"/";
+            String fileFolder = "";
+            if(clientID.equals("hospital")){//医院端平台,
 
-                ossClient.putObject(fileProperties.getOss().getBucketName(), fileFolder + folderByDate + "/" + fileName, file.getInputStream());
-                fileInfo.setUrl(fileProperties.getOss().getDomain() + fileFolder + folderByDate + "/" + fileName);
+                if ((fileInfo.getImgType() != null)) {
+                    // 光片需要按照根据医院ID,科室ID,日期进行OSS存储
+                    if (fileInfo.getImgType().toLowerCase().equals("xray")) {
+                        String hospitalID = httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER);
+                        String depID = httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER);
+                        fileFolder = "Xray/" + hospitalID + "/" + depID + "/"+ folderByDate + "/";
+                    }
+                    // 医院Logo只保存在一个目录中
+                    else if (fileInfo.getImgType().toLowerCase().equals("logo")) {
+                        fileFolder = "HospitalLogo/";
+                    } else {
+                        fileFolder = "OtherImage/"+ folderByDate + "/";
+                    }
+
+                } else {
+                    fileFolder = "OtherImage/"+ folderByDate + "/";
+                }
+
+                ossClient.putObject(fileProperties.getOss().getBucketName(), fileFolder +  fileName, file.getInputStream());
+                fileInfo.setUrl(fileProperties.getOss().getDomain() + fileFolder  + fileName);
+
             }
             else {
                 ossClient.putObject(fileProperties.getOss().getBucketName(), fileProperties.getOss().getFolder() + folderByDate + "/" + fileName, file.getInputStream());
diff --git a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
index f92bf09..a599efa 100644
--- a/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
+++ b/kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
@@ -46,9 +46,9 @@
      * @return
      * @throws Exception
      */
-    @PostMapping(value="/files-upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public FileInfo feignUpload(MultipartFile file) throws Exception {
-        return fileService.upload(file);
+    @PostMapping(value="/files-upload",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    public FileInfo feignUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) throws Exception {
+        return fileService.upload(file,imgType);
     }
 
 
diff --git a/kidgrow-business/kidgrow-filecenter/pom.xml b/kidgrow-business/kidgrow-filecenter/pom.xml
index a9e9609..68b0ae5 100644
--- a/kidgrow-business/kidgrow-filecenter/pom.xml
+++ b/kidgrow-business/kidgrow-filecenter/pom.xml
@@ -23,13 +23,13 @@
         <dependency>
             <groupId>io.github.openfeign.form</groupId>
             <artifactId>feign-form</artifactId>
-            <version>3.3.0</version>
+            <version>3.8.0</version>
         </dependency>
 
         <dependency>
             <groupId>io.github.openfeign.form</groupId>
             <artifactId>feign-form-spring</artifactId>
-            <version>3.3.0</version>
+            <version>3.8.0</version>
         </dependency>
         <dependency>
             <groupId>com.kidgrow</groupId>

--
Gitblit v1.8.0