1
luodangjia
2025-01-21 f981c1f30461ef9a40a39338aa77e511ffc24d1f
1
5个文件已修改
2个文件已添加
99 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/IdCard.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/orc/OcrUtils.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/IdCard.java
New file
@@ -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;
}
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);
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();
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
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));
        }
    }
}
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())){
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/CommonController.java
New file
@@ -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);
        }
    }
}