package com.it.rattan.monisuo.util;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.atomic.AtomicLong;

/**
 * 订单号生成工具
 */
public class OrderNoUtil {

    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
    private static final AtomicLong SEQUENCE = new AtomicLong(0);

    /**
     * 生成订单号
     * 格式: 前缀 + 时间戳 + 6位序列号
     */
    public static String generate(String prefix) {
        LocalDateTime now = LocalDateTime.now();
        String timestamp = now.format(FORMATTER);
        long seq = SEQUENCE.getAndIncrement() % 1000000;
        return prefix + timestamp + String.format("%06d", seq);
    }

    /**
     * 生成交易订单号
     */
    public static String tradeOrderNo() {
        return generate("T");
    }

    /**
     * 生成充提订单号
     */
    public static String fundOrderNo() {
        return generate("F");
    }

    /**
     * 生成流水号
     */
    public static String flowNo() {
        return generate("L");
    }
}
