uuid.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package util
  2. import (
  3. "github.com/GUAIK-ORG/go-snowflake/snowflake"
  4. "github.com/google/uuid"
  5. "github.com/issue9/conv"
  6. "math/rand"
  7. "time"
  8. "youngee_b_api/app/dao"
  9. "youngee_b_api/app/entity"
  10. "youngee_b_api/util"
  11. )
  12. var snowflakeInstance *snowflake.Snowflake
  13. func init() {
  14. s, err := snowflake.NewSnowflake(int64(0), int64(0))
  15. if err != nil {
  16. panic(err)
  17. }
  18. snowflakeInstance = s
  19. }
  20. func GetUUID() string {
  21. return uuid.New().String()
  22. }
  23. func GetSnowflakeID() int64 {
  24. return snowflakeInstance.NextVal()
  25. }
  26. func GetSelectionID() string {
  27. rand.Seed(time.Now().UnixNano())
  28. td := conv.MustString(time.Now().Day())
  29. for {
  30. if len(td) == 3 {
  31. break
  32. }
  33. td = "0" + td
  34. }
  35. selectionId := conv.MustString(time.Now().Year())[2:] + td + conv.MustString(rand.Intn(100000-10000)+10000)
  36. return selectionId
  37. }
  38. func GetProjectID() string {
  39. rand.Seed(time.Now().UnixNano())
  40. td := conv.MustString(time.Now().Day())
  41. for {
  42. if len(td) == 3 {
  43. break
  44. }
  45. td = "0" + td
  46. }
  47. selectionId := conv.MustString(time.Now().Year())[2:] + td + conv.MustString(rand.Intn(100000-10000)+10000)
  48. return selectionId
  49. }
  50. func MakeRechargeId(EnterpriseID string) string {
  51. // 1、年月日
  52. year := time.Now().Year()
  53. month := time.Now().Month()
  54. day := time.Now().Day()
  55. yearData, _ := util.GetDayNum("year", year)
  56. monthData, _ := util.GetDayNum("month", int(month))
  57. dayData, _ := util.GetDayNum("day", day)
  58. sum := 0
  59. sum += dayData + monthData
  60. leap := 0
  61. if (yearData%400 == 0) || ((yearData%4 == 0) && (yearData%100 != 0)) {
  62. leap = 1
  63. }
  64. if (leap == 1) && (monthData > 2) {
  65. sum += 1
  66. }
  67. last := ""
  68. rechargeIdPrefix := "8" + EnterpriseID[len(EnterpriseID)-2:] + conv.MustString(sum)
  69. var rechargeIdLast string
  70. err := dao.Db.Model(entity.RechargeRecord{}).Select("recharge_id").Where("recharge_id like ?", rechargeIdPrefix+"%").
  71. Last(&rechargeIdLast).Error
  72. if err != nil {
  73. last = "0"
  74. } else {
  75. last = rechargeIdLast[len(rechargeIdLast)-2:]
  76. }
  77. var lastInt int
  78. lastInt = conv.MustInt(last)
  79. if lastInt+1 < 10 {
  80. last = "0" + conv.MustString(conv.MustInt(last)+1)
  81. } else {
  82. last = conv.MustString(conv.MustInt(last) + 1)
  83. }
  84. return rechargeIdPrefix + last
  85. }