diff --git a/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java b/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java index be0afab9b..45ec65be1 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java +++ b/blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java @@ -21,6 +21,7 @@ import org.springframework.util.StringUtils; import java.text.NumberFormat; import java.text.SimpleDateFormat; +import java.time.Instant; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; @@ -289,22 +290,20 @@ public class CommonUtil { public static String getHaxCodeByLong(String str,int changdu){ - long time = new Date().getTime(); - int hashValue = (str + time).hashCode(); // 获取哈希值(32位) + // 计算输入字符串的哈希值 + int hash = str.hashCode(); - // 将32位哈希值转换为纯数字形式 - String s = Math.abs(hashValue) + ""; + // 结合当前时间戳和哈希值作为种子 + long seed = Instant.now().toEpochMilli() ^ hash; - // 检查 changdu 是否超出 s 的长度 - if (changdu > s.length()) { - // 返回整个字符串或根据需求处理 - return s; - } + // 使用种子生成一个唯一的数字 + long uniqueNumber = Math.abs(seed) % (long)Math.pow(10, changdu); - String substring = s.substring(0, changdu); - return substring; + // 将生成的数字转换为字符串,并确保长度正确 + return String.format("%0" + changdu + "d", uniqueNumber); } + public static Date addDate(Date date, int second) { if(Objects.isNull(date)){ return null;