sid.go 639 B

1234567891011121314151617181920212223242526272829303132
  1. package sid
  2. import (
  3. "city_chips/pkg/helper/convert"
  4. "github.com/pkg/errors"
  5. "github.com/sony/sonyflake"
  6. )
  7. type Sid struct {
  8. sf *sonyflake.Sonyflake
  9. }
  10. func NewSid() *Sid {
  11. sf := sonyflake.NewSonyflake(sonyflake.Settings{})
  12. if sf == nil {
  13. panic("sonyflake not created")
  14. }
  15. return &Sid{sf}
  16. }
  17. func (s Sid) GenString() (string, error) {
  18. // 生成分布式ID
  19. id, err := s.sf.NextID()
  20. if err != nil {
  21. return "", errors.Wrap(err, "failed to generate sonyflake ID")
  22. }
  23. // 将ID转换为字符串
  24. return convert.IntToBase62(int(id)), nil
  25. }
  26. func (s Sid) GenUint64() (uint64, error) {
  27. // 生成分布式ID
  28. return s.sf.NextID()
  29. }