Commit 95bfb593832f01fabb6c327f991bd2d9a4b4343a

Authored by 陆恒
1 parent 0a5e55b4
Exists in master

提交登录接口

src/HttpServer/jsonconf/jsonconf.go
... ... @@ -61,6 +61,14 @@ func GetJsonConf() *GameConfig {
61 61 return g_jsonconf
62 62 }
63 63  
  64 +func GetCatConfig(lv int) *CatDesc {
  65 + for _, v := range g_jsonconf.CatConfig {
  66 + if v.Id == lv {
  67 + return &v
  68 + }
  69 + }
  70 + return nil
  71 +}
64 72  
65 73  
66 74 func file_get_contents(path string) ([]byte, error) {
... ...
src/HttpServer/logic/datadef.go
1 1 package logic
2 2  
3   -type UserLoginData struct {
4   - //Uuid int `json:"uuid"`
  3 +type UserLoginReq struct {
  4 + Lype int `json:"type"`
  5 + UserId int `json:"userId"`
5 6 Fromid int `json:"fromid"`
6   - Sharetype int `json:"sharetype"`
  7 +
  8 +}
  9 +
  10 +type UserLoginData struct {
  11 + UserId string `json:"userId"`
  12 + AccessToken string `json:"accessToken"`
  13 + LoginType int `json:"loginType"`
  14 + Nickname string `json:"nickname"`
  15 + HeadImg string `json:"headImg"`
7 16 }
8 17  
9 18 type UserLoginResp struct {
10 19 Code int `json:"code"`
  20 + Data UserLoginData `json:"data"`
11 21 Message string `json:"message"`
12   - Gold int64 `json:"gold"`
13   - Love int64 `json:"love"`
14   - Goldrate int64 `json:"goldrate"`
15   - Loverate int64 `json:"loverate"`
16   - Highestlv int `json:"highestlv"`
17   - Curboxlv int `json:"curboxlv"`
18   - Isdoublegold int `json:"isdoublegold"`
19   - Isauto int `json:"isauto"`
20   - Offlinegold int64 `json:"offlinegold"`
21   - Offlinelove int64 `json:"offlinelove"`
22   - Data []DataDesc `json:"data"`
23 22 }
24 23  
25 24 type GetUserDataReq struct {
... ... @@ -403,6 +402,8 @@ type AchieveMentData struct {
403 402  
404 403 //玩家数据
405 404 type UserData struct {
  405 + UserId int //玩家id
  406 + RegTime int //注册时间
406 407 Gold int64 //金币
407 408 Love int64 //爱心值
408 409 Goldrate int64 //金币生成速率
... ...
src/HttpServer/logic/function.go 0 → 100644
... ... @@ -0,0 +1,116 @@
  1 +package logic
  2 +
  3 +import (
  4 + "HttpServer/jsonconf"
  5 + "HttpServer/redishandler"
  6 + "common/logger"
  7 + "common/redis"
  8 + "encoding/json"
  9 + "strconv"
  10 + "time"
  11 +)
  12 +
  13 +func SaveUserInfo(data *UserData, uniqueid string) error {
  14 +
  15 + savestr, err := json.Marshal(data)
  16 + if err != nil {
  17 + return err
  18 + }
  19 +
  20 + err = redishandler.GetRedisClient().HSet(redis.USER_INFO__KEY, uniqueid, string(savestr))
  21 +
  22 + return err
  23 +}
  24 +
  25 +func GetUserInfo(uid string) (*UserData, error) {
  26 +
  27 + data, err := redishandler.GetRedisClient().HGet(redis.USER_INFO__KEY, uid)
  28 + if err != nil {
  29 + return nil, err
  30 + }
  31 + var tmp UserData
  32 + err = json.Unmarshal([]byte(data), &tmp)
  33 + if err != nil {
  34 + return nil, err
  35 + }
  36 +
  37 + return &tmp, nil
  38 +}
  39 +
  40 +//初始化玩家信息
  41 +func InitUserInfo(data *UserLoginReq, resp *UserLoginResp, uuid int) {
  42 + udata := new(UserData)
  43 + udata.Gold = 0
  44 + udata.Love = 0
  45 + udata.InviteId = data.Fromid
  46 + udata.Highestlv = 0
  47 + udata.CurBoxLv = 1
  48 + udata.IsDouble = 0
  49 + udata.IsAuto = 0
  50 + udata.IsBoxAcc = 0
  51 + udata.RandGiftDay = time.Now().Day()
  52 + udata.RandGiftNum = 6
  53 + udata.RandGiftTime = int(time.Now().Unix())
  54 + udata.Redbag = 0
  55 + udata.IsFirstRedBgCat = 0
  56 +
  57 + //初始化16个猫爬架
  58 + for i := 0; i < 16; i++ {
  59 + var d1 PosData
  60 + d1.Pos = i
  61 + d1.Catlv = 0
  62 + udata.PosInfo = append(udata.PosInfo, d1)
  63 + var d2 DataDesc
  64 + d2.Pos = i
  65 + d2.Catlv = 0
  66 +
  67 + }
  68 + udata.Goldrate = 0
  69 + udata.Loverate = 0
  70 +
  71 +
  72 + //初始化商店信息
  73 + initcatcfg := jsonconf.GetCatConfig(1)
  74 + if initcatcfg == nil {
  75 + logger.Error("get 1catcfg err")
  76 + return
  77 + }
  78 + var info BuyCatInfoData
  79 + info.Buytime = 0
  80 + info.CurPrice,_= strconv.ParseInt(initcatcfg.Price,10,64)
  81 + info.IsMaxBuytime = 0
  82 + udata.BuyCatInfo = append(udata.BuyCatInfo, info)
  83 +
  84 + //初始化猫咖门店数据
  85 + udata.CatShopInfo.LeftTime = 0
  86 + udata.CatShopInfo.Chapter = 1
  87 + udata.CatShopInfo.DayNum = time.Now().Day()
  88 + udata.CatShopInfo.IsPlaying = 0
  89 + udata.CatShopInfo.PlayTimes = 0
  90 + udata.CatShopInfo.Section = 1
  91 + udata.CatShopInfo.ThisIsWatch = 0
  92 + udata.CatShopInfo.TotalWatchNumLeft = 8 //
  93 +
  94 + logger.Info("Init user data=%v", udata)
  95 +
  96 + //保存redis
  97 + SaveUserInfo(udata, strconv.Itoa(uuid))
  98 +
  99 +
  100 + //初始化玩家仓库信息
  101 + pware := new(UserWareHouseData)
  102 + for i := 0; i < 15; i++ {
  103 + var tmp WareHouseDesc
  104 + tmp.Warelv = 0
  105 + pware.Info = append(pware.Info, tmp)
  106 + }
  107 + wares, err := json.Marshal(pware)
  108 + if err != nil {
  109 + logger.Info("InitUserInfo warehouse failed err=%v", err)
  110 + }
  111 + redishandler.GetRedisClient().HSet(redis.USER_WAREHOUSE_INFO, strconv.Itoa(uuid), string(wares))
  112 +
  113 + //保存此次计算时间
  114 + nowtimestr := strconv.Itoa(int(time.Now().Unix()))
  115 + redishandler.GetRedisClient().HSet(redis.USER_LAST_CALC_TIME, strconv.Itoa(uuid), nowtimestr)
  116 +}
0 117 \ No newline at end of file
... ...
src/HttpServer/logic/httpserver.go
... ... @@ -169,37 +169,37 @@ func CheckErr(err error) {
169 169 }
170 170  
171 171 func startServerHttpServe() {
172   - http.HandleFunc("/cat/login", UserLogin) //登录
173   - http.HandleFunc("/cat/getuserdata", GetUserData) //拉取用户数据
174   - http.HandleFunc("/cat/exchangetwoPos", ExchangePos) //交换位置
175   - http.HandleFunc("/cat/clickcatbox", ClickCatBox) //请求点击猫箱子
176   - http.HandleFunc("/cat/upgradecatbox", UpgradeCatBox) //请求点击猫箱子
177   - http.HandleFunc("/cat/acclecte", AcclecteGold) //请求点击猫箱子
178   - http.HandleFunc("/cat/automerge", AutoMerge) //请求自动合成
179   - http.HandleFunc("/cat/generatebox", GenerateBox) //请求点击猫箱子
180   - http.HandleFunc("/cat/clickrandgift", ClickRandGift) //请求点击猫箱子
181   - http.HandleFunc("/cat/querybuycat", QueryBuyCat) //请求商店购买信息
182   - http.HandleFunc("/cat/dobuycat", DoBuyCat) //购买猫
183   - http.HandleFunc("/cat/querwarehouse", QueryWareHouse) //请求仓库信息
184   - http.HandleFunc("/cat/putcattowarehouse", PutCattoWareHouse) //将合成界面的猫放入仓库
185   - http.HandleFunc("/cat/takecatoutfromwarehouse", TakeCatoutfromWareHouse) //将仓库的猫取出
186   - http.HandleFunc("/cat/acclecteboxrate ", AcclecteBoxRate) //请求点击猫箱子
187   - http.HandleFunc("/cat/queryautomergeinfo ", QueryAutomergeInfo) //请求点击猫箱子
188   - http.HandleFunc("/cat/querycatroominfo ", QueryCatRoomInfo) //请求点击猫箱子
189   - http.HandleFunc("/cat/buycatroom ", BuyCatRoom) //请求点击猫箱子
190   - http.HandleFunc("/cat/upcattoroom ", UpCattoRoom) //请求点击猫箱子
191   - http.HandleFunc("/cat/querycatshopinfo ", QueryCatShopInfo) //请求点击猫箱子
192   - http.HandleFunc("/cat/catshoplay ", CatShoPlay) //请求点击猫箱子
193   - http.HandleFunc("/cat/getcatshopreward ", GetCatShopReward) //请求点击猫箱子
194   - http.HandleFunc("/cat/acclectecatstory ", AcclecteCatStory) //请求点击猫箱子
195   - http.HandleFunc("/cat/updateuserinfo ", UpdateUserInfo) //请求点击猫箱子
196   - http.HandleFunc("/cat/queryplayerrank ", QueryPlayerRank) //请求点击猫箱子
197   - http.HandleFunc("/cat/querycompletetask ", QueryCompleteTask) //请求点击猫箱子
198   - http.HandleFunc("/cat/querycompleteachievement ", QueryCompleteAchievement) //请求点击猫箱子
199   - http.HandleFunc("/cat/gettaskreward ", GetTaskReward) //请求点击猫箱子
200   - http.HandleFunc("/cat/getachievereward ", GetAchieveReward) //请求点击猫箱子
201   - http.HandleFunc("/cat/startonlinetask ", StartOnlineTask) //请求开始在线时长任务
202   - http.HandleFunc("/cat/getofflinereward ", GetOfflineReward) //请求开始在线时长任务
  172 + http.HandleFunc("/happycat/login", UserLogin) //登录
  173 + http.HandleFunc("/happycat/getuserdata", GetUserData) //拉取用户数据
  174 + http.HandleFunc("/happycat/exchangetwoPos", ExchangePos) //交换位置
  175 + http.HandleFunc("/happycat/clickcatbox", ClickCatBox) //请求点击猫箱子
  176 + http.HandleFunc("/happycat/upgradecatbox", UpgradeCatBox) //请求点击猫箱子
  177 + http.HandleFunc("/happycat/acclecte", AcclecteGold) //请求点击猫箱子
  178 + http.HandleFunc("/happycat/automerge", AutoMerge) //请求自动合成
  179 + http.HandleFunc("/happycat/generatebox", GenerateBox) //请求点击猫箱子
  180 + http.HandleFunc("/happycat/clickrandgift", ClickRandGift) //请求点击猫箱子
  181 + http.HandleFunc("/happycat/querybuycat", QueryBuyCat) //请求商店购买信息
  182 + http.HandleFunc("/happycat/dobuycat", DoBuyCat) //购买猫
  183 + http.HandleFunc("/happycat/querwarehouse", QueryWareHouse) //请求仓库信息
  184 + http.HandleFunc("/happycat/putcattowarehouse", PutCattoWareHouse) //将合成界面的猫放入仓库
  185 + http.HandleFunc("/happycat/takecatoutfromwarehouse", TakeCatoutfromWareHouse) //将仓库的猫取出
  186 + http.HandleFunc("/happycat/acclecteboxrate ", AcclecteBoxRate) //请求点击猫箱子
  187 + http.HandleFunc("/happycat/queryautomergeinfo ", QueryAutomergeInfo) //请求点击猫箱子
  188 + http.HandleFunc("/happycat/querycatroominfo ", QueryCatRoomInfo) //请求点击猫箱子
  189 + http.HandleFunc("/happycat/buycatroom ", BuyCatRoom) //请求点击猫箱子
  190 + http.HandleFunc("/happycat/upcattoroom ", UpCattoRoom) //请求点击猫箱子
  191 + http.HandleFunc("/happycat/querycatshopinfo ", QueryCatShopInfo) //请求点击猫箱子
  192 + http.HandleFunc("/happycat/catshoplay ", CatShoPlay) //请求点击猫箱子
  193 + http.HandleFunc("/happycat/getcatshopreward ", GetCatShopReward) //请求点击猫箱子
  194 + http.HandleFunc("/happycat/acclectecatstory ", AcclecteCatStory) //请求点击猫箱子
  195 + http.HandleFunc("/chappycatat/updateuserinfo ", UpdateUserInfo) //请求点击猫箱子
  196 + http.HandleFunc("/happycat/queryplayerrank ", QueryPlayerRank) //请求点击猫箱子
  197 + http.HandleFunc("/happycat/querycompletetask ", QueryCompleteTask) //请求点击猫箱子
  198 + http.HandleFunc("/happycat/querycompleteachievement ", QueryCompleteAchievement) //请求点击猫箱子
  199 + http.HandleFunc("/happycat/gettaskreward ", GetTaskReward) //请求点击猫箱子
  200 + http.HandleFunc("/happycat/getachievereward ", GetAchieveReward) //请求点击猫箱子
  201 + http.HandleFunc("/happycat/startonlinetask ", StartOnlineTask) //请求开始在线时长任务
  202 + http.HandleFunc("/happycat/getofflinereward ", GetOfflineReward) //请求开始在线时长任务
203 203  
204 204 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
205 205 CheckErr(err)
... ... @@ -755,8 +755,10 @@ func UserLogin(w http.ResponseWriter, r *http.Request) {
755 755 w.Header().Set("Access-Control-Allow-Headers", "Authorization, Content-Length, X-CSRF-Token, Token,session,X_Requested_With,Accept, Origin, Host, Connection, Accept-Encoding, Accept-Language,DNT, X-CustomHeader, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type, Pragma")
756 756 */
757 757 Uuid := 0
  758 + Token := ""
758 759 if len(r.Header) > 0 {
759   - Uuid, _ = strconv.Atoi(r.Header.Get("Uuid"))
  760 + Uuid, _ = strconv.Atoi(r.Header.Get("uid"))
  761 + Token = r.Header.Get("token")
760 762 }
761 763  
762 764 if Uuid == 0 {
... ... @@ -773,9 +775,9 @@ func UserLogin(w http.ResponseWriter, r *http.Request) {
773 775 r.Body.Close()
774 776  
775 777 s := string(result)
776   - logger.Info("UserLogin , body:%v,uuid=%v", s, Uuid)
  778 + logger.Info("UserLogin , body:%v,uuid=%v token=%v", s, Uuid,Token)
777 779  
778   -// HandlerLogin(w, s, Uuid)
  780 + HandlerLogin(w, s, Uuid,Token)
779 781 }
780 782  
781 783 func ReviewAllianceHandler(w http.ResponseWriter, r *http.Request) {
... ...
src/HttpServer/logic/logic.go
1 1 package logic
2 2  
3 3 import (
4   - "common/beegomap"
  4 + "HttpServer/redishandler"
  5 + "common/logger"
  6 + "common/redis"
  7 + "encoding/json"
  8 + "fmt"
5 9 "net/http"
  10 + "strconv"
6 11 "sync"
7 12 )
8 13  
9 14 var (
10   - m_userInfo *beegomap.BeeMap //make(map[int32]*UserData
  15 + //m_userInfo *beegomap.BeeMap //make(map[int32]*UserData
11 16 Maplock *sync.RWMutex
12 17 )
13 18  
14 19 func init() {
15   - m_userInfo = beegomap.NewBeeMap()
  20 + //m_userInfo = beegomap.NewBeeMap()
16 21 Maplock = new(sync.RWMutex)
17 22 }
18 23  
... ... @@ -20,4 +25,56 @@ func SetHeader(w http.ResponseWriter) {
20 25 w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域
21 26 w.Header().Set("Content-Type", "application/json")
22 27 w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid")
  28 +}
  29 +
  30 +func HandlerLogin(w http.ResponseWriter, data string, uuid int,token string) {
  31 + SetHeader(w)
  32 + var resp UserLoginResp
  33 + resp.Code = 0
  34 + resp.Message = "success"
  35 + var rdata UserLoginReq
  36 + err := json.Unmarshal([]byte(data), &rdata)
  37 + if err != nil {
  38 + logger.Info("json decode HandlerLogin data failed:%v,for:%v", err, data)
  39 + resp.Message = "json unmarshal failed"
  40 + resp.Code = 1
  41 + respstr, _ := json.Marshal(&resp)
  42 + logger.Info("###HandlerLogin###rdata:%v", string(respstr))
  43 + fmt.Fprint(w, string(respstr))
  44 + return
  45 + }
  46 +
  47 + //首先判断一下是否是首次登陆
  48 + isexist, _ := redishandler.GetRedisClient().HExists(redis.USER_INFO__KEY, strconv.Itoa(uuid))
  49 + if !isexist {
  50 + //不存在
  51 + //属于新登录的玩家数据
  52 + InitUserInfo(&rdata, &resp, uuid)
  53 +
  54 + } else {
  55 + uinfo,err := GetUserInfo(strconv.Itoa(rdata.UserId))
  56 + if err != nil {
  57 + logger.Info("GetUserInfo HandlerLogin data failed:%v,for:%v", err, data)
  58 + resp.Message = "GetUserInfo failed"
  59 + resp.Code = 2
  60 + respstr, _ := json.Marshal(&resp)
  61 + fmt.Fprint(w, string(respstr))
  62 + return
  63 + }
  64 +
  65 + resp.Data.Nickname = uinfo.NickName
  66 + resp.Data.UserId = strconv.Itoa(rdata.UserId)
  67 + resp.Data.AccessToken = token
  68 + resp.Data.HeadImg = uinfo.Head
  69 + resp.Data.LoginType = rdata.Lype
  70 +
  71 + }
  72 +
  73 +
  74 +
  75 + //回包
  76 + respstr, _ := json.Marshal(&resp)
  77 + fmt.Fprint(w, string(respstr))
  78 +
  79 + logger.Info("###HandlerLogin###rdata:%v", string(respstr))
23 80 }
24 81 \ No newline at end of file
... ...
src/common/redis/def.go
1 1 package redis
2 2  
3 3 const (
4   - USER_LAST_LOGIN_TIME = "CATSERVER_USER_LAST_LOGIN_TIME" //玩家上次登陆时间
5   - USER_INFO = "CATSERVER_USER_USER_INFO" //玩家数据
6   - USER_LAST_CALC_TIME = "CATSERVER_USER_LAST_CALC_TIME" //玩家上一次数据计算时间
7   - USER_INVITE_ID = "CATSERVER_USER_INVITE_ID" //玩家邀请者ID
8   - USER_STARTDOUBLE_TIME = "CATSERVER_USER_STARTDOUBLE_TIME" //开启双倍时间
9   - USER_STARTAUTO_TIME = "CATSERVER_USER_STARTAUTO_TIME" //开启自动合成时间
10   - USER_STARTACC_BOX_TIME = "CATSERVER_USER_STARTACC_BOX_TIME" //开启加速成产箱子
11   - USER_WAREHOUSE_INFO = "CATSERVER_USER_WAREHOUSE_INFO" //玩家仓库信息
12   - USER_GOLD_RANK = "CATSERVER_USER_GOLD_RANK" //玩家排行榜,根据金币排
  4 + USER_INFO__KEY = "HAPPYCATSERVER_USER_USER_INFO" //玩家数据
  5 + USER_LAST_CALC_TIME = "HAPPYCATSERVER_USER_LAST_CALC_TIME" //玩家上一次数据计算时间
  6 + USER_INVITE_ID = "HAPPYCATSERVER_USER_INVITE_ID" //玩家邀请者ID
  7 + USER_STARTDOUBLE_TIME = "HAPPYCATSERVER_USER_STARTDOUBLE_TIME" //开启双倍时间
  8 + USER_STARTAUTO_TIME = "HAPPYCATSERVER_USER_STARTAUTO_TIME" //开启自动合成时间
  9 + USER_STARTACC_BOX_TIME = "HAPPYCATSERVER_USER_STARTACC_BOX_TIME" //开启加速成产箱子
  10 + USER_WAREHOUSE_INFO = "HAPPYCATSERVER_USER_WAREHOUSE_INFO" //玩家仓库信息
  11 + USER_GOLD_RANK = "HAPPYCATSERVER_USER_GOLD_RANK" //玩家排行榜,根据金币排
13 12 )
... ...