common.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package utils
  2. import (
  3. "crypto/md5"
  4. "encoding/hex"
  5. "math/rand"
  6. "regexp"
  7. "strconv"
  8. "strings"
  9. "time"
  10. )
  11. // 随机种子
  12. var rnd = rand.New(rand.NewSource(time.Now().UnixNano()))
  13. func MD5(data string) string {
  14. m := md5.Sum([]byte(data))
  15. return hex.EncodeToString(m[:])
  16. }
  17. func CheckPwd(pwd string) bool {
  18. compile := `([0-9a-z]+){6,12}|(a-z0-9]+){6,12}`
  19. reg := regexp.MustCompile(compile)
  20. flag := reg.MatchString(pwd)
  21. return flag
  22. }
  23. // 校验邮箱格式
  24. func ValidateEmailFormatat(email string) bool {
  25. reg := regexp.MustCompile(RegularEmail)
  26. return reg.MatchString(email)
  27. }
  28. // 验证是否是手机号
  29. func ValidateMobileFormatat(mobileNum string) bool {
  30. reg := regexp.MustCompile(RegularMobile)
  31. return reg.MatchString(mobileNum)
  32. }
  33. // 计算分页起始页
  34. func StartIndex(page, pagesize int) int {
  35. if page > 1 {
  36. return (page - 1) * pagesize
  37. }
  38. return 0
  39. }
  40. // GetLikeKeywordPars 获取sql查询中的参数切片
  41. func GetLikeKeywordPars(pars []interface{}, keyword string, num int) (newPars []interface{}) {
  42. newPars = pars
  43. if newPars == nil {
  44. newPars = make([]interface{}, 0)
  45. }
  46. for i := 1; i <= num; i++ {
  47. newPars = append(newPars, `%`+keyword+`%`)
  48. }
  49. return
  50. }
  51. func StringsToJSON(str string) string {
  52. rs := []rune(str)
  53. jsons := ""
  54. for _, r := range rs {
  55. rint := int(r)
  56. if rint < 128 {
  57. jsons += string(r)
  58. } else {
  59. jsons += "\\u" + strconv.FormatInt(int64(rint), 16) // json
  60. }
  61. }
  62. return jsons
  63. }
  64. // 数据没有记录
  65. func ErrNoRow() string {
  66. return "<QuerySeter> no row found"
  67. }
  68. func GetRandStringNoSpecialChar(size int) string {
  69. allLetterDigit := []string{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
  70. randomSb := ""
  71. digitSize := len(allLetterDigit)
  72. for i := 0; i < size; i++ {
  73. randomSb += allLetterDigit[rnd.Intn(digitSize)]
  74. }
  75. return randomSb
  76. }
  77. func GetOrmReplaceHolder(num int) string {
  78. var stringBuffer strings.Builder
  79. for i := 0; i < num; i++ {
  80. stringBuffer.WriteString("?")
  81. if i != num-1 {
  82. stringBuffer.WriteString(",")
  83. }
  84. }
  85. return stringBuffer.String()
  86. }