From a3e3f7e01b6dceef49b978ed3f133213167e42fe Mon Sep 17 00:00:00 2001
From: dougang <78125310@kidgrow.com>
Date: Thu, 03 Dec 2020 11:19:34 +0800
Subject: [PATCH] 1、OSS增加C端目录 2、修改上传路径,支持不同目录上传

---
 kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java |  124 +++++++++++++++++++++++++++++-----------
 1 files changed, 89 insertions(+), 35 deletions(-)

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 ec404eb..4d30ebc 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
@@ -2,12 +2,16 @@
 
 import com.aliyun.oss.OSSClient;
 import com.aliyun.oss.common.auth.DefaultCredentialProvider;
+import com.aliyun.oss.model.GetObjectRequest;
+import com.aliyun.oss.model.OSSObject;
 import com.kidgrow.common.constant.SecurityConstants;
 import com.kidgrow.common.utils.DateUtil;
+import com.kidgrow.common.utils.StringUtils;
 import com.kidgrow.filecenter.model.FileInfo;
 import com.kidgrow.filecenter.properties.FileServerProperties;
 import com.kidgrow.filecenter.service.impl.AbstractIFileService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -15,6 +19,7 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.InputStream;
 import java.util.Date;
 import java.util.UUID;
 
@@ -31,7 +36,6 @@
 public class AliyunOSSAutoConfigure {
     @Autowired
     private FileServerProperties fileProperties;
-
 
 
     /**
@@ -59,45 +63,26 @@
             return fileProperties.getType();
         }
 
+        @Value("${spring.profiles.active}")
+        private String OssPathEn;
+
         @Override
         protected void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception {
-            String clientID= httpServletRequest.getHeader(SecurityConstants.CLIENT_HEADER);
-            String folderByDate =DateUtil.formatDate(new Date());
-            int begin = file.getOriginalFilename().indexOf(".");
+            String clientID = httpServletRequest.getHeader(SecurityConstants.CLIENT_HEADER);
+            String hospitalID = httpServletRequest.getHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER);
+            String depID = httpServletRequest.getHeader(SecurityConstants.USER_DEP_ID_HEADER);
+            String folderByDate = DateUtil.formatDate(new Date());
+            int begin = file.getOriginalFilename().lastIndexOf(".");
             int last = file.getOriginalFilename().length();
             String fileType = file.getOriginalFilename().substring(begin, last);
-            String fileName= UUID.randomUUID().toString().replaceAll("-","")+fileType;
+            String fileName = UUID.randomUUID().toString().replaceAll("-", "") + fileType;
             String fileFolder = "";
-            if(clientID.equals("hospital")){//医院端平台,
-
-                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 if (fileInfo.getImgType().toLowerCase().equals("doctor")) {
-                        fileFolder = "DoctorImage/";
-                    }
-                    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());
-                fileInfo.setUrl(fileProperties.getOss().getDomain() + fileProperties.getOss().getFolder() + folderByDate + "/" + fileName);
+            if (clientID.equals("hospital")) {//医院端平台,
+                fileFolder = FilePath(fileInfo.getImgType(), folderByDate, hospitalID, depID);
+                fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream());
+            } else {
+                fileFolder = FilePath(fileInfo.getImgType(), folderByDate, hospitalID, depID);
+                fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream());
             }
         }
 
@@ -107,5 +92,74 @@
             ossClient.deleteObject(fileProperties.getOss().getBucketName(), fileInfo.getName());
             return true;
         }
+
+        /**
+         * 给OSS上上传文件
+         *
+         * @param fileInfo    返回对象
+         * @param newFilePath 上传到的文件路径
+         * @param fileStream  要上传的文件流
+         */
+        @Override
+        public void fileUpLoadOss(FileInfo fileInfo, String newFilePath, InputStream fileStream) {
+            ossClient.putObject(fileProperties.getOss().getBucketName(), newFilePath, fileStream);
+            fileInfo.setUrl(fileProperties.getOss().getDomain() + newFilePath);
+
+        }
+        @Override
+        public OSSObject down(String url) {
+            GetObjectRequest request = new GetObjectRequest(fileProperties.getOss().getBucketName(), url);
+            return ossClient.getObject(request);
+        }
+
+        /**
+         * 组合sso上的文件路径
+         *
+         * @param imgType
+         * @return
+         */
+        @Override
+        public String FilePath(String imgType, String folderByDate, String hospitalId, String departmentId) {
+            //返回的文件路径
+            String fileFolder = OssPathEn+"/";
+
+
+            if (StringUtils.isNotBlank(imgType)) {
+                // 光片需要按照根据医院ID,科室ID,日期进行OSS存储
+                if (imgType.toLowerCase().equals("xray")) {
+
+                    if (StringUtils.isNotBlank(hospitalId) &&
+                            StringUtils.isNotBlank(departmentId)) {
+                        fileFolder += "Xray/" + hospitalId + "/" + departmentId + "/" + folderByDate + "/";
+                    } else {
+                        fileFolder += "Xray/" + folderByDate + "/";
+                    }
+
+                } else if (imgType.toLowerCase().equals("app")) {
+                    //移动端APP上传
+                    if (StringUtils.isNotBlank(hospitalId) &&
+                            StringUtils.isNotBlank(departmentId)) {
+                        fileFolder += "AppXray/" + hospitalId + "/" + departmentId + "/" + folderByDate + "/";
+                    } else {
+                        fileFolder += "AppXray/" + folderByDate + "/";
+                    }
+                }
+                // 医院Logo只保存在一个目录中
+                else if (imgType.toLowerCase().equals("logo")) {
+                    fileFolder += "HospitalLogo/";
+                } else if (imgType.toLowerCase().equals("doctor")) {
+                    fileFolder += "DoctorImage/";
+                } else if (imgType.toLowerCase().equals("customerhospital")) {
+                    fileFolder += "Customer/Hospital/" + folderByDate + "/";
+                } else if (imgType.toLowerCase().equals("customerhead")) {
+                    fileFolder += "Customer/HeadImg/" + folderByDate + "/";
+                }else {
+                    fileFolder += "OtherImage/" + folderByDate + "/";
+                }
+            } else {
+                fileFolder += "OtherImage/" + folderByDate + "/";
+            }
+            return fileFolder;
+        }
     }
 }

--
Gitblit v1.8.0