Sfoglia il codice sorgente

update 日常校验 统一重构到 StringUtils 便于维护扩展

疯狂的狮子li 4 anni fa
parent
commit
c813046594
48 ha cambiato i file con 489 aggiunte e 235 eliminazioni
  1. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java
  2. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
  3. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
  4. 4 5
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
  5. 3 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
  6. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
  7. 2 2
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
  8. 6 6
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  9. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java
  10. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java
  11. 0 1
      ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java
  12. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java
  13. 287 15
      ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java
  14. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
  15. 1 1
      ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java
  16. 6 6
      ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
  17. 6 7
      ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java
  18. 5 6
      ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
  19. 2 2
      ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
  20. 5 6
      ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java
  21. 2 2
      ruoyi-framework/src/main/java/com/ruoyi/framework/captcha/UnsignedMathGenerator.java
  22. 1 1
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java
  23. 3 3
      ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java
  24. 5 5
      ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
  25. 3 3
      ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
  26. 2 2
      ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java
  27. 3 3
      ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java
  28. 9 9
      ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java
  29. 5 5
      ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
  30. 2 2
      ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
  31. 2 2
      ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java
  32. 11 12
      ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
  33. 14 14
      ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
  34. 12 13
      ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
  35. 1 1
      ruoyi-oss/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java
  36. 4 5
      ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java
  37. 3 4
      ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java
  38. 7 8
      ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/JobInvokeUtil.java
  39. 8 9
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
  40. 5 6
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
  41. 6 7
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
  42. 4 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
  43. 7 8
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
  44. 4 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
  45. 4 5
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
  46. 7 7
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
  47. 3 4
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java
  48. 13 13
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java

