From f795cb98e1dc260b18395df01cf1af13759f2145 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Wed, 21 Aug 2024 18:09:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=2089218=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--=E6=89=8B=E5=8A=A8=E6=96=B0=E5=A2=9E=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=90=8E=EF=BC=8C=E6=8F=90=E4=BA=A4=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=A4=AA=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/common/api/vo/ResultCommon.java | 1 + .../system/service/impl/LoginServiceImpl.java | 51 +++++++++---------- .../entity/vo/SplitExcelVO.java | 2 + ...essStandardComplianceCheckServiceImpl.java | 43 ++++++++++++++++ .../modules/activiti/util/ExcelUtils.java | 20 ++++++++ .../main/resources/i18n/messages.properties | 1 + .../resources/i18n/messages_en.properties | 1 + .../resources/i18n/messages_zh.properties | 1 + 8 files changed, 94 insertions(+), 26 deletions(-) diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java b/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java index 73572f99..656519d7 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java @@ -205,6 +205,7 @@ public class ResultCommon { // 车型文件上传模板错误,请检查后重试 public static final String MODEL_IMPORT_TEMPLATE_ERROR = "model.import.template.error"; public static final String MODEL_IMPORT_DATA_ERROR = "model.import.data.error"; + public static final String SPLIT_IMPORT_DATA_ERROR = "split.import.data.error"; public static final String FILE_EMPTY_IMPORT_ERROR = "file.empty.import.error"; // 行大小太大 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 9fe6ae5c..718fe944 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,7 +1,6 @@ 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; @@ -95,22 +94,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(captcha==null){ + // 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); @@ -139,15 +138,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/entity/vo/SplitExcelVO.java b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/SplitExcelVO.java index daf7d1ff..d076163e 100644 --- a/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/SplitExcelVO.java +++ b/laws-modules/src/main/java/com/jero/modules/activiti/process/standardComplianceCheck/entity/vo/SplitExcelVO.java @@ -19,6 +19,8 @@ public class SplitExcelVO { @Excel(name = "条款内容") private String termContent; + private String sort; + public boolean emptyRowOrNot() { SplitExcelVO excel = this; return excel.getTermNumber() == null && excel.getTermTitle() == null && excel.getTermContent() == null; 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 c3be8757..b4ad71dd 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 @@ -1209,6 +1209,7 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl getSplitExcelData(MultipartFile splitFile, String sccId) { // 获取Excel的header + List errorMsgs; List headers; try { headers = ExcelUtils.getHeaderFromExcel(splitFile.getInputStream()); @@ -1233,11 +1234,53 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl", errorMsgs); + throw new JeroBootException(ResultCommon.MODEL_IMPORT_DATA_ERROR, errorMsg); + } List result = BeanCopyUtils.copyBeanList(splitExcelVOList, ProcessStandardComplianceCheckDetail.class); result.parallelStream().forEach(detail -> detail.setCheckId(sccId)); return result; } + private List validationSplitList(List list) { + List errorMsgs = new ArrayList<>(); + Set modelSet = new HashSet<>(); + Map> duplicateModels = new HashMap<>(); + int i = 2; + Iterator iterator = list.iterator(); + + while (iterator.hasNext()) { + SplitExcelVO data = iterator.next(); + if (ExcelUtils.isEmptyRow(data)) { + iterator.remove(); + if (list.isEmpty()) { + errorMsgs.add("文件暂无数据,请检查后重试。"); + } + continue; + } + String termNum = data.getTermNumber(); + String termTitle = data.getTermTitle(); + + StringBuilder errMsgHeader = new StringBuilder(); + StringBuilder errMsg = new StringBuilder(); + data.setSort(String.valueOf(i++)); + errMsgHeader.append("第").append(data.getSort()).append("行"); + + errMsg.append(excelUtils.validTermNum(termNum)); + errMsg.append(excelUtils.validTermTitle(termTitle)); + + // 如果数据有问题,则将提示信息添加到 errorMsgs 中 + if (errMsg.length() > 0) { + errorMsgs.add(errMsgHeader.append(errMsg).toString()); + } + } + + return errorMsgs; + } + private List getModelExcelData(MultipartFile file) { List listDict = commonAPI.getDictItemAll(); List 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 96fb73fd..c7e615d3 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 @@ -634,4 +634,24 @@ public class ExcelUtils { } return ""; } + + public String validTermNum(String value) { + if (StrUtil.isBlank(value)) { + return ""; + } + if (value.length() > 200) { + return "'条款号'过长(最多200字)。"; + } + return ""; + } + + public String validTermTitle(String value) { + if (StrUtil.isBlank(value)) { + return ""; + } + if (value.length() > 500) { + return "'条款标题'过长(最多500字)。"; + } + return ""; + } } diff --git a/laws-single-startup/src/main/resources/i18n/messages.properties b/laws-single-startup/src/main/resources/i18n/messages.properties index 9aa0e9b3..95f0b7e5 100644 --- a/laws-single-startup/src/main/resources/i18n/messages.properties +++ b/laws-single-startup/src/main/resources/i18n/messages.properties @@ -84,6 +84,7 @@ scc.delete.standard.error4=\u6807\u51C6\u6709\u88AB\u6BD4\u5BF9\u7684\u6570\u636 split.import.template.error=\u5206\u89E3\u5355\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 model.import.template.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 model.import.data.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0} +split.import.data.error=\u5206\u89E3\u5355\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0} file.empty.import.error=\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 can_not_find_template_file=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u6A21\u677F\u6587\u4EF6 can_not_find_field=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u5B57\u6BB5 diff --git a/laws-single-startup/src/main/resources/i18n/messages_en.properties b/laws-single-startup/src/main/resources/i18n/messages_en.properties index 70308673..3cd87196 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -100,6 +100,7 @@ scc.delete.standard.error4=The standard has the data being compared, can not del split.import.template.error=Split import template error model.import.template.error=Model import template error model.import.data.error=Model import data error.{0} +split.import.data.error=Split import data error.{0} file.empty.import.error=The file is empty, please upload again row.size.too.large=Row size too large can_not_find_template_file=Can not find template file name {0} diff --git a/laws-single-startup/src/main/resources/i18n/messages_zh.properties b/laws-single-startup/src/main/resources/i18n/messages_zh.properties index 2e041441..893b86f0 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -99,6 +99,7 @@ scc.delete.standard.error4=\u6807\u51C6\u6709\u88AB\u6BD4\u5BF9\u7684\u6570\u636 split.import.template.error=\u5206\u89E3\u5355\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 model.import.template.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6A21\u677F\u9519\u8BEF\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 model.import.data.error=\u8F66\u578B\u9879\u76EE\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0} +split.import.data.error=\u5206\u89E3\u5355\u6587\u4EF6\u4E0A\u4F20\u6570\u636E\u9519\u8BEF\u3002{0} file.empty.import.error=\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u540E\u91CD\u8BD5 row.size.too.large=\u884C\u5927\u5C0F\u592A\u5927 can_not_find_template_file=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u6A21\u677F\u6587\u4EF6