方法1:通过死循环
调用:
main(){//main方法
for (;;){//创建一个死循环
sequenceNumber = getCard();//生成12位序列号
sequenceNumber = checkSequenceNumber(sequenceNumber);//验证序列号
if (StringUtils.isNotBlank(sequenceNumber)) {
break;//如果不重复,那么跳出循环,否则继续循环生成序列号,然后验证,周而复始
}
}
}
//生成12位序列号
public static String getCard(){
Random rand = new Random();//生成随机数
String cardNnumer1 = "";
Integer card = rand.nextInt(9)+1;//第一个数字不可为0
for(int a=0;a<11;a++){
cardNnumer1+=rand.nextInt(10);//生成11位数字
}
return card+cardNnumer1;
}
/**
* 验证是否有相同的序列号
* @param sequenceNumber
* @return
*/
public String checkSequenceNumber(String sequenceNumber){
SuRedNewPacket packet=redNewPacketService.checkSequenceNumber(sequenceNumber);
if(packet!=null){
return null;
}else {
return sequenceNumber;
}
}
方法2:面向对象,多次调用
//main方法
main(){
dhm = returnBarCode();
}
/**
* 验证vip红包兑换码
* @return
*/
public String returnBarCode(){
String dhm = getCard1();//调用生成验证码
SuRedNewPacket redNewPacket = redNewPacketService.selectDhm(dhm);//兑换码去重
if(redNewPacket != null){//如果有相同的,就继续生成,周而复始
return returnBarCode();
}else{
return dhm;
}
}
//生成vip兑换码
public static String getCard1(){
String dhm = "";
Random rand = new Random();//生成随机数
for(int a = 0; a < 8; a++){
dhm += rand.nextInt(10);
}
return dhm;
}