1234567891011121314151617181920212223242526272829303132 |
- package sid
- import (
- "city_chips/pkg/helper/convert"
- "github.com/pkg/errors"
- "github.com/sony/sonyflake"
- )
- type Sid struct {
- sf *sonyflake.Sonyflake
- }
- func NewSid() *Sid {
- sf := sonyflake.NewSonyflake(sonyflake.Settings{})
- if sf == nil {
- panic("sonyflake not created")
- }
- return &Sid{sf}
- }
- func (s Sid) GenString() (string, error) {
- // 生成分布式ID
- id, err := s.sf.NextID()
- if err != nil {
- return "", errors.Wrap(err, "failed to generate sonyflake ID")
- }
- // 将ID转换为字符串
- return convert.IntToBase62(int(id)), nil
- }
- func (s Sid) GenUint64() (uint64, error) {
- // 生成分布式ID
- return s.sf.NextID()
- }
|