216 lines
4.5 KiB
Go
216 lines
4.5 KiB
Go
package idgenerator
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/bwmarrin/snowflake"
|
|
)
|
|
|
|
// With default settings, this snowflake generator should be sufficiently fast enough
|
|
// on most systems to generate 4096 unique ID's per millisecond. This is the maximum
|
|
// that the snowflake ID format supports. That is, around 243-244 nanoseconds per operation.
|
|
|
|
// 业务node, node ∈ [0, 1023]
|
|
const (
|
|
NodeMin = 0 // 最小node 包括
|
|
NodeMax = 1023 // 最大node 包括
|
|
)
|
|
|
|
const (
|
|
_ = iota
|
|
NodeMaterial // node 素材(商品)
|
|
NodeCatalog // node 分类
|
|
NodeOrder // node 订单
|
|
NodeBanner // node banner
|
|
NodeLogin // node login
|
|
NodeToken // node token
|
|
NodeAccount // node account
|
|
NodeVeriCode // node vericode
|
|
NodeMember // node 用户id
|
|
NodeProduct // node 商品
|
|
NodeMoment // node 动态
|
|
NodeFootPrint // node 足迹
|
|
NodeThumbsUp // node 点赞
|
|
NodeAccountRelation // node 用户关系
|
|
NodeStreamer // node 主播
|
|
NodeFeedback // node 意见反馈
|
|
NodeCallHistory // node 通话记录
|
|
NodeStreamerLink // node 主播链接
|
|
NodeUserWxAddCheck // node 用户微信添加审核
|
|
NodeRealNameAuthentication // node 实名认证
|
|
NodeContactCustomerService // node 联系客服
|
|
NodeImageAudit // node 图像审核
|
|
NodeCoinOrder // node 金币订单
|
|
NodeImageAuditTask // node 图像审核任务
|
|
NodeTextAudit // node 文字审核
|
|
NodeTextAuditTask // node 文字审核任务
|
|
)
|
|
|
|
func GenIdInt64(node int64) (int64, error) {
|
|
if node < NodeMin || node > NodeMax {
|
|
return -1, errors.New("node number must include [0, 1023]")
|
|
}
|
|
|
|
n, err := snowflake.NewNode(node)
|
|
if err != nil {
|
|
return -1, err
|
|
}
|
|
return n.Generate().Int64(), nil
|
|
}
|
|
|
|
func GenIdString(node int64) (string, error) {
|
|
if node < NodeMin || node > NodeMax {
|
|
return "", errors.New("node number must include [0, 1023]")
|
|
}
|
|
|
|
n, err := snowflake.NewNode(node)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return n.Generate().String(), nil
|
|
}
|
|
|
|
// 商品
|
|
func GenProductId() string {
|
|
id, _ := GenIdString(NodeProduct)
|
|
return id
|
|
}
|
|
|
|
// 订单
|
|
func GenOrderId() string {
|
|
id, _ := GenIdString(NodeOrder)
|
|
return id
|
|
}
|
|
|
|
// 金币订单
|
|
func GenCoinOrderId() string {
|
|
id, _ := GenIdString(NodeCoinOrder)
|
|
return id
|
|
}
|
|
|
|
// banner
|
|
func GenBannerId() int64 {
|
|
id, _ := GenIdInt64(NodeBanner)
|
|
return id
|
|
}
|
|
|
|
// login
|
|
func GenLoginId() int64 {
|
|
id, _ := GenIdInt64(NodeLogin)
|
|
return id
|
|
}
|
|
|
|
// token
|
|
func GenTokenId() int64 {
|
|
id, _ := GenIdInt64(NodeToken)
|
|
return id
|
|
}
|
|
|
|
// account
|
|
func GenAccountId() int64 {
|
|
id, _ := GenIdInt64(NodeAccount)
|
|
return id
|
|
}
|
|
|
|
// vericode
|
|
func GenVeriCodeId() int64 {
|
|
id, _ := GenIdInt64(NodeVeriCode)
|
|
return id
|
|
}
|
|
|
|
// catalog
|
|
func GenCatalogId() int64 {
|
|
id, _ := GenIdInt64(NodeCatalog)
|
|
return id
|
|
}
|
|
|
|
// moment
|
|
func GenMomentId() int64 {
|
|
id, _ := GenIdInt64(NodeMoment)
|
|
return id
|
|
}
|
|
|
|
// footprint
|
|
func GenFootPrintId() int64 {
|
|
id, _ := GenIdInt64(NodeFootPrint)
|
|
return id
|
|
}
|
|
|
|
// thumbs_up
|
|
func GenThumbsUpId() int64 {
|
|
id, _ := GenIdInt64(NodeThumbsUp)
|
|
return id
|
|
}
|
|
|
|
// account_relation
|
|
func GenAccountRelationId() int64 {
|
|
id, _ := GenIdInt64(NodeAccountRelation)
|
|
return id
|
|
}
|
|
|
|
// streamer
|
|
func GenStreamerId() int64 {
|
|
id, _ := GenIdInt64(NodeStreamer)
|
|
return id
|
|
}
|
|
|
|
// feedback
|
|
func GenFeedbackId() int64 {
|
|
id, _ := GenIdInt64(NodeFeedback)
|
|
return id
|
|
}
|
|
|
|
// callhistory
|
|
func GenCallHistoryId() int64 {
|
|
id, _ := GenIdInt64(NodeCallHistory)
|
|
return id
|
|
}
|
|
|
|
// streamerlink
|
|
func GenStreamerLinkId() int64 {
|
|
id, _ := GenIdInt64(NodeStreamerLink)
|
|
return id
|
|
}
|
|
|
|
// userwxaddcheck
|
|
func GenUserWxAddCheckId() int64 {
|
|
id, _ := GenIdInt64(NodeUserWxAddCheck)
|
|
return id
|
|
}
|
|
|
|
// realname_authentication
|
|
func GenRealNameAuthenticationId() int64 {
|
|
id, _ := GenIdInt64(NodeRealNameAuthentication)
|
|
return id
|
|
}
|
|
|
|
// contact_customer_service
|
|
func GenContactCustomerServiceId() int64 {
|
|
id, _ := GenIdInt64(NodeContactCustomerService)
|
|
return id
|
|
}
|
|
|
|
// // imageaudit
|
|
// func GenImageAuditId() string {
|
|
// id, _ := GenIdString(NodeImageAudit)
|
|
// return id
|
|
// }
|
|
|
|
// // imageaudittask
|
|
// func GenImageAuditTaskId() string {
|
|
// id, _ := GenIdString(NodeImageAuditTask)
|
|
// return id
|
|
// }
|
|
|
|
// // textaudit
|
|
// func GenTextAuditId() string {
|
|
// id, _ := GenIdString(NodeTextAudit)
|
|
// return id
|
|
// }
|
|
|
|
// // textaudittask
|
|
// func GenTextAuditTaskId() string {
|
|
// id, _ := GenIdString(NodeTextAuditTask)
|
|
// return id
|
|
// }
|