refactor(util): 替换 CsStringUtil 为 Hutool 的 StrUtil 工具类

This commit is contained in:
2025-10-30 15:06:24 +08:00
parent a30f97c5b5
commit a70f78b933
13 changed files with 37 additions and 29 deletions
@@ -16,6 +16,7 @@
package cn.odboy.framework.properties.model; package cn.odboy.framework.properties.model;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.CsObject; import cn.odboy.base.CsObject;
import cn.odboy.constant.CaptchaCodeEnum; import cn.odboy.constant.CaptchaCodeEnum;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
@@ -100,7 +101,7 @@ public class UserLoginCaptchaSettingModel extends CsObject {
default: default:
throw new BadRequestException("验证码配置信息错误!正确配置查看 LoginCodeEnum "); throw new BadRequestException("验证码配置信息错误!正确配置查看 LoginCodeEnum ");
} }
if (CsStringUtil.isNotBlank(fontName)) { if (StrUtil.isNotBlank(fontName)) {
captcha.setFont(new Font(fontName, Font.PLAIN, fontSize)); captcha.setFont(new Font(fontName, Font.PLAIN, fontSize));
} }
return captcha; return captcha;
@@ -28,7 +28,7 @@ import java.util.Date;
*/ */
@Slf4j @Slf4j
@UtilityClass @UtilityClass
public final class CsStringUtil extends org.apache.commons.lang3.StringUtils { public final class CsStringUtil {
private static final char SEPARATOR = '_'; private static final char SEPARATOR = '_';
@@ -18,6 +18,7 @@ package cn.odboy.system.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.annotation.AnonymousPostMapping; import cn.odboy.annotation.AnonymousPostMapping;
import cn.odboy.constant.CaptchaCodeEnum; import cn.odboy.constant.CaptchaCodeEnum;
import cn.odboy.constant.SystemConst; import cn.odboy.constant.SystemConst;
@@ -85,10 +86,10 @@ public class SystemAuthController {
String code = redisHelper.get(loginRequest.getUuid(), String.class); String code = redisHelper.get(loginRequest.getUuid(), String.class);
// 清除验证码 // 清除验证码
redisHelper.del(loginRequest.getUuid()); redisHelper.del(loginRequest.getUuid());
if (CsStringUtil.isBlank(code)) { if (StrUtil.isBlank(code)) {
throw new BadRequestException("验证码不存在或已过期"); throw new BadRequestException("验证码不存在或已过期");
} }
if (CsStringUtil.isBlank(loginRequest.getCode()) || !loginRequest.getCode().equalsIgnoreCase(code)) { if (StrUtil.isBlank(loginRequest.getCode()) || !loginRequest.getCode().equalsIgnoreCase(code)) {
throw new BadRequestException("验证码错误"); throw new BadRequestException("验证码错误");
} }
// 获取用户信息 // 获取用户信息
@@ -1,6 +1,7 @@
package cn.odboy.system.dal.redis; package cn.odboy.system.dal.redis;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.redis.CsRedisHelper; import cn.odboy.framework.redis.CsRedisHelper;
import cn.odboy.system.dal.model.SystemUserJwtVo; import cn.odboy.system.dal.model.SystemUserJwtVo;
import cn.odboy.util.CsStringUtil; import cn.odboy.util.CsStringUtil;
@@ -23,7 +24,7 @@ public class SystemUserInfoDAO {
*/ */
@Async @Async
public void saveUserLoginInfoByUserName(String userName, SystemUserJwtVo user) { public void saveUserLoginInfoByUserName(String userName, SystemUserJwtVo user) {
if (CsStringUtil.isNotEmpty(userName)) { if (StrUtil.isNotEmpty(userName)) {
// 添加数据, 避免数据同时过期(2小时左右) // 添加数据, 避免数据同时过期(2小时左右)
long time = 7200 + RandomUtil.randomInt(900, 1800); long time = 7200 + RandomUtil.randomInt(900, 1800);
redisHelper.set(SystemRedisKey.USER_INFO + userName, user, time); redisHelper.set(SystemRedisKey.USER_INFO + userName, user, time);
@@ -37,7 +38,7 @@ public class SystemUserInfoDAO {
*/ */
@Async @Async
public void deleteUserLoginInfoByUserName(String userName) { public void deleteUserLoginInfoByUserName(String userName) {
if (CsStringUtil.isNotEmpty(userName)) { if (StrUtil.isNotEmpty(userName)) {
// 清除数据 // 清除数据
redisHelper.del(SystemRedisKey.USER_INFO + userName); redisHelper.del(SystemRedisKey.USER_INFO + userName);
} }
@@ -51,7 +52,7 @@ public class SystemUserInfoDAO {
*/ */
public SystemUserJwtVo getUserLoginInfoByUserName(String username) { public SystemUserJwtVo getUserLoginInfoByUserName(String username) {
if (CsStringUtil.isNotEmpty(username)) { if (StrUtil.isNotEmpty(username)) {
// 获取数据 // 获取数据
return redisHelper.get(SystemRedisKey.USER_INFO + username, SystemUserJwtVo.class); return redisHelper.get(SystemRedisKey.USER_INFO + username, SystemUserJwtVo.class);
} }
@@ -1,5 +1,6 @@
package cn.odboy.system.dal.redis; package cn.odboy.system.dal.redis;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.CsPageResult; import cn.odboy.base.CsPageResult;
import cn.odboy.framework.properties.AppProperties; import cn.odboy.framework.properties.AppProperties;
import cn.odboy.framework.redis.CsRedisHelper; import cn.odboy.framework.redis.CsRedisHelper;
@@ -130,7 +131,7 @@ public class SystemUserOnlineInfoDAO {
*/ */
public List<SystemUserOnlineVo> queryUserOnlineModelListByUsername(String username) { public List<SystemUserOnlineVo> queryUserOnlineModelListByUsername(String username) {
String loginKey = SystemRedisKey.ONLINE_USER + (CsStringUtil.isBlank(username) ? "" : "*" + username); String loginKey = SystemRedisKey.ONLINE_USER + (StrUtil.isBlank(username) ? "" : "*" + username);
List<String> keys = redisHelper.scan(loginKey + "*"); List<String> keys = redisHelper.scan(loginKey + "*");
Collections.reverse(keys); Collections.reverse(keys);
List<SystemUserOnlineVo> onlineUserList = new ArrayList<>(); List<SystemUserOnlineVo> onlineUserList = new ArrayList<>();
@@ -17,6 +17,7 @@
package cn.odboy.system.framework.quartz; package cn.odboy.system.framework.quartz;
import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.template.Template; import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig; import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine; import cn.hutool.extra.template.TemplateEngine;
@@ -75,20 +76,20 @@ public class ExecutionJobBean extends QuartzJobBean {
future.get(); future.get();
long times = System.currentTimeMillis() - startTime; long times = System.currentTimeMillis() - startTime;
quartzLog.setTime(times); quartzLog.setTime(times);
if (CsStringUtil.isNotBlank(uuid)) { if (StrUtil.isNotBlank(uuid)) {
redisHelper.set(uuid, true); redisHelper.set(uuid, true);
} }
// 任务状态 // 任务状态
quartzLog.setIsSuccess(true); quartzLog.setIsSuccess(true);
log.info("任务执行成功,任务名称:{}, 执行时间:{}毫秒", quartzJob.getJobName(), times); log.info("任务执行成功,任务名称:{}, 执行时间:{}毫秒", quartzJob.getJobName(), times);
// 判断是否存在子任务 // 判断是否存在子任务
if (CsStringUtil.isNotBlank(quartzJob.getSubTask())) { if (StrUtil.isNotBlank(quartzJob.getSubTask())) {
String[] tasks = quartzJob.getSubTask().split("[,,]"); String[] tasks = quartzJob.getSubTask().split("[,,]");
// 执行子任务 // 执行子任务
systemQuartzJobService.startSubQuartJob(tasks); systemQuartzJobService.startSubQuartJob(tasks);
} }
} catch (Exception e) { } catch (Exception e) {
if (CsStringUtil.isNotBlank(uuid)) { if (StrUtil.isNotBlank(uuid)) {
redisHelper.set(uuid, false); redisHelper.set(uuid, false);
} }
log.error("任务执行失败,任务名称:{}", quartzJob.getJobName(), e); log.error("任务执行失败,任务名称:{}", quartzJob.getJobName(), e);
@@ -106,7 +107,7 @@ public class ExecutionJobBean extends QuartzJobBean {
if (quartzJob.getEmail() != null) { if (quartzJob.getEmail() != null) {
SystemEmailService emailService = CsSpringBeanHolder.getBean(SystemEmailService.class); SystemEmailService emailService = CsSpringBeanHolder.getBean(SystemEmailService.class);
// 邮箱报警 // 邮箱报警
if (CsStringUtil.isNoneBlank(quartzJob.getEmail())) { if (StrUtil.isNotBlank(quartzJob.getEmail())) {
SystemSendEmailArgs sendEmailRequest = taskAlarm(quartzJob, ExceptionUtil.stacktraceToString(e)); SystemSendEmailArgs sendEmailRequest = taskAlarm(quartzJob, ExceptionUtil.stacktraceToString(e));
emailService.sendEmail(sendEmailRequest); emailService.sendEmail(sendEmailRequest);
} }
@@ -20,6 +20,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.CsPageResult; import cn.odboy.base.CsPageResult;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.constant.SystemDataScopeEnum; import cn.odboy.system.constant.SystemDataScopeEnum;
@@ -188,7 +189,7 @@ public class SystemDeptService {
criteria.setIds(CsSecurityHelper.getCurrentUserDataScope()); criteria.setIds(CsSecurityHelper.getCurrentUserDataScope());
List<SystemDeptTb> list = systemDeptMapper.selectDeptByArgs(criteria); List<SystemDeptTb> list = systemDeptMapper.selectDeptByArgs(criteria);
// 如果为空, 就代表为自定义权限或者本级权限, 就需要去重, 不理解可以注释掉,看查询结果 // 如果为空, 就代表为自定义权限或者本级权限, 就需要去重, 不理解可以注释掉,看查询结果
if (CsStringUtil.isBlank(dataScopeType)) { if (StrUtil.isBlank(dataScopeType)) {
return deduplication(list); return deduplication(list);
} }
return list; return list;
@@ -19,6 +19,7 @@ package cn.odboy.system.service;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IORuntimeException; import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.CsPageResult; import cn.odboy.base.CsPageResult;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.framework.properties.AppProperties; import cn.odboy.framework.properties.AppProperties;
@@ -69,7 +70,7 @@ public class SystemLocalStorageService {
} }
try { try {
String formatSize = CsFileUtil.getSize(size); String formatSize = CsFileUtil.getSize(size);
String prefixName = CsStringUtil.isBlank(name) ? CsFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name; String prefixName = StrUtil.isBlank(name) ? CsFileUtil.getPrefix(multipartFile.getOriginalFilename()) : name;
SystemLocalStorageTb localStorage = new SystemLocalStorageTb(); SystemLocalStorageTb localStorage = new SystemLocalStorageTb();
localStorage.setRealName(file.getName()); localStorage.setRealName(file.getName());
localStorage.setName(prefixName); localStorage.setName(prefixName);
@@ -19,6 +19,7 @@ package cn.odboy.system.service;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.framework.context.CsSpringBeanHolder; import cn.odboy.framework.context.CsSpringBeanHolder;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.constant.TransferProtocolConst; import cn.odboy.system.constant.TransferProtocolConst;
@@ -66,7 +67,7 @@ public class SystemMenuService {
if (systemMenuMapper.getMenuByTitle(args.getTitle()) != null) { if (systemMenuMapper.getMenuByTitle(args.getTitle()) != null) {
throw new BadRequestException("菜单标题已存在"); throw new BadRequestException("菜单标题已存在");
} }
if (CsStringUtil.isNotBlank(args.getComponentName())) { if (StrUtil.isNotBlank(args.getComponentName())) {
if (systemMenuMapper.getMenuByComponentName(args.getComponentName()) != null) { if (systemMenuMapper.getMenuByComponentName(args.getComponentName()) != null) {
throw new BadRequestException("菜单组件名称已存在"); throw new BadRequestException("菜单组件名称已存在");
} }
@@ -117,7 +118,7 @@ public class SystemMenuService {
Long oldPid = menu.getPid(); Long oldPid = menu.getPid();
Long newPid = args.getPid(); Long newPid = args.getPid();
if (CsStringUtil.isNotBlank(args.getComponentName())) { if (StrUtil.isNotBlank(args.getComponentName())) {
menu1 = systemMenuMapper.getMenuByComponentName(args.getComponentName()); menu1 = systemMenuMapper.getMenuByComponentName(args.getComponentName());
if (menu1 != null && !menu1.getId().equals(menu.getId())) { if (menu1 != null && !menu1.getId().equals(menu.getId())) {
throw new BadRequestException("菜单组件名称已存在"); throw new BadRequestException("菜单组件名称已存在");
@@ -348,11 +349,11 @@ public class SystemMenuService {
// 如果不是外链 // 如果不是外链
if (!menu.getIFrame()) { if (!menu.getIFrame()) {
if (menu.getPid() == null) { if (menu.getPid() == null) {
menuVo.setComponent(CsStringUtil.isEmpty(menu.getComponent()) ? "Layout" : menu.getComponent()); menuVo.setComponent(StrUtil.isEmpty(menu.getComponent()) ? "Layout" : menu.getComponent());
// 如果不是一级菜单,并且菜单类型为目录,则代表是多级菜单 // 如果不是一级菜单,并且菜单类型为目录,则代表是多级菜单
} else if (menu.getType() == 0) { } else if (menu.getType() == 0) {
menuVo.setComponent(CsStringUtil.isEmpty(menu.getComponent()) ? "ParentView" : menu.getComponent()); menuVo.setComponent(StrUtil.isEmpty(menu.getComponent()) ? "ParentView" : menu.getComponent());
} else if (CsStringUtil.isNoneBlank(menu.getComponent())) { } else if (StrUtil.isNotBlank(menu.getComponent())) {
menuVo.setComponent(menu.getComponent()); menuVo.setComponent(menu.getComponent());
} }
} }
@@ -79,7 +79,7 @@ public class SystemQuartzJobService {
if (!CronExpression.isValidExpression(args.getCronExpression())) { if (!CronExpression.isValidExpression(args.getCronExpression())) {
throw new BadRequestException("cron表达式格式错误"); throw new BadRequestException("cron表达式格式错误");
} }
if (CsStringUtil.isNotBlank(args.getSubTask())) { if (StrUtil.isNotBlank(args.getSubTask())) {
List<String> tasks = Arrays.asList(args.getSubTask().split("[,,]")); List<String> tasks = Arrays.asList(args.getSubTask().split("[,,]"));
if (tasks.contains(args.getId().toString())) { if (tasks.contains(args.getId().toString())) {
throw new BadRequestException("子任务中不能添加当前任务ID"); throw new BadRequestException("子任务中不能添加当前任务ID");
@@ -19,6 +19,7 @@ package cn.odboy.system.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.odboy.base.CsPageResult; import cn.odboy.base.CsPageResult;
import cn.odboy.framework.exception.BadRequestException; import cn.odboy.framework.exception.BadRequestException;
import cn.odboy.system.dal.dataobject.SystemMenuTb; import cn.odboy.system.dal.dataobject.SystemMenuTb;
@@ -234,7 +235,7 @@ public class SystemRoleService {
permissions = roles.stream() permissions = roles.stream()
.flatMap(role -> role.getMenus().stream()) .flatMap(role -> role.getMenus().stream())
.map(SystemMenuTb::getPermission) .map(SystemMenuTb::getPermission)
.filter(CsStringUtil::isNotBlank) .filter(StrUtil::isNotBlank)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList()); return permissions.stream().map(SystemRoleCodeVo::new).collect(Collectors.toList());
} }
@@ -235,7 +235,7 @@ public class SystemUserService {
user.setAvatarPath(Objects.requireNonNull(file).getPath()); user.setAvatarPath(Objects.requireNonNull(file).getPath());
user.setAvatarName(file.getName()); user.setAvatarName(file.getName());
systemUserMapper.insertOrUpdate(user); systemUserMapper.insertOrUpdate(user);
if (CsStringUtil.isNotBlank(oldPath)) { if (StrUtil.isNotBlank(oldPath)) {
CsFileUtil.del(oldPath); CsFileUtil.del(oldPath);
} }
systemUserInfoDAO.deleteUserLoginInfoByUserName(username); systemUserInfoDAO.deleteUserLoginInfoByUserName(username);
@@ -23,7 +23,6 @@ import org.springframework.mock.web.MockHttpServletRequest;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import static cn.odboy.util.CsStringUtil.*;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertNull;
@@ -31,27 +30,27 @@ public class CsStringUtilTest {
@Test @Test
public void testToCamelCase() { public void testToCamelCase() {
assertNull(toCamelCase(null)); assertNull(CsStringUtil.toCamelCase(null));
} }
@Test @Test
public void testToCapitalizeCamelCase() { public void testToCapitalizeCamelCase() {
assertNull(CsStringUtil.toCapitalizeCamelCase(null)); assertNull(CsStringUtil.toCapitalizeCamelCase(null));
assertEquals("HelloWorld", toCapitalizeCamelCase("hello_world")); assertEquals("HelloWorld", CsStringUtil.toCapitalizeCamelCase("hello_world"));
} }
@Test @Test
public void testToUnderScoreCase() { public void testToUnderScoreCase() {
assertNull(CsStringUtil.toUnderScoreCase(null)); assertNull(CsStringUtil.toUnderScoreCase(null));
assertEquals("hello_world", toUnderScoreCase("helloWorld")); assertEquals("hello_world", CsStringUtil.toUnderScoreCase("helloWorld"));
assertEquals("\u0000\u0000", toUnderScoreCase("\u0000\u0000")); assertEquals("\u0000\u0000", CsStringUtil.toUnderScoreCase("\u0000\u0000"));
assertEquals("\u0000_a", toUnderScoreCase("\u0000A")); assertEquals("\u0000_a", CsStringUtil.toUnderScoreCase("\u0000A"));
} }
@Test @Test
public void testGetWeekDay() { public void testGetWeekDay() {
SimpleDateFormat simpleDateformat = new SimpleDateFormat("E"); SimpleDateFormat simpleDateformat = new SimpleDateFormat("E");
assertEquals(simpleDateformat.format(new Date()), getWeekDay()); assertEquals(simpleDateformat.format(new Date()), CsStringUtil.getWeekDay());
} }
@Test @Test