Commit 95bfb593832f01fabb6c327f991bd2d9a4b4343a
1 parent
0a5e55b4
Exists in
master
提交登录接口
Showing
6 changed files
with
243 additions
and
60 deletions
Show diff stats
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 //金币生成速率 | ... | ... |
... | ... | @@ -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 | ) | ... | ... |