feat: RedisIdWorker增加方法

原因
    RedisIdWorker增加方法

修改
    RedisIdWorker增加方法
This commit is contained in:
zengxiaobo 2024-10-10 11:07:48 +08:00
parent de18b4af3f
commit 9af148d838

View File

@ -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");
}
}