package com.kidgrow.filecenter.config;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: <br>
|
* @Project: <br>
|
* @CreateDate: Created in 2021/2/22 09:36 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
|
import com.aliyun.oss.model.OSSObject;
|
import com.kidgrow.common.constant.CommonConstant;
|
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.Configuration;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.*;
|
import java.util.Date;
|
import java.util.UUID;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: 阿里云配置<br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/18 11:24 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
@Configuration
|
@ConditionalOnProperty(name = "kidgrow.file-server.type", havingValue = "harddisk")
|
public class HardDiskAutoConfigure {
|
@Autowired
|
private FileServerProperties fileProperties;
|
|
|
|
@Service
|
public class HardDiskServiceImpl extends AbstractIFileService {
|
|
@Autowired
|
private HttpServletRequest httpServletRequest;
|
|
@Override
|
protected String fileType() {
|
return fileProperties.getType();
|
}
|
|
@Value("${spring.profiles.active}")
|
private String OssPathEn;
|
|
@Value("${kidgrow.file-server.fdfs.web-url}")
|
private String FileWebUrl;
|
|
@Value("${server.port}")
|
private String ServerPort;
|
|
@Override
|
protected void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception {
|
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 fileFolder = "";
|
if (clientID.equals("hospital")) {//医院端平台,
|
fileFolder = FilePath(fileInfo.getImgType(), folderByDate, hospitalID, depID);
|
fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream(),fileFolder);
|
} else {
|
fileFolder = FilePath(fileInfo.getImgType(), folderByDate, hospitalID, depID);
|
fileUpLoadOss(fileInfo, fileFolder + fileName, file.getInputStream(),fileFolder);
|
}
|
}
|
|
@Override
|
protected boolean deleteFile(FileInfo fileInfo) {
|
return true;
|
}
|
|
/**
|
* 给OSS上上传文件
|
*
|
* @param fileInfo 返回对象
|
* @param newFilePath 上传到的文件路径
|
* @param fileStream 要上传的文件流
|
*/
|
@Override
|
public void fileUpLoadOss(FileInfo fileInfo, String newFilePath, InputStream fileStream,String fileFolder) {
|
String saveFilePath= CommonConstant.TEMP_IMAGE_PATH+"/"+fileFolder;
|
String saveFileName=CommonConstant.TEMP_IMAGE_PATH+"/"+newFilePath;
|
File saveFile= new File(saveFilePath);
|
if(!saveFile.exists()) {
|
saveFile.mkdirs();
|
}
|
try {
|
byte[] data = new byte[1024];
|
FileOutputStream fos = new FileOutputStream(saveFileName, false);
|
while ((fileStream.read(data)) != -1) {
|
fos.write(data);
|
}
|
fos.close();
|
} catch (FileNotFoundException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
fileInfo.setUrl(FileWebUrl +":" +ServerPort+"/" + newFilePath);
|
|
}
|
@Override
|
public OSSObject down(String url) {
|
return null;
|
}
|
|
/**
|
* 组合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;
|
}
|
}
|
}
|