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.NumberFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
@ -289,22 +290,20 @@ public class CommonUtil {
public static String getHaxCodeByLong(String str,int changdu){ 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()) { long uniqueNumber = Math.abs(seed) % (long)Math.pow(10, changdu);
// 返回整个字符串或根据需求处理
return s;
}
String substring = s.substring(0, changdu); // 将生成的数字转换为字符串,并确保长度正确
return substring; return String.format("%0" + changdu + "d", uniqueNumber);
} }
public static Date addDate(Date date, int second) { public static Date addDate(Date date, int second) {
if(Objects.isNull(date)){ if(Objects.isNull(date)){
return null; return null;

Loading…
Cancel
Save