From 3879d0b53dfd2dc077f427a6a3ac2eea2df288ca Mon Sep 17 00:00:00 2001 From: liuchen864 <23082234@qq.com> Date: Thu, 26 Oct 2023 11:17:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=94=9F=E6=88=90=E5=8D=95?= =?UTF-8?q?=E5=8F=B7bug=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../win/framework/redis/util/RedisCache.java | 2 +- .../serialnumber/SerialNumberServiceImpl.java | 29 ++++++++----------- 2 files changed, 13 insertions(+), 18 deletions(-) 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(); } }