pcm-coordinator/pkg/utils/snowflake.go

49 lines
1.1 KiB
Go

/*
Copyright (c) [2023] [pcm]
[pcm-coordinator] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
package utils
import (
"github.com/bwmarrin/snowflake"
"github.com/zeromicro/go-zero/core/logx"
)
var node *snowflake.Node
func InitSnowflake(machineID int64) (err error) {
node, err = snowflake.NewNode(machineID)
if err != nil {
logx.Errorf("snowflake Init error : %s", err)
return
}
return
}
// GenSnowflakeID 生成雪花算法id
// machineId 工作id
func GenSnowflakeID() int64 {
return node.Generate().Int64()
}
// GenSnowflakeIDStr 工作id
func GenSnowflakeIDStr() string {
return node.Generate().String()
}
// GenSnowflakeIDStr 工作id
func GenSnowflakeIDUint() uint {
return uint(node.Generate().Int64())
}