diff --git a/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java b/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java index 17db582c..f0c5f1d4 100644 --- a/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java +++ b/win-framework/win-spring-boot-starter-redis/src/main/java/com/win/framework/redis/util/RedisCache.java @@ -249,7 +249,7 @@ public class RedisCache { public Long incr(String key, long liveTime) { ValueOperations ops = redisTemplate.opsForValue(); Long increment = ops.increment(key, 1); - if ((null == increment || increment.longValue() == 0) && liveTime > 0) { + if (increment != null && increment != 0 && liveTime > 0) { expire(key, liveTime); } return increment; diff --git a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java index b2ec6db0..2963d900 100644 --- a/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java +++ b/win-module-system/win-module-system-biz/src/main/java/com/win/module/system/service/serialnumber/SerialNumberServiceImpl.java @@ -124,23 +124,18 @@ public class SerialNumberServiceImpl implements SerialNumberService { LocalDateTime midnight = LocalDateTime.now().plusYears(1).plusMonths(1).plusDays(1).withHour(0).withMinute(0).withSecond(0).withNano(1); millMinutes = ChronoUnit.YEARS.between(LocalDateTime.now(), midnight); } - boolean flag = true; - String code; - do { - StringBuilder sb = new StringBuilder(); - Long increment = redisCache.incr(encodedRule.getRuleCode() + pattern, millMinutes); - sb.append(encodedRule.getPrefix()); - sb.append(pattern); - sb.append(encodedRule.getSeparator()); - String incrementStr = increment.toString(); - if (incrementStr.length() <= encodedRule.getLength()) { - sb.append(String.format("%0" + encodedRule.getLength() + "d", increment)); - } else { - throw exception(SERIAL_NUMBER_NOT_ENOUGH); - } - code = sb.toString(); - } while (flag); - return code; + StringBuilder code = new StringBuilder(); + Long increment = redisCache.incr(encodedRule.getRuleCode() + pattern, millMinutes); + code.append(encodedRule.getPrefix()); + code.append(pattern); + code.append(encodedRule.getSeparator()); + String incrementStr = increment.toString(); + if (incrementStr.length() <= encodedRule.getLength()) { + code.append(String.format("%0" + encodedRule.getLength() + "d", increment)); + } else { + throw exception(SERIAL_NUMBER_NOT_ENOUGH); + } + return code.toString(); } }