update 新增发号器工具类方法

master
AprilWind 7 months ago
parent 05d5d9be2c
commit b726a91cdb

@ -1,165 +1,180 @@
package org.dromara.common.redis.utils; package org.dromara.common.redis.utils;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import org.dromara.common.core.utils.SpringUtils; import lombok.AccessLevel;
import org.dromara.common.core.utils.StringUtils; import lombok.NoArgsConstructor;
import lombok.AccessLevel; import org.dromara.common.core.utils.SpringUtils;
import lombok.NoArgsConstructor; import org.dromara.common.core.utils.StringUtils;
import org.redisson.api.RIdGenerator; import org.redisson.api.RIdGenerator;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import java.time.Duration; import java.time.Duration;
/** /**
* *
* *
* @author * @author
* @date 2024-12-10 * @date 2024-12-10
*/ */
@NoArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PRIVATE)
public class SequenceUtils { public class SequenceUtils {
/** /**
* *
*/ */
public static final Long DEFAULT_INIT_VALUE = 1L; public static final Long DEFAULT_INIT_VALUE = 1L;
/**
* /**
*/ *
public static final Long DEFAULT_STEP_VALUE = 1L; */
/** public static final Long DEFAULT_STEP_VALUE = 1L;
* -
*/ /**
public static final Duration DEFAULT_EXPIRE_TIME_DAY = Duration.ofDays(1); * -
/** */
* - public static final Duration DEFAULT_EXPIRE_TIME_DAY = Duration.ofDays(1);
*/
public static final Duration DEFAULT_EXPIRE_TIME_MINUTE = Duration.ofMinutes(1); /**
* -
/** */
* Redisson public static final Duration DEFAULT_EXPIRE_TIME_MINUTE = Duration.ofMinutes(1);
*/
private static final RedissonClient REDISSON_CLIENT = SpringUtils.getBean(RedissonClient.class); /**
* Redisson
/** */
* ID private static final RedissonClient REDISSON_CLIENT = SpringUtils.getBean(RedissonClient.class);
*
* @param key key /**
* @param expireTime * ID
* @param initValue ID *
* @param stepValue ID * @param key key
* @return ID * @param expireTime
*/ * @param initValue ID
private static RIdGenerator getIdGenerator(String key, Duration expireTime, Long initValue, Long stepValue) { * @param stepValue ID
if (initValue == null || initValue <= 0) { * @return ID
initValue = DEFAULT_INIT_VALUE; */
} private static RIdGenerator getIdGenerator(String key, Duration expireTime, Long initValue, Long stepValue) {
if (stepValue == null || stepValue <= 0) { if (initValue == null || initValue <= 0) {
stepValue = DEFAULT_STEP_VALUE; initValue = DEFAULT_INIT_VALUE;
} }
RIdGenerator idGenerator = REDISSON_CLIENT.getIdGenerator(key); if (stepValue == null || stepValue <= 0) {
// 设置初始值和步长 stepValue = DEFAULT_STEP_VALUE;
idGenerator.tryInit(initValue, stepValue); }
// 设置过期时间 RIdGenerator idGenerator = REDISSON_CLIENT.getIdGenerator(key);
idGenerator.expire(expireTime); // 设置初始值和步长
return idGenerator; idGenerator.tryInit(initValue, stepValue);
} // 设置过期时间
idGenerator.expire(expireTime);
/** return idGenerator;
* keyid }
*
* @param key key /**
* @param expireTime * keyid
* @param initValue ID *
* @param stepValue ID * @param key key
* @return id * @param expireTime
*/ * @param initValue ID
public static long nextId(String key, Duration expireTime, Long initValue, Long stepValue) { * @param stepValue ID
return getIdGenerator(key, expireTime, initValue, stepValue).nextId(); * @return id
} */
public static long nextId(String key, Duration expireTime, Long initValue, Long stepValue) {
/** return getIdGenerator(key, expireTime, initValue, stepValue).nextId();
* keyid }
*
* @param key key /**
* @param expireTime * keyid
* @param initValue ID *
* @param stepValue ID * @param key key
* @return id * @param expireTime
*/ * @param initValue ID
public static String nextIdStr(String key, Duration expireTime, Long initValue, Long stepValue) { * @param stepValue ID
return String.valueOf(nextId(key, expireTime, initValue, stepValue)); * @return id
} */
public static String nextIdStr(String key, Duration expireTime, Long initValue, Long stepValue) {
/** return String.valueOf(nextId(key, expireTime, initValue, stepValue));
* keyid (ID=1,ID=1) }
*
* @param key key /**
* @param expireTime * keyid (ID=1,ID=1)
* @return id *
*/ * @param key key
public static long nextId(String key, Duration expireTime) { * @param expireTime
return getIdGenerator(key, expireTime, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId(); * @return id
} */
public static long nextId(String key, Duration expireTime) {
/** return getIdGenerator(key, expireTime, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId();
* keyid (ID=1,ID=1) }
*
* @param key key /**
* @param expireTime * keyid (ID=1,ID=1)
* @return id *
*/ * @param key key
public static String nextIdStr(String key, Duration expireTime) { * @param expireTime
return String.valueOf(nextId(key, expireTime)); * @return id
} */
public static String nextIdStr(String key, Duration expireTime) {
/** return String.valueOf(nextId(key, expireTime));
* yyyyMMdd id }
*
* @return id /**
*/ * keyid (ID=1,ID=1)
public static String nextIdDate() { *
return nextIdDate(""); * @param key key
} * @param expireTime
* @param width 0
/** * @return id
* prefix + yyyyMMdd id */
* public static String nextPaddedIdStr(String key, Duration expireTime, Integer width) {
* @param prefix return StringUtils.leftPad(nextIdStr(key, expireTime), width, '0');
* @return id }
*/
public static String nextIdDate(String prefix) { /**
// 前缀+日期 构建 prefixKey * yyyyMMdd id
String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), DateUtil.format(DateUtil.date(), DatePattern.PURE_DATE_FORMATTER)); *
// 获取下一个id * @return id
long nextId = getIdGenerator(prefixKey, DEFAULT_EXPIRE_TIME_DAY, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId(); */
// 返回完整id public static String nextIdDate() {
return StringUtils.format("{}{}", prefixKey, nextId); return nextIdDate("");
} }
/** /**
* yyyyMMddHHmmss id * prefix + yyyyMMdd id
* *
* @return id * @param prefix
*/ * @return id
public static String nextIdDateTime() { */
return nextIdDateTime(""); public static String nextIdDate(String prefix) {
} // 前缀+日期 构建 prefixKey
String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), DateUtil.format(DateUtil.date(), DatePattern.PURE_DATE_FORMATTER));
/** // 获取下一个id
* prefix + yyyyMMddHHmmss id long nextId = getIdGenerator(prefixKey, DEFAULT_EXPIRE_TIME_DAY, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId();
* // 返回完整id
* @param prefix return StringUtils.format("{}{}", prefixKey, nextId);
* @return id }
*/
public static String nextIdDateTime(String prefix) { /**
// 前缀+日期时间 构建 prefixKey * yyyyMMddHHmmss id
String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_FORMATTER)); *
// 获取下一个id * @return id
long nextId = getIdGenerator(prefixKey, DEFAULT_EXPIRE_TIME_MINUTE, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId(); */
// 返回完整id public static String nextIdDateTime() {
return StringUtils.format("{}{}", prefixKey, nextId); return nextIdDateTime("");
} }
} /**
* prefix + yyyyMMddHHmmss id
*
* @param prefix
* @return id
*/
public static String nextIdDateTime(String prefix) {
// 前缀+日期时间 构建 prefixKey
String prefixKey = StringUtils.format("{}{}", StringUtils.blankToDefault(prefix, ""), DateUtil.format(DateUtil.date(), DatePattern.PURE_DATETIME_FORMATTER));
// 获取下一个id
long nextId = getIdGenerator(prefixKey, DEFAULT_EXPIRE_TIME_MINUTE, DEFAULT_INIT_VALUE, DEFAULT_STEP_VALUE).nextId();
// 返回完整id
return StringUtils.format("{}{}", prefixKey, nextId);
}
}

Loading…
Cancel
Save