소스 검색

图片查重

qin 1 년 전
부모
커밋
fe8986cef2

+ 1 - 1
src/main/java/com/poteviohealth/cgp/statistics/controller/OrderController.java

@@ -209,7 +209,7 @@ public class OrderController extends BaseWebController {
         log.info(orderId);
         //图片检查
         try {
-            DistinctionDTO dto = distinctionService.checkImg(file.getInputStream(),orderId,uidList);
+            DistinctionDTO dto = distinctionService.checkImg(file,orderId,uidList);
             if(dto.getOrderId() ==null){
                 VaultsResponse<String> vaultsResponse = ossUtils.uploadOneFile(file,orderId);
                 log.info(vaultsResponse.getData());

+ 3 - 2
src/main/java/com/poteviohealth/cgp/statistics/service/IDistinctionService.java

@@ -3,8 +3,9 @@ package com.poteviohealth.cgp.statistics.service;
 import com.poteviohealth.cgp.common.service.IBaseService;
 import com.poteviohealth.cgp.statistics.model.Distinction;
 import com.poteviohealth.cgp.statistics.model.outdto.DistinctionDTO;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.io.InputStream;
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -13,5 +14,5 @@ import java.util.List;
  */
 public interface IDistinctionService extends IBaseService<Distinction> {
 
-    DistinctionDTO checkImg(InputStream inputStream,Long orderId,List<String> uidList);
+    DistinctionDTO checkImg(MultipartFile file, Long orderId, List<String> uidList) throws IOException;
 }

+ 8 - 3
src/main/java/com/poteviohealth/cgp/statistics/service/impl/DistinctionServiceImpl.java

@@ -14,14 +14,16 @@ import com.poteviohealth.cgp.statistics.mapper.DistinctionMapper;
 import com.poteviohealth.cgp.statistics.model.Distinction;
 import com.poteviohealth.cgp.statistics.model.outdto.DistinctionDTO;
 import com.poteviohealth.cgp.statistics.service.IDistinctionService;
+import com.poteviohealth.cgp.statistics.utils.OssUtils;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.io.InputStream;
+import java.io.IOException;
 import java.util.Date;
 import java.util.List;
 
@@ -39,11 +41,14 @@ public class DistinctionServiceImpl extends BaseServiceImpl<DistinctionMapper, D
     private CacheService cacheService;
     @Value("${sync.dbName}")
     private String dbName;
+    @Resource
+    private OssUtils ossUtils;
 
     @Override
-    public DistinctionDTO checkImg(InputStream inputStream, Long orderId, List<String> uidList) {
+    public DistinctionDTO checkImg(MultipartFile file, Long orderId, List<String> uidList) throws IOException {
         DistinctionDTO dto = new DistinctionDTO();
-        String uid = ImageUtils.readImagePix(inputStream);
+        file = ossUtils.videoConvertImg(file);
+        String uid = ImageUtils.readImagePix(file.getInputStream());
         dto.setUid(uid);
         if("0".equals(orderCacheVal(CgpTool.CACHE_ORDER_PHOTO_CHECK))){
             return dto;

+ 25 - 2
src/main/java/com/poteviohealth/cgp/statistics/utils/OssUtils.java

@@ -136,10 +136,34 @@ public class OssUtils {
         return null;
     }
 
+    public MultipartFile videoConvertImg(MultipartFile dto) {
+        try {
+            //设置文件名
+            Integer pos = dto.getOriginalFilename().lastIndexOf('.');
+            String suffix = "";
+            if (pos != -1) {
+                suffix = dto.getOriginalFilename().substring(pos);
+            }
+
+            if(suffix.indexOf("mp4") != -1){
+                File tempFile = File.createTempFile("temp_", ".mp4");
+                dto.transferTo(tempFile);
+                File outFile =  this.generateCover(tempFile);
+                dto = new MockMultipartFile(outFile.getName(), new FileInputStream(outFile));
+                tempFile.delete();
+                outFile.delete();
+            }
+            return dto;
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
     /**
      * 获取指定的视频文件后进行封面截图为jpg
      */
-    public File generateCover(File inputFile) {
+    private File generateCover(File inputFile) {
         try {
             // 截图保存位置
             String outName = "out"+CgpTool.generateUUID()+".jpg";
@@ -160,5 +184,4 @@ public class OssUtils {
 
         return null;
     }
-
 }