@@ -107,9 +107,9 @@ public class CaptchaController {
 
 	private String getCodeResult(String capStr) {
 		int numberLength = captchaProperties.getNumberLength();
-		int a = Convert.toInt(StringUtils.sub(capStr, 0, numberLength).trim());
+		int a = Convert.toInt(StringUtils.substring(capStr, 0, numberLength).trim());
 		char operator = capStr.charAt(numberLength);
-		int b = Convert.toInt(StringUtils.sub(capStr, numberLength + 1, numberLength + 1 + numberLength).trim());
+		int b = Convert.toInt(StringUtils.substring(capStr, numberLength + 1, numberLength + 1 + numberLength).trim());
 		switch (operator) {
 			case '*':
 				return a * b + "";

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -72,9 +72,9 @@ public class CommonController
             // 本地资源路径
             String localPath = RuoYiConfig.getProfile();
             // 数据库资源地址
-            String downloadPath = localPath + StringUtils.subAfter(resource, Constants.RESOURCE_PREFIX,false);
+            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
             // 下载名称
-            String downloadName = StringUtils.subAfter(downloadPath, "/",true);
+            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
 			File file = new File(downloadPath);
             FileUtils.setAttachmentResponseHeader(response, downloadName);

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java

@@ -40,8 +40,8 @@ public class CacheController
         commandStats.stringPropertyNames().forEach(key -> {
             Map<String, String> data = new HashMap<>(2);
             String property = commandStats.getProperty(key);
-            data.put("name", StringUtils.removePrefix(key, "cmdstat_"));
-            data.put("value", StringUtils.subBetween(property, "calls=", ",usec"));
+            data.put("name", StringUtils.removeStart(key, "cmdstat_"));
+            data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
             pieList.add(data);
         });
         result.put("commandStats", pieList);

+ 4 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java

@@ -1,7 +1,5 @@
 package com.ruoyi.web.controller.monitor;
 
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.controller.BaseController;
@@ -11,6 +9,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysUserOnline;
 import com.ruoyi.system.service.ISysUserOnlineService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,21 +45,21 @@ public class SysUserOnlineController extends BaseController
         for (String key : keys)
         {
             LoginUser user = redisCache.getCacheObject(key);
-            if (Validator.isNotEmpty(ipaddr) && Validator.isNotEmpty(userName))
+            if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
             {
                 if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
                 {
                     userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
                 }
             }
-            else if (Validator.isNotEmpty(ipaddr))
+            else if (StringUtils.isNotEmpty(ipaddr))
             {
                 if (StringUtils.equals(ipaddr, user.getIpaddr()))
                 {
                     userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
                 }
             }
-            else if (Validator.isNotEmpty(userName) && Validator.isNotNull(user.getUser()))
+            else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser()))
             {
                 if (StringUtils.equals(userName, user.getUsername()))
                 {

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java

@@ -1,6 +1,6 @@
 package com.ruoyi.web.controller.system;
 
-import com.ruoyi.common.utils.StringUtils;
+import cn.hutool.core.util.ArrayUtil;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
@@ -8,8 +8,8 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysDeptService;
-import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -56,7 +56,7 @@ public class SysDeptController extends BaseController
         {
             SysDept d = (SysDept) it.next();
             if (d.getDeptId().intValue() == deptId
-                    || ArrayUtils.contains(StringUtils.splitToArray(d.getAncestors(), ","), deptId + ""))
+                    || ArrayUtil.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""))
             {
                 it.remove();
             }

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java

@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -8,6 +7,7 @@ import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.system.service.ISysDictDataService;
 import com.ruoyi.system.service.ISysDictTypeService;
@@ -68,7 +68,7 @@ public class SysDictDataController extends BaseController
     public AjaxResult dictType(@PathVariable String dictType)
     {
         List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
-        if (Validator.isNull(data))
+        if (StringUtils.isNull(data))
         {
             data = new ArrayList<SysDictData>();
         }

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java

@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
@@ -12,6 +11,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.service.SysPermissionService;
 import com.ruoyi.framework.web.service.TokenService;
@@ -117,7 +117,7 @@ public class SysRoleController extends BaseController
         {
             // 更新缓存用户权限
             LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-            if (Validator.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
+            if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
             {
                 loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
                 loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));

+ 6 - 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -1,6 +1,5 @@
 package com.ruoyi.web.controller.system;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.controller.BaseController;
@@ -12,6 +11,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.service.ISysPostService;
@@ -100,7 +100,7 @@ public class SysUserController extends BaseController
         List<SysRole> roles = roleService.selectRoleAll();
         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
         ajax.put("posts", postService.selectPostAll());
-        if (Validator.isNotNull(userId))
+        if (StringUtils.isNotNull(userId))
         {
             ajax.put("user", userService.selectUserById(userId));
             ajax.put("postIds", postService.selectPostListByUserId(userId));
@@ -121,12 +121,12 @@ public class SysUserController extends BaseController
         {
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
-        else if (Validator.isNotEmpty(user.getPhonenumber())
+        else if (StringUtils.isNotEmpty(user.getPhonenumber())
                 && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
         {
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
-        else if (Validator.isNotEmpty(user.getEmail())
+        else if (StringUtils.isNotEmpty(user.getEmail())
                 && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
         {
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
@@ -145,12 +145,12 @@ public class SysUserController extends BaseController
     public AjaxResult edit(@Validated @RequestBody SysUser user)
     {
         userService.checkUserAllowed(user);
-        if (Validator.isNotEmpty(user.getPhonenumber())
+        if (StringUtils.isNotEmpty(user.getPhonenumber())
                 && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
         {
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
         }
-        else if (Validator.isNotEmpty(user.getEmail())
+        else if (StringUtils.isNotEmpty(user.getEmail())
                 && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
         {
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java

@@ -26,7 +26,7 @@ public class RepeatableFilter implements Filter
     {
         ServletRequest requestWrapper = null;
         if (request instanceof HttpServletRequest
-                && StringUtils.startWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE))
+                && StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE))
         {
             requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response);
         }

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java

@@ -102,6 +102,6 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper
     public boolean isJsonRequest()
     {
         String header = super.getHeader(HttpHeaders.CONTENT_TYPE);
-        return StringUtils.startWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
+        return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
     }
 }

+ 0 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/JsonUtils.java

@@ -1,6 +1,5 @@
 package com.ruoyi.common.utils;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.ArrayUtil;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java

@@ -92,7 +92,7 @@ public class PageUtils {
         Page<T> page = new Page<>(pageNum, pageSize);
         if (StringUtils.isNotBlank(orderByColumn)) {
             String orderBy = SqlUtil.escapeOrderBySql(orderByColumn);
-			orderBy = StringUtils.toUnderlineCase(orderBy);
+			orderBy = StringUtils.toUnderScoreCase(orderBy);
 			if ("asc".equals(isAsc)) {
                 page.addOrder(OrderItem.asc(orderBy));
             } else if ("desc".equals(isAsc)) {

+ 287 - 15
ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java

@@ -2,17 +2,140 @@ package com.ruoyi.common.utils;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.lang.Validator;
+import cn.hutool.core.map.MapUtil;
+import cn.hutool.core.util.ArrayUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ReUtil;
 import cn.hutool.core.util.StrUtil;
 
-import java.util.List;
+import java.util.*;
 
 /**
  * 字符串工具类
  *
- * @author Lion Li
+ * @author ruoyi
  */
-public class StringUtils extends StrUtil {
+public class StringUtils extends org.apache.commons.lang3.StringUtils {
+
+	/**
+	 * 获取参数不为空值
+	 *
+	 * @param value defaultValue 要判断的value
+	 * @return value 返回值
+	 */
+	public static <T> T nvl(T value, T defaultValue) {
+		return ObjectUtil.defaultIfNull(value, defaultValue);
+	}
+
+	/**
+	 * 获取参数不为空值
+	 *
+	 * @param str defaultValue 要判断的value
+	 * @return value 返回值
+	 */
+	public static String blankToDefault(String str, String defaultValue) {
+		return StrUtil.blankToDefault(str, defaultValue);
+	}
+
+	/**
+	 * * 判断一个Collection是否为空, 包含List,Set,Queue
+	 *
+	 * @param coll 要判断的Collection
+	 * @return true:为空 false:非空
+	 */
+	public static boolean isEmpty(Collection<?> coll) {
+		return CollUtil.isEmpty(coll);
+	}
+
+	/**
+	 * * 判断一个Collection是否非空,包含List,Set,Queue
+	 *
+	 * @param coll 要判断的Collection
+	 * @return true:非空 false:空
+	 */
+	public static boolean isNotEmpty(Collection<?> coll) {
+		return !isEmpty(coll);
+	}
+
+	/**
+	 * * 判断一个对象数组是否为空
+	 *
+	 * @param objects 要判断的对象数组
+	 *                * @return true:为空 false:非空
+	 */
+	public static boolean isEmpty(Object[] objects) {
+		return ArrayUtil.isEmpty(objects);
+	}
+
+	/**
+	 * * 判断一个对象数组是否非空
+	 *
+	 * @param objects 要判断的对象数组
+	 * @return true:非空 false:空
+	 */
+	public static boolean isNotEmpty(Object[] objects) {
+		return !isEmpty(objects);
+	}
+
+	/**
+	 * * 判断一个对象是否为空
+	 *
+	 * @param object 要判断的对象数组
+	 *                * @return true:为空 false:非空
+	 */
+	public static boolean isEmpty(Object object) {
+		return ObjectUtil.isEmpty(object);
+	}
+
+	/**
+	 * * 判断一个对象是否非空
+	 *
+	 * @param object 要判断的对象数组
+	 * @return true:非空 false:空
+	 */
+	public static boolean isNotEmpty(Object object) {
+		return !isEmpty(object);
+	}
+
+	/**
+	 * * 判断一个Map是否为空
+	 *
+	 * @param map 要判断的Map
+	 * @return true:为空 false:非空
+	 */
+	public static boolean isEmpty(Map<?, ?> map) {
+		return MapUtil.isEmpty(map);
+	}
+
+	/**
+	 * * 判断一个Map是否为空
+	 *
+	 * @param map 要判断的Map
+	 * @return true:非空 false:空
+	 */
+	public static boolean isNotEmpty(Map<?, ?> map) {
+		return !isEmpty(map);
+	}
+
+	/**
+	 * * 判断一个字符串是否为空串
+	 *
+	 * @param str String
+	 * @return true:为空 false:非空
+	 */
+	public static boolean isEmpty(String str) {
+		return StrUtil.isEmpty(str);
+	}
+
+	/**
+	 * * 判断一个字符串是否为非空串
+	 *
+	 * @param str String
+	 * @return true:非空串 false:空串
+	 */
+	public static boolean isNotEmpty(String str) {
+		return !isEmpty(str);
+	}
 
 	/**
 	 * * 判断一个对象是否为空
@@ -21,7 +144,7 @@ public class StringUtils extends StrUtil {
 	 * @return true:为空 false:非空
 	 */
 	public static boolean isNull(Object object) {
-		return Validator.isNull(object);
+		return ObjectUtil.isNull(object);
 	}
 
 	/**
@@ -31,24 +154,64 @@ public class StringUtils extends StrUtil {
 	 * @return true:非空 false:空
 	 */
 	public static boolean isNotNull(Object object) {
-		return Validator.isNotNull(object);
+		return !isNull(object);
 	}
 
 	/**
-	 * 替换所有
+	 * * 判断一个对象是否是数组类型(Java基本型别的数组)
+	 *
+	 * @param object 对象
+	 * @return true:是数组 false:不是数组
 	 */
-	public static String replaceEach(String text, String[] searchList, String[] replacementList) {
-		return org.apache.commons.lang3.StringUtils.replaceEach(text, searchList, replacementList);
+	public static boolean isArray(Object object) {
+		return ArrayUtil.isArray(object);
 	}
 
 	/**
-	 * 验证该字符串是否是数字
+	 * 去空格
+	 */
+	public static String trim(String str) {
+		return StrUtil.trim(str);
+	}
+
+	/**
+	 * 截取字符串
 	 *
-	 * @param value 字符串内容
-	 * @return 是否是数字
+	 * @param str   字符串
+	 * @param start 开始
+	 * @return 结果
 	 */
-	public static boolean isNumeric(CharSequence value) {
-		return Validator.isNumber(value);
+	public static String substring(final String str, int start) {
+		return substring(str, start, str.length());
+	}
+
+	/**
+	 * 截取字符串
+	 *
+	 * @param str   字符串
+	 * @param start 开始
+	 * @param end   结束
+	 * @return 结果
+	 */
+	public static String substring(final String str, int start, int end) {
+		return StrUtil.sub(str, start, end);
+	}
+
+	/**
+	 * 格式化文本, {} 表示占位符<br>
+	 * 此方法只是简单将占位符 {} 按照顺序替换为参数<br>
+	 * 如果想输出 {} 使用 \\转义 { 即可,如果想输出 {} 之前的 \ 使用双转义符 \\\\ 即可<br>
+	 * 例:<br>
+	 * 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>
+	 * 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
+	 * 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
+	 *
+	 * @param template 文本模板,被替换的部分用 {} 表示
+	 * @param params   参数值
+	 * @return 格式化后的文本
+	 */
+	public static String format(String template, Object... params) {
+		return StrUtil.format(template, params);
 	}
 
 	/**
@@ -62,6 +225,96 @@ public class StringUtils extends StrUtil {
 	}
 
 	/**
+	 * 字符串转set
+	 *
+	 * @param str 字符串
+	 * @param sep 分隔符
+	 * @return set集合
+	 */
+	public static Set<String> str2Set(String str, String sep) {
+		return new HashSet<>(str2List(str, sep, true, false));
+	}
+
+	/**
+	 * 字符串转list
+	 *
+	 * @param str         字符串
+	 * @param sep         分隔符
+	 * @param filterBlank 过滤纯空白
+	 * @param trim        去掉首尾空白
+	 * @return list集合
+	 */
+	public static List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) {
+		List<String> list = new ArrayList<>();
+		if (isEmpty(str)) {
+			return list;
+		}
+
+		// 过滤空白字符串
+		if (filterBlank && isBlank(str)) {
+			return list;
+		}
+		String[] split = str.split(sep);
+		for (String string : split) {
+			if (filterBlank && isBlank(string)) {
+				continue;
+			}
+			if (trim) {
+				string = trim(string);
+			}
+			list.add(string);
+		}
+
+		return list;
+	}
+
+	/**
+	 * 查找指定字符串是否包含指定字符串列表中的任意一个字符串同时串忽略大小写
+	 *
+	 * @param cs                  指定字符串
+	 * @param searchCharSequences 需要检查的字符串数组
+	 * @return 是否包含任意一个字符串
+	 */
+	public static boolean containsAnyIgnoreCase(CharSequence cs, CharSequence... searchCharSequences) {
+		return StrUtil.containsAnyIgnoreCase(cs, searchCharSequences);
+	}
+
+	/**
+	 * 驼峰转下划线命名
+	 */
+	public static String toUnderScoreCase(String str) {
+		return StrUtil.toUnderlineCase(str);
+	}
+
+	/**
+	 * 是否包含字符串
+	 *
+	 * @param str  验证字符串
+	 * @param strs 字符串组
+	 * @return 包含返回true
+	 */
+	public static boolean inStringIgnoreCase(String str, String... strs) {
+		return StrUtil.equalsAnyIgnoreCase(str, strs);
+	}
+
+	/**
+	 * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
+	 *
+	 * @param name 转换前的下划线大写方式命名的字符串
+	 * @return 转换后的驼峰式命名的字符串
+	 */
+	public static String convertToCamelCase(String name) {
+		return StrUtil.upperFirst(StrUtil.toCamelCase(name));
+	}
+
+	/**
+	 * 驼峰式命名法 例如:user_name->userName
+	 */
+	public static String toCamelCase(String s) {
+		return StrUtil.toCamelCase(s);
+	}
+
+	/**
 	 * 查找指定字符串是否匹配指定字符串列表中的任意一个字符串
 	 *
 	 * @param str  指定字符串
@@ -69,14 +322,33 @@ public class StringUtils extends StrUtil {
 	 * @return 是否匹配
 	 */
 	public static boolean matches(String str, List<String> strs) {
-		if (isEmpty(str) || CollUtil.isEmpty(strs)) {
+		if (isEmpty(str) || isEmpty(strs)) {
 			return false;
 		}
 		for (String pattern : strs) {
-			if (ReUtil.isMatch(pattern, str)) {
+			if (isMatch(pattern, str)) {
 				return true;
 			}
 		}
 		return false;
 	}
+
+	/**
+	 * 判断url是否与规则配置:
+	 * ? 表示单个字符;
+	 * * 表示一层路径内的任意字符串,不可跨层级;
+	 * ** 表示任意层路径;
+	 *
+	 * @param pattern 匹配规则
+	 * @param url     需要匹配的url
+	 * @return
+	 */
+	public static boolean isMatch(String pattern, String url) {
+		return ReUtil.isMatch(pattern, url);
+	}
+
+	@SuppressWarnings("unchecked")
+	public static <T> T cast(Object obj) {
+		return (T) obj;
+	}
 }

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java

@@ -147,7 +147,7 @@ public class FileUploadUtils
     private static final String getPathFileName(String uploadDir, String fileName) throws IOException
     {
         int dirLastIndex = RuoYiConfig.getProfile().length() + 1;
-        String currentDir = StringUtils.subSuf(uploadDir, dirLastIndex);
+        String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
         String pathFileName = Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
         return pathFileName;
     }

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java

@@ -83,7 +83,7 @@ public class ImageUtils
             {
                 // 本机地址
                 String localPath = RuoYiConfig.getProfile();
-                String downloadPath = localPath + StringUtils.subAfter(url, Constants.RESOURCE_PREFIX,false);
+                String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX);
                 in = new FileInputStream(downloadPath);
             }
             return IOUtils.toByteArray(in);

+ 6 - 6
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java

@@ -218,9 +218,9 @@ public class ExcelUtil<T>
                     if (String.class == fieldType)
                     {
                         String s = Convert.toStr(val);
-                        if (StringUtils.endWith(s, ".0"))
+                        if (StringUtils.endsWith(s, ".0"))
                         {
-                            val = StringUtils.subBefore(s, ".0",false);
+                            val = StringUtils.substringBefore(s, ".0");
                         }
                         else
                         {
@@ -715,7 +715,7 @@ public class ExcelUtil<T>
         for (String item : convertSource)
         {
             String[] itemArray = item.split("=");
-            if (StringUtils.containsAny(propertyValue, separator))
+            if (StringUtils.containsAny(separator, propertyValue))
             {
                 for (String value : propertyValue.split(separator))
                 {
@@ -734,7 +734,7 @@ public class ExcelUtil<T>
                 }
             }
         }
-        return StringUtils.strip(propertyString.toString(), null,separator);
+        return StringUtils.stripEnd(propertyString.toString(), separator);
     }
 
     /**
@@ -752,7 +752,7 @@ public class ExcelUtil<T>
         for (String item : convertSource)
         {
             String[] itemArray = item.split("=");
-            if (StringUtils.containsAny(propertyValue, separator))
+            if (StringUtils.containsAny(separator, propertyValue))
             {
                 for (String value : propertyValue.split(separator))
                 {
@@ -771,7 +771,7 @@ public class ExcelUtil<T>
                 }
             }
         }
-        return StringUtils.strip(propertyString.toString(), null,separator);
+        return StringUtils.stripEnd(propertyString.toString(), separator);
     }
 
     /**

+ 6 - 7
ruoyi-common/src/main/java/com/ruoyi/common/utils/reflect/ReflectUtils.java

@@ -4,7 +4,6 @@ import cn.hutool.core.util.ReflectUtil;
 import com.ruoyi.common.utils.StringUtils;
 
 import java.lang.reflect.Method;
-import java.util.List;
 
 /**
  * 反射工具类. 提供调用getter/setter方法, 访问私有变量, 调用私有方法, 获取泛型类型Class, 被AOP过的真实类等工具函数.
@@ -26,7 +25,7 @@ public class ReflectUtils extends ReflectUtil {
 	public static <E> E invokeGetter(Object obj, String propertyName) {
 		Object object = obj;
 		for (String name : StringUtils.split(propertyName, ".")) {
-			String getterMethodName = GETTER_PREFIX + StringUtils.upperFirst(name);
+			String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(name);
 			object = invoke(object, getterMethodName);
 		}
 		return (E) object;
@@ -38,13 +37,13 @@ public class ReflectUtils extends ReflectUtil {
 	 */
 	public static <E> void invokeSetter(Object obj, String propertyName, E value) {
 		Object object = obj;
-		List<String> names = StringUtils.split(propertyName, ".");
-		for (int i = 0; i < names.size(); i++) {
-			if (i < names.size() - 1) {
-				String getterMethodName = GETTER_PREFIX + StringUtils.upperFirst(names.get(i));
+		String[] names = StringUtils.split(propertyName, ".");
+		for (int i = 0; i < names.length; i++) {
+			if (i < names.length - 1) {
+				String getterMethodName = GETTER_PREFIX + StringUtils.capitalize(names[i]);
 				object = invoke(object, getterMethodName);
 			} else {
-				String setterMethodName = SETTER_PREFIX + StringUtils.upperFirst(names.get(i));
+				String setterMethodName = SETTER_PREFIX + StringUtils.capitalize(names[i]);
 				Method method = getMethodByName(object.getClass(), setterMethodName);
 				invoke(object, method, value);
 			}

+ 5 - 6
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java

@@ -1,13 +1,12 @@
 package com.ruoyi.framework.aspectj;
 
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.reflect.ReflectUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.web.service.TokenService;
@@ -80,10 +79,10 @@ public class DataScopeAspect {
 		}
 		// 获取当前的用户
 		LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-		if (Validator.isNotNull(loginUser)) {
+		if (StringUtils.isNotNull(loginUser)) {
 			SysUser currentUser = loginUser.getUser();
 			// 如果是超级管理员,则不过滤数据
-			if (Validator.isNotNull(currentUser) && !currentUser.isAdmin()) {
+			if (StringUtils.isNotNull(currentUser) && !currentUser.isAdmin()) {
 				dataScopeFilter(joinPoint, currentUser, controllerDataScope.deptAlias(),
 					controllerDataScope.userAlias(), controllerDataScope.isUser());
 			}
@@ -155,14 +154,14 @@ public class DataScopeAspect {
 	 */
 	private void clearDataScope(final JoinPoint joinPoint) {
 		Object params = joinPoint.getArgs()[0];
-		if (Validator.isNotNull(params)) {
+		if (StringUtils.isNotNull(params)) {
 			putDataScope(joinPoint, "");
 		}
 	}
 
 	private static void putDataScope(JoinPoint joinPoint, String sql) {
 		Object params = joinPoint.getArgs()[0];
-		if (Validator.isNotNull(params)) {
+		if (StringUtils.isNotNull(params)) {
 			if (params instanceof BaseEntity) {
 				BaseEntity baseEntity = (BaseEntity) params;
 				baseEntity.getParams().put(DATA_SCOPE, sql);

+ 2 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java

@@ -1,8 +1,8 @@
 package com.ruoyi.framework.aspectj;
 
-import cn.hutool.core.lang.Validator;
 import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.utils.StringUtils;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
@@ -33,7 +33,7 @@ public class DataSourceAspect {
 	public Object around(ProceedingJoinPoint point) throws Throwable {
 		DataSource dataSource = getDataSource(point);
 
-		if (Validator.isNotNull(dataSource)) {
+		if (StringUtils.isNotNull(dataSource)) {
 			DynamicDataSourceContextHolder.poll();
 			String source = dataSource.value().getSource();
 			DynamicDataSourceContextHolder.push(source);

+ 5 - 6
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java

@@ -1,13 +1,12 @@
 package com.ruoyi.framework.aspectj;
 
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.BusinessStatus;
 import com.ruoyi.common.enums.HttpMethod;
 import com.ruoyi.common.utils.JsonUtils;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.web.service.AsyncService;
 import com.ruoyi.framework.web.service.TokenService;
@@ -104,7 +103,7 @@ public class LogAspect
             if (e != null)
             {
                 operLog.setStatus(BusinessStatus.FAIL.ordinal());
-                operLog.setErrorMsg(StringUtils.sub(e.getMessage(), 0, 2000));
+                operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
             }
             // 设置方法名称
             String className = joinPoint.getTarget().getClass().getName();
@@ -161,12 +160,12 @@ public class LogAspect
         if (HttpMethod.PUT.name().equals(requestMethod) || HttpMethod.POST.name().equals(requestMethod))
         {
             String params = argsArrayToString(joinPoint.getArgs());
-            operLog.setOperParam(StringUtils.sub(params, 0, 2000));
+            operLog.setOperParam(StringUtils.substring(params, 0, 2000));
         }
         else
         {
             Map<?, ?> paramsMap = (Map<?, ?>) ServletUtils.getRequest().getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
-            operLog.setOperParam(StringUtils.sub(paramsMap.toString(), 0, 2000));
+            operLog.setOperParam(StringUtils.substring(paramsMap.toString(), 0, 2000));
         }
     }
 
@@ -195,7 +194,7 @@ public class LogAspect
         if (paramsArray != null && paramsArray.length > 0)
         {
 			for (Object o : paramsArray) {
-				if (Validator.isNotNull(o) && !isFilterObject(o)) {
+				if (StringUtils.isNotNull(o) && !isFilterObject(o)) {
 					params.append(JsonUtils.toJsonString(o)).append(" ");
 				}
 			}

+ 2 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/captcha/UnsignedMathGenerator.java

@@ -45,8 +45,8 @@ public class UnsignedMathGenerator implements CodeGenerator {
 		int max = RandomUtil.randomInt(min, limit);
 		String number1 = Integer.toString(max);
 		String number2 = Integer.toString(min);
-		number1 = StringUtils.padAfter(number1, this.numberLength, CharUtil.SPACE);
-		number2 = StringUtils.padAfter(number2, this.numberLength, CharUtil.SPACE);
+		number1 = StringUtils.rightPad(number1, this.numberLength, CharUtil.SPACE);
+		number2 = StringUtils.rightPad(number2, this.numberLength, CharUtil.SPACE);
 
 		return number1 + RandomUtil.randomChar(operators) + number2 + '=';
 	}

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java

@@ -32,7 +32,7 @@ public class FilterConfig {
         FilterRegistrationBean registration = new FilterRegistrationBean();
         registration.setDispatcherTypes(DispatcherType.REQUEST);
         registration.setFilter(new XssFilter());
-        registration.addUrlPatterns(StringUtils.splitToArray(xssProperties.getUrlPatterns(), ","));
+        registration.addUrlPatterns(StringUtils.split(xssProperties.getUrlPatterns(), ","));
         registration.setName("xssFilter");
         registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
         Map<String, String> initParameters = new HashMap<String, String>();

+ 3 - 3
ruoyi-framework/src/main/java/com/ruoyi/framework/interceptor/impl/SameUrlDataInterceptor.java

@@ -2,12 +2,12 @@ package com.ruoyi.framework.interceptor.impl;
 
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.filter.RepeatedlyRequestWrapper;
 import com.ruoyi.common.utils.JsonUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.config.properties.RepeatSubmitProperties;
 import com.ruoyi.framework.config.properties.TokenProperties;
 import com.ruoyi.framework.interceptor.RepeatSubmitInterceptor;
@@ -60,7 +60,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor {
 		}
 
 		// body参数为空,获取Parameter的数据
-		if (Validator.isEmpty(nowParams)) {
+		if (StringUtils.isEmpty(nowParams)) {
 			nowParams = JsonUtils.toJsonString(request.getParameterMap());
 		}
 		Map<String, Object> nowDataMap = new HashMap<String, Object>();
@@ -72,7 +72,7 @@ public class SameUrlDataInterceptor extends RepeatSubmitInterceptor {
 
 		// 唯一值(没有消息头则使用请求地址)
 		String submitKey = request.getHeader(tokenProperties.getHeader());
-		if (Validator.isEmpty(submitKey)) {
+		if (StringUtils.isEmpty(submitKey)) {
 			submitKey = url;
 		}
 

+ 5 - 5
ruoyi-framework/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java

@@ -1,11 +1,11 @@
 package com.ruoyi.framework.mybatisplus;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.CustomException;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.reflection.MetaObject;
 
@@ -25,12 +25,12 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
 		try {
 			//根据属性名字设置要填充的值
 			if (metaObject.hasGetter("createTime")) {
-				if (Validator.isEmpty(metaObject.getValue("createTime"))) {
+				if (StringUtils.isEmpty(metaObject.getValue("createTime"))) {
 					this.setFieldValByName("createTime", new Date(), metaObject);
 				}
 			}
 			if (metaObject.hasGetter("createBy")) {
-				if (Validator.isEmpty(metaObject.getValue("createBy"))) {
+				if (StringUtils.isEmpty(metaObject.getValue("createBy"))) {
 					this.setFieldValByName("createBy", getLoginUsername(), metaObject);
 				}
 			}
@@ -43,12 +43,12 @@ public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
 	public void updateFill(MetaObject metaObject) {
 		try {
 			if (metaObject.hasGetter("updateBy")) {
-				if (Validator.isEmpty(metaObject.getValue("updateBy"))) {
+				if (StringUtils.isEmpty(metaObject.getValue("updateBy"))) {
 					this.setFieldValByName("updateBy", getLoginUsername(), metaObject);
 				}
 			}
 			if (metaObject.hasGetter("updateTime")) {
-				if (Validator.isEmpty(metaObject.getValue("updateTime"))) {
+				if (StringUtils.isEmpty(metaObject.getValue("updateTime"))) {
 					this.setFieldValByName("updateTime", new Date(), metaObject);
 				}
 			}

+ 3 - 3
ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java

@@ -1,8 +1,8 @@
 package com.ruoyi.framework.security.filter;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.TokenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -19,7 +19,7 @@ import java.io.IOException;
 
 /**
  * token过滤器 验证token有效性
- * 
+ *
  * @author ruoyi
  */
 @Component
@@ -33,7 +33,7 @@ public class JwtAuthenticationTokenFilter extends OncePerRequestFilter
             throws ServletException, IOException
     {
         LoginUser loginUser = tokenService.getLoginUser(request);
-        if (Validator.isNotNull(loginUser) && Validator.isNull(SecurityUtils.getAuthentication()))
+        if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication()))
         {
             tokenService.verifyToken(loginUser);
             UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities());

+ 2 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/security/handle/LogoutSuccessHandlerImpl.java

@@ -1,12 +1,12 @@
 package com.ruoyi.framework.security.handle;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.http.HttpStatus;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.JsonUtils;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.framework.web.service.AsyncService;
 import com.ruoyi.framework.web.service.TokenService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +40,7 @@ public class LogoutSuccessHandlerImpl implements LogoutSuccessHandler {
 	public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
 		throws IOException, ServletException {
 		LoginUser loginUser = tokenService.getLoginUser(request);
-		if (Validator.isNotNull(loginUser)) {
+		if (StringUtils.isNotNull(loginUser)) {
 			String userName = loginUser.getUsername();
 			// 删除用户缓存记录
 			tokenService.delLoginUser(loginUser.getToken());

+ 3 - 3
ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java

@@ -1,11 +1,11 @@
 package com.ruoyi.framework.web.exception;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.http.HttpStatus;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.exception.BaseException;
 import com.ruoyi.common.exception.CustomException;
 import com.ruoyi.common.exception.DemoModeException;
+import com.ruoyi.common.utils.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.security.access.AccessDeniedException;
@@ -21,7 +21,7 @@ import javax.validation.ConstraintViolationException;
 
 /**
  * 全局异常处理器
- * 
+ *
  * @author ruoyi
  */
 @RestControllerAdvice
@@ -44,7 +44,7 @@ public class GlobalExceptionHandler
     @ExceptionHandler(CustomException.class)
     public AjaxResult businessException(CustomException e)
     {
-        if (Validator.isNull(e.getCode()))
+        if (StringUtils.isNull(e.getCode()))
         {
             return AjaxResult.error(e.getMessage());
         }

+ 9 - 9
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/PermissionService.java

@@ -1,12 +1,12 @@
 package com.ruoyi.framework.web.service;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.ServletUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
 
 import java.util.Set;
 
@@ -39,12 +39,12 @@ public class PermissionService
      */
     public boolean hasPermi(String permission)
     {
-        if (Validator.isEmpty(permission))
+        if (StringUtils.isEmpty(permission))
         {
             return false;
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if (Validator.isNull(loginUser) || Validator.isEmpty(loginUser.getPermissions()))
+        if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions()))
         {
             return false;
         }
@@ -70,12 +70,12 @@ public class PermissionService
      */
     public boolean hasAnyPermi(String permissions)
     {
-        if (Validator.isEmpty(permissions))
+        if (StringUtils.isEmpty(permissions))
         {
             return false;
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if (Validator.isNull(loginUser) || Validator.isEmpty(loginUser.getPermissions()))
+        if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getPermissions()))
         {
             return false;
         }
@@ -98,12 +98,12 @@ public class PermissionService
      */
     public boolean hasRole(String role)
     {
-        if (Validator.isEmpty(role))
+        if (StringUtils.isEmpty(role))
         {
             return false;
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if (Validator.isNull(loginUser) || Validator.isEmpty(loginUser.getUser().getRoles()))
+        if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles()))
         {
             return false;
         }
@@ -137,12 +137,12 @@ public class PermissionService
      */
     public boolean hasAnyRoles(String roles)
     {
-        if (Validator.isEmpty(roles))
+        if (StringUtils.isEmpty(roles))
         {
             return false;
         }
         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
-        if (Validator.isNull(loginUser) || Validator.isEmpty(loginUser.getUser().getRoles()))
+        if (StringUtils.isNull(loginUser) || CollectionUtils.isEmpty(loginUser.getUser().getRoles()))
         {
             return false;
         }

+ 5 - 5
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java

@@ -1,6 +1,5 @@
 package com.ruoyi.framework.web.service;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.http.useragent.UserAgent;
 import cn.hutool.http.useragent.UserAgentUtil;
@@ -8,6 +7,7 @@ import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.AddressUtils;
 import com.ruoyi.framework.config.properties.TokenProperties;
 import io.jsonwebtoken.Claims;
@@ -49,7 +49,7 @@ public class TokenService {
     public LoginUser getLoginUser(HttpServletRequest request) {
         // 获取请求携带的令牌
         String token = getToken(request);
-        if (Validator.isNotEmpty(token)) {
+        if (StringUtils.isNotEmpty(token)) {
 			try {
 				Claims claims = parseToken(token);
 				// 解析对应的权限以及用户信息
@@ -68,7 +68,7 @@ public class TokenService {
      * 设置用户身份信息
      */
     public void setLoginUser(LoginUser loginUser) {
-        if (Validator.isNotNull(loginUser) && Validator.isNotEmpty(loginUser.getToken())) {
+        if (StringUtils.isNotNull(loginUser) && StringUtils.isNotEmpty(loginUser.getToken())) {
             refreshToken(loginUser);
         }
     }
@@ -77,7 +77,7 @@ public class TokenService {
      * 删除用户身份信息
      */
     public void delLoginUser(String token) {
-        if (Validator.isNotEmpty(token)) {
+        if (StringUtils.isNotEmpty(token)) {
             String userKey = getTokenKey(token);
             redisCache.deleteObject(userKey);
         }
@@ -186,7 +186,7 @@ public class TokenService {
      */
     private String getToken(HttpServletRequest request) {
         String token = request.getHeader(tokenProperties.getHeader());
-        if (Validator.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX)) {
+        if (StringUtils.isNotEmpty(token) && token.startsWith(Constants.TOKEN_PREFIX)) {
             token = token.replace(Constants.TOKEN_PREFIX, "");
         }
         return token;

+ 2 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java

@@ -1,10 +1,10 @@
 package com.ruoyi.framework.web.service;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.enums.UserStatus;
 import com.ruoyi.common.exception.BaseException;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysUserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class UserDetailsServiceImpl implements UserDetailsService
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
     {
         SysUser user = userService.selectUserByUserName(username);
-        if (Validator.isNull(user))
+        if (StringUtils.isNull(user))
         {
             log.info("登录用户:{} 不存在.", username);
             throw new UsernameNotFoundException("登录用户:" + username + " 不存在");

+ 2 - 2
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java

@@ -150,7 +150,7 @@ public class GenTableColumn implements Serializable {
     private Map<String, Object> params = new HashMap<>();
 
     public String getCapJavaField() {
-        return StringUtils.upperFirst(javaField);
+        return StringUtils.uncapitalize(javaField);
     }
 
     public boolean isPk() {
@@ -231,7 +231,7 @@ public class GenTableColumn implements Serializable {
     }
 
     public String readConverterExp() {
-        String remarks = StringUtils.subBetween(this.columnComment, "(", ")");
+        String remarks = StringUtils.substringBetween(this.columnComment, "(", ")");
         StringBuffer sb = new StringBuffer();
         if (StringUtils.isNotEmpty(remarks)) {
             for (String value : remarks.split(" ")) {

+ 11 - 12
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java

@@ -2,7 +2,6 @@ package com.ruoyi.generator.service;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -260,7 +259,7 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
         // 获取模板列表
         List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
         for (String template : templates) {
-            if (!StringUtils.containsAny("sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm", template)) {
+            if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
                 // 渲染模板
                 StringWriter sw = new StringWriter();
                 Template tpl = Velocity.getTemplate(template, Constants.UTF8);
@@ -284,7 +283,7 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
         List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
 
         List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
-        if (Validator.isEmpty(dbTableColumns)) {
+        if (StringUtils.isEmpty(dbTableColumns)) {
             throw new CustomException("同步数据失败,原表结构不存在");
         }
         List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
@@ -364,16 +363,16 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
     public void validateEdit(GenTable genTable) {
         if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) {
 			Map<String, Object> paramsObj = genTable.getParams();
-            if (Validator.isEmpty(paramsObj.get(GenConstants.TREE_CODE))) {
+            if (StringUtils.isEmpty(paramsObj.get(GenConstants.TREE_CODE))) {
                 throw new CustomException("树编码字段不能为空");
-            } else if (Validator.isEmpty(paramsObj.get(GenConstants.TREE_PARENT_CODE))) {
+            } else if (StringUtils.isEmpty(paramsObj.get(GenConstants.TREE_PARENT_CODE))) {
                 throw new CustomException("树父编码字段不能为空");
-            } else if (Validator.isEmpty(paramsObj.get(GenConstants.TREE_NAME))) {
+            } else if (StringUtils.isEmpty(paramsObj.get(GenConstants.TREE_NAME))) {
                 throw new CustomException("树名称字段不能为空");
             } else if (GenConstants.TPL_SUB.equals(genTable.getTplCategory())) {
-                if (Validator.isEmpty(genTable.getSubTableName())) {
+                if (StringUtils.isEmpty(genTable.getSubTableName())) {
                     throw new CustomException("关联子表的表名不能为空");
-                } else if (Validator.isEmpty(genTable.getSubTableFkName())) {
+                } else if (StringUtils.isEmpty(genTable.getSubTableFkName())) {
                     throw new CustomException("子表关联的外键名不能为空");
                 }
             }
@@ -392,7 +391,7 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
                 break;
             }
         }
-        if (Validator.isNull(table.getPkColumn())) {
+        if (StringUtils.isNull(table.getPkColumn())) {
             table.setPkColumn(table.getColumns().get(0));
         }
         if (GenConstants.TPL_SUB.equals(table.getTplCategory())) {
@@ -402,7 +401,7 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
                     break;
                 }
             }
-            if (Validator.isNull(table.getSubTable().getPkColumn())) {
+            if (StringUtils.isNull(table.getSubTable().getPkColumn())) {
                 table.getSubTable().setPkColumn(table.getSubTable().getColumns().get(0));
             }
         }
@@ -415,7 +414,7 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
      */
     public void setSubTable(GenTable table) {
         String subTableName = table.getSubTableName();
-        if (Validator.isNotEmpty(subTableName)) {
+        if (StringUtils.isNotEmpty(subTableName)) {
             table.setSubTable(baseMapper.selectGenTableByName(subTableName));
         }
     }
@@ -427,7 +426,7 @@ public class GenTableServiceImpl extends ServicePlusImpl<GenTableMapper, GenTabl
      */
     public void setTableFromOptions(GenTable genTable) {
 		Map<String, Object> paramsObj = JsonUtils.parseMap(genTable.getOptions());
-        if (Validator.isNotNull(paramsObj)) {
+        if (StringUtils.isNotNull(paramsObj)) {
             String treeCode = Convert.toStr(paramsObj.get(GenConstants.TREE_CODE));
             String treeParentCode = Convert.toStr(paramsObj.get(GenConstants.TREE_PARENT_CODE));
             String treeName = Convert.toStr(paramsObj.get(GenConstants.TREE_NAME));

+ 14 - 14
ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java

@@ -61,7 +61,7 @@ public class GenUtils
             column.setHtmlType(GenConstants.HTML_INPUT);
 
             // 如果是浮点型 统一用BigDecimal
-            String[] str = StringUtils.splitToArray(StringUtils.subBetween(column.getColumnType(), "(", ")"), ",");
+            String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
             if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0)
             {
                 column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
@@ -98,33 +98,33 @@ public class GenUtils
         }
 
         // 查询字段类型
-        if (StringUtils.endWithIgnoreCase(columnName, "name"))
+        if (StringUtils.endsWithIgnoreCase(columnName, "name"))
         {
             column.setQueryType(GenConstants.QUERY_LIKE);
         }
         // 状态字段设置单选框
-        if (StringUtils.endWithIgnoreCase(columnName, "status"))
+        if (StringUtils.endsWithIgnoreCase(columnName, "status"))
         {
             column.setHtmlType(GenConstants.HTML_RADIO);
         }
         // 类型&性别字段设置下拉框
-        else if (StringUtils.endWithIgnoreCase(columnName, "type")
-                || StringUtils.endWithIgnoreCase(columnName, "sex"))
+        else if (StringUtils.endsWithIgnoreCase(columnName, "type")
+                || StringUtils.endsWithIgnoreCase(columnName, "sex"))
         {
             column.setHtmlType(GenConstants.HTML_SELECT);
         }
         // 图片字段设置图片上传控件
-        else if (StringUtils.endWithIgnoreCase(columnName, "image"))
+        else if (StringUtils.endsWithIgnoreCase(columnName, "image"))
         {
             column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD);
         }
         // 文件字段设置文件上传控件
-        else if (StringUtils.endWithIgnoreCase(columnName, "file"))
+        else if (StringUtils.endsWithIgnoreCase(columnName, "file"))
         {
             column.setHtmlType(GenConstants.HTML_FILE_UPLOAD);
         }
         // 内容字段设置富文本控件
-        else if (StringUtils.endWithIgnoreCase(columnName, "content"))
+        else if (StringUtils.endsWithIgnoreCase(columnName, "content"))
         {
             column.setHtmlType(GenConstants.HTML_EDITOR);
         }
@@ -152,7 +152,7 @@ public class GenUtils
     {
         int lastIndex = packageName.lastIndexOf(".");
         int nameLength = packageName.length();
-        String moduleName = StringUtils.sub(packageName, lastIndex + 1, nameLength);
+        String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength);
         return moduleName;
     }
 
@@ -166,7 +166,7 @@ public class GenUtils
     {
         int lastIndex = tableName.lastIndexOf("_");
         int nameLength = tableName.length();
-        String businessName = StringUtils.sub(tableName, lastIndex + 1, nameLength);
+        String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength);
         return businessName;
     }
 
@@ -182,10 +182,10 @@ public class GenUtils
         String tablePrefix = GenConfig.getTablePrefix();
         if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix))
         {
-            String[] searchList = StringUtils.splitToArray(tablePrefix, ",");
+            String[] searchList = StringUtils.split(tablePrefix, ",");
             tableName = replaceFirst(tableName, searchList);
         }
-        return StringUtils.upperFirst(StringUtils.toCamelCase(tableName));
+        return StringUtils.convertToCamelCase(tableName);
     }
 
     /**
@@ -230,7 +230,7 @@ public class GenUtils
     {
         if (StringUtils.indexOf(columnType, '(') > 0)
         {
-            return StringUtils.subBefore(columnType, "(",false);
+            return StringUtils.substringBefore(columnType, "(");
         }
         else
         {
@@ -248,7 +248,7 @@ public class GenUtils
     {
         if (StringUtils.indexOf(columnType, '(') > 0)
         {
-            String length = StringUtils.subBetween(columnType, "(", ")");
+            String length = StringUtils.substringBetween(columnType, "(", ")");
             return Integer.valueOf(length);
         }
         else

+ 12 - 13
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java

@@ -1,11 +1,10 @@
 package com.ruoyi.generator.util;
 
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.constant.GenConstants;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.JsonUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.generator.domain.GenTable;
 import com.ruoyi.generator.domain.GenTableColumn;
 import org.apache.velocity.VelocityContext;
@@ -49,9 +48,9 @@ public class VelocityUtils
         velocityContext.put("tableName", genTable.getTableName());
         velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】");
         velocityContext.put("ClassName", genTable.getClassName());
-        velocityContext.put("className", StringUtils.lowerFirst(genTable.getClassName()));
+        velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName()));
         velocityContext.put("moduleName", genTable.getModuleName());
-        velocityContext.put("BusinessName", StringUtils.upperFirst(genTable.getBusinessName()));
+        velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName()));
         velocityContext.put("businessName", genTable.getBusinessName());
         velocityContext.put("basePackage", getPackagePrefix(packageName));
         velocityContext.put("packageName", packageName);
@@ -110,15 +109,15 @@ public class VelocityUtils
         String subTableName = genTable.getSubTableName();
         String subTableFkName = genTable.getSubTableFkName();
         String subClassName = genTable.getSubTable().getClassName();
-        String subTableFkClassName = StringUtils.toCamelCase(subTableFkName);
+        String subTableFkClassName = StringUtils.convertToCamelCase(subTableFkName);
 
         context.put("subTable", subTable);
         context.put("subTableName", subTableName);
         context.put("subTableFkName", subTableFkName);
         context.put("subTableFkClassName", subTableFkClassName);
-        context.put("subTableFkclassName", StringUtils.lowerFirst(subTableFkClassName));
+        context.put("subTableFkclassName", StringUtils.uncapitalize(subTableFkClassName));
         context.put("subClassName", subClassName);
-        context.put("subclassName", StringUtils.lowerFirst(subClassName));
+        context.put("subclassName", StringUtils.uncapitalize(subClassName));
         context.put("subImportList", getImportList(genTable.getSubTable()));
     }
 
@@ -240,7 +239,7 @@ public class VelocityUtils
     public static String getPackagePrefix(String packageName)
     {
         int lastIndex = packageName.lastIndexOf(".");
-        String basePackage = StringUtils.sub(packageName, 0, lastIndex);
+        String basePackage = StringUtils.substring(packageName, 0, lastIndex);
         return basePackage;
     }
 
@@ -255,7 +254,7 @@ public class VelocityUtils
         List<GenTableColumn> columns = genTable.getColumns();
         GenTable subGenTable = genTable.getSubTable();
         HashSet<String> importList = new HashSet<String>();
-        if (Validator.isNotNull(subGenTable))
+        if (StringUtils.isNotNull(subGenTable))
         {
             importList.add("java.util.List");
         }
@@ -294,7 +293,7 @@ public class VelocityUtils
      */
     public static String getParentMenuId(Map<String, Object> paramsObj)
     {
-        if (Validator.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)
+        if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)
 				&& StringUtils.isNotEmpty(Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID))))
         {
             return Convert.toStr(paramsObj.get(GenConstants.PARENT_MENU_ID));
@@ -310,7 +309,7 @@ public class VelocityUtils
      */
     public static String getTreecode(Map<String, Object> paramsObj)
     {
-        if (Validator.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE))
+        if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE))
         {
             return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_CODE)));
         }
@@ -325,7 +324,7 @@ public class VelocityUtils
      */
     public static String getTreeParentCode(Map<String, Object> paramsObj)
     {
-        if (Validator.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
+        if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
         {
             return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_PARENT_CODE)));
         }
@@ -340,7 +339,7 @@ public class VelocityUtils
      */
     public static String getTreeName(Map<String, Object> paramsObj)
     {
-        if (Validator.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME))
+        if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME))
         {
             return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_NAME)));
         }

+ 1 - 1
ruoyi-oss/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java

@@ -55,7 +55,7 @@ public class SysOssServiceImpl extends ServicePlusImpl<SysOssMapper, SysOss, Sys
 	@Override
 	public SysOss upload(MultipartFile file) {
 		String originalfileName = file.getOriginalFilename();
-		String suffix = StringUtils.sub(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
+		String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length());
 		ICloudStorageService storage = OssFactory.instance();
 		UploadResult uploadResult;
 		try {

+ 4 - 5
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ruoyi.quartz.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
@@ -31,10 +30,10 @@ public class SysJobLogServiceImpl extends ServicePlusImpl<SysJobLogMapper, SysJo
                 .eq(StringUtils.isNotBlank(jobLog.getJobGroup()), SysJobLog::getJobGroup, jobLog.getJobGroup())
                 .eq(StringUtils.isNotBlank(jobLog.getStatus()), SysJobLog::getStatus, jobLog.getStatus())
                 .like(StringUtils.isNotBlank(jobLog.getInvokeTarget()), SysJobLog::getInvokeTarget, jobLog.getInvokeTarget())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                .apply(StringUtils.isNotEmpty(params.get("beginTime")),
                         "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
                         params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
+                .apply(StringUtils.isNotEmpty(params.get("endTime")),
                         "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
                         params.get("endTime"));
         return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
@@ -54,10 +53,10 @@ public class SysJobLogServiceImpl extends ServicePlusImpl<SysJobLogMapper, SysJo
                 .eq(StringUtils.isNotBlank(jobLog.getJobGroup()), SysJobLog::getJobGroup, jobLog.getJobGroup())
                 .eq(StringUtils.isNotBlank(jobLog.getStatus()), SysJobLog::getStatus, jobLog.getStatus())
                 .like(StringUtils.isNotBlank(jobLog.getInvokeTarget()), SysJobLog::getInvokeTarget, jobLog.getInvokeTarget())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                .apply(StringUtils.isNotEmpty(params.get("beginTime")),
                         "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
                         params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
+                .apply(StringUtils.isNotEmpty(params.get("endTime")),
                         "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
                         params.get("endTime")));
     }

+ 3 - 4
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java

@@ -2,10 +2,9 @@ package com.ruoyi.quartz.util;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.exceptions.ExceptionUtil;
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.ScheduleConstants;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.quartz.domain.SysJob;
 import com.ruoyi.quartz.domain.SysJobLog;
@@ -40,7 +39,7 @@ public abstract class AbstractQuartzJob implements Job
         try
         {
             before(context, sysJob);
-            if (Validator.isNotNull(sysJob))
+            if (StringUtils.isNotNull(sysJob))
             {
                 doExecute(context, sysJob);
             }
@@ -86,7 +85,7 @@ public abstract class AbstractQuartzJob implements Job
         if (e != null)
         {
             sysJobLog.setStatus(Constants.FAIL);
-            String errorMsg = StringUtils.sub(ExceptionUtil.stacktraceToString(e), 0, 2000);
+            String errorMsg = StringUtils.substring(ExceptionUtil.stacktraceToString(e), 0, 2000);
             sysJobLog.setExceptionInfo(errorMsg);
         }
         else

+ 7 - 8
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/JobInvokeUtil.java

@@ -1,6 +1,5 @@
 package com.ruoyi.quartz.util;
 
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.quartz.domain.SysJob;
@@ -52,7 +51,7 @@ public class JobInvokeUtil
             throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
             InvocationTargetException
     {
-        if (Validator.isNotNull(methodParams) && methodParams.size() > 0)
+        if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0)
         {
             Method method = bean.getClass().getDeclaredMethod(methodName, getMethodParamsType(methodParams));
             method.invoke(bean, getMethodParamsValue(methodParams));
@@ -72,7 +71,7 @@ public class JobInvokeUtil
      */
     public static boolean isValidClassName(String invokeTarget)
     {
-        return StringUtils.count(invokeTarget, ".") > 1;
+        return StringUtils.countMatches(invokeTarget, ".") > 1;
     }
 
     /**
@@ -83,8 +82,8 @@ public class JobInvokeUtil
      */
     public static String getBeanName(String invokeTarget)
     {
-        String beanName = StringUtils.subBefore(invokeTarget, "(",false);
-        return StringUtils.subBefore(beanName, ".",true);
+        String beanName = StringUtils.substringBefore(invokeTarget, "(");
+        return StringUtils.substringBefore(beanName, ".");
     }
 
     /**
@@ -95,8 +94,8 @@ public class JobInvokeUtil
      */
     public static String getMethodName(String invokeTarget)
     {
-        String methodName = StringUtils.subBefore(invokeTarget, "(",false);
-        return StringUtils.subAfter(methodName, ".",true);
+        String methodName = StringUtils.substringBefore(invokeTarget, "(");
+        return StringUtils.substringBefore(methodName, ".");
     }
 
     /**
@@ -107,7 +106,7 @@ public class JobInvokeUtil
      */
     public static List<Object[]> getMethodParams(String invokeTarget)
     {
-        String methodStr = StringUtils.subBetween(invokeTarget, "(", ")");
+        String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")");
         if (StringUtils.isEmpty(methodStr))
         {
             return null;

+ 8 - 9
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ruoyi.system.service.impl;
 
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.DataSource;
@@ -51,10 +50,10 @@ public class SysConfigServiceImpl extends ServicePlusImpl<SysConfigMapper, SysCo
 			.like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
 			.eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
 			.like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
-			.apply(Validator.isNotEmpty(params.get("beginTime")),
+			.apply(StringUtils.isNotEmpty(params.get("beginTime")),
 				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 				params.get("beginTime"))
-			.apply(Validator.isNotEmpty(params.get("endTime")),
+			.apply(StringUtils.isNotEmpty(params.get("endTime")),
 				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 				params.get("endTime"));
 		return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
@@ -81,12 +80,12 @@ public class SysConfigServiceImpl extends ServicePlusImpl<SysConfigMapper, SysCo
 	@Override
 	public String selectConfigByKey(String configKey) {
 		String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey)));
-		if (Validator.isNotEmpty(configValue)) {
+		if (StringUtils.isNotEmpty(configValue)) {
 			return configValue;
 		}
 		SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>()
 			.eq(SysConfig::getConfigKey, configKey));
-		if (Validator.isNotNull(retConfig)) {
+		if (StringUtils.isNotNull(retConfig)) {
 			redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
 			return retConfig.getConfigValue();
 		}
@@ -120,10 +119,10 @@ public class SysConfigServiceImpl extends ServicePlusImpl<SysConfigMapper, SysCo
 			.like(StringUtils.isNotBlank(config.getConfigName()), SysConfig::getConfigName, config.getConfigName())
 			.eq(StringUtils.isNotBlank(config.getConfigType()), SysConfig::getConfigType, config.getConfigType())
 			.like(StringUtils.isNotBlank(config.getConfigKey()), SysConfig::getConfigKey, config.getConfigKey())
-			.apply(Validator.isNotEmpty(params.get("beginTime")),
+			.apply(StringUtils.isNotEmpty(params.get("beginTime")),
 				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 				params.get("beginTime"))
-			.apply(Validator.isNotEmpty(params.get("endTime")),
+			.apply(StringUtils.isNotEmpty(params.get("endTime")),
 				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 				params.get("endTime"));
 		return baseMapper.selectList(lqw);
@@ -214,9 +213,9 @@ public class SysConfigServiceImpl extends ServicePlusImpl<SysConfigMapper, SysCo
 	 */
 	@Override
 	public String checkConfigKeyUnique(SysConfig config) {
-		Long configId = Validator.isNull(config.getConfigId()) ? -1L : config.getConfigId();
+		Long configId = StringUtils.isNull(config.getConfigId()) ? -1L : config.getConfigId();
 		SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, config.getConfigKey()));
-		if (Validator.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) {
+		if (StringUtils.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) {
 			return UserConstants.NOT_UNIQUE;
 		}
 		return UserConstants.UNIQUE;

+ 5 - 6
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -1,8 +1,6 @@
 package com.ruoyi.system.service.impl;
 
 import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.ruoyi.common.annotation.DataScope;
@@ -13,6 +11,7 @@ import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.exception.CustomException;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.system.mapper.SysRoleMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
@@ -160,12 +159,12 @@ public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept,
      */
     @Override
     public String checkDeptNameUnique(SysDept dept) {
-        Long deptId = Validator.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
+        Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
         SysDept info = getOne(new LambdaQueryWrapper<SysDept>()
                 .eq(SysDept::getDeptName, dept.getDeptName())
                 .eq(SysDept::getParentId, dept.getParentId())
                 .last("limit 1"));
-        if (Validator.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -198,7 +197,7 @@ public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept,
     public int updateDept(SysDept dept) {
         SysDept newParentDept = getById(dept.getParentId());
         SysDept oldDept = getById(dept.getDeptId());
-        if (Validator.isNotNull(newParentDept) && Validator.isNotNull(oldDept)) {
+        if (StringUtils.isNotNull(newParentDept) && StringUtils.isNotNull(oldDept)) {
             String newAncestors = newParentDept.getAncestors() + "," + newParentDept.getDeptId();
             String oldAncestors = oldDept.getAncestors();
             dept.setAncestors(newAncestors);
@@ -275,7 +274,7 @@ public class SysDeptServiceImpl extends ServicePlusImpl<SysDeptMapper, SysDept,
     private List<SysDept> getChildList(List<SysDept> list, SysDept t) {
         List<SysDept> tlist = new ArrayList<SysDept>();
 		for (SysDept n : list) {
-			if (Validator.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) {
+			if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue()) {
 				tlist.add(n);
 			}
 		}

+ 6 - 7
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ruoyi.system.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.lang.Validator;
 import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -51,10 +50,10 @@ public class SysDictTypeServiceImpl extends ServicePlusImpl<SysDictTypeMapper, S
 			.like(StringUtils.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
 			.eq(StringUtils.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
 			.like(StringUtils.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
-			.apply(Validator.isNotEmpty(params.get("beginTime")),
+			.apply(StringUtils.isNotEmpty(params.get("beginTime")),
 				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 				params.get("beginTime"))
-			.apply(Validator.isNotEmpty(params.get("endTime")),
+			.apply(StringUtils.isNotEmpty(params.get("endTime")),
 				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 				params.get("endTime"));
 		return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
@@ -73,10 +72,10 @@ public class SysDictTypeServiceImpl extends ServicePlusImpl<SysDictTypeMapper, S
 			.like(StringUtils.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
 			.eq(StringUtils.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
 			.like(StringUtils.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
-			.apply(Validator.isNotEmpty(params.get("beginTime")),
+			.apply(StringUtils.isNotEmpty(params.get("beginTime")),
 				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
 				params.get("beginTime"))
-			.apply(Validator.isNotEmpty(params.get("endTime")),
+			.apply(StringUtils.isNotEmpty(params.get("endTime")),
 				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
 				params.get("endTime")));
 	}
@@ -225,11 +224,11 @@ public class SysDictTypeServiceImpl extends ServicePlusImpl<SysDictTypeMapper, S
 	 */
 	@Override
 	public String checkDictTypeUnique(SysDictType dict) {
-		Long dictId = Validator.isNull(dict.getDictId()) ? -1L : dict.getDictId();
+		Long dictId = StringUtils.isNull(dict.getDictId()) ? -1L : dict.getDictId();
 		SysDictType dictType = getOne(new LambdaQueryWrapper<SysDictType>()
 			.eq(SysDictType::getDictType, dict.getDictType())
 			.last("limit 1"));
-		if (Validator.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
+		if (StringUtils.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
 			return UserConstants.NOT_UNIQUE;
 		}
 		return UserConstants.UNIQUE;

+ 4 - 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
@@ -31,10 +30,10 @@ public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMappe
                 .like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr())
                 .eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus())
                 .like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                .apply(StringUtils.isNotEmpty(params.get("beginTime")),
                         "date_format(login_time,'%y%m%d') >= date_format({0},'%y%m%d')",
                         params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
+                .apply(StringUtils.isNotEmpty(params.get("endTime")),
                         "date_format(login_time,'%y%m%d') <= date_format({0},'%y%m%d')",
                         params.get("endTime"));
         return PageUtils.buildDataInfo(page(PageUtils.buildPage("info_id","desc"), lqw));
@@ -64,10 +63,10 @@ public class SysLogininforServiceImpl extends ServicePlusImpl<SysLogininforMappe
                 .like(StringUtils.isNotBlank(logininfor.getIpaddr()),SysLogininfor::getIpaddr,logininfor.getIpaddr())
                 .eq(StringUtils.isNotBlank(logininfor.getStatus()),SysLogininfor::getStatus,logininfor.getStatus())
                 .like(StringUtils.isNotBlank(logininfor.getUserName()),SysLogininfor::getUserName,logininfor.getUserName())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                .apply(StringUtils.isNotEmpty(params.get("beginTime")),
                         "date_format(login_time,'%y%m%d') >= date_format({0},'%y%m%d')",
                         params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
+                .apply(StringUtils.isNotEmpty(params.get("endTime")),
                         "date_format(login_time,'%y%m%d') <= date_format({0},'%y%m%d')",
                         params.get("endTime"))
                 .orderByDesc(SysLogininfor::getInfoId));

+ 7 - 8
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java

@@ -1,7 +1,5 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.constant.UserConstants;
@@ -11,6 +9,7 @@ import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysRoleMenu;
 import com.ruoyi.system.domain.vo.MetaVo;
 import com.ruoyi.system.domain.vo.RouterVo;
@@ -85,7 +84,7 @@ public class SysMenuServiceImpl extends ServicePlusImpl<SysMenuMapper, SysMenu,
         List<String> perms = baseMapper.selectMenuPermsByUserId(userId);
         Set<String> permsSet = new HashSet<>();
         for (String perm : perms) {
-            if (Validator.isNotEmpty(perm)) {
+            if (StringUtils.isNotEmpty(perm)) {
                 permsSet.addAll(Arrays.asList(perm.trim().split(",")));
             }
         }
@@ -148,7 +147,7 @@ public class SysMenuServiceImpl extends ServicePlusImpl<SysMenuMapper, SysMenu,
                 RouterVo children = new RouterVo();
                 children.setPath(menu.getPath());
                 children.setComponent(menu.getComponent());
-                children.setName(StringUtils.upperFirst(menu.getPath()));
+                children.setName(StringUtils.capitalize(menu.getPath()));
                 children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
 				childrenList.add(children);
 				router.setChildren(childrenList);
@@ -160,7 +159,7 @@ public class SysMenuServiceImpl extends ServicePlusImpl<SysMenuMapper, SysMenu,
 				String routerPath = StringUtils.replaceEach(menu.getPath(), new String[] { Constants.HTTP, Constants.HTTPS }, new String[] { "", "" });
 				children.setPath(routerPath);
 				children.setComponent(UserConstants.INNER_LINK);
-				children.setName(StringUtils.upperFirst(routerPath));
+				children.setName(StringUtils.capitalize(routerPath));
 				children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
                 childrenList.add(children);
                 router.setChildren(childrenList);
@@ -284,12 +283,12 @@ public class SysMenuServiceImpl extends ServicePlusImpl<SysMenuMapper, SysMenu,
      */
     @Override
     public String checkMenuNameUnique(SysMenu menu) {
-        Long menuId = Validator.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
+        Long menuId = StringUtils.isNull(menu.getMenuId()) ? -1L : menu.getMenuId();
         SysMenu info = getOne(new LambdaQueryWrapper<SysMenu>()
                 .eq(SysMenu::getMenuName,menu.getMenuName())
                 .eq(SysMenu::getParentId,menu.getParentId())
                 .last("limit 1"));
-        if (Validator.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getMenuId().longValue() != menuId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -302,7 +301,7 @@ public class SysMenuServiceImpl extends ServicePlusImpl<SysMenuMapper, SysMenu,
      * @return 路由名称
      */
     public String getRouteName(SysMenu menu) {
-        String routerName = StringUtils.upperFirst(menu.getPath());
+        String routerName = StringUtils.capitalize(menu.getPath());
         // 非外链并且是一级目录(类型为目录)
         if (isMenuFrame(menu)) {
             routerName = StringUtils.EMPTY;

+ 4 - 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.ArrayUtil;
 import com.ruoyi.common.utils.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -40,10 +39,10 @@ public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, Sys
                 .eq(operLog.getStatus() != null && operLog.getStatus() > 0,
                         SysOperLog::getStatus, operLog.getStatus())
                 .like(StringUtils.isNotBlank(operLog.getOperName()), SysOperLog::getOperName, operLog.getOperName())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                .apply(StringUtils.isNotEmpty(params.get("beginTime")),
                         "date_format(oper_time,'%y%m%d') >= date_format({0},'%y%m%d')",
                         params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
+                .apply(StringUtils.isNotEmpty(params.get("endTime")),
                         "date_format(oper_time,'%y%m%d') <= date_format({0},'%y%m%d')",
                         params.get("endTime"));
         return PageUtils.buildDataInfo(page(PageUtils.buildPage("oper_id","desc"), lqw));
@@ -81,10 +80,10 @@ public class SysOperLogServiceImpl extends ServicePlusImpl<SysOperLogMapper, Sys
                 .eq(operLog.getStatus() != null && operLog.getStatus() > 0,
                         SysOperLog::getStatus,operLog.getStatus())
                 .like(StringUtils.isNotBlank(operLog.getOperName()),SysOperLog::getOperName,operLog.getOperName())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
+                .apply(StringUtils.isNotEmpty(params.get("beginTime")),
                         "date_format(oper_time,'%y%m%d') >= date_format({0},'%y%m%d')",
                         params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
+                .apply(StringUtils.isNotEmpty(params.get("endTime")),
                         "date_format(oper_time,'%y%m%d') <= date_format({0},'%y%m%d')",
                         params.get("endTime"))
                 .orderByDesc(SysOperLog::getOperId));

+ 4 - 5
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
@@ -93,10 +92,10 @@ public class SysPostServiceImpl extends ServicePlusImpl<SysPostMapper, SysPost,
      */
     @Override
     public String checkPostNameUnique(SysPost post) {
-        Long postId = Validator.isNull(post.getPostId()) ? -1L : post.getPostId();
+        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
         SysPost info = getOne(new LambdaQueryWrapper<SysPost>()
                 .eq(SysPost::getPostName, post.getPostName()).last("limit 1"));
-        if (Validator.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -110,10 +109,10 @@ public class SysPostServiceImpl extends ServicePlusImpl<SysPostMapper, SysPost,
      */
     @Override
     public String checkPostCodeUnique(SysPost post) {
-        Long postId = Validator.isNull(post.getPostId()) ? -1L : post.getPostId();
+        Long postId = StringUtils.isNull(post.getPostId()) ? -1L : post.getPostId();
         SysPost info = getOne(new LambdaQueryWrapper<SysPost>()
                 .eq(SysPost::getPostCode, post.getPostCode()).last("limit 1"));
-        if (Validator.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getPostId().longValue() != postId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;

+ 7 - 7
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.constant.UserConstants;
@@ -9,6 +8,7 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
 import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.system.domain.SysRoleDept;
 import com.ruoyi.system.domain.SysRoleMenu;
@@ -91,7 +91,7 @@ public class SysRoleServiceImpl extends ServicePlusImpl<SysRoleMapper, SysRole,
         List<SysRole> perms = baseMapper.selectRolePermissionByUserId(userId);
         Set<String> permsSet = new HashSet<>();
         for (SysRole perm : perms) {
-            if (Validator.isNotNull(perm)) {
+            if (StringUtils.isNotNull(perm)) {
                 permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
             }
         }
@@ -138,10 +138,10 @@ public class SysRoleServiceImpl extends ServicePlusImpl<SysRoleMapper, SysRole,
      */
     @Override
     public String checkRoleNameUnique(SysRole role) {
-        Long roleId = Validator.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
         SysRole info = getOne(new LambdaQueryWrapper<SysRole>()
                 .eq(SysRole::getRoleName, role.getRoleName()).last("limit 1"));
-        if (Validator.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -155,10 +155,10 @@ public class SysRoleServiceImpl extends ServicePlusImpl<SysRoleMapper, SysRole,
      */
     @Override
     public String checkRoleKeyUnique(SysRole role) {
-        Long roleId = Validator.isNull(role.getRoleId()) ? -1L : role.getRoleId();
+        Long roleId = StringUtils.isNull(role.getRoleId()) ? -1L : role.getRoleId();
         SysRole info = getOne(new LambdaQueryWrapper<SysRole>()
                 .eq(SysRole::getRoleKey, role.getRoleKey()).last("limit 1"));
-        if (Validator.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getRoleId().longValue() != roleId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -171,7 +171,7 @@ public class SysRoleServiceImpl extends ServicePlusImpl<SysRoleMapper, SysRole,
      */
     @Override
     public void checkRoleAllowed(SysRole role) {
-        if (Validator.isNotNull(role.getRoleId()) && role.isAdmin()) {
+        if (StringUtils.isNotNull(role.getRoleId()) && role.isAdmin()) {
             throw new CustomException("不允许操作超级管理员角色");
         }
     }

+ 3 - 4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserOnlineServiceImpl.java

@@ -1,8 +1,7 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
-import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysUserOnline;
 import com.ruoyi.system.service.ISysUserOnlineService;
 import org.springframework.stereotype.Service;
@@ -68,7 +67,7 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
      */
     @Override
     public SysUserOnline loginUserToUserOnline(LoginUser user) {
-        if (Validator.isNull(user) || Validator.isNull(user.getUser())) {
+        if (StringUtils.isNull(user) || StringUtils.isNull(user.getUser())) {
             return null;
         }
         SysUserOnline sysUserOnline = new SysUserOnline();
@@ -79,7 +78,7 @@ public class SysUserOnlineServiceImpl implements ISysUserOnlineService {
         sysUserOnline.setBrowser(user.getBrowser());
         sysUserOnline.setOs(user.getOs());
         sysUserOnline.setLoginTime(user.getLoginTime());
-        if (Validator.isNotNull(user.getUser().getDept())) {
+        if (StringUtils.isNotNull(user.getUser().getDept())) {
             sysUserOnline.setDeptName(user.getUser().getDept().getDeptName());
         }
         return sysUserOnline;

+ 13 - 13
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ruoyi.system.service.impl;
 
-import cn.hutool.core.lang.Validator;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.ruoyi.common.annotation.DataScope;
@@ -12,6 +11,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.exception.CustomException;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.domain.SysPost;
 import com.ruoyi.system.domain.SysUserPost;
 import com.ruoyi.system.domain.SysUserRole;
@@ -128,7 +128,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
         for (SysRole role : list) {
             idsStr.append(role.getRoleName()).append(",");
         }
-        if (Validator.isNotEmpty(idsStr.toString())) {
+        if (StringUtils.isNotEmpty(idsStr.toString())) {
             return idsStr.substring(0, idsStr.length() - 1);
         }
         return idsStr.toString();
@@ -147,7 +147,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
         for (SysPost post : list) {
             idsStr.append(post.getPostName()).append(",");
         }
-        if (Validator.isNotEmpty(idsStr.toString())) {
+        if (StringUtils.isNotEmpty(idsStr.toString())) {
             return idsStr.substring(0, idsStr.length() - 1);
         }
         return idsStr.toString();
@@ -176,11 +176,11 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      */
     @Override
     public String checkPhoneUnique(SysUser user) {
-        Long userId = Validator.isNull(user.getUserId()) ? -1L : user.getUserId();
+        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = getOne(new LambdaQueryWrapper<SysUser>()
                 .select(SysUser::getUserId, SysUser::getPhonenumber)
                 .eq(SysUser::getPhonenumber, user.getPhonenumber()).last("limit 1"));
-        if (Validator.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -194,11 +194,11 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      */
     @Override
     public String checkEmailUnique(SysUser user) {
-        Long userId = Validator.isNull(user.getUserId()) ? -1L : user.getUserId();
+        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
         SysUser info = getOne(new LambdaQueryWrapper<SysUser>()
                 .select(SysUser::getUserId, SysUser::getEmail)
                 .eq(SysUser::getEmail, user.getEmail()).last("limit 1"));
-        if (Validator.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) {
             return UserConstants.NOT_UNIQUE;
         }
         return UserConstants.UNIQUE;
@@ -211,7 +211,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      */
     @Override
     public void checkUserAllowed(SysUser user) {
-        if (Validator.isNotNull(user.getUserId()) && user.isAdmin()) {
+        if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
             throw new CustomException("不允许操作超级管理员用户");
         }
     }
@@ -351,7 +351,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      */
     public void insertUserRole(SysUser user) {
         Long[] roles = user.getRoleIds();
-        if (Validator.isNotNull(roles)) {
+        if (StringUtils.isNotNull(roles)) {
             // 新增用户与角色管理
             List<SysUserRole> list = new ArrayList<SysUserRole>();
             for (Long roleId : roles) {
@@ -373,7 +373,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      */
     public void insertUserPost(SysUser user) {
         Long[] posts = user.getPostIds();
-        if (Validator.isNotNull(posts)) {
+        if (StringUtils.isNotNull(posts)) {
             // 新增用户与岗位管理
             List<SysUserPost> list = new ArrayList<SysUserPost>();
             for (Long postId : posts) {
@@ -395,7 +395,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      * @param roleIds 角色组
      */
     public void insertUserRole(Long userId, Long[] roleIds) {
-        if (Validator.isNotNull(roleIds)) {
+        if (StringUtils.isNotNull(roleIds)) {
             // 新增用户与角色管理
             List<SysUserRole> list = new ArrayList<SysUserRole>();
             for (Long roleId : roleIds) {
@@ -456,7 +456,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
      */
     @Override
     public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) {
-        if (Validator.isNull(userList) || userList.size() == 0) {
+        if (StringUtils.isNull(userList) || userList.size() == 0) {
             throw new CustomException("导入用户数据不能为空!");
         }
         int successNum = 0;
@@ -468,7 +468,7 @@ public class SysUserServiceImpl extends ServicePlusImpl<SysUserMapper, SysUser,
             try {
                 // 验证是否存在这个用户
                 SysUser u = baseMapper.selectUserByUserName(user.getUserName());
-                if (Validator.isNull(u)) {
+                if (StringUtils.isNull(u)) {
                     user.setPassword(SecurityUtils.encryptPassword(password));
                     user.setCreateBy(operName);
                     this.insertUser(user);