isIdCardMatch不对
时间: 2023-08-25 12:53:40 浏览: 121
抱歉,我之前的回答有误。根据你的代码,`isIdCardMatch`方法的实现是正确的。
在你的代码中,`isIdCardMatch`方法用于判断解密后的身份证数据与原始身份证数据是否匹配。如果匹配,则将原始身份证数据赋值给`userInfo`对象的`card`属性。
以下是你提供的代码片段中的修正后的部分:
```java
List<UserInfo> loUserList = new ArrayList<>();
out = response.getWriter();
// 更新用户日志
UserInfoLogController conTroller = new UserInfoLogController();
UserInfo us = this.getData(request.getSession());
UserInfo oldUserInfo = userService.selectUserInfoById(userInfo.getId());
conTroller.addUserLog(oldUserInfo, userInfo, userLogService, "updateToDetail", us.getPhone());
UserInfo verifyUser = userService.selectUserInfoByUserName(userInfo.getPhone());
if (verifyUser != null && !verifyUser.getId().equals(userInfo.getId())) {
out.print("<script>top.Dialog.alert('号码已经被注册');window.location.href='id?u=" + userInfo.getUsername() + "';</script>");
out.close();
return;
}
// 解密脱敏的身份证数据
String idCard = userInfo.getCard();
String verifyCard = verifyUser.getCard(); // 前端传递的脱敏身份证数据
// 将脱敏的身份证数据与原始身份证数据进行比较
if (isIdCardMatch(idCard, verifyCard)) {
userInfo.setCard(verifyUser.getCard());
}
if (!StringUtil.isEmpty(userInfo.getCard())) {
Pattern pattern = Pattern.compile("[^A-Za-z0-9]", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(userInfo.getCard());
if (matcher.find()) {
userInfo.setCard(matcher.replaceAll(""));
}
}
// 判断身份证是否匹配的方法
private boolean isIdCardMatch(String idCard, String verifyCard) {
// 去除脱敏标记后进行比较
String idCardProcessed = idCard.replaceAll("\\*", ""); // 去除idCard中的脱敏标记
return idCardProcessed.equals(verifyCard);
}
```
请确保你在实现`isIdCardMatch`方法时,正确地处理了身份证数据的脱敏标记,并进行了比较操作。如果问题仍然存在,请提供更多关于`isIdCardMatch`方法的具体信息,以便我能够更好地帮助你。
阅读全文