package logic import ( "HttpServer/redishandler" "common/logger" "common/redis" "encoding/json" "fmt" "net/http" "strconv" "sync" ) var ( //m_userInfo *beegomap.BeeMap //make(map[int32]*UserData Maplock *sync.RWMutex ) func init() { //m_userInfo = beegomap.NewBeeMap() Maplock = new(sync.RWMutex) } func SetHeader(w http.ResponseWriter) { w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 w.Header().Set("Content-Type", "application/json") w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") } func HandlerLogin(w http.ResponseWriter, data string, uuid int,token string) { SetHeader(w) var resp UserLoginResp resp.Code = 0 resp.Message = "success" var rdata UserLoginReq err := json.Unmarshal([]byte(data), &rdata) if err != nil { logger.Info("json decode HandlerLogin data failed:%v,for:%v", err, data) resp.Message = "json unmarshal failed" resp.Code = 1 respstr, _ := json.Marshal(&resp) logger.Info("###HandlerLogin###rdata:%v", string(respstr)) fmt.Fprint(w, string(respstr)) return } //首先判断一下是否是首次登陆 isexist, _ := redishandler.GetRedisClient().HExists(redis.USER_INFO__KEY, strconv.Itoa(uuid)) if !isexist { //不存在 //属于新登录的玩家数据 InitUserInfo(&rdata, &resp, uuid) } else { uinfo,err := GetUserInfo(strconv.Itoa(rdata.UserId)) if err != nil { logger.Info("GetUserInfo HandlerLogin data failed:%v,for:%v", err, data) resp.Message = "GetUserInfo failed" resp.Code = 2 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) return } resp.Data.Nickname = uinfo.NickName resp.Data.UserId = strconv.Itoa(rdata.UserId) resp.Data.AccessToken = token resp.Data.HeadImg = uinfo.Head resp.Data.LoginType = rdata.Lype } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) logger.Info("###HandlerLogin###rdata:%v", string(respstr)) }