From ae544124bb188f37d22b008d511c7d52843301d5 Mon Sep 17 00:00:00 2001 From: Hsy <32729842@qq.com> Date: Mon, 8 Dec 2025 09:21:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/common/CommonController.java | 10 +-- .../com/devttl/common/constant/Constants.java | 4 +- .../com/devttl/common/utils/DictUtils.java | 67 +++++++------------ .../devttl/framework/aspectj/LogAspect.java | 24 ++++--- .../web/service/PermissionService.java | 8 +-- .../web/service/SysPermissionService.java | 6 +- 6 files changed, 54 insertions(+), 65 deletions(-) diff --git a/devttl-admin/src/main/java/com/devttl/web/controller/common/CommonController.java b/devttl-admin/src/main/java/com/devttl/web/controller/common/CommonController.java index 12671d67d..e0e1195d7 100644 --- a/devttl-admin/src/main/java/com/devttl/web/controller/common/CommonController.java +++ b/devttl-admin/src/main/java/com/devttl/web/controller/common/CommonController.java @@ -34,7 +34,7 @@ public class CommonController @Autowired private ServerConfig serverConfig; - private static final String FILE_DELIMETER = ","; + private static final String FILE_DELIMITER = ","; /** * 通用下载请求 @@ -119,10 +119,10 @@ public class CommonController originalFilenames.add(file.getOriginalFilename()); } AjaxResult ajax = AjaxResult.success(); - ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); - ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); - ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); - ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); + ajax.put("urls", StringUtils.join(urls, FILE_DELIMITER)); + ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMITER)); + ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMITER)); + ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMITER)); return ajax; } catch (Exception e) diff --git a/devttl-common/src/main/java/com/devttl/common/constant/Constants.java b/devttl-common/src/main/java/com/devttl/common/constant/Constants.java index 1d74eac67..928f1ac7f 100644 --- a/devttl-common/src/main/java/com/devttl/common/constant/Constants.java +++ b/devttl-common/src/main/java/com/devttl/common/constant/Constants.java @@ -84,12 +84,12 @@ public class Constants /** * 角色权限分隔符 */ - public static final String ROLE_DELIMETER = ","; + public static final String ROLE_DELIMITER = ","; /** * 权限标识分隔符 */ - public static final String PERMISSION_DELIMETER = ","; + public static final String PERMISSION_DELIMITER = ","; /** * 验证码有效期(分钟) diff --git a/devttl-common/src/main/java/com/devttl/common/utils/DictUtils.java b/devttl-common/src/main/java/com/devttl/common/utils/DictUtils.java index 822e51135..1ec55c449 100644 --- a/devttl-common/src/main/java/com/devttl/common/utils/DictUtils.java +++ b/devttl-common/src/main/java/com/devttl/common/utils/DictUtils.java @@ -1,7 +1,10 @@ package com.devttl.common.utils; import java.util.Collection; +import java.util.HashMap; import java.util.List; +import java.util.Map; + import com.alibaba.fastjson2.JSONArray; import com.devttl.common.constant.CacheConstants; import com.devttl.common.core.domain.entity.SysDictData; @@ -91,35 +94,23 @@ public class DictUtils { StringBuilder propertyString = new StringBuilder(); List datas = getDictCache(dictType); - if (StringUtils.isNull(datas)) + if (StringUtils.isNull(datas) || StringUtils.isEmpty(dictValue)) { return StringUtils.EMPTY; } - if (StringUtils.containsAny(separator, dictValue)) + Map dictMap = datas.stream().collect(HashMap::new, (map, dict) -> map.put(dict.getDictValue(), dict.getDictLabel()), Map::putAll); + if (!StringUtils.contains(dictValue, separator)) { + return dictMap.getOrDefault(dictValue, StringUtils.EMPTY); + } + StringBuilder labelBuilder = new StringBuilder(); + for (String seperatedValue : dictValue.split(separator)) { - for (SysDictData dict : datas) + if (dictMap.containsKey(seperatedValue)) { - for (String value : dictValue.split(separator)) - { - if (value.equals(dict.getDictValue())) - { - propertyString.append(dict.getDictLabel()).append(separator); - break; - } - } + labelBuilder.append(dictMap.get(seperatedValue)).append(separator); } } - else - { - for (SysDictData dict : datas) - { - if (dictValue.equals(dict.getDictValue())) - { - return dict.getDictLabel(); - } - } - } - return StringUtils.stripEnd(propertyString.toString(), separator); + return StringUtils.removeEnd(labelBuilder.toString(), separator); } /** @@ -134,35 +125,23 @@ public class DictUtils { StringBuilder propertyString = new StringBuilder(); List datas = getDictCache(dictType); - if (StringUtils.isNull(datas)) + if (StringUtils.isNull(datas) || StringUtils.isEmpty(dictLabel)) { return StringUtils.EMPTY; } - if (StringUtils.containsAny(separator, dictLabel)) + Map dictMap = datas.stream().collect(HashMap::new, (map, dict) -> map.put(dict.getDictLabel(), dict.getDictValue()), Map::putAll); + if (!StringUtils.contains(dictLabel, separator)) { + return dictMap.getOrDefault(dictLabel, StringUtils.EMPTY); + } + StringBuilder valueBuilder = new StringBuilder(); + for (String seperatedValue : dictLabel.split(separator)) { - for (SysDictData dict : datas) + if (dictMap.containsKey(seperatedValue)) { - for (String label : dictLabel.split(separator)) - { - if (label.equals(dict.getDictLabel())) - { - propertyString.append(dict.getDictValue()).append(separator); - break; - } - } + valueBuilder.append(dictMap.get(seperatedValue)).append(separator); } } - else - { - for (SysDictData dict : datas) - { - if (dictLabel.equals(dict.getDictLabel())) - { - return dict.getDictValue(); - } - } - } - return StringUtils.stripEnd(propertyString.toString(), separator); + return StringUtils.removeEnd(valueBuilder.toString(), separator); } /** diff --git a/devttl-framework/src/main/java/com/devttl/framework/aspectj/LogAspect.java b/devttl-framework/src/main/java/com/devttl/framework/aspectj/LogAspect.java index 5282d7ad3..a11147cda 100644 --- a/devttl-framework/src/main/java/com/devttl/framework/aspectj/LogAspect.java +++ b/devttl-framework/src/main/java/com/devttl/framework/aspectj/LogAspect.java @@ -50,6 +50,9 @@ public class LogAspect /** 计算操作消耗时间 */ private static final ThreadLocal TIME_THREADLOCAL = new NamedThreadLocal("Cost Time"); + /** 参数最大长度限制 */ + private static final int PARAM_MAX_LENGTH = 2000; + /** * 处理请求前执行 */ @@ -109,7 +112,7 @@ public class LogAspect if (e != null) { operLog.setStatus(BusinessStatus.FAIL.ordinal()); - operLog.setErrorMsg(StringUtils.substring(Convert.toStr(e.getMessage(), ExceptionUtil.getExceptionMessage(e)), 0, 2000)); + operLog.setErrorMsg(StringUtils.substring(Convert.toStr(e.getMessage(), ExceptionUtil.getExceptionMessage(e)), 0, PARAM_MAX_LENGTH)); } // 设置方法名称 String className = joinPoint.getTarget().getClass().getName(); @@ -160,7 +163,7 @@ public class LogAspect // 是否需要保存response,参数和值 if (log.isSaveResponseData() && StringUtils.isNotNull(jsonResult)) { - operLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, 2000)); + operLog.setJsonResult(StringUtils.substring(JSON.toJSONString(jsonResult), 0, PARAM_MAX_LENGTH)); } } @@ -172,16 +175,16 @@ public class LogAspect */ private void setRequestValue(JoinPoint joinPoint, SysOperLog operLog, String[] excludeParamNames) throws Exception { - Map paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest()); String requestMethod = operLog.getRequestMethod(); + Map paramsMap = ServletUtils.getParamMap(ServletUtils.getRequest()); if (StringUtils.isEmpty(paramsMap) && StringUtils.equalsAny(requestMethod, HttpMethod.PUT.name(), HttpMethod.POST.name(), HttpMethod.DELETE.name())) { String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames); - operLog.setOperParam(StringUtils.substring(params, 0, 2000)); + operLog.setOperParam(params); } else { - operLog.setOperParam(StringUtils.substring(JSON.toJSONString(paramsMap, excludePropertyPreFilter(excludeParamNames)), 0, 2000)); + operLog.setOperParam(StringUtils.substring(JSON.toJSONString(paramsMap, excludePropertyPreFilter(excludeParamNames)), 0, PARAM_MAX_LENGTH)); } } @@ -190,7 +193,7 @@ public class LogAspect */ private String argsArrayToString(Object[] paramsArray, String[] excludeParamNames) { - String params = ""; + StringBuilder params = new StringBuilder(); if (paramsArray != null && paramsArray.length > 0) { for (Object o : paramsArray) @@ -200,15 +203,20 @@ public class LogAspect try { String jsonObj = JSON.toJSONString(o, excludePropertyPreFilter(excludeParamNames)); - params += jsonObj.toString() + " "; + params.append(jsonObj).append(" "); + if (params.length() >= PARAM_MAX_LENGTH) + { + return StringUtils.substring(params.toString(), 0, PARAM_MAX_LENGTH); + } } catch (Exception e) { + log.error("请求参数拼装异常 msg:{}, 参数:{}", e.getMessage(), paramsArray, e); } } } } - return params.trim(); + return params.toString(); } /** diff --git a/devttl-framework/src/main/java/com/devttl/framework/web/service/PermissionService.java b/devttl-framework/src/main/java/com/devttl/framework/web/service/PermissionService.java index be1f8f569..3e9bc6217 100644 --- a/devttl-framework/src/main/java/com/devttl/framework/web/service/PermissionService.java +++ b/devttl-framework/src/main/java/com/devttl/framework/web/service/PermissionService.java @@ -53,7 +53,7 @@ public class PermissionService /** * 验证用户是否具有以下任意一个权限 * - * @param permissions 以 PERMISSION_DELIMETER 为分隔符的权限列表 + * @param permissions 以 PERMISSION_DELIMITER 为分隔符的权限列表 * @return 用户是否具有以下任意一个权限 */ public boolean hasAnyPermi(String permissions) @@ -69,7 +69,7 @@ public class PermissionService } PermissionContextHolder.setContext(permissions); Set authorities = loginUser.getPermissions(); - for (String permission : permissions.split(Constants.PERMISSION_DELIMETER)) + for (String permission : permissions.split(Constants.PERMISSION_DELIMITER)) { if (permission != null && hasPermissions(authorities, permission)) { @@ -121,7 +121,7 @@ public class PermissionService /** * 验证用户是否具有以下任意一个角色 * - * @param roles 以 ROLE_NAMES_DELIMETER 为分隔符的角色列表 + * @param roles 以 ROLE_DELIMITER 为分隔符的角色列表 * @return 用户是否具有以下任意一个角色 */ public boolean hasAnyRoles(String roles) @@ -135,7 +135,7 @@ public class PermissionService { return false; } - for (String role : roles.split(Constants.ROLE_DELIMETER)) + for (String role : roles.split(Constants.ROLE_DELIMITER)) { if (hasRole(role)) { diff --git a/devttl-framework/src/main/java/com/devttl/framework/web/service/SysPermissionService.java b/devttl-framework/src/main/java/com/devttl/framework/web/service/SysPermissionService.java index 2f15b12d1..ac1ef277a 100644 --- a/devttl-framework/src/main/java/com/devttl/framework/web/service/SysPermissionService.java +++ b/devttl-framework/src/main/java/com/devttl/framework/web/service/SysPermissionService.java @@ -3,6 +3,8 @@ package com.devttl.framework.web.service; import java.util.HashSet; import java.util.List; import java.util.Set; + +import com.devttl.common.constant.Constants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -39,7 +41,7 @@ public class SysPermissionService // 管理员拥有所有权限 if (user.isAdmin()) { - roles.add("admin"); + roles.add(Constants.SUPER_ADMIN); } else { @@ -60,7 +62,7 @@ public class SysPermissionService // 管理员拥有所有权限 if (user.isAdmin()) { - perms.add("*:*:*"); + perms.add(Constants.ALL_PERMISSION); } else {