From 66ea6717024c2273cf03060936e5d5566f8e5fcc Mon Sep 17 00:00:00 2001 From: caihaohan Date: Tue, 20 Aug 2024 09:50:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=2089026=20=E6=B3=95=E8=A7=84=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E6=80=A7=E6=8E=92=E6=9F=A5=E6=B5=81=E7=A8=8B=EF=BC=88?= =?UTF-8?q?=E6=B3=95=E8=A7=84=E5=B7=A5=E7=A8=8B=E5=B8=88=E5=8F=91=E8=B5=B7?= =?UTF-8?q?=EF=BC=89=20--=E8=BD=A6=E5=9E=8B=E9=A1=B9=E7=9B=AE=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=95=B0=E6=8D=AE=E9=94=99=E8=AF=AF=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E8=AF=AD=E4=B8=8D=E6=98=8E=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/impl/LoginServiceImpl.java | 51 ++++++++++--------- ...essStandardComplianceCheckServiceImpl.java | 31 +++++++++++ .../modules/activiti/util/ExcelUtils.java | 13 ++++- 3 files changed, 69 insertions(+), 26 deletions(-) diff --git a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java index 76f11b27..9fe6ae5c 100644 --- a/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java @@ -1,6 +1,7 @@ package com.jero.modules.system.service.impl; import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; import com.aliyuncs.exceptions.ClientException; @@ -94,22 +95,22 @@ public class LoginServiceImpl implements ILoginService { String rsaPublicKey = sysLoginModel.getRsaPublicKey(); String rsaPrivateKey = redisUtil.get(rsaPublicKey) != null ? String.valueOf(redisUtil.get(rsaPublicKey)) : null; -// if(StrUtil.isEmpty(rsaPrivateKey)){ -// return Result.error(CommonConstant.SC_RSA_TIMEOUT_600, "页面过期,将刷新页面"); -// } -// -// String captcha = sysLoginModel.getCaptcha(); -// if(StringUtils.isBlank(captcha)){ -// return Result.error("验证码无效"); -// } -// String lowerCaseCaptcha = captcha.toLowerCase(); -// String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + sysLoginModel.getCheckKey(), UTF_8); -// Object checkCode = redisUtil.get(realKey); -// // 验证码前后端比较 -// if(checkCode == null || !checkCode.toString().equals(lowerCaseCaptcha)) { -// return Result.error("验证码错误"); -// } -// redisUtil.del(realKey); + if(StrUtil.isEmpty(rsaPrivateKey)){ + return Result.error(CommonConstant.SC_RSA_TIMEOUT_600, "页面过期,将刷新页面"); + } + + String captcha = sysLoginModel.getCaptcha(); + if(StringUtils.isBlank(captcha)){ + return Result.error("验证码无效"); + } + String lowerCaseCaptcha = captcha.toLowerCase(); + String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + sysLoginModel.getCheckKey(), UTF_8); + Object checkCode = redisUtil.get(realKey); + // 验证码前后端比较 + if(checkCode == null || !checkCode.toString().equals(lowerCaseCaptcha)) { + return Result.error("验证码错误"); + } + redisUtil.del(realKey); try { //解密获取密码和用户名 password = CommonUtils.decryptBtRsaPriKey(password, rsaPrivateKey); @@ -138,15 +139,15 @@ public class LoginServiceImpl implements ILoginService { return Result.error("密码错误次数过多,请15分钟后重试"); } //2. 校验用户名或密码是否正确 -// String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); -// String syspassword = sysUser.getPassword(); -// if (!syspassword.equals(userpassword)) { -// // 重试登录次数加一 -// retryCount++; -// this.setRetryInfoToRedis(username, retryCount); -// String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误,剩余可登录次数:"+(RETRY_LOGIN_MAX_COUNT - retryCount); -// return Result.error(msg); -// } + String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); + String syspassword = sysUser.getPassword(); + if (!syspassword.equals(userpassword)) { + // 重试登录次数加一 + retryCount++; + this.setRetryInfoToRedis(username, retryCount); + String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误,剩余可登录次数:"+(RETRY_LOGIN_MAX_COUNT - retryCount); + return Result.error(msg); + } //登录成功,清除错误登录次数 redisUtil.del(RETRY_LOGIN_PREFIX + username); if (checkSysPermission(username)) { diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java index b25a7ee8..f4cad5d4 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/service/impl/ProcessStandardComplianceCheckServiceImpl.java @@ -789,8 +789,11 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl validationModelList(List list, List listDict) { List errorMsgs = new ArrayList<>(); + Set modelSet = new HashSet<>(); + Map> duplicateModels = new HashMap<>(); int i = 2; Iterator iterator = list.iterator(); + while (iterator.hasNext()) { ModelExcelVO data = iterator.next(); if (ExcelUtils.isEmptyRow(data)) { @@ -800,6 +803,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl()); + duplicateModels.get(model).add(Integer.parseInt(data.getSort())); + } else { + duplicateModels.putIfAbsent(model, new ArrayList<>()); + duplicateModels.get(model).add(Integer.parseInt(data.getSort())); + } + // 检查所有数据字典校验的字段 + errMsg.append(excelUtils.validModel(model)); errMsg.append(excelUtils.validModelState(modelState, listDict)); + // 如果数据有问题,则将提示信息添加到 errorMsgs 中 if (errMsg.length() > 0) { errorMsgs.add(errMsgHeader.append(errMsg).toString()); } } + + // 添加重复model的错误信息 + for (Map.Entry> entry : duplicateModels.entrySet()) { + if (entry.getValue().size() > 1) { + StringBuilder duplicateErrMsg = new StringBuilder("车型 '") + .append(entry.getKey()) + .append("' 在以下行中重复: "); + for (int index : entry.getValue()) { + duplicateErrMsg.append(index).append("行, "); + } + // 移除最后一个多余的逗号和空格 + duplicateErrMsg.setLength(duplicateErrMsg.length() - 2); + errorMsgs.add(duplicateErrMsg.toString()); + } + } + return errorMsgs; } diff --git a/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java b/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java index 9f706ed2..96fb73fd 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/util/ExcelUtils.java @@ -615,7 +615,7 @@ public class ExcelUtils { public String validModelState(String value, List listDict) { if (StrUtil.isBlank(value)) { - return ""; + return "'车型状态'为空。"; } // 检查排查结果 if (!excelUtils.validDict("model_status", value, null, null, true, listDict)) { @@ -623,4 +623,15 @@ public class ExcelUtils { } return ""; } + + public String validModel(String value) { + if (StrUtil.isBlank(value)) { + return "'车型'为空。"; + } + // 判断是否超长 + if (value.length() > 50) { + return "'车型'超过50字"; + } + return ""; + } }