package com.sundot.airport.exam.common;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class IdUtils {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    // 生成带指定前缀的唯一编号
    public String generateId(String prefix) {
        // 获取当前日期作为基础部分（格式：YYMMDD）
        String datePart = new SimpleDateFormat("yyMMdd").format(new Date());

        // 使用Redis递增计数器，key为prefix+日期
        Long count = stringRedisTemplate.opsForValue().increment(prefix + ":" + datePart);

        // 如果计数器不存在，则初始化为1
        if (count == null) {
            stringRedisTemplate.opsForValue().set(prefix + ":" + datePart, "1");
            count = 1L;
        }

        // 组装编号（前缀 + 日期 + 6位自增数，不足补0）
        return prefix + datePart + String.format("%06d", count);
    }
}

