规则:H+年+月+日+时+分+卡券类型+000000(最后六位为自然数增长加1)

public class xxxGenerator {

@Autowired
private IRedisService redisService;

/**
* @desc : xxx规则:H+年+月+日+时+分+类型+000000(最后六位为自然数增长加1)
**/
public String generator(TypeEnum type){
LocalDateTime nowTime = LocalDateTime.now();
StringBuffer sb = new StringBuffer();
sb.append("H");
sb.append(String.valueOf(nowTime.getYear()).substring(2,4));
sb.append(String.format("%02d",nowTime.getMonthValue()));
sb.append(String.format("%02d",nowTime.getDayOfMonth()));
sb.append(String.format("%02d",nowTime.getHour()));
sb.append(String.format("%02d",nowTime.getMinute()));
sb.append(couponType.getValue());

StringBuffer redisKey = new StringBuffer();
redisKey.append("H");
redisKey.append(nowTime.getYear());
redisKey.append(nowTime.getMonthValue());
redisKey.append(nowTime.getDayOfMonth());

LocalDateTime midnight = nowTime.plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
long seconds = ChronoUnit.SECONDS.between(nowTime, midnight);
sb.append(String.format("%06d",redisService.incr(redisKey.toString(),seconds)));
log.info("xxx号:{}",sb.toString());
return sb.toString();
}

public String next(TypeEnum type) {
// return UuidUtil.nextAsTextWithoutHyphen();
return generator(type);
}
}
原文地址:https://www.cnblogs.com/maohuidong/p/14005902.html