package sdk import ( "apigame/util/util-lx/lxalilog" "apigame/util/util-lx/lxbeego" "apigame/util/util-lx/lxredis" "encoding/json" "errors" "fmt" "strings" "github.com/astaxie/beego" ) type MapSdkTokenRet struct { Code string `json:"code"` Data struct { Ttl int `json:"ttl"` } `json:"data"` Msg string `json:"msg"` } type MapSDKMemberInfo struct { Code string `json:"code"` Data struct { Uid int64 `json:"uid"` Channel string `json:"channel"` Scene string `json:"scene"` Openid string `json:"openid"` Unionid string `json:"unionid"` Nickname string `json:"nickname"` Headurl string `json:"headurl"` Sex int `json:"sex"` Shareuid int64 `json:"shareuid"` Status int `json:"status"` FirstLogin string `json:"first_login"` Logindays int `json:"logindays"` CreateTime int64 `json:"create_time"` LastloginTime int64 `json:"lastlogin_time"` UpdateTime int64 `json:"update_time"` } `json:"data"` Msg string `json:"msg"` } func ckecklocaldb(gameid string, uid int64, token string) (err error) { _redis := lxredis.LXredis{ Name: fmt.Sprintf("token::%s::%d", gameid, uid), Db: beego.AppConfig.String("redis::sdkdb"), Prefix: beego.AppConfig.String("redis::sdkprefix"), } tstr, err := _redis.GET() if err != nil { lxalilog.Errors(err, "_redis GET:") return } if tstr == "" { err = errors.New("tsrt") lxalilog.Errors(err, "tstr empty:") return } redistoken := strings.Split(tstr, "|")[0] if redistoken != token { err = errors.New("token error") lxalilog.Errors(err, "redistoken:", redistoken, ",token:", token) return } return } // 验证SDKtoken func CheckSdkToken(gameid string, uid int64, token string) (err error) { if uid == 99 || token == "fb0ba80fad895664c7aea7c8ce462505" { return } return ckecklocaldb(gameid, uid, token) // var ( // gconfig = service_config.GetGameConfigByGameID(gameid) // apiurl = beego.AppConfig.String("sdk::checktoken") + gconfig.Appkey // ) // content, httpcode, err := lurl.PostBody(apiurl, map[string]interface{}{ // "gameid": gameid, // "uid": uid, // "token": token, // }) // if err != nil { // lxalilog.Errors("lurl.PostBody error:", err, gameid, uid, token) // return // } // if httpcode != 200 { // err = errors.New("httpcode!= 200") // lxalilog.Errors("httpcode error:", err, gameid, uid, token, httpcode) // return // } // var ret MapSdkTokenRet // err = json.Unmarshal(content, &ret) // if err != nil { // lxalilog.Errors("json.Unmarshal error:", err, gameid, uid, token, string(content)) // return // } // if ret.Code != "0" { // err = errors.New("ret.Code != 0") // lxalilog.Errors(err, gameid, uid, token, string(content)) // return // } // return } // 获取SDK用户信息 func GetSdkMemberInfo(gameid string, uid int64) (member MapSDKMemberInfo, err error) { var ( apiurl = fmt.Sprintf("%s?gameid=%s&uid=%d", beego.AppConfig.String("sdk::getmemberinfo"), gameid, uid) ) content, httpcode, err := lxbeego.Get(apiurl) if err != nil { lxalilog.Errors("lxbeego.lxbeego error:", err, apiurl) return } if httpcode != 200 { err = errors.New("httpcode!= 200") lxalilog.Errors("httpcode error:", err, apiurl) return } err = json.Unmarshal(content, &member) if err != nil { lxalilog.Errors("json.Unmarshal error:", err, apiurl, string(content)) return } if member.Code != "0" { err = errors.New("ret.Code != 0") lxalilog.Errors(err, apiurl, string(content)) return } return }