diff --git a/utils/rand_code.go b/utils/rand_code.go new file mode 100644 index 0000000..4ca7184 --- /dev/null +++ b/utils/rand_code.go @@ -0,0 +1,23 @@ +package utils + +import ( + "crypto/md5" + "fmt" + "math/rand" + "time" +) + +const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +func GenerateInviteCode(userID uint) string { + rand.Seed(time.Now().UnixNano()) + // 拼接用户ID和随机数 + data := fmt.Sprintf("%d%d", userID, rand.Intn(1000000)) + hash := md5.Sum([]byte(data)) + code := "" + for i := 0; i < 6; i++ { + // 取哈希的前6位,每位映射到字符集 + code += string(charset[int(hash[i])%len(charset)]) + } + return code +}