From f981c1f30461ef9a40a39338aa77e511ffc24d1f Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 21 一月 2025 16:56:39 +0800
Subject: [PATCH] 1

---
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/IdCard.java                     |   28 ++++++++++++++
 ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java                             |    2 
 ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java    |    3 -
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java |    8 ++++
 ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java                                |    2 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java          |   22 ++++++++++-
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java          |   34 +++++++++++++++++
 7 files changed, 93 insertions(+), 6 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/IdCard.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/IdCard.java
new file mode 100644
index 0000000..c9fb9fe
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/IdCard.java
@@ -0,0 +1,28 @@
+package com.ruoyi.system.api.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+@Data
+@Schema(description = "身份证信息")
+public class IdCard {
+    @Schema(description = "姓名")
+    private String name;
+
+    @Schema(description = "性别")
+    private String sex;
+
+    @Schema(description = "身份证号码")
+    private String idNumber;
+
+    @Schema(description = "出生日期")
+    private LocalDate birthDate;
+
+    @Schema(description = "民族")
+    private String ethnicity;
+
+    @Schema(description = "地址")
+    private String address;
+}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 34111f6..091cfcf 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -70,7 +70,7 @@
     }
 
     @Operation(summary = "管理端-修改密码")
-    @GetMapping("/modify-pwd")
+    @PostMapping("/modify-pwd")
     public R<?> modifyPwd(@Valid @RequestBody MgtPasswordDTO dto) {
         try {
             sysLoginService.modifyPwd(dto);
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index 5c0d803..7d42138 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -197,7 +197,7 @@
         if (r.getData() == null) {
             throw new ServiceException("账号不存在");
         }
-        if (!SecurityUtils.matchesPassword(password, r.getData().getPassword())) {
+        if (!SecurityUtils.matchesPassword(r.getData().getPassword(), password)) {
             throw new ServiceException("密码错误");
         }
         return r.getData();
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java
index 36f8a37..6e0d145 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java
@@ -1,13 +1,17 @@
 package com.ruoyi.common.core.utils.orc;
 
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.aliyun.ocr_api20210707.models.RecognizeAllTextRequest;
 import com.aliyun.ocr_api20210707.models.RecognizeAllTextResponse;
 import com.aliyun.tea.TeaException;
 import com.aliyun.tea.TeaModel;
+import com.aliyun.teautil.Common;
 import com.aliyun.teautil.models.RuntimeOptions;
 import com.ruoyi.common.core.utils.UrlDownloader;
 
 import java.io.InputStream;
+import java.util.Map;
 
 public class OcrUtils {
 
@@ -34,7 +38,7 @@
     /**
      * 证件识别
      */
-    public static String idCard(InputStream bodyStream) throws Exception {
+    public static JSONObject idCard(InputStream bodyStream) throws Exception {
         com.aliyun.ocr_api20210707.Client client = createClient();
         // 需要安装额外的依赖库,直接点击下载完整工程即可看到所有依赖。
         RecognizeAllTextRequest recognizeAllTextRequest = new RecognizeAllTextRequest()
@@ -45,7 +49,21 @@
         try {
             // 复制代码运行请自行打印 API 的返回值
             RecognizeAllTextResponse recognizeAllTextResponse = client.recognizeAllTextWithOptions(recognizeAllTextRequest, runtime);
-            System.out.println(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(recognizeAllTextResponse)));
+            String jsonString = Common.toJSONString(TeaModel.buildMap(recognizeAllTextResponse));
+            JSONObject jsonObject = JSONObject.parseObject(jsonString);
+            Integer statusCode = jsonObject.getInteger("statusCode");
+            if (statusCode != 200) {
+                throw new RuntimeException("识别失败");
+            }
+            JSONObject body = jsonObject.getJSONObject("body");
+            JSONObject data = body.getJSONObject("Data");
+            JSONArray subImages = body.getJSONArray("SubImages");
+            if (subImages != null && !subImages.isEmpty()){
+                JSONObject subImage = subImages.getJSONObject(0);
+                JSONObject kvInfo = subImage.getJSONObject("KvInfo");
+                return kvInfo.getJSONObject("Data");
+            }
+            return null;
         } catch (TeaException error) {
             // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
             // 错误 message
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
index b0563b1..687348e 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
@@ -130,4 +130,12 @@
         BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
         return passwordEncoder.matches(rawPassword, encodedPassword);
     }
+
+    public static void main(String[] args) {
+        String password1 = "$2a$10$qB8arbbFx4mevJzCOoChhebLS/ULjY7BCBNMNk9CoSJHAUM/Ixr2K";
+        for (int i = 0; i < 5; i++) {
+            String password = encryptPassword("123");
+            System.out.println(matchesPassword("123",password1));
+        }
+    }
 }
diff --git a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
index bd86815..e44e2e9 100644
--- a/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
+++ b/ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
@@ -127,8 +127,7 @@
     public R<Void> updatePassword(@RequestBody UpdatePassword updatePassword) {
         AppUser appLoginUser = SecurityUtils.getAppLoginUser();
         User user = userService.getById(appLoginUser.getUserId());
-        String oldPassword = SecurityUtils.encryptPassword(updatePassword.getOldPassword());
-        if (!user.getPassword().equals(oldPassword)) {
+        if (!SecurityUtils.matchesPassword(updatePassword.getOldPassword(), user.getPassword())) {
             return R.fail("旧密码错误");
         }
         if (!updatePassword.getNewPassword().equals(updatePassword.getConfirmPassword())){
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
new file mode 100644
index 0000000..fddfde9
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
@@ -0,0 +1,34 @@
+package com.ruoyi.system.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.UrlDownloader;
+import com.ruoyi.common.core.utils.orc.OcrUtils;
+import com.ruoyi.system.api.model.IdCard;
+import io.swagger.v3.oas.annotations.Parameter;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.InputStream;
+
+@RestController
+@RequestMapping("/common")
+public class CommonController {
+
+    /**
+     * ocr提取身份证信息
+     */
+    @GetMapping("/idCard")
+    public R<IdCard> idCard(@Parameter(name = "url", description = "图片地址") String url) {
+        InputStream inputStream;
+        try {
+            inputStream = UrlDownloader.downloadAsStream(url);
+            JSONObject jsonObject = OcrUtils.idCard(inputStream);
+            IdCard idCard = JSONObject.parseObject(jsonObject.toJSONString(), IdCard.class);
+            return R.ok(idCard);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}

--
Gitblit v1.7.1