30 lines
816 B
Go
30 lines
816 B
Go
package help
|
||
|
||
import (
|
||
"math/rand"
|
||
"time"
|
||
|
||
"github.com/sqids/sqids-go"
|
||
)
|
||
|
||
var sqlids_sqlids *sqids.Sqids
|
||
|
||
func init() {
|
||
// 设置随机数种子
|
||
rand.NewSource(time.Now().UnixNano())
|
||
|
||
sqlids_sqlids, _ = sqids.New()
|
||
}
|
||
|
||
// 保证每秒,id唯一。同一秒内,由随机数区分,可能出现重复。
|
||
// 注: 此微信用户名,只是展示名称,不能作为用户唯一标识使用,后期用户也可以修改。所有并没有严格唯一性要求,只要不容易重复即可。
|
||
func GetUniqueIdEachSecond() string {
|
||
// 生成一个0到1000之间的随机数
|
||
randomNum := rand.Intn(1001)
|
||
// 获取当前时间戳,精度秒即可。
|
||
ts := time.Now().Unix()
|
||
// 根据整数数组,生成唯一的短id
|
||
id, _ := sqlids_sqlids.Encode([]uint64{uint64(ts), uint64(randomNum)})
|
||
return id
|
||
}
|