response = restTemplate.postForEntity(recogurl, imageUpload, String.class);
+ if (response.getStatusCodeValue() != 200) {
+ throw new RestClientException("调用服务失败,状态码:" + response.getStatusCodeValue());
+ }
+ String json = response.getBody();
+ // 移除首尾字符
+ json = json.substring(1, json.length() - 1);
+ // 解析转义字符
+ json = StringEscapeUtils.unescapeJava(json);
+ Gson gson = new Gson();
+ return gson.fromJson(json, IdCardVo.class);
+ }
+ private void saveRecognitionResult(IdCardVo idCardVo, char ifComplete, String frontFileName, String backFileName,long startTime) {
+ String idNumber = idCardVo.getData().getIdNumber();
+ // 从SecurityUtils.getLoginUser()获取登录用户信息
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ // 记录结束时间
+ long endTime = System.currentTimeMillis();
+ // 计算响应时间
+ long time = endTime - startTime;
+ int responseTime = (int) time;
AiIdcardrecognizeResult aiIdcardrecognizeResult = AiIdcardrecognizeResult.builder()
- .resultId(2L)
.serviceId(1L)
.name(idCardVo.getData().getName())
.sex(idCardVo.getData().getGender())
@@ -82,19 +145,15 @@ public class OcrRecogServiceImpl implements IOcrRecogService {
.issuingAuthority(idCardVo.getData().getIssuingAuthority())
.idcardValidity(idCardVo.getData().getValidTime())
.ifComplete(ifComplete)
- .frontImageAddress("a")
- .backImageAddress("a")
+ .frontImageAddress(frontFileName)
+ .backImageAddress(backFileName)
.recognizeTime(LocalDateTime.now())
- .responseLong(2)
- .invokeIp("a")
- .updateBy("a")
+ .responseLong(responseTime)
+ .invokeIp(IpUtils.getIpAddr(ServletUtils.getRequest()))
+ // .updateBy(loginUser.getUserid()) // 假设getUserid()已返回正确用户ID
.updateTime(LocalDateTime.now())
- .delFlag('a')
.build();
- System.out.println("最终结果:" + aiIdcardrecognizeResult);
aiIdcardrecognizeMapper.insert(aiIdcardrecognizeResult);
-
- return idCardVo;
-
}
+
}
diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/utils/FileTypeUtils.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/utils/FileTypeUtils.java
new file mode 100644
index 0000000..740f8ee
--- /dev/null
+++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/utils/FileTypeUtils.java
@@ -0,0 +1,75 @@
+package com.bonus.ai.utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.File;
+
+/**
+ * 文件类型工具类
+ *
+ * @author ruoyi
+ */
+public class FileTypeUtils {
+ public static final String FILE_TYPE_XLS = "application/vnd.ms-excel";
+ public static final String FILE_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
+ public static final String FILE_TYPE_DOC = "application/msword";
+ public static final String FILE_TYPE_DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
+ public static final String FILE_TYPE_PDF = "application/pdf";
+ public static final String FILE_TYPE_JSON = "application/json";
+ public static final String FILE_TYPE_XML = "application/xml";
+ public static final String FILE_TYPE_PNG = "image/png";
+ public static final String FILE_TYPE_JPEG = "image/jpeg";
+ public static final String FILE_TYPE_SVG = "image/svg";
+
+ /**
+ * 获取文件类型
+ *
+ * 例如: ruoyi.txt, 返回: txt
+ *
+ * @param file 文件名
+ * @return 后缀(不含".")
+ */
+ public static String getFileType(File file) {
+ if (null == file) {
+ return StringUtils.EMPTY;
+ }
+ return getFileType(file.getName());
+ }
+
+ /**
+ * 获取文件类型
+ *
+ * 例如: ruoyi.txt, 返回: txt
+ *
+ * @param fileName 文件名
+ * @return 后缀(不含".")
+ */
+ public static String getFileType(String fileName) {
+ int separatorIndex = fileName.lastIndexOf(".");
+ if (separatorIndex < 0) {
+ return "";
+ }
+ return fileName.substring(separatorIndex + 1).toLowerCase();
+ }
+
+ /**
+ * 获取文件类型
+ *
+ * @param photoByte 文件字节码
+ * @return 后缀(不含".")
+ */
+ public static String getFileExtendName(byte[] photoByte) {
+ String strFileExtendName = "JPG";
+ if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
+ && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) {
+ strFileExtendName = "GIF";
+ } else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) {
+ strFileExtendName = "JPG";
+ } else if ((photoByte[0] == 66) && (photoByte[1] == 77)) {
+ strFileExtendName = "BMP";
+ } else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) {
+ strFileExtendName = "PNG";
+ }
+ return strFileExtendName;
+ }
+}
\ No newline at end of file
diff --git a/bonus-modules/bonus-ai/src/main/resources/bootstrap.yml b/bonus-modules/bonus-ai/src/main/resources/bootstrap.yml
index 31204a7..a775e2d 100644
--- a/bonus-modules/bonus-ai/src/main/resources/bootstrap.yml
+++ b/bonus-modules/bonus-ai/src/main/resources/bootstrap.yml
@@ -3,6 +3,12 @@ server:
port: 18083
# Spring
spring:
+ servlet:
+ multipart:
+ # 文件最大
+ max-file-size: 20MB
+ # 设置总上传数据总大小
+ max-request-size: 20MB
application:
# 应用名称
name: bonus-ai