|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package svc
-
- import (
- "applet/app/db"
- "code.fnuoos.com/EggPlanet/egg_models.git/src/implement"
- "math/rand"
- "unicode"
- )
-
- func ReturnCode(l, types, num int) string {
- if num > 5 {
- return ""
- }
- //循环3次判断是否存在该邀请码
- var code string
- var (
- codes []string
- )
- for i := 0; i < 3; i++ {
- oneCode := GetRandomString(l, types)
- codes = append(codes, oneCode)
- }
-
- //判断是不是存在邀请码了
- userDb := implement.NewUserDb(db.Db)
- tmp, _ := userDb.UserFindByInviteCodes(codes...)
- //判断自定义是不是存在邀请码了
- customTmp, _ := userDb.UserFindByCustomInviteCodes(codes...)
-
- //循环生成的邀请码 判断tmp里有没有这个邀请码 如果邀请码没有就赋值 再判断是否存在 存在就清空
- for _, v := range codes {
- if code != "" { //如果存在并且数据库没有就跳过
- continue
- }
- code = v
- for _, v1 := range *tmp {
- //如果存在就清空
- if v1.SystemInviteCode == v {
- code = ""
- }
- }
- for _, v1 := range *customTmp {
- //如果存在就清空
- if v1.CustomInviteCode == v {
- code = ""
- }
- }
- }
- //如果都没有就继续加一位继续查
- if code == "" {
- return ReturnCode(l+1, types, num+1)
- }
- return code
- }
-
- // 随机生成指定位数的大写字母和数字的组合
- func GetRandomString(l, isLetter int) string {
- str := "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- if isLetter != 1 {
- str = "0123456789"
- }
- strs := []rune(str)
- result := make([]rune, l)
- for i := range result {
- result[i] = strs[rand.Intn(len(strs))]
- }
- if IsLetter(string(result)) && isLetter == 1 {
- return GetRandomString(l, isLetter)
- }
- return string(result)
- }
-
- func IsLetter(s string) bool {
- for _, r := range s {
- if !unicode.IsLetter(r) {
- return false
- }
- }
- return true
- }
|