util.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. switch operator {
  52. case 1:
  53. return target == value
  54. case 2:
  55. return target != value
  56. case 3:
  57. return strings.Contains(value, target)
  58. case 4:
  59. return !strings.Contains(value, target)
  60. }
  61. return false
  62. }
  63. // CheckInt 数值比较
  64. func CheckInt(target, value, operator int) bool {
  65. switch operator {
  66. case 1:
  67. return value > target
  68. case 2:
  69. return value >= target
  70. case 3:
  71. return value == target
  72. case 4:
  73. return value <= target
  74. case 5:
  75. return value < target
  76. case 6:
  77. return value != target
  78. }
  79. return false
  80. }
  81. // CheckValue 目标值验证
  82. func CheckValue(target string, value interface{}, fieldType, operator int) bool {
  83. var strValue string
  84. var intValue int
  85. switch value.(type) {
  86. case string:
  87. strValue = value.(string)
  88. case int:
  89. intValue = value.(int)
  90. case float64:
  91. floatValue := value.(float64)
  92. intValue = int(floatValue)
  93. default:
  94. break
  95. }
  96. switch fieldType {
  97. case 1:
  98. if strValue != "" {
  99. return CheckString(target, strValue, operator)
  100. }
  101. case 2:
  102. tInt, _ := strconv.Atoi(target)
  103. return CheckInt(tInt, intValue, operator)
  104. }
  105. return false
  106. }