package uniqueid

import (
	"fmt"
	"time"
)

func GenOrderNo() string {
	/*
		支付宝订单号示例：1217752501201407033233368028
		分析可能格式：
		- 前14位：时间戳（年月日时分秒）20250112 151420
		- 中间6位：商户/业务标识
		- 最后8位：随机数或序列号
	*/

	now := time.Now()

	// 时间部分：年月日时分秒
	timePart := now.Format("20060102150405") // 14位

	// 业务标识：机器ID + 进程ID + 随机数
	machineID := 1
	pid := now.Nanosecond() % 1000
	businessPart := fmt.Sprintf("%02d%03d%01d", machineID, pid, now.Second()%10) // 6位

	// 随机部分：纳秒取模
	random1 := fmt.Sprintf("%04d", now.Nanosecond()%10000)
	random2 := fmt.Sprintf("%04d", (now.Nanosecond()/10000)%10000)

	return timePart + businessPart + random1 + random2
}
