package utils import ( "crypto/md5" "encoding/hex" "math/rand" "regexp" "strconv" "strings" "time" ) // 随机种子 var rnd = rand.New(rand.NewSource(time.Now().UnixNano())) func MD5(data string) string { m := md5.Sum([]byte(data)) return hex.EncodeToString(m[:]) } func CheckPwd(pwd string) bool { compile := `([0-9a-z]+){6,12}|(a-z0-9]+){6,12}` reg := regexp.MustCompile(compile) flag := reg.MatchString(pwd) return flag } // 校验邮箱格式 func ValidateEmailFormatat(email string) bool { reg := regexp.MustCompile(RegularEmail) return reg.MatchString(email) } // 验证是否是手机号 func ValidateMobileFormatat(mobileNum string) bool { reg := regexp.MustCompile(RegularMobile) return reg.MatchString(mobileNum) } // 计算分页起始页 func StartIndex(page, pagesize int) int { if page > 1 { return (page - 1) * pagesize } return 0 } // GetLikeKeywordPars 获取sql查询中的参数切片 func GetLikeKeywordPars(pars []interface{}, keyword string, num int) (newPars []interface{}) { newPars = pars if newPars == nil { newPars = make([]interface{}, 0) } for i := 1; i <= num; i++ { newPars = append(newPars, `%`+keyword+`%`) } return } func StringsToJSON(str string) string { rs := []rune(str) jsons := "" for _, r := range rs { rint := int(r) if rint < 128 { jsons += string(r) } else { jsons += "\\u" + strconv.FormatInt(int64(rint), 16) // json } } return jsons } // 数据没有记录 func ErrNoRow() string { return " no row found" } func GetRandStringNoSpecialChar(size int) string { 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"} randomSb := "" digitSize := len(allLetterDigit) for i := 0; i < size; i++ { randomSb += allLetterDigit[rnd.Intn(digitSize)] } return randomSb } func GetOrmReplaceHolder(num int) string { var stringBuffer strings.Builder for i := 0; i < num; i++ { stringBuffer.WriteString("?") if i != num-1 { stringBuffer.WriteString(",") } } return stringBuffer.String() } func Unique[T comparable](slice []T) []T { seen := make(map[T]struct{}) var unique []T for _, v := range slice { if _, exists := seen[v]; !exists { unique = append(unique, v) seen[v] = struct{}{} } } return unique }