package app import ( "net" "server/call" "server/common" "server/db" "server/modules/web/values" "strings" "github.com/go-redis/redis/v8" "github.com/liangdas/mqant/log" iptool "github.com/liangdas/mqant/utils/ip" "gorm.io/gorm" ) // VerifyCode 验证短信验证码 func (g *Gin) VerifyCode(reqContent, reqCode string) bool { code, err := db.Redis().GetString(common.GetRedisKeyCode(reqContent)) if err != nil && err != redis.Nil { log.Error("err:%v", err) g.Code = values.CodeRetry return false } if code != reqCode { g.Code = values.CodeCodeError return false } return true } // GetRemoteIP 获取玩家真实IP func (g *Gin) GetRemoteIP() string { ip := g.Context.GetHeader("X-Real-IP") if ip != "" { if !iptool.IsInnerIp(ip) { return ip } } ip = iptool.RealIP(g.Context.Request) if strings.Contains(ip, ":") { ip, _, _ = net.SplitHostPort(ip) } return ip } func (g *Gin) QueryUser(req values.CommonLogin) (user *common.PlayerDBInfo, isNew bool) { u := &common.PlayerDBInfo{ChannelID: g.Channel} if len(req.Phone) > 0 { u.Mobile = req.Phone } else { u.Openid = &req.OpenID } if err := db.Mysql().Get(u); err != nil && err != gorm.ErrRecordNotFound { g.Code = values.CodeRetry log.Error("err:%v", err) return } if req.DeviceID == "" { req.DeviceID = req.OpenID } // if req.Gpsadid == "" { // req.Gpsadid = req.DeviceID // } user = u if user.Id <= 0 { user.Nick = req.Nick user.Avatar = req.Avatar user.AccountType = req.AccountType user.ChannelID = g.Channel user.DeviceId = req.DeviceID user.ADID = req.Adid user.GPSADID = req.Gpsadid user.Openid = &req.OpenID user.AccountName = req.AccountName user.Pass = req.Pass if len(req.Phone) > 0 { user.Mobile = req.Phone } ip := g.GetRemoteIP() if err := call.NewUser(user, ip, req.Share, req.Fbc, req.Fbp, req.UserAgent); err != nil { g.Code = values.CodeRetry if err.Error() == "ip" { g.Code = values.CodeAccountIPLimit g.Msg = "ip limit" } return } isNew = true } else { user.ADID = req.Adid user.GPSADID = req.Gpsadid } return }