snowflake.go 638 B

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