瀏覽代碼

人脸上传,比对接口

wujiefeng 1 年之前
父節點
當前提交
f02edef9c3

+ 0 - 4
centers/AuthCenter/AuthClient/src/main/java/com/github/microservice/auth/client/model/UserFaceUploadModel.java

@@ -24,10 +24,6 @@ public class UserFaceUploadModel {
 
     private String file;
 
-//    @Schema(description = "对比人脸照片")
-//    @NotNull(message = "compareFace不能为null")
-//    private String compareFace;
-
     @Schema(description = "更新的图片文件id")
     private String updateFaceFileId;
 }

+ 11 - 5
centers/AuthCenter/AuthServer/src/main/java/com/github/microservice/auth/server/core/controller/user/UserController.java

@@ -12,6 +12,9 @@ import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import jakarta.validation.constraints.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.gridfs.GridFsTemplate;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -53,9 +56,12 @@ public class UserController {
         return userFaceService.matches(file);
     }
 
-//    @Operation(summary = "删除人脸", description = "删除人脸")
-//    @RequestMapping(value = "deleteFace", method = {RequestMethod.GET})
-//    public ResultContent deleteFace(@RequestParam("userId") String userId, @RequestParam("faceFileId") String faceFileId){
-//        return userFaceService.delete(userId, faceFileId);
-//    }
+    @Autowired
+    GridFsTemplate gridFsTemplate;
+
+    @Operation(summary = "删除人脸", description = "删除人脸")
+    @RequestMapping(value = "deleteFace", method = {RequestMethod.GET})
+    public ResultContent deleteFace(@RequestParam("userId") String userId, @RequestParam("faceFileId") String faceFileId){
+        return userFaceService.delete(userId, faceFileId);
+    }
 }

+ 3 - 29
centers/AuthCenter/AuthServer/src/main/java/com/github/microservice/auth/server/core/helper/FaceHelper.java

@@ -2,12 +2,9 @@ package com.github.microservice.auth.server.core.helper;
 
 import com.github.microservice.core.util.JsonUtil;
 import lombok.SneakyThrows;
-import org.apache.tomcat.util.digester.DocumentProperties;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StreamUtils;
-import redis.clients.jedis.Jedis;
-import redis.clients.jedis.util.Pool;
 
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
@@ -16,7 +13,6 @@ import java.net.http.HttpClient;
 import java.net.http.HttpRequest;
 import java.net.http.HttpResponse;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
 
@@ -26,9 +22,6 @@ public class FaceHelper {
     @Value("${deepface.url}")
     private String url;
 
-//    @Value("${deepface.detectorBackend}")
-//    private String detectorBackend;
-
     @SneakyThrows
     public HttpResponse<String> uploadFs(InputStream inputStream, String key){
 
@@ -52,12 +45,7 @@ public class FaceHelper {
                 .build();
 
         // Send the request and get the response
-        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
-
-        // Print the response
-        System.out.println("Response Code: " + response.statusCode());
-        System.out.println("Response Body: " + response.body());
-        return response;
+        return client.send(request, HttpResponse.BodyHandlers.ofString());
     }
 
     @SneakyThrows
@@ -83,12 +71,7 @@ public class FaceHelper {
                 .build();
 
         // Send the request and get the response
-        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
-
-        // Print the response
-        System.out.println("Response Code: " + response.statusCode());
-        System.out.println("Response Body: " + response.body());
-        return response;
+        return client.send(request, HttpResponse.BodyHandlers.ofString());
     }
 
     @SneakyThrows
@@ -103,11 +86,7 @@ public class FaceHelper {
                 .POST(HttpRequest.BodyPublishers.ofByteArray(data.getBytes(StandardCharsets.UTF_8)))
                 .build();
         // Send the request and get the response
-        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
-        // Print the response
-        System.out.println("Response Code: " + response.statusCode());
-        System.out.println("Response Body: " + response.body());
-        return response;
+        return client.send(request, HttpResponse.BodyHandlers.ofString());
     }
 
     private static byte[] buildMultipartBody(String boundary, Map<String, Object> formData) throws Exception {
@@ -125,11 +104,6 @@ public class FaceHelper {
                 outputStream.write(("Content-Disposition: form-data; name=\"" + key + "\"; filename=\"uploaded_file\"\r\n").getBytes(StandardCharsets.UTF_8));
                 outputStream.write("Content-Type: application/octet-stream\r\n\r\n".getBytes(StandardCharsets.UTF_8));
 
-//                byte[] buffer = new byte[8192];
-//                int bytesRead;
-//                while ((bytesRead = inputStream.read(buffer)) != -1) {
-//                    outputStream.write(buffer, bytesRead);
-//                }
                 StreamUtils.copy(inputStream,outputStream);
 
                 outputStream.write("\r\n".getBytes(StandardCharsets.UTF_8));

+ 4 - 4
centers/AuthCenter/AuthServer/src/main/java/com/github/microservice/auth/server/core/service/local/UserFaceServiceImpl.java

@@ -26,6 +26,7 @@ import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.gridfs.GridFsTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 import redis.clients.jedis.JedisPooled;
 
@@ -101,10 +102,6 @@ public class UserFaceServiceImpl implements UserFaceService {
             return ResultContent.build(ResultState.Fail, "人脸特征提取失败");
         }
 
-        FacePutResultsModel resultsModel = JsonUtil.toObject(response.body(), FacePutResultsModel.class);
-        System.out.println(resultsModel);
-
-
         //图片入库
         String fileId = gridFsTemplate.store(inputStream, UUID.randomUUID().toString(), Map.of("userId", userFaceUploadModel.getUserId())).toHexString();
 
@@ -124,6 +121,7 @@ public class UserFaceServiceImpl implements UserFaceService {
      * @param faceFileId
      * @return
      */
+    @Transactional
     public ResultContent delete(@NotNull String userId, @NotNull String faceFileId) {
         User user = userDao.findTop1ById(userId);
         if (user == null) {
@@ -143,6 +141,8 @@ public class UserFaceServiceImpl implements UserFaceService {
             return ResultContent.build(ResultState.Fail, "人脸库数据删除失败");
         }
         userFaceDao.deleteById(userFace.getId());
+        Criteria criteria = Criteria.where("_id").is(faceFileId);
+        gridFsTemplate.delete(Query.query(criteria));
         return ResultContent.build(ResultState.Success);
     }
 

+ 0 - 81
centers/AuthCenter/AuthServer/src/main/java/com/github/microservice/auth/server/core/util/FaceUtil.java

@@ -1,81 +0,0 @@
-package com.github.microservice.auth.server.core.util;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.util.StreamUtils;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
-import java.nio.charset.StandardCharsets;
-import java.util.Map;
-import java.util.UUID;
-
-public class FaceUtil {
-
-    public static HttpResponse<String> uploadFs(String url, InputStream inputStream, String detectorBackend) throws Exception {
-
-        // Generate a boundary for multipart/form-data
-        String boundary = UUID.randomUUID().toString();
-
-        // Build the multipart body as byte array
-        byte[] multipartBody = buildMultipartBody(boundary, Map.of(
-                "img", inputStream,
-                "detector_backend", detectorBackend
-        ));
-
-        // Create the HttpClient instance
-        HttpClient client = HttpClient.newHttpClient();
-
-        // Build the HTTP request
-        HttpRequest request = HttpRequest.newBuilder()
-                .uri(URI.create(url))
-                .header("Content-Type", "multipart/form-data; boundary=" + boundary)
-                .POST(HttpRequest.BodyPublishers.ofByteArray(multipartBody))
-                .build();
-
-        // Send the request and get the response
-        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
-
-        // Print the response
-        System.out.println("Response Code: " + response.statusCode());
-        System.out.println("Response Body: " + response.body());
-        return response;
-    }
-
-    private static byte[] buildMultipartBody(String boundary, Map<String, Object> formData) throws Exception {
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-
-        for (Map.Entry<String, Object> entry : formData.entrySet()) {
-            String key = entry.getKey();
-            Object value = entry.getValue();
-
-            outputStream.write(("--" + boundary + "\r\n").getBytes(StandardCharsets.UTF_8));
-
-            if (value instanceof InputStream) {
-                InputStream inputStream = (InputStream) value;
-
-                outputStream.write(("Content-Disposition: form-data; name=\"" + key + "\"; filename=\"uploaded_file\"\r\n").getBytes(StandardCharsets.UTF_8));
-                outputStream.write("Content-Type: application/octet-stream\r\n\r\n".getBytes(StandardCharsets.UTF_8));
-
-//                byte[] buffer = new byte[8192];
-//                int bytesRead;
-//                while ((bytesRead = inputStream.read(buffer)) != -1) {
-//                    outputStream.write(buffer, bytesRead);
-//                }
-                StreamUtils.copy(inputStream,outputStream);
-
-                outputStream.write("\r\n".getBytes(StandardCharsets.UTF_8));
-            } else {
-                outputStream.write(("Content-Disposition: form-data; name=\"" + key + "\"\r\n\r\n").getBytes(StandardCharsets.UTF_8));
-                outputStream.write((value.toString() + "\r\n").getBytes(StandardCharsets.UTF_8));
-            }
-        }
-
-        outputStream.write(("--" + boundary + "--\r\n").getBytes(StandardCharsets.UTF_8));
-
-        return outputStream.toByteArray();
-    }
-}

+ 1 - 1
centers/AuthCenter/AuthServer/src/main/resources/application-dev.yml

@@ -49,7 +49,7 @@ init:
 
 
 deepface:
-  url: http://127.0.0.1:5000
+  url: http://172.24.50.53:5000
 
 springdoc:
   api-docs: