util.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package utils
  2. import (
  3. "crypto/md5"
  4. "encoding/hex"
  5. "fmt"
  6. "os"
  7. "path/filepath"
  8. "strconv"
  9. "strings"
  10. uuid "github.com/satori/go.uuid"
  11. )
  12. // Md5 md5加密算法
  13. func Md5(s string) string {
  14. h := md5.New()
  15. h.Write([]byte(s))
  16. cipherStr := h.Sum(nil)
  17. return fmt.Sprintf("%s", hex.EncodeToString(cipherStr))
  18. }
  19. // CreateIfNotExist 创建目录
  20. func CreateIfNotExist(filename string) error {
  21. dir := filepath.Dir(filename)
  22. if dir != "" {
  23. exists, _ := Exists(dir)
  24. if !exists {
  25. err := os.MkdirAll(dir, os.ModePerm)
  26. if err != nil {
  27. return err
  28. }
  29. }
  30. }
  31. return nil
  32. }
  33. // Exists ...
  34. func Exists(filename string) (bool, error) {
  35. exists := true
  36. _, err := os.Stat(filename)
  37. if err != nil {
  38. if os.IsNotExist(err) {
  39. exists = false
  40. }
  41. }
  42. return exists, err
  43. }
  44. // UUID uuid
  45. func UUID() string {
  46. s := uuid.NewV4()
  47. return s.String()
  48. }
  49. // CheckString 字符串比较
  50. func CheckString(target string, value string, operator int) bool {
  51. fmt.Printf("字符串比较:target:%s,value:%s,operator:%d\n", target, value, operator)
  52. switch operator {
  53. case 1:
  54. return target == value
  55. case 2:
  56. return target != value
  57. case 3:
  58. return strings.Contains(value, target)
  59. case 4:
  60. return !strings.Contains(value, target)
  61. }
  62. return false
  63. }
  64. // CheckInt 数值比较
  65. func CheckInt(target, value, operator int) bool {
  66. fmt.Printf("数值比较:target:%d,value:%d,operator:%d\n", target, value, operator)
  67. switch operator {
  68. case 1:
  69. return value > target
  70. case 2:
  71. return value >= target
  72. case 3:
  73. return value == target
  74. case 4:
  75. return value <= target
  76. case 5:
  77. return value < target
  78. case 6:
  79. return value != target
  80. }
  81. return false
  82. }
  83. // CheckValue 目标值验证
  84. func CheckValue(target string, value interface{}, fieldType, operator int) bool {
  85. var strValue string
  86. var intValue int
  87. switch value.(type) {
  88. case string:
  89. strValue = value.(string)
  90. if fieldType == 2 {
  91. intValue, _ = strconv.Atoi(target)
  92. }
  93. case int:
  94. intValue = value.(int)
  95. case float64:
  96. floatValue := value.(float64)
  97. intValue = int(floatValue)
  98. default:
  99. break
  100. }
  101. switch fieldType {
  102. case 1:
  103. if strValue != "" {
  104. return CheckString(target, strValue, operator)
  105. }
  106. case 2:
  107. tInt, _ := strconv.Atoi(target)
  108. return CheckInt(tInt, intValue, operator)
  109. }
  110. return false
  111. }