Browse Source

1.生成包条码进行哈希值的边界验证

dist.1.3.0
zhenghaoyu 6 months ago
parent
commit
6466be1e30
  1. 21
      blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java

21
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;

Loading…
Cancel
Save