From 9af148d83876b5d20dcfecce14ab0d2f19887bf0 Mon Sep 17 00:00:00 2001 From: zengxiaobo Date: Thu, 10 Oct 2024 11:07:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20RedisIdWorker=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原因 RedisIdWorker增加方法 修改 RedisIdWorker增加方法 --- .../redis/support/RedisIdWorker.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) 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"); + } }