Files
exchange_go/common/helper/snowflake.go
2025-02-06 11:14:33 +08:00

51 lines
805 B
Go

package helper
import (
"strconv"
"sync"
extendConfig "go-admin/config"
"github.com/bwmarrin/snowflake"
log "github.com/go-admin-team/go-admin-core/logger"
)
// 全局雪花节点实例
var (
node *snowflake.Node
once sync.Once
)
func InitSnowflakeNode() error {
var err error
node, err = snowflake.NewNode(extendConfig.ExtConfig.ServiceId)
if err != nil {
return err
}
return nil
}
// 获取订单雪花id
func GetOrderNo() string {
if node == nil {
once.Do(func() {
if node == nil {
if err := InitSnowflakeNode(); err != nil {
log.Fatalf("初始化雪花算法节点失败: %v", err)
}
}
})
}
if node == nil {
log.Fatal("雪花算法节点未初始化")
}
orderID := node.Generate()
idStr := strconv.FormatInt(orderID.Int64(), 10)
return idStr
}