Ver código fonte

4/2 以图搜图检索

lwhhszx 1 ano atrás
pai
commit
d2ff9585c5

+ 18 - 0
src/main/java/com/example/xiaoshiweixinback/business/utils/FileUtil.java

@@ -0,0 +1,18 @@
+package com.example.xiaoshiweixinback.business.utils;
+
+import java.io.File;
+import java.io.FileOutputStream;
+
+public class FileUtil {
+    public static void byteToFile(File file, byte [] data)throws Exception {
+        if (data != null) {
+            if (file.exists()) {
+                file.delete();
+            }
+            FileOutputStream fos = new FileOutputStream(file);
+            fos.write(data, 0, data.length);
+            fos.flush();
+            fos.close();
+        }
+    }
+}

+ 44 - 0
src/main/java/com/example/xiaoshiweixinback/controller/PatentController.java

@@ -0,0 +1,44 @@
+package com.example.xiaoshiweixinback.controller;
+
+import com.example.xiaoshiweixinback.business.common.Constants;
+import com.example.xiaoshiweixinback.business.common.Response;
+import com.example.xiaoshiweixinback.business.utils.FileUtil;
+import com.example.xiaoshiweixinback.business.utils.JsonUtils;
+import com.example.xiaoshiweixinback.entity.dto.person.LoginDTO;
+import com.example.xiaoshiweixinback.entity.vo.person.LoginVO;
+import com.example.xiaoshiweixinback.service.common.FileManagerService;
+import com.example.xiaoshiweixinback.service.common.GetVectorService;
+import io.swagger.v3.oas.annotations.Operation;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.util.List;
+
+@RequestMapping(Constants.XIAOSHI_WEIXINBACK + "/patent")
+@RestController
+public class PatentController {
+    @Autowired
+    private GetVectorService getVectorService;
+    @Autowired
+    private FileManagerService fileManagerService;
+
+    @Operation(summary = "手机号/账号登录")
+    @GetMapping(value = "/getVector")
+    public Response loginByPhone(String guid) {
+        try {
+//            byte[] bytes = fileManagerService.downloadSystemFileFromFMS(guid);
+//            File file = new File("111.png");
+//            FileUtil.byteToFile(file, bytes);
+//            List<String> a = getVectorService.uploadFile(file);
+//            System.out.println(a);
+          List<String> b =getVectorService.getVectorByText(guid);
+          System.out.println(b);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return Response.success("");
+    }
+}

+ 76 - 0
src/main/java/com/example/xiaoshiweixinback/service/common/GetVectorService.java

@@ -0,0 +1,76 @@
+package com.example.xiaoshiweixinback.service.common;
+
+import com.example.xiaoshiweixinback.business.utils.JsonUtils;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.apache.commons.io.FileUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.util.FileCopyUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+import static cn.hutool.core.io.FileUtil.getMimeType;
+
+@RequiredArgsConstructor
+@Slf4j
+@Service
+public class GetVectorService {
+    /**
+     * 调用文件系统上传文件接口
+     *
+     * @param multipartFiles 文件
+     */
+    @Value("${VectorUrl}")
+    private String vectorUrl;
+    public List<String> uploadFile(File file) throws IOException {
+
+        MultipartBody.Builder multipartBodyBuilder = new MultipartBody.Builder()
+                .setType(MultipartBody.FORM);
+        //根据文件名获取文件的MIME类型
+        String mimeType = getMimeType(file.getPath());
+        multipartBodyBuilder.addFormDataPart("image_info", file.getName(), RequestBody.create(MediaType.parse(mimeType), file));
+        RequestBody requestBody = multipartBodyBuilder
+                .build();
+        OkHttpClient okHttpClient = new OkHttpClient.Builder()
+                .connectTimeout(60, TimeUnit.SECONDS)
+                .writeTimeout(60, TimeUnit.SECONDS)
+                .readTimeout(60, TimeUnit.SECONDS)
+                .build();
+        Request request = new Request.Builder()
+                .url(vectorUrl + "/getVectorByImg")
+                .post(requestBody)
+                .build();
+        Response response = null;
+        response = okHttpClient.newCall(request).execute();
+
+        String jsons = Objects.requireNonNull(response.body()).string();
+        List<String> stringList = JsonUtils.jsonToList(jsons, String.class);
+
+        return stringList;
+    }
+
+
+    public List<String> getVectorByText(String key) throws IOException {
+
+        OkHttpClient okHttpClient = new OkHttpClient();
+
+        Request request = new Request.Builder()
+                .url(vectorUrl + "/getVectorByText?keyword="+key)
+                .get()
+                .build();
+        Response response = null;
+        response = okHttpClient.newCall(request).execute();
+        String jsons = Objects.requireNonNull(response.body()).string();
+        List<String> stringList = JsonUtils.jsonToList(jsons, String.class);
+
+        return stringList;
+    }
+}

+ 1 - 0
src/main/resources/application-dev.yml

@@ -67,6 +67,7 @@ PCSUrl: http://localhost:8871
 OPSUrl: http://139.224.24.90:5001
 PASUrl: http://localhost:8877
 FMSUrl: http://localhost:8801
+VectorUrl: http://192.168.1.6:8000
 FileSource: 1
 
 ##################  短信 ####################

+ 1 - 1
src/main/resources/application.yml

@@ -20,7 +20,7 @@ spring:
       max-file-size: 1000MB
       max-request-size: 1000MB
   profiles:
-    active: prodNetIn
+    active: dev
   jackson:
     default-property-inclusion: non_null
     serialization: