forked from kidgrow-microservices-platform

luliqiang
2020-06-15 db2b00978eb478cc5f842cb4ba06c29276f6abca
FileCenter 扩展Feign调用接口【增加imageType参数(Xray/Logo)】
9 files modified
91 ■■■■ changed files
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/FileService.java 5 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/feign/fallback/FileServiceFallbackFactory.java 2 ●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-api/src/main/java/com/kidgrow/filecenter/model/FileInfo.java 7 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/IFileService.java 2 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/service/impl/AbstractIFileService.java 20 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-biz/src/main/java/com/kidgrow/filecenter/util/FileUtil.java 16 ●●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/config/AliyunOSSAutoConfigure.java 29 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/kidgrow-filecenter-server/src/main/java/com/kidgrow/filecenter/controller/FileController.java 6 ●●●● patch | view | raw | blame | history
kidgrow-business/kidgrow-filecenter/pom.xml 4 ●●●● patch | view | raw | blame | history
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);
}
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;
            }
        };
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;
    /**
     * 上传文件类型
     */
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);
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;
    }
    /**
     * 文件来源
     *
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;
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());
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);
    }
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>