Browse Source

Merge remote-tracking branch 'origin/develop' into develop

linhuili 3 years ago
parent
commit
053171efa3
19 changed files with 142 additions and 109 deletions
  1. 14 3
      dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java
  2. 9 1
      dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/controller/TestController.java
  3. 24 0
      dmp-comp/dmp-auth-starter/pom.xml
  4. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/client/EmsSaasWebClient.java
  5. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/client/EmsSaasWebFallbackFactory.java
  6. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/constant/AuthChannelEnum.java
  7. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/domain/Group.java
  8. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/domain/Project.java
  9. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/domain/ResultReturn.java
  10. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/handler/AppContextHandler.java
  11. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/service/AuthService.java
  12. 0 0
      dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/service/AuthServiceFactory.java
  13. 1 0
      dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/service/impl/AbstractAuthServiceImpl.java
  14. 3 6
      dmp-comp/dmp-auth/pom.xml
  15. 14 14
      dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/service/impl/EmsAuthServiceImpl.java
  16. 0 0
      dmp-comp/dmp-file-starter/src/main/java/com/persagy/dmp/file/constant/UploadCodeEnum.java
  17. 76 85
      dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/utils/FileStorageHelper.java
  18. 0 0
      dmp-comp/dmp-file-starter/src/main/java/com/persagy/dmp/file/utils/ImageHelper.java
  19. 1 0
      dmp-comp/pom.xml

+ 14 - 3
dmp-business/dmp-rwd/src/main/java/com/persagy/dmp/rwd/digital/service/impl/ObjectDigitalServiceImpl.java

@@ -98,10 +98,10 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
 
     @Override
     public List<ObjectDigital> insert(List<ObjectDigital> voList) {
+        validateOnSave(voList, false);
         if(CollUtil.isEmpty(voList)) {
             return null;
         }
-        validateOnSave(voList, false);
         //获取对象类型
         Map<String, String> typeMap = typeService.queryObjTypeMap();
         voList.forEach(vo -> {
@@ -141,7 +141,9 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         fillClassCodeForUpdate(voList,dbMap);
         //信息点校验
         validateOnSave(voList, true);
-        List<ObjectDigital> resultList = new ArrayList<>();
+        if(CollUtil.isEmpty(voList)) {
+            return null;
+        }
         voList.forEach(vo -> {
             ObjectDigital dbVO = MapUtil.get(dbMap, vo.getId(), ObjectDigital.class);
             // 容错处理
@@ -693,6 +695,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
         // 查询信息点定义
         Map<String, Map<String, ObjectInfoDefine>> allInfoMap = infoService.queryByTypes(typeCodeList);
         // 信息点校验器
+        List<ObjectDigital> restList = new ArrayList<>();
         for(ObjectDigital vo:voList) {
             // 获取信息点列表 TODO 先这样处理,后续优化信息点接口后直接删掉此段即可
             Map<String, ObjectInfoDefine> infoMap = new HashMap<>(16);
@@ -712,8 +715,11 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
                 }
             }
             if(MapUtil.isEmpty(infoMap)) {
-                throw new BusinessException(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
+                log.error(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
+                continue;
             }
+            // 只保留有对象类型的
+            restList.add(vo);
             // 信息点值对象
             ObjectNode infos = vo.getInfos();
             if(infos == null || infos.isNull()) {
@@ -732,6 +738,11 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
                 InfoDataFactory.parse(infoMap.get(infoCode), infos.get(infoCode));
             }
         }
+        // 只保留能找到对象类型的
+        voList.clear();
+        if(CollUtil.isNotEmpty(restList)) {
+            voList.addAll(restList);
+        }
     }
 
     /**

+ 9 - 1
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/controller/TestController.java

@@ -69,6 +69,14 @@ public class TestController {
         return FileClientFacade.initChunkUploadPrototype(AppContext.getContext().getGroupCode(),
                 AppContext.getContext().getProjectId(),
                 AppContext.getContext().getAppId(),
-                AppContext.getContext().getAccountId(),new FileRequestData());//FileStorageHelper.downloadUrl(fileId));
+                AppContext.getContext().getAccountId(),requestData);
+    }
+    @PostMapping(value = "/testInitSingleUpload")
+    @CrossOrigin
+    public CommonResult<UploadMes> testInitSingleUpload(@RequestBody FileRequestData requestData) throws IOException {
+        return FileClientFacade.initSingleUploadPrototype(AppContext.getContext().getGroupCode(),
+                AppContext.getContext().getProjectId(),
+                AppContext.getContext().getAppId(),
+                AppContext.getContext().getAccountId(),requestData);
     }
 }

+ 24 - 0
dmp-comp/dmp-auth-starter/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>dmp-comp</artifactId>
+        <groupId>com.persagy</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>dmp-auth-starter</artifactId>
+    <dependencies>
+        <dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>dmp-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/client/EmsSaasWebClient.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/client/EmsSaasWebClient.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/client/EmsSaasWebFallbackFactory.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/client/EmsSaasWebFallbackFactory.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/constant/AuthChannelEnum.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/constant/AuthChannelEnum.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/domain/Group.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/domain/Group.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/domain/Project.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/domain/Project.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/domain/ResultReturn.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/domain/ResultReturn.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/handler/AppContextHandler.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/handler/AppContextHandler.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/service/AuthService.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/service/AuthService.java


dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/service/AuthServiceFactory.java → dmp-comp/dmp-auth-starter/src/main/java/com/persagy/dmp/auth/service/AuthServiceFactory.java


+ 1 - 0
dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/service/impl/AbstractAuthServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
 import com.persagy.dmp.auth.service.AuthService;
 import com.persagy.dmp.common.constant.CommonConstant;
 import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.common.helper.SpringHelper;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;

+ 3 - 6
dmp-comp/dmp-auth/pom.xml

@@ -13,15 +13,12 @@
     <dependencies>
         <dependency>
             <groupId>com.persagy</groupId>
-            <artifactId>dmp-common</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.persagy</groupId>
             <artifactId>integrated-log-spring-boot-starter</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-openfeign</artifactId>
+            <groupId>com.persagy</groupId>
+            <artifactId>dmp-auth-starter</artifactId>
+            <version>1.0.0</version>
         </dependency>
     </dependencies>
     

+ 14 - 14
dmp-comp/dmp-auth/src/main/java/com/persagy/dmp/auth/service/impl/EmsAuthServiceImpl.java

@@ -44,9 +44,9 @@ public class EmsAuthServiceImpl extends AbstractAuthServiceImpl {
         if (StrUtil.isNotBlank(AppContext.getContext().getGroupCode())){
             param.put(CommonConstant.QUERY_GROUPCODE,AppContext.getContext().getGroupCode());
         }
-        if (StrUtil.isNotBlank(AppContext.getContext().getProjectId())){
-            param.put(CommonConstant.QUERY_PROJECTIDS, CollUtil.newArrayList(AppContext.getContext().getProjectId()));
-        }
+//        if (StrUtil.isNotBlank(AppContext.getContext().getProjectId())){
+//            param.put(CommonConstant.QUERY_PROJECTIDS, CollUtil.newArrayList(AppContext.getContext().getProjectId()));
+//        }
         ResultReturn<Group> queryResult = emsSaasWebClient.queryGroupProjectList(param);
         if (!CommonConstant.QUERY_SUCCESS.equals(queryResult.getResult())){
             throw new BusinessException(queryResult.getResultMsg());
@@ -79,17 +79,17 @@ public class EmsAuthServiceImpl extends AbstractAuthServiceImpl {
                 || !groupMap.containsKey(AppContext.getContext().getGroupCode())){
             throw new BusinessException(ResponseCode.A0402.getCode(),ResponseCode.A0402.getDesc());
         }
+//        if (StrUtil.isBlank(AppContext.getContext().getProjectId())){
+//            return;
+//        }
         // 3.验证项目是否匹配集团
-        if (StrUtil.isBlank(AppContext.getContext().getProjectId())){
-            return;
-        }
-        List<Project> projects = groupMap
-                .getOrDefault(AppContext.getContext().getGroupCode(), new ArrayList<>());
-        if (!projects.stream()
-                .map(Project::getProjectId)
-                .collect(Collectors.toSet())
-                .contains(AppContext.getContext().getProjectId())){
-            throw new BusinessException(ResponseCode.A0402.getCode(),ResponseCode.A0402.getDesc());
-        }
+//        List<Project> projects = groupMap
+//                .getOrDefault(AppContext.getContext().getGroupCode(), new ArrayList<>());
+//        if (!projects.stream()
+//                .map(Project::getProjectId)
+//                .collect(Collectors.toSet())
+//                .contains(AppContext.getContext().getProjectId())){
+//            throw new BusinessException(ResponseCode.A0402.getCode(),ResponseCode.A0402.getDesc());
+//        }
     }
 }

dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/constant/UploadCodeEnum.java → dmp-comp/dmp-file-starter/src/main/java/com/persagy/dmp/file/constant/UploadCodeEnum.java


+ 76 - 85
dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/utils/FileStorageHelper.java

@@ -2,16 +2,21 @@ package com.persagy.dmp.file.utils;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.digest.DigestUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpStatus;
+import cn.hutool.http.HttpUtil;
+import com.persagy.dmp.common.constant.CommonConstant;
+import com.persagy.dmp.common.constant.ResponseCode;
+import com.persagy.dmp.common.context.AppContext;
+import com.persagy.dmp.common.exception.BusinessException;
 import com.persagy.dmp.common.helper.SpringHelper;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.file.client.FileClientFacade;
-import com.persagy.dmp.file.model.FileInfo;
-import com.persagy.dmp.file.model.FileInfoCreator;
-import com.persagy.dmp.file.model.FileMd5;
-import com.persagy.dmp.file.model.FileMd5Creator;
-import com.persagy.dmp.file.service.FileMd5Service;
-import com.persagy.dmp.file.service.FileStorageFactory;
-import com.persagy.dmp.file.constant.FileCommonConst;
+import com.persagy.dmp.file.constant.UploadCodeEnum;
+import com.persagy.dmp.file.model.*;
 import lombok.extern.slf4j.Slf4j;
 
 import java.io.*;
@@ -25,74 +30,70 @@ import java.util.List;
 @Slf4j
 public class FileStorageHelper {
 
-//    /**
-//     * 上传文件
-//     * @param fileInfo
-//     * @param in
-//     * @return
-//     */
-//    public static String uploadFile(FileInfo fileInfo, InputStream in) {
-//        // 1.获得文件大小
-//        FileMd5Service fileMd5Service = SpringHelper.getBean(FileMd5Service.class);
-//        byte[] streamBytes = getStreamBytes(in);
-//        fileInfo.setFileSize((long) streamBytes.length);
-//        // 2.获得文件的md5值
-//        String fileMd5Str = DigestUtil.md5Hex(streamBytes);
-//        FileMd5 fileMd5 = fileMd5Service.queryFileMd5ByFileMd5(fileMd5Str);
-//        // 3.创建新的存储的fileInfo
-//        FileInfo saveFileInfo = FileInfoCreator.of(fileInfo.getGroupCode(),fileInfo.getFileName(),
-//                fileInfo.getBusinessId(), fileMd5Str, fileInfo.getExpireDate());
-//        // 4.如果文件MD5信息已存在,则直接保存文件信息即可.秒传
-//        saveFileInfo = FileClientFacade.insert(saveFileInfo);
-//        if (null!=fileMd5
-//                && FileCommonConst.UPLOAD_SUCCESS.equals(fileMd5.getUploadStatus())){
-//            return saveFileInfo.getId();
-//        }
-//        if (null!=fileMd5
-//                && FileCommonConst.UPLOAD_PART.equals(fileMd5.getUploadStatus())){
-//            // 5.文件为断点续传,更改MD5文件信息的文件状态
-//            fileMd5.setFileSize(fileInfo.getFileSize());
-//            fileMd5.setFileBucket(fileInfo.getFileBucket());
-//            fileMd5.setUploadStatus(FileCommonConst.UPLOAD_SUCCESS);
-//            fileMd5.setFileName(fileInfo.getFileName());
-//            fileMd5.setGroupCode(fileInfo.getGroupCode());
-//            fileMd5=fileMd5Service.ensureFilePath(fileMd5);
-//            fileMd5Service.update(fileMd5);
-//        }else {
-//            // 6.没上传过,新建MD5文件信息
-//            fileMd5 = FileMd5Creator.of(fileInfo.getFileBucket(), fileMd5Str, FileCommonConst.UPLOAD_SUCCESS);
-//            fileMd5.setFileName(fileInfo.getFileName());
-//            fileMd5.setGroupCode(fileInfo.getGroupCode());
-//            fileMd5.setFileSize(fileInfo.getFileSize());
-//            fileMd5 = fileMd5Service.insert(fileMd5);
-//        }
-//        FileStorageFactory.getService().upload(fileMd5.getFileBucket(), fileMd5.getFilePath(), IoUtil.toStream(streamBytes));
-//        return saveFileInfo.getId();
-//    }
-//    /***
-//     * Description: 读取流的字节数组
-//     * @param stream : 流
-//     * @return : byte[]
-//     * @author : lijie
-//     * @date :2021/10/23 12:22
-//     * Update By lijie 2021/10/23 12:22
-//     */
-//    private static byte[] getStreamBytes(InputStream stream) {
-//        return IoUtil.readBytes(stream);
-//    }
-//
-//    /**
-//     * 上传图片
-//     * @param fileInfo
-//     * @param in
-//     * @return
-//     */
-//    public static String uploadImage(FileInfo fileInfo, InputStream in) {
-//        // 图片压缩
-//        InputStream cutIn = ImageHelper.cutImage(in);
-//        return uploadFile(fileInfo, cutIn);
-//    }
-//
+    /**
+     * 上传文件
+     * @param fileInfo
+     * @param in
+     * @return
+     */
+    public static String uploadFile(FileInfo fileInfo, InputStream in) {
+        // 1.获得文件大小
+        byte[] streamBytes = getStreamBytes(in);
+        // 2.获得文件的md5值
+        String fileMd5Str = DigestUtil.md5Hex(streamBytes);
+        FileRequestData requestData = new FileRequestData();
+        requestData.setGroupCode(fileInfo.getGroupCode());
+        requestData.setBusinessId(fileInfo.getBusinessId());
+        requestData.setExpireDate(fileInfo.getExpireDate());
+        requestData.setFileBucket(fileInfo.getFileBucket());
+        requestData.setFileName(fileInfo.getFileName());
+        requestData.setFileSize((long) streamBytes.length);
+        // 3.创建新的存储的fileInfo
+        CommonResult<UploadMes> mesCommonResult = FileClientFacade
+                .initSingleUploadPrototype(fileInfo.getGroupCode(), null, null, null, requestData);
+        if (!CommonConstant.QUERY_SUCCESS.equals(mesCommonResult.getResult())){
+            throw new BusinessException(mesCommonResult.getResult(),mesCommonResult.getMessage());
+        }
+        UploadMes uploadMes = mesCommonResult.getData();
+        List<UploadSubMes> content = uploadMes.getContent();
+        if (UploadCodeEnum.CODE_200.getCode().equals(uploadMes.getUploadCode())){
+            // 秒传
+            return uploadMes.getId();
+        }
+        if (CollUtil.isEmpty(content) || StrUtil.isBlank(content.get(0).getUploadUrl())){
+            throw new BusinessException(ResponseCode.B0300.getCode(),ResponseCode.B0300.getDesc());
+        }
+        HttpResponse response = HttpRequest.put(content.get(0).getUploadUrl()).form("file", streamBytes).execute();
+        if (!response.isOk()){
+            log.error("上传文件出错:{}",response.body());
+            throw new BusinessException(ResponseCode.B0001.getCode(),ResponseCode.B0001.getDesc());
+        }
+        return uploadMes.getId();
+    }
+    /***
+     * Description: 读取流的字节数组
+     * @param stream : 流
+     * @return : byte[]
+     * @author : lijie
+     * @date :2021/10/23 12:22
+     * Update By lijie 2021/10/23 12:22
+     */
+    private static byte[] getStreamBytes(InputStream stream) {
+        return IoUtil.readBytes(stream);
+    }
+
+    /**
+     * 上传图片
+     * @param fileInfo
+     * @param in
+     * @return
+     */
+    public static String uploadImage(FileInfo fileInfo, InputStream in) {
+        // 图片压缩
+        InputStream cutIn = ImageHelper.cutImage(in);
+        return uploadFile(fileInfo, cutIn);
+    }
+
 //    /**
 //     * 修改文件
 //     * @param fileId
@@ -192,16 +193,6 @@ public class FileStorageHelper {
 //        FileMd5 fileMd5 = FileMd5ClientFacade.loadByMd5(fileInfo.getFileMd5());
 //        return FileStorageFactory.getService().download(fileMd5.getFileBucket(), fileMd5.getFilePath());
 //    }
-//
-//    /**
-//     * 下载
-//     * @param fileId 文件id
-//     * @return 文件内容
-//     */
-//    public static byte[] downloadContent(String fileId) {
-//        // TODO 暂不提供,依赖前端显示规则
-//        return null;
-//    }
 
     /**
      * 获取文件大小

dmp-cloud/dmp-file/src/main/java/com/persagy/dmp/file/utils/ImageHelper.java → dmp-comp/dmp-file-starter/src/main/java/com/persagy/dmp/file/utils/ImageHelper.java


+ 1 - 0
dmp-comp/pom.xml

@@ -19,6 +19,7 @@
         <module>dmp-digital-starter</module>
         <module>dmp-amqp-starter</module>
         <module>dmp-auth</module>
+        <module>dmp-auth-starter</module>
     </modules>
 
 </project>