tongfeng 2 роки тому
батько
коміт
709feee2ce

+ 3 - 0
eladmin-system/src/main/java/me/zhengjie/base/file/FileHandle.java

@@ -1,5 +1,6 @@
 package me.zhengjie.base.file;
 
+import java.io.File;
 import java.io.InputStream;
 
 public interface FileHandle {
@@ -62,4 +63,6 @@ public interface FileHandle {
 	public long getSize(String keyName) throws Exception;
 
 	public String getCustomUrl(String fileKey, String filePath) throws Exception;
+
+	public File getFileWithPath(String fileKey)throws Exception;
 }

+ 54 - 0
eladmin-system/src/main/java/me/zhengjie/base/util/FileUploadUtil.java

@@ -6,6 +6,7 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Iterator;
+import java.util.UUID;
 
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
@@ -124,6 +125,59 @@ public class FileUploadUtil {
 		}
 	}
 
+	public static String saveFaceImage(String imgStr) {
+
+		if (imgStr == null) // 图像数据为空
+			return null;
+		try {
+			String suffix = imageFileSuffix(imgStr);
+			if (StringUtils.isNotEmpty(suffix)) {
+				// 去掉data:image/jpeg;这种类型的
+				String[] base64Prefix = imgStr.split("base64,");
+				if (base64Prefix != null && base64Prefix.length > 1) {
+					imgStr = base64Prefix[1];
+				}
+			}
+			// Base64解码
+			byte[] b = Base64.decodeBase64(imgStr);
+			for (int i = 0; i < b.length; ++i) {
+				if (b[i] < 0) {// 调整异常数据
+					b[i] += 256;
+				}
+			}
+			if (StringUtils.isEmpty(suffix)) {
+				suffix = getFormatName(b);
+			}
+			// TODO 这里再判断,通过二进制,如果还是失败抛出异常,
+			// 如果不存在,创建文件夹
+			String uuid = uuid();
+			// 拼接文件路径
+			String fileName = uuid + "." + suffix;
+			// 图片的路径
+			String imagePath = "facecompare" + "/" + fileName;
+			// 这里目前只会说图片的
+			String contentType = "image/" + suffix;
+			uploadFile(imagePath, contentType, b);
+			// FileUtils.writeByteArrayToFile(fullPath, b);
+			return imagePath;
+		} catch (Exception e) {
+			log.error("上传图片失败:" + e.getLocalizedMessage());
+			return null;
+		}
+	}
+	public static File getFileWithPath(String fileKey){
+		try {
+			return fileHandle.getFileWithPath(fileKey);
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	public static String uuid() {
+
+		return UUID.randomUUID().toString().replace("-", "");
+	}
+
 	public static String uploadFile(FileUploadVO file, MultipartFile partFile) {
 		if (file.getFileUpload() == null) {
 			return null;

+ 2 - 7
eladmin-system/src/main/java/me/zhengjie/dao/mybatis/ThirdPartyInterfaceRepository.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.RequiredArgsConstructor;
 import me.zhengjie.application.admin.controller.vo.FaceCompareRsp;
 import me.zhengjie.base.util.BeanCopyUtils;
+import me.zhengjie.base.util.FileUploadUtil;
 import me.zhengjie.base.util.tencent.utils.HttpClientUtil;
 import me.zhengjie.dao.mybatis.entity.FileInfoEntity;
 import me.zhengjie.dao.mybatis.entity.ThirdPartyInterfaceEntity;
@@ -51,13 +52,7 @@ public class ThirdPartyInterfaceRepository {
     }
 
     public String getPreview(String fileKey) {
-        JSONObject params = new JSONObject();
-        params.put("fileKey", fileKey);
-        HttpClientUtil httpClientUtil = new HttpClientUtil();
-        String xmlData = httpClientUtil.doPost("http://192.168.0.140:8831/sp/upload/getPreview",params.toString(),"utf-8");
-        System.err.println(xmlData);
-        JSONObject result = JSONObject.parseObject(xmlData);
-        String url = result.getString("url");
+        String url = FileUploadUtil.getPreviewUrl(fileKey);
         return url;
     }
 

+ 20 - 28
eladmin-system/src/main/java/me/zhengjie/domain/notary/impl/NotaryDomainImpl.java

@@ -10,7 +10,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import me.zhengjie.base.ResultCode;
+import me.zhengjie.base.file.FileHandle;
 import me.zhengjie.base.file.FileHandleVo;
+import me.zhengjie.base.file.MinioFileHandle;
+import me.zhengjie.base.util.FileUploadUtil;
 import me.zhengjie.base.util.JuheServiceUtil;
 import me.zhengjie.base.util.tencent.utils.HttpClientUtil;
 import me.zhengjie.base.util.tencent.utils.Img2Base64Util;
@@ -45,9 +48,7 @@ public class NotaryDomainImpl implements NotaryDomain {
     private final ContractOrderMapper contractOrderMapper;
     private final FileInfoMapper fileInfoMapper;
     private final RedisUtils redis;
-
     private final ThirdPartyInterfaceRepository thirdPartyInterfaceRepository;
-
     //以下为测试部署环境
     private static final String APPID = "6F5JVsCCeSEbBSLSXWVwPki71yK5Y4Jf7oUjA4Y3mLtu";
     private static final String SDKKEY = "5qKM4a9oNSXNhXdwd7Ycrvnxdw2JXjcyeccYmb4zND7S";
@@ -119,7 +120,10 @@ public class NotaryDomainImpl implements NotaryDomain {
             log.info("base64转图片异常");
             return ResultCode.FACEAUTH_FAIL;
         }
-        FileInfoEntity fileInfo = uploadFile(base64);
+
+
+        FileUploadUtil.saveFaceImage(base64);
+        FileInfoEntity fileInfo = uploadFaceFile(base64);
         boolean redisFlag = (count != null && count >= 2);
         if (ObjectUtils.isEmpty(id) || redisFlag) {
             //要做人脸核身
@@ -227,7 +231,7 @@ public class NotaryDomainImpl implements NotaryDomain {
             //说明是客户经理
             if (sysUserEntity.getCompareImgId() == null || redisFlag) {
                 //说明客户经理需要做人脸核身
-                FileInfoEntity fileInfo = uploadFile(base64);
+                FileInfoEntity fileInfo = uploadFaceFile(base64);
                 ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = JuheServiceUtil.URLPost(idCard, nickName, base64);
                 thirdPartyInterfaceEntity.setFileId(fileInfo.getId() + "");
                 thirdPartyInterfaceEntity.setBusinessNo(compareImageDomain.getBusinessNo());
@@ -248,7 +252,7 @@ public class NotaryDomainImpl implements NotaryDomain {
             }
         } else if (ObjectUtils.isEmpty(compareImageId) || redisFlag) {
             //说明当事人需要做人脸核身
-            FileInfoEntity fileInfo = uploadFile(base64);
+            FileInfoEntity fileInfo = uploadFaceFile(base64);
             ThirdPartyInterfaceEntity thirdPartyInterfaceEntity = JuheServiceUtil.URLPost(idCard, nickName, base64);
             thirdPartyInterfaceEntity.setFileId(fileInfo.getId() + "");
             thirdPartyInterfaceEntity.setBusinessNo(compareImageDomain.getBusinessNo());
@@ -373,7 +377,7 @@ public class NotaryDomainImpl implements NotaryDomain {
         String filePath = fileInfoEntity.getPath();
         File file = null;
         try {
-            file = getFileWithPath(filePath);
+            file=FileUploadUtil.getFileWithPath(filePath);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }finally {
@@ -419,40 +423,28 @@ public class NotaryDomainImpl implements NotaryDomain {
      * 上传对比照片到minio
      * @param base64
      */
-    public FileInfoEntity uploadFile(String base64){
+    public void uploadFile(String base64){
         JSONObject params = new JSONObject();
         params.put("base64", base64);
         HttpClientUtil httpClientUtil = new HttpClientUtil();
         String xmlData = httpClientUtil.doPost("http://192.168.0.140:8831/sp/upload/uploadFaceImage",params.toString(),"utf-8");
         JSONObject result = JSONObject.parseObject(xmlData);
-        String s =  result.getString("imagePath");
+        String code = result.getString("code");
+        if ("100".equals(code)){
+            log.info("上传成功");
+        }
+    }
+
+    public FileInfoEntity uploadFaceFile(String base64){
+        String s = FileUploadUtil.saveFaceImage(base64);
         String[] split = s.split("/");
         FileInfoEntity fileInfo = new FileInfoEntity();
         fileInfo.setLoanNo(split[0]);
         fileInfo.setFileName(split[split.length-1]);
         fileInfo.setPath(s);
         fileInfoMapper.insert(fileInfo);
+        uploadFile(base64);
         return fileInfo;
     }
 
-    /**
-     * 获取人脸照片比对的预览图
-     * @param fileKey
-     * @return
-     */
-
-    /**
-     *根据路径获取文件
-     */
-    public File getFileWithPath(String fileKey){
-        JSONObject params = new JSONObject();
-        params.put("fileKey", fileKey);
-        HttpClientUtil httpClientUtil = new HttpClientUtil();
-        String xmlData = httpClientUtil.doPost("http://192.168.0.140:8831/sp/upload/getFile",params.toString(),"utf-8");
-        System.err.println(xmlData);
-        JSONObject result = JSONObject.parseObject(xmlData);
-        File file = result.getObject("file", File.class);
-        return file;
-    }
-
 }