package logic import ( "common/beegomap" "common/logger" "encoding/json" "fmt" "net/http" "time" ) var ( m_userInfo *beegomap.BeeMap //make(map[int32]*UserData ) func init() { m_userInfo = beegomap.NewBeeMap() } func InitTourist(req *UserLoginReq,resp *UserLoginResp) { //首先生成user_base_data var basedata UserBaseData basedata.User_id = GetNewUUid() basedata.User_avatar_url = "" basedata.User_city = "天堂" basedata.User_gender = 1 basedata.User_nickname = "游客" + string(basedata.User_id) basedata.User_openid = "" basedata.User_token = req.Token resp.Result.Data.Dasedata = basedata //保存base data basic, _ := json.Marshal(&basedata) SaveUserBasic(basedata.User_id,string(basic)) SetTouristUid(req.Token,basedata.User_id) //然后生成user_ext_data var extdata UserExtData extdata.User_id = basedata.User_id extdata.Lv = 1 extdata.Bean = 0 extdata.Coin = 0 extdata.Exp = 0 extdata.Hot = 0 extdata.Invite_uid = req.User_invite_uid extdata.LoveExp = 0 extdata.Reg_time = int(time.Now().Unix()) extdata.ShopNum = 0 extdata.User_channel = req.Channel_id extdata.User_is_black = 0 extdata.User_reg_time = int(time.Now().Unix()) extdata.User_scene = req.Scene resp.Result.Data.Extdata = extdata //保存 udata :=new(UserData) udata.Scene = extdata.User_scene udata.Hot = extdata.Hot udata.Exp = extdata.Exp udata.Coin = extdata.Coin udata.Bean = extdata.Bean udata.Lv = extdata.Lv udata.Channel = extdata.User_channel udata.InviteUid = extdata.Invite_uid udata.Isblack = extdata.User_is_black udata.Loevexp = extdata.LoveExp udata.Regtime = extdata.Reg_time udata.Shopnum = extdata.ShopNum udata.Userid = extdata.User_id udata.UserInviteId = extdata.User_invite_uid udata.Userregtime = extdata.User_reg_time SaveUserExt(udata) } //处理游客登录 func HandleTouristLogin(w http.ResponseWriter, req *UserLoginReq,resp *UserLoginResp) { logger.Info("HandleTouristLogin req=%v,resp=%v",req,resp) for { //首先判断是否存在这个游客账号 uuid,err := GetTouristUid(req.Token) if err != nil { //新账号 初始化 InitTourist(req,resp) }else { //读取数据 basic,err := GetUserBasic(uuid) if err != nil { logger.Error("HandleTouristLogin getbasic failed=%v", err) resp.Result.Code = ERROR_GETUSERBASICFAILED break } resp.Result.Data.Dasedata = *basic ext,err := GetUserExt(uuid) if err != nil { logger.Error("HandleTouristLogin getext failed=%v", err) resp.Result.Code = ERROR_GETUSEREXTFAILED break } resp.Result.Data.Extdata = *ext m_userInfo.Set(uint32(ext.User_id),ext) } resp.Result.Code = ERROR_OK break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } func HandleUserLogin(w http.ResponseWriter, data string) { SetHeader(w) var resp UserLoginResp resp.Status = "true" resp.Result.Code = ERROR_OK var rdata UserLoginReq err := json.Unmarshal([]byte(data), &rdata) for { if err != nil { logger.Error("HandleUserLogin json unmarshal failed=%v", err) resp.Result.Code = ERROR_JSONUNMASHFAILED break } if rdata.Logintype ==LOGIN_TYPE_TOURIST { //游客登录 HandleTouristLogin(w,&rdata,&resp) break } if rdata.Logintype == LOGIN_TYPE_ACCOUNT { //账号密码登录 break } if rdata.Logintype == LOGIN_TYPE_WECHAT { //微信登录 break } } //回包 //respstr, _ := json.Marshal(&resp) //fmt.Fprint(w, string(respstr)) } func HandleSaveUserData(w http.ResponseWriter, data string) { SetHeader(w) var resp SaveUserDataResp resp.Status = "true" resp.Result.Code = ERROR_OK var rdata SaveUserDataReq err := json.Unmarshal([]byte(data), &rdata) for { if err != nil { logger.Error("HandleSaveUserData json unmarshal failed=%v", err) resp.Result.Code = ERROR_JSONUNMASHFAILED break } uuid,err := GetTouristUid(rdata.Token) if err != nil || uuid==0{ logger.Error("HandleSaveUserData json unmarshal failed=%v", err) resp.Result.Code = ERROR_GETUSERIDFAILED break } vv := m_userInfo.Get(uint32(uuid)) if vv == nil { logger.Error("HandleSaveUserData failed=%v", err) resp.Result.Code = ERROR_GETUSERMAPBYUIDFAILED break } uinfo := vv.(*UserData) uinfo.Coin = rdata.Coin uinfo.Loevexp = rdata.Loveexp uinfo.Hot = rdata.Hot uinfo.Bean = rdata.Bean uinfo.Shopnum = rdata.Shopnum SaveUserExt(uinfo) basic,err := GetUserBasic(uuid) if err != nil { logger.Error("HandleTouristLogin getbasic failed=%v", err) resp.Result.Code = ERROR_GETUSERBASICFAILED break } resp.Result.Data.Dasedata = *basic ext,err := GetUserExt(uuid) if err != nil { logger.Error("HandleTouristLogin getext failed=%v", err) resp.Result.Code = ERROR_GETUSEREXTFAILED break } resp.Result.Data.Extdata = *ext resp.Result.Code = ERROR_OK break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } func HandlesaveData(w http.ResponseWriter, data string) { SetHeader(w) var resp SaveDataResp resp.Status = "true" resp.Result.Code = ERROR_OK var rdata SaveDataReq err := json.Unmarshal([]byte(data), &rdata) for { if err != nil { logger.Error("HandlesaveData json unmarshal failed=%v", err) resp.Result.Code = ERROR_JSONUNMASHFAILED break } uuid,err := GetTouristUid(rdata.Token) if err != nil || uuid==0{ logger.Error("HandlesaveData GetTouristUid failed=%v", err) resp.Result.Code = ERROR_GETUSERIDFAILED break } err = SaveUserBaseData(uuid,rdata.Value) if err != nil { logger.Error("HandlesaveData save failed=%v", err) resp.Result.Code = ERROR_SRVDB_FAILED break } resp.Result.Code = ERROR_OK break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) } func HandlegetData(w http.ResponseWriter, data string) { SetHeader(w) var resp SaveDataResp resp.Status = "true" resp.Result.Code = ERROR_OK var rdata SaveDataReq err := json.Unmarshal([]byte(data), &rdata) for { if err != nil { logger.Error("HandlegetData json unmarshal failed=%v", err) resp.Result.Code = ERROR_JSONUNMASHFAILED break } uuid,err := GetTouristUid(rdata.Token) if err != nil || uuid==0{ logger.Error("HandlegetData GetTouristUid failed=%v", err) resp.Result.Code = ERROR_GETUSERIDFAILED break } ubase,err := GetUserBaseData(uuid) if err != nil { logger.Error("HandlegetData get failed=%v", err) resp.Result.Code = ERROR_SRVDB_FAILED break } resp.Result.Data = ubase resp.Result.Code = ERROR_OK break } //回包 respstr, _ := json.Marshal(&resp) fmt.Fprint(w, string(respstr)) }