package cc.iotkit.manager.config;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.data.redis.core.RedisTemplate;

public class TimestampIdentifierGenerator {

    /**
     * 生成一个8位的数字标识符，基于当前时间戳。
     * 注意：这种方法并不能保证绝对的唯一性，特别是在高并发的情况下。
     *
     * @return 一个8位的数字标识符。
     */
    public static String generateIdentifier(String key) {
        //利用redis进行自增ID
        RedisTemplate redisTemplate = SpringUtil.getBean("stringRedisTemplate");
        if (ObjectUtil.isEmpty(redisTemplate.opsForValue().get(key))) {
            // 获取当前日期并格式化为 yyyyMMdd
            // String formattedDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
            // 定义增量值
            long currentSeconds = System.currentTimeMillis() / 1000;

            long incrementValue = 10000000;
            // 拼接字符串
            String resultString = currentSeconds + String.format("%07d", incrementValue); // 确保增量值是7位数，前面补零
            // 将拼接后的字符串转换为 long 类型
            long result = Long.parseLong(resultString);

            // LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
            redisTemplate.opsForValue().increment(key, result);
            return redisTemplate.opsForValue().get(key).toString();
        } else {
            redisTemplate.opsForValue().increment(key);
            return redisTemplate.opsForValue().get(key).toString();
        }

    }

    public static String getIdCreateWorderNum() {
        return generateIdentifier("getIdCreateWorderNum");
    }

}
