Commit 95bfb593832f01fabb6c327f991bd2d9a4b4343a

Authored by 陆恒
1 parent 0a5e55b4
Exists in master

提交登录接口

src/HttpServer/jsonconf/jsonconf.go
@@ -61,6 +61,14 @@ func GetJsonConf() *GameConfig { @@ -61,6 +61,14 @@ func GetJsonConf() *GameConfig {
61 return g_jsonconf 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 func file_get_contents(path string) ([]byte, error) { 74 func file_get_contents(path string) ([]byte, error) {
src/HttpServer/logic/datadef.go
1 package logic 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 Fromid int `json:"fromid"` 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 type UserLoginResp struct { 18 type UserLoginResp struct {
10 Code int `json:"code"` 19 Code int `json:"code"`
  20 + Data UserLoginData `json:"data"`
11 Message string `json:"message"` 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 type GetUserDataReq struct { 24 type GetUserDataReq struct {
@@ -403,6 +402,8 @@ type AchieveMentData struct { @@ -403,6 +402,8 @@ type AchieveMentData struct {
403 402
404 //玩家数据 403 //玩家数据
405 type UserData struct { 404 type UserData struct {
  405 + UserId int //玩家id
  406 + RegTime int //注册时间
406 Gold int64 //金币 407 Gold int64 //金币
407 Love int64 //爱心值 408 Love int64 //爱心值
408 Goldrate int64 //金币生成速率 409 Goldrate int64 //金币生成速率
src/HttpServer/logic/function.go 0 → 100644
@@ -0,0 +1,116 @@ @@ -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 \ No newline at end of file 117 \ No newline at end of file
src/HttpServer/logic/httpserver.go
@@ -169,37 +169,37 @@ func CheckErr(err error) { @@ -169,37 +169,37 @@ func CheckErr(err error) {
169 } 169 }
170 170
171 func startServerHttpServe() { 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 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) 204 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
205 CheckErr(err) 205 CheckErr(err)
@@ -755,8 +755,10 @@ func UserLogin(w http.ResponseWriter, r *http.Request) { @@ -755,8 +755,10 @@ func UserLogin(w http.ResponseWriter, r *http.Request) {
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") 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 Uuid := 0 757 Uuid := 0
  758 + Token := ""
758 if len(r.Header) > 0 { 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 if Uuid == 0 { 764 if Uuid == 0 {
@@ -773,9 +775,9 @@ func UserLogin(w http.ResponseWriter, r *http.Request) { @@ -773,9 +775,9 @@ func UserLogin(w http.ResponseWriter, r *http.Request) {
773 r.Body.Close() 775 r.Body.Close()
774 776
775 s := string(result) 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 func ReviewAllianceHandler(w http.ResponseWriter, r *http.Request) { 783 func ReviewAllianceHandler(w http.ResponseWriter, r *http.Request) {
src/HttpServer/logic/logic.go
1 package logic 1 package logic
2 2
3 import ( 3 import (
4 - "common/beegomap" 4 + "HttpServer/redishandler"
  5 + "common/logger"
  6 + "common/redis"
  7 + "encoding/json"
  8 + "fmt"
5 "net/http" 9 "net/http"
  10 + "strconv"
6 "sync" 11 "sync"
7 ) 12 )
8 13
9 var ( 14 var (
10 - m_userInfo *beegomap.BeeMap //make(map[int32]*UserData 15 + //m_userInfo *beegomap.BeeMap //make(map[int32]*UserData
11 Maplock *sync.RWMutex 16 Maplock *sync.RWMutex
12 ) 17 )
13 18
14 func init() { 19 func init() {
15 - m_userInfo = beegomap.NewBeeMap() 20 + //m_userInfo = beegomap.NewBeeMap()
16 Maplock = new(sync.RWMutex) 21 Maplock = new(sync.RWMutex)
17 } 22 }
18 23
@@ -20,4 +25,56 @@ func SetHeader(w http.ResponseWriter) { @@ -20,4 +25,56 @@ func SetHeader(w http.ResponseWriter) {
20 w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 25 w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域
21 w.Header().Set("Content-Type", "application/json") 26 w.Header().Set("Content-Type", "application/json")
22 w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") 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 \ No newline at end of file 81 \ No newline at end of file
src/common/redis/def.go
1 package redis 1 package redis
2 2
3 const ( 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 )