snowflake.go 692 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package util
  2. import (
  3. "fmt"
  4. "github.com/bwmarrin/snowflake"
  5. "github.com/spf13/viper"
  6. "time"
  7. )
  8. var node *snowflake.Node
  9. func init() {
  10. tie := viper.GetString("time.time")
  11. if err := Init(tie, 1); err != nil {
  12. fmt.Println("Init() failed, err = ", err)
  13. return
  14. }
  15. }
  16. func Init(startTime string, machineID int64) (err error) {
  17. var st time.Time
  18. // 格式化 1月2号下午3时4分5秒 2006年
  19. st, err = time.Parse("2006-01-02", startTime)
  20. if err != nil {
  21. fmt.Println(err)
  22. return
  23. }
  24. snowflake.Epoch = st.UnixNano() / 1e6
  25. node, err = snowflake.NewNode(machineID)
  26. if err != nil {
  27. fmt.Println(err)
  28. return
  29. }
  30. return
  31. }
  32. func GenID() int64 {
  33. return node.Generate().Int64()
  34. }