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