package com.sckw.goods.common;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @desc:
 * @author: Lt
 * @date: 2024-04-26
 */
public class ProductCodeGenerator {
    // 序列号，用于确保同一毫秒内产生的编号不同
    private static final AtomicInteger sequence = new AtomicInteger(0);
    // 时间戳格式
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");

    public static synchronized String generateCode() {
        // 获取当前时间戳，格式为：20230101120000
        String timestamp = dateFormat.format(new Date());
        // 生成随机数，这里为了示例简单起见，使用随机数的一个片段
        String randomPart = String.valueOf((int) (Math.random() * 9000) + 1000); // 生成1000-9999的随机数
        // 生成序列号，确保在同一毫秒内序列号是递增的
        int currentSequence = sequence.incrementAndGet();
        // 序列号采用4位数字，不足的前面补0
        String sequencePart = String.format("%04d", currentSequence);
        // 组合成为最终的商品编号
        return "G" + timestamp + randomPart + sequencePart;
    }
}
