diff --git a/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisIdWorker.java b/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisIdWorker.java index 8f56459..344b300 100644 --- a/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisIdWorker.java +++ b/redis-support-lib/src/main/java/cn/axzo/foundation/redis/support/RedisIdWorker.java @@ -3,6 +3,7 @@ package cn.axzo.foundation.redis.support; import cn.axzo.foundation.web.support.AppRuntime; import cn.axzo.foundation.web.support.utils.KeyBuilder; import lombok.Builder; +import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.RedisTemplate; import java.time.LocalDate; @@ -17,7 +18,8 @@ public class RedisIdWorker { private static final long BEGIN_TIMESTAMP = 1640995200L; private static final long COUNT_BITS = 32; - private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd"); + private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); private RedisTemplate redisTemplate; private AppRuntime appRuntime; @@ -50,8 +52,21 @@ public class RedisIdWorker { * 根据时间+redis产生当天自增id */ public long getDailyNextId(String prefix, LocalDate date) { - String key = KeyBuilder.build(appRuntime, prefix, "icr", DATE_TIME_FORMATTER.format(date)); + String key = KeyBuilder.build(appRuntime, prefix, "icr", DATE_FORMATTER.format(date)); Long count = redisTemplate.opsForValue().increment(key); return count; } + + /** + * 返回 prefix+yyyyMMddHHmmss+递增id + * + * @param prefix + * @param padSize + * @return + */ + public String getDailyNo(String prefix, int padSize) { + LocalDateTime now = LocalDateTime.now(); + long dailyNextId = getDailyNextId(prefix, now.toLocalDate()); + return prefix + DATE_TIME_FORMATTER.format(now) + StringUtils.leftPad(String.valueOf(dailyNextId), padSize, "0"); + } }