kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java
@@ -23,4 +23,13 @@ PageResult<FileInfo> findList(Map<String, Object> params); void delete(String id); /** * 上传图片-并缩略,其实是给文件服务器存储了两个文件 一个原文件 一个缩略图文件 * @param file form内的文件数据 * @param imgType 业务类型 例如logo * @return 返回的实体中 path字段保存的是缩略图地址 * @throws Exception */ FileInfo uploadForThumbnails(MultipartFile file ,String imgType) throws Exception; } kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java
@@ -1,19 +1,27 @@ package com.kidgrow.filecenter.service.impl; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.kidgrow.common.constant.CommonConstant; import com.kidgrow.common.model.PageResult; import com.kidgrow.common.utils.DateUtil; import com.kidgrow.common.utils.MultipartFileUtils; import com.kidgrow.common.utils.RandomValueUtils; import com.kidgrow.common.utils.StringUtils; import com.kidgrow.filecenter.mapper.FileMapper; import com.kidgrow.filecenter.model.FileInfo; import com.kidgrow.filecenter.service.IFileService; import com.kidgrow.filecenter.util.FileUtil; import lombok.extern.slf4j.Slf4j; import net.coobird.thumbnailator.Thumbnails; import org.apache.commons.collections4.MapUtils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.Date; import java.util.List; import java.util.Map; @@ -82,6 +90,8 @@ * @param fileInfo */ protected abstract void uploadFile(MultipartFile file, FileInfo fileInfo) throws Exception; protected abstract void fileUpLoadOss(FileInfo fileInfo,String newFilePath, InputStream fileStream); protected abstract String FilePath(String imgType,String folderByDate); /** * 删除文件 @@ -110,5 +120,56 @@ List<FileInfo> list = baseMapper.findList(page, params); return PageResult.<FileInfo>builder().data(list).code(0).count(page.getTotal()).build(); } /** * 上传图片-并缩略,其实是给文件服务器存储了两个文件 一个原文件 一个缩略图文件 * @param file form内的文件数据 * @param imgType 业务类型 例如logo * @return 返回的实体中 path字段保存的是缩略图地址 * @throws Exception */ @Override public FileInfo uploadForThumbnails(MultipartFile file, String imgType) throws Exception { FileInfo fileInfo=this.upload(file,imgType); if (StringUtils.isNotBlank(fileInfo.getUrl())) { //生成缩略图上传 File nowFile= MultipartFileUtils.multipartFileToFile(file); //暂存目录 发布后真实存在的磁盘目录 String result = CommonConstant.TEMP_IMAGE_PATH; //文件扩展名 String suffix=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")); String newFileName= RandomValueUtils.uuid()+suffix; //生成缩略图 Thumbnails.of(nowFile).size(CommonConstant.TH_IMG_WIDTH, CommonConstant.TH_IMG_HEIGHT).toFile(result+newFileName); File thuFile= new File(result+newFileName); if (thuFile.exists()) { //将生成的文件转换为流 InputStream inputStream=new FileInputStream(new File(result+newFileName)); String folderByDate = DateUtil.formatDate(new Date()); String filefloder=this.FilePath(imgType,folderByDate); FileInfo newfileInfo=new FileInfo(); newfileInfo.setName(newFileName); newfileInfo.setId(IdUtil.fastSimpleUUID()); newfileInfo.setSize(thuFile.length()); newfileInfo.setIsImg(true); newfileInfo.setContentType(file.getContentType()); newfileInfo.setSource(fileInfo.getSource()); newfileInfo.setImgType(imgType); newfileInfo.setCreateTime(new Date()); //文件上传到oss this.fileUpLoadOss(newfileInfo,filefloder+newFileName,inputStream); // 将文件信息保存到数据库 baseMapper.insert(newfileInfo); fileInfo.setPath(newfileInfo.getUrl()); //删除暂存文件 MultipartFileUtils.delteTempFile(thuFile); inputStream.close(); } return fileInfo; } else { return fileInfo; } } } kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java
@@ -4,6 +4,7 @@ import com.aliyun.oss.common.auth.DefaultCredentialProvider; 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; @@ -15,6 +16,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.InputStream; import java.util.Date; import java.util.UUID; @@ -69,18 +71,52 @@ String fileName= UUID.randomUUID().toString().replaceAll("-","")+fileType; String fileFolder = ""; if(clientID.equals("hospital")){//医院端平台, fileFolder=FilePath(fileInfo.getImgType(),folderByDate); fileUpLoadOss(fileInfo,fileFolder + fileName,file.getInputStream()); } else { fileUpLoadOss(fileInfo,fileProperties.getOss().getFolder() + folderByDate + "/" + fileName,file.getInputStream()); } } if ((fileInfo.getImgType() != null)) { @Override protected boolean deleteFile(FileInfo fileInfo) { ossClient.deleteObject(fileProperties.getOss().getBucketName(), fileInfo.getName()); return true; } /** * 给OSS上上传文件 * @param fileInfo 返回对象 * @param newFilePath 上传到的文件路径 * @param fileStream 要上传的文件流 */ public void fileUpLoadOss(FileInfo fileInfo,String newFilePath, InputStream fileStream) { ossClient.putObject(fileProperties.getOss().getBucketName(), newFilePath, fileStream); fileInfo.setUrl(fileProperties.getOss().getDomain() + newFilePath); } /** * 组合sso上的文件路径 * @param imgType * @return */ public String FilePath(String imgType,String folderByDate) { //返回的文件路径 String fileFolder=""; if (StringUtils.isNotBlank(imgType)) { // 光片需要按照根据医院ID,科室ID,日期进行OSS存储 if (fileInfo.getImgType().toLowerCase().equals("xray")) { if (imgType.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")) { else if (imgType.toLowerCase().equals("logo")) { fileFolder = "HospitalLogo/"; }else if (fileInfo.getImgType().toLowerCase().equals("doctor")) { }else if (imgType.toLowerCase().equals("doctor")) { fileFolder = "DoctorImage/"; } else { @@ -90,22 +126,7 @@ } 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); } } @Override protected boolean deleteFile(FileInfo fileInfo) { ossClient.deleteObject(fileProperties.getOss().getBucketName(), fileInfo.getName()); return true; return fileFolder; } } } kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/FastdfsAutoConfigure.java
@@ -13,6 +13,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> * @@ -45,6 +47,16 @@ } @Override protected void fileUpLoadOss(FileInfo fileInfo, String newFilePath, InputStream fileStream) { } @Override protected String FilePath(String imgType, String folderByDate) { return null; } @Override protected boolean deleteFile(FileInfo fileInfo) { if (fileInfo != null && StrUtil.isNotEmpty(fileInfo.getPath())) { StorePath storePath = StorePath.parseFromUrl(fileInfo.getPath()); kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/QiniuOSSAutoConfigure.java
@@ -17,6 +17,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; /** * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br> * @@ -88,6 +90,16 @@ } @Override protected void fileUpLoadOss(FileInfo fileInfo, String newFilePath, InputStream fileStream) { } @Override protected String FilePath(String imgType, String folderByDate) { return null; } @Override protected boolean deleteFile(FileInfo fileInfo) { try { Response response = bucketManager.delete(fileProperties.getOss().getBucketName(), fileInfo.getPath()); kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java
@@ -50,7 +50,17 @@ public FileInfo feignUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) throws Exception { return fileService.upload(file,imgType); } /** * 文件上传 返回带缩略图地址的对象,缩略图在path字段 * * @param file * @return * @throws Exception */ @PostMapping(value="/files-thupload",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public FileInfo thUpload(@RequestPart("file") MultipartFile file,@RequestParam String imgType) throws Exception { return fileService.uploadForThumbnails(file,imgType); } /** * 文件删除 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/java/com/kidgrow/usercenter/service/impl/SysUserServiceImpl.java
@@ -139,11 +139,12 @@ //是否医院管理员 com.kidgrow.usercenter.model.SysDoctor sysDoctor = findDoctorByUserId(sysUser.getId()); if (sysDoctor.getIsAdminUser() != null) { sysUser.setHAdminUser(sysDoctor.getIsAdminUser()); loginAppUser.setHAdminUser(sysDoctor.getIsAdminUser()); } //医院信息 只有H端要返回的信息 if (sysUser.getTenantId() == CommonConstant.H_TENANT) { sysUser.setDoctorUserAllVO(baseMapper.findDoctorUserAllData(sysUser.getId())); if (sysUser.getTenantId().toLowerCase().equals(CommonConstant.H_TENANT.toLowerCase())) { DoctorUserAll doctorUserAllVo=baseMapper.findDoctorUserAllData(sysUser.getId()); loginAppUser.setDoctorUserAllVO(doctorUserAllVo); } } return loginAppUser; kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-biz/src/main/resources/mapper/SysUserMapper.xml
@@ -114,6 +114,7 @@ sysdoctor.enabled docenabled, sysdoctor.is_del docdel, syshos.id hospital_id, syshos.hospital_name, syshos.hospital_short_name, syshos.hospital_type_name, @@ -133,6 +134,7 @@ syshos.is_del hosdel, syshos.accounts_count, sysdep.id department_id, sysdep.department_name, sysdep.server_user_name, sysdep.server_user_tel, kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/constant/CommonConstant.java
@@ -235,4 +235,16 @@ * 签名结果 KEY */ public static final String SIGN_SIGN_KEY = "sign"; /** * logo缩略图默认宽 */ public static final Integer TH_IMG_WIDTH = 300; /** * logo缩略图默认高 */ public static final Integer TH_IMG_HEIGHT = 150; /** * 生成缩略图需要的图片暂存目录 */ public static final String TEMP_IMAGE_PATH="D:/resources/images/"; } kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/model/DoctorUserAll.java
@@ -71,6 +71,10 @@ /** * 医院id */ private String hospitalId; /** * 医院名称 同组织名字 */ private String hospitalName; @@ -146,6 +150,11 @@ /** * 科室/部门名称 同组织名称 */ private String departmentId; /** * 科室/部门名称 同组织名称 */ private String departmentName; /** * 销售代表的名字 kidgrow-commons/kidgrow-common-spring-boot-starter/src/main/java/com/kidgrow/common/utils/MultipartFileUtils.java
New file @@ -0,0 +1,61 @@ package com.kidgrow.common.utils; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; /** * MultipartFile转换帮助类 */ public class MultipartFileUtils { /** * MultipartFile 转 File * * @param file * @throws Exception */ public static File multipartFileToFile(MultipartFile file) throws Exception { File toFile = null; if (file.equals("") || file.getSize() <= 0) { file = null; } else { InputStream ins = null; ins = file.getInputStream(); toFile = new File(file.getOriginalFilename()); inputStreamToFile(ins, toFile); ins.close(); } return toFile; } //获取流文件 private static void inputStreamToFile(InputStream ins, File file) { try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 删除本地临时文件 * * @param file */ public static void delteTempFile(File file) { if (file != null) { File del = new File(file.toURI()); del.delete(); } } } kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/resources/application.yml
@@ -145,6 +145,12 @@ strip-prefix: true sensitive-headers: '*' custom-sensitive-headers: true reportcenter-server-routes: path: /reportcenter-server/** service-id: reportcenter-server strip-prefix: true sensitive-headers: '*' custom-sensitive-headers: true ssl-hostname-validation-enabled: false