uuid.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 GetSelectionID() string {
  21. rand.Seed(time.Now().UnixNano())
  22. td := conv.MustString(time.Now().Day())
  23. for {
  24. if len(td) == 3 {
  25. break
  26. }
  27. td = "0" + td
  28. }
  29. selectionId := conv.MustString(time.Now().Year())[2:] + td + conv.MustString(rand.Intn(100000-10000)+10000)
  30. return selectionId
  31. }
  32. func GetProjectID() string {
  33. rand.Seed(time.Now().UnixNano())
  34. td := conv.MustString(time.Now().Day())
  35. for {
  36. if len(td) == 3 {
  37. break
  38. }
  39. td = "0" + td
  40. }
  41. selectionId := conv.MustString(time.Now().Year())[2:] + td + conv.MustString(rand.Intn(100000-10000)+10000)
  42. return selectionId
  43. }
  44. func MakeRechargeId(enterpriseID string) string {
  45. // 1、年月日
  46. year := time.Now().Year()
  47. month := time.Now().Month()
  48. day := time.Now().Day()
  49. yearData, _ := util.GetDayNum("year", year)
  50. monthData, _ := util.GetDayNum("month", int(month))
  51. dayData, _ := util.GetDayNum("day", day)
  52. sum := 0
  53. sum += dayData + monthData
  54. leap := 0
  55. if (yearData%400 == 0) || ((yearData%4 == 0) && (yearData%100 != 0)) {
  56. leap = 1
  57. }
  58. if (leap == 1) && (monthData > 2) {
  59. sum += 1
  60. }
  61. last := ""
  62. rechargeIdPrefix := "8" + enterpriseID[len(enterpriseID)-2:] + conv.MustString(sum)
  63. var rechargeIdLast string
  64. err := dao.Db.Model(entity.RechargeRecord{}).Select("recharge_id").Where("recharge_id like ?", rechargeIdPrefix+"%").
  65. Last(&rechargeIdLast).Error
  66. if err != nil {
  67. last = "0"
  68. } else {
  69. last = rechargeIdLast[len(rechargeIdLast)-2:]
  70. }
  71. var lastInt int
  72. lastInt = conv.MustInt(last)
  73. if lastInt+1 < 10 {
  74. last = "0" + conv.MustString(conv.MustInt(last)+1)
  75. } else {
  76. last = conv.MustString(conv.MustInt(last) + 1)
  77. }
  78. return rechargeIdPrefix + last
  79. }
  80. func GenerateDateRelatedUUID(num int64) string {
  81. date := time.Now().Format("20060102") // 获取当前日期
  82. u := uuid.New()
  83. return date + u.String()[:(num-8)]
  84. }
  85. func GenerateUUID(num int) string {
  86. u := uuid.New()
  87. return u.String()[:num]
  88. }