package com.sinata.rest.core.util;
|
|
import com.sinata.common.enums.EnumRedisKey;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.stereotype.Component;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
|
@Component
|
public class DailyIncrementIdGenerator {
|
private static final String DATE_FORMAT = "yyyyMMdd";
|
private static final int SEQUENCE_LENGTH = 4;
|
|
private final RedisTemplate<String, String> redisTemplate;
|
private final SimpleDateFormat dateFormat;
|
private final String key;
|
|
@Autowired
|
public DailyIncrementIdGenerator(RedisTemplate<String, String> redisTemplate) {
|
this.redisTemplate = redisTemplate;
|
this.dateFormat = new SimpleDateFormat(DATE_FORMAT);
|
this.key = EnumRedisKey.ORDER_ID_INDEX + ":" + dateFormat.format(new Date());
|
}
|
|
public String generateId() {
|
Long sequence = redisTemplate.opsForValue().increment(key, 1);
|
String sequenceStr = String.format("%0" + SEQUENCE_LENGTH + "d", sequence);
|
return dateFormat.format(new Date()) + sequenceStr;
|
}
|
}
|