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 }