package com.kidgrow.filecenter.config;
|
|
import com.aliyun.oss.OSSClient;
|
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
|
import com.kidgrow.common.constant.SecurityConstants;
|
import com.kidgrow.common.utils.DateUtil;
|
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.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletRequest;
|
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 = "aliyun")
|
public class AliyunOSSAutoConfigure {
|
@Autowired
|
private FileServerProperties fileProperties;
|
|
|
|
/**
|
* 阿里云文件存储client
|
* 只有配置了aliyun.oss.access-key才可以使用
|
*/
|
@Bean
|
public OSSClient ossClient() {
|
OSSClient ossClient = new OSSClient(fileProperties.getOss().getEndpoint()
|
, new DefaultCredentialProvider(fileProperties.getOss().getAccessKey(), fileProperties.getOss().getAccessKeySecret())
|
, null);
|
return ossClient;
|
}
|
|
@Service
|
public class AliyunOssServiceImpl extends AbstractIFileService {
|
@Autowired
|
private OSSClient ossClient;
|
|
@Autowired
|
private HttpServletRequest httpServletRequest;
|
|
@Override
|
protected String fileType() {
|
return fileProperties.getType();
|
}
|
|
@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(".");
|
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+"/";
|
|
ossClient.putObject(fileProperties.getOss().getBucketName(), fileFolder + folderByDate + "/" + fileName, file.getInputStream());
|
fileInfo.setUrl(fileProperties.getOss().getDomain() + fileFolder + folderByDate + "/" + fileName);
|
}
|
else {
|
ossClient.putObject(fileProperties.getOss().getBucketName(), fileProperties.getOss().getFolder() + folderByDate + "/" + fileName, file.getInputStream());
|
fileInfo.setUrl(fileProperties.getOss().getDomain() + fileProperties.getOss().getFolder() + folderByDate + "/" + fileName);
|
}
|
}
|
|
@Override
|
protected boolean deleteFile(FileInfo fileInfo) {
|
|
ossClient.deleteObject(fileProperties.getOss().getBucketName(), fileInfo.getName());
|
return true;
|
}
|
}
|
}
|