Commit e0129d0d8c2aa0a55292e5b5ee1a28294e4b1ea2

Authored by 陆恒
1 parent 629a330b
Exists in master

猫咖啡接口提交

src/HttpServer/logic/datadef.go
1 package logic 1 package logic
2 2
3 -type UserLoginData struct {  
4 - //Uuid int `json:"uuid"`  
5 - Fromid int `json:"fromid"`  
6 - Sharetype int `json:"sharetype"`  
7 -}  
8 -  
9 -type UserLoginResp struct {  
10 - Code int `json:"code"`  
11 - 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 -}  
24 -  
25 -type GetUserDataReq struct {  
26 - //Uuid int `json:"uuid"`  
27 -}  
28 -  
29 -type GetUserDataResp struct {  
30 - Code int `json:"code"`  
31 - Message string `json:"message"`  
32 - Gold int64 `json:"gold"`  
33 - Love int64 `json:"love"`  
34 - Dougoldlefttime int `json:"dougoldlefttime"`  
35 - Automlefttime int `json:"automlefttime"`  
36 - Acclcteboxlefttime int `json:"acclcteboxlefttime"`  
37 - Israndgift int `json:"israndgift"`  
38 -}  
39 -  
40 -type DataDesc struct {  
41 - Pos int `json:"pos"`  
42 - Catlv int `json:"cat_lv"`  
43 - Countdown int `json:"countdown"`  
44 -}  
45 -  
46 -type ExchangePosReq struct {  
47 - //Uuid int `json:"uuid"`  
48 - Pos_1 int `json:"pos_1"`  
49 - Pos_2 int `json:"pos_2"`  
50 -}  
51 -  
52 -type ExchangePosResp struct {  
53 - Code int `json:"code"`  
54 - Message string `json:"message"`  
55 - Pos1_lv int `json:"pos1_lv"`  
56 - Pos2_lv int `json:"pos2_lv"`  
57 - Highest_lv int `json:"highest_lv"`  
58 - Add_num int `json:"add_num"`  
59 -}  
60 -  
61 -type ClickBoxReq struct {  
62 - //Uuid int `json:"uuid"`  
63 - Pos int `json:"pos"`  
64 -}  
65 -  
66 -type ClickBoxResp struct {  
67 - Code int `json:"code"`  
68 - Message string `json:"message"`  
69 - Pos int `json:"pos"`  
70 - Lv int `json:"lv"`  
71 -}  
72 -  
73 -type UpgradeBoxReq struct {  
74 - //Uuid int `json:"uuid"`  
75 -}  
76 -type UpgradeBoxResp struct {  
77 - Code int `json:"code"`  
78 - Message string `json:"message"`  
79 - Boxlv int `json:"boxlv"`  
80 -}  
81 -  
82 -type GenerateBoxReq struct {  
83 - //Uuid int `json:"uuid"`  
84 - Pos int `json:"pos"`  
85 -}  
86 -  
87 -type GenerateBoxResp struct {  
88 - Code int `json:"code"`  
89 - Message string `json:"message"`  
90 -}  
91 -  
92 -type AcclecteReq struct {  
93 - //Uuid int `json:"uuid"`  
94 -}  
95 -type AcclecteResp struct {  
96 - Code int `json:"code"`  
97 - Message string `json:"message"`  
98 -}  
99 -  
100 -type AcclecteBoxResp struct {  
101 - Code int `json:"code"`  
102 - Message string `json:"message"`  
103 -}  
104 -  
105 -type AutomergeReq struct {  
106 - //Uuid int `json:"uuid"`  
107 -}  
108 -type AutomergeResp struct {  
109 - Code int `json:"code"`  
110 - Message string `json:"message"`  
111 -}  
112 -  
113 -type QueryBuyCatReq struct {  
114 - //Uuid int `json:"uuid"`  
115 -}  
116 -type QueryBuyCatResp struct {  
117 - Code int `json:"code"`  
118 - Message string `json:"message"`  
119 - Maxcatlv int `json:"maxcatlv"`  
120 - Data []BuyCatDesc `json:"data"`  
121 -}  
122 -  
123 -type BuyCatDesc struct {  
124 - Lv int `json:"lv"`  
125 - Goldnum int64 `json:"goldnum"`  
126 -}  
127 -  
128 -type ClickRandGiftReq struct {  
129 - //Uuid int `json:"uuid"`  
130 -}  
131 -type ClickRandGiftResp struct {  
132 - Code int `json:"code"`  
133 - Message string `json:"message"`  
134 - Gold int64 `json:"gold"`  
135 - Lefttime int `json:"lefttime"`  
136 -}  
137 -  
138 -type DoBuyCatReq struct {  
139 - Lv int `json:"lv"`  
140 -}  
141 -type DoBuyCatResp struct {  
142 - Code int `json:"code"`  
143 - Message string `json:"message"`  
144 - Pos int `json:"pos"`  
145 -}  
146 -  
147 -type QueryWareHouseResp struct {  
148 - Code int `json:"code"`  
149 - Message string `json:"message"`  
150 - Data []DataDesc `json:"data"`  
151 -}  
152 -  
153 -type QueryAutomergeResp struct {  
154 - Code int `json:"code"`  
155 - Message string `json:"message"`  
156 - Goldrate int64 `json:"goldrate"`  
157 - Higestlv int `json:"higestlv"`  
158 - Curcatjianum int `json:"curcatjianum"`  
159 - Data []DataDesc `json:"data"`  
160 -}  
161 -  
162 -type PutWareHouseReq struct {  
163 - Pos int `json:"pos"`  
164 -}  
165 -type PutWareHouseResp struct {  
166 - Code int `json:"code"`  
167 - Message string `json:"message"`  
168 - Warepos int `json:"warepos"`  
169 -}  
170 -  
171 -type TakeWareHouseReq struct {  
172 - Warepos int `json:"warepos"`  
173 -}  
174 -type TakeWareHouseResp struct {  
175 - Code int `json:"code"`  
176 - Message string `json:"message"`  
177 - Pos int `json:"pos"`  
178 -}  
179 3
180 -type CatRoomDesc struct {  
181 - Pos int `json:"pos"`  
182 - Catlv int `json:"cat_lv"`  
183 -} 4 +//登录类型枚举
  5 +const (
  6 + LOGIN_TYPE_TOURIST = 1 //游客登录
  7 + LOGIN_TYPE_ACCOUNT = 2 //账号密码登录
  8 + LOGIN_TYPE_WECHAT = 3 //微信登录
184 9
185 -type QueryCatRoomInfoResp struct {  
186 - Code int `json:"code"`  
187 - Message string `json:"message"`  
188 - Data []CatRoomDesc `json:"data"`  
189 -} 10 +)
190 11
191 -type BuyCatRoomReq struct { 12 +type UserLoginReq struct {
  13 + Channel_id int `json:"channel_id"`
  14 + Invite_type int `json:"invite_type"`
  15 + Invite_res_id int `json:"invite_res_id"`
  16 + User_invite_uid int `json:"user_invite_uid"`
  17 + Scene int `json:"scene"`
  18 + RefAppId int `json:"refAppId"`
  19 + Code string `json:"code"`
  20 + Token string `json:"token"`
  21 + Logintype int `json:"logintype"`
  22 + Useraccount string `json:"useraccount"`
  23 + Userpwd string `json:"userpwd"`
  24 + Version string `json:"version"`
  25 +
  26 +}
  27 +
  28 +type UserBaseData struct {
  29 + User_id int `json:"user_id"`
  30 + User_gender int `json:"user_gender"`
  31 + User_nickname string `json:"user_nickname"`
  32 + User_openid string `json:"user_openid"`
  33 + User_avatar_url string `json:"user_avatar_url"`
  34 + User_city string `json:"user_city"`
  35 + User_token string `json:"user_token"`
  36 +}
  37 +
  38 +type UserExtData struct {
  39 + User_id int `json:"user_id"`
  40 + Hot int `json:"hot"`
  41 + Coin int64 `json:"coin"`
  42 + LoveExp int `json:"loveExp"`
  43 + Bean int `json:"bean"`
  44 + ShopNum int `json:"shopNum"`
192 Lv int `json:"lv"` 45 Lv int `json:"lv"`
  46 + Exp int `json:"exp"`
  47 + User_invite_uid int `json:"user_invite_uid"`
  48 + User_reg_time int `json:"user_reg_time"`
  49 + User_channel int `json:"user_channel"`
  50 + User_is_black int `json:"user_is_black"`
  51 + User_scene int `json:"user_scene"`
  52 + Reg_time int `json:"reg_time"`
  53 + Invite_uid int `json:"invite_uid"`
193 } 54 }
194 55
195 -type BuyCatRoomResp struct {  
196 - Code int `json:"code"`  
197 - Message string `json:"message"`  
198 -}  
199 -  
200 -type UpCattoRoomReq struct {  
201 - Roompos int `json:"roompos"`  
202 - Callv int `json:"callv"`  
203 - Optype int `json:"optype"`  
204 -}  
205 -  
206 -type UpCattoRoommResp struct {  
207 - Code int `json:"code"`  
208 - Message string `json:"message"`  
209 -}  
210 -  
211 -type QueryCatShopInfoResp struct {  
212 - Code int `json:"code"`  
213 - Message string `json:"message"`  
214 - Chapter int `json:"chapter"`  
215 - Section int `json:"section"`  
216 - Lefttime int `json:"lefttime"`  
217 - Canwatch int `json:"canwatch"`  
218 - Storyhappen int `json:"storyhappen"`  
219 -}  
220 -  
221 -type CatShoPlayReq struct {  
222 - Catlv int `json:"catlv"`  
223 -}  
224 -type CatShoPlayResp struct {  
225 - Code int `json:"code"`  
226 - Message string `json:"message"`  
227 - Lefttime int `json:"lefttime"`  
228 - Canwatch int `json:"canwatch"`  
229 -}  
230 -  
231 -type GetCatShopRewardReq struct {  
232 - Optype int `json:"optype"`  
233 -}  
234 -  
235 -type GetCatShopRewardResp struct {  
236 - Code int `json:"code"`  
237 - Message string `json:"message"`  
238 - Love int64 `json:"love"`  
239 -}  
240 -  
241 -type AcclecteCatStoryResp struct {  
242 - Code int `json:"code"`  
243 - Message string `json:"message"`  
244 -}  
245 -  
246 -type UpdateUserInfoReq struct {  
247 - Headurl string `json:"headurl"`  
248 - Nickname string `json:"nickname"`  
249 - Realname string `json:"realname"`  
250 -}  
251 -  
252 -type UpdateUserInfoResp struct {  
253 - Code int `json:"code"`  
254 - Message string `json:"message"` 56 +type UserLoginData struct {
  57 + Dasedata UserBaseData `json:"UserBaseData"`
  58 + Extdata UserExtData `json:"user_ext_data"`
255 } 59 }
256 60
257 -type RankInfoDesc struct {  
258 - Rank int `json:"rank"`  
259 - Headurl string `json:"headurl"`  
260 - Nickname string `json:"nickname"`  
261 - Catlv int `json:"catlv"`  
262 - Goldnum int64 `json:"goldnum"` 61 +type UserLoginResult struct {
  62 + Code int `json:"code"`
  63 + Data UserLoginData `json:"data"`
263 } 64 }
264 65
265 -type QueryPlayerRankResp struct {  
266 - Code int `json:"code"`  
267 - Message string `json:"message"`  
268 - Data []RankInfoDesc `json:"data"`  
269 -}  
270 66
271 -type QueryCompleteTaskDesc struct {  
272 - Taskid int `json:"taskid"`  
273 -}  
274 67
275 -type QueryOnlienTaskDesc struct {  
276 - Taskid int `json:"taskid"`  
277 - Lefttime int64 `json:"lefttime"`  
278 -} 68 +type UserLoginResp struct {
  69 + Status string `json:"status"`
  70 + Result UserLoginResult `json:"result"`
279 71
280 -type QueryCompleteTaskResp struct {  
281 - Code int `json:"code"`  
282 - Message string `json:"message"`  
283 - Data []QueryCompleteTaskDesc `json:"data"`  
284 - Online []QueryOnlienTaskDesc `json:"online"`  
285 } 72 }
286 73
287 -type QueryCompleteAchievementDesc struct {  
288 - Achieveid int `json:"achieveid"` 74 +type SaveUserDataReq struct{
  75 + Token string `json:"token"`
  76 + Hot int `json:"hot"`
  77 + Coin int64 `json:"coin"`
  78 + Loveexp int `json:"loveexp"`
  79 + Bean int `json:"bean"`
  80 + Shopnum int `json:"shopnum"`
289 } 81 }
290 82
291 -type QueryCompleteAchievementResp struct {  
292 - Code int `json:"code"`  
293 - Message string `json:"message"`  
294 - Data []QueryCompleteAchievementDesc `json:"data"` 83 +type SaveUserDataResp struct {
  84 + Status string `json:"status"`
  85 + Result UserLoginResult `json:"result"`
295 } 86 }
296 87
297 -type GetTaskRewardReq struct {  
298 - Taskid int `json:"taskid"` 88 +type CommonResult struct {
  89 + Code int `json:"code"`
  90 + Data string `json:"data"`
299 } 91 }
300 92
301 -type GetTaskRewardResp struct {  
302 - Code int `json:"code"`  
303 - Message string `json:"message"` 93 +type SaveDataReq struct{
  94 + Token string `json:"token"`
  95 + Field string `json:"field"`
  96 + Value string `json:"value"`
304 } 97 }
305 98
306 -type GetAchieveRewardReq struct {  
307 - Achieveid int `json:"achieveid"` 99 +type SaveDataResp struct {
  100 + Status string `json:"status"`
  101 + Result CommonResult `json:"result"`
308 } 102 }
309 103
310 -type GetAchieveRewardResp struct {  
311 - Code int `json:"code"`  
312 - Message string `json:"message"` 104 +type GetDataDesc struct {
  105 + Base_data string `json:"base_data"`
313 } 106 }
314 107
315 -type StartOnlineTaskReq struct {  
316 - Taskid int `json:"taskid"` 108 +type GetDataResult struct {
  109 + Code int `json:"code"`
  110 + Data GetDataDesc `json:"data"`
317 } 111 }
318 112
319 -type StartOnlineTaskResp struct {  
320 - Code int `json:"code"`  
321 - Message string `json:"message"`  
322 - Lefttime int `json:"lefttime"` 113 +type GetDataReq struct{
  114 + Token string `json:"token"`
  115 + Field string `json:"field"`
323 } 116 }
324 117
325 -type GetOfflineRewardReq struct {  
326 - Optype int `json:"optype"` 118 +type GetDataResp struct {
  119 + Status string `json:"status"`
  120 + Result GetDataResult `json:"result"`
327 } 121 }
328 122
329 -type GetOfflineRewardResp struct {  
330 - Code int `json:"code"`  
331 - Message string `json:"message"`  
332 - Gold int64 `json:"gold"`  
333 - Love int64 `json:"love"`  
334 -}  
335 123
336 //********************************************************************************************************** 124 //**********************************************************************************************************
337 125
338 -type PosData struct {  
339 - Pos int  
340 - Catlv int  
341 - Countdown int //倒计时 为0表示没有  
342 - //UpPos int //上阵的位置 0表示未上阵  
343 -}  
344 -  
345 -//玩家购买猫详情  
346 -type BuyCatInfoData struct {  
347 - Buytime int //购买次数  
348 - IsMaxBuytime int //是否达到涨价上线 1是0否  
349 - CurPrice int64 //当前价格  
350 -}  
351 -  
352 -//猫咖店家具数据  
353 -type CatRoomData struct {  
354 - LvCatlv int //入住猫的等级  
355 -}  
356 -  
357 -//猫咖门店数据  
358 -type CatShopData struct {  
359 - Chapter int //当前所处进度 对应shopcaofig的id  
360 - Section int //当前小节进度 ,即当前大章节第几次故事  
361 - IsPlaying int //是否处于探险模式 1是0否  
362 - LeftTime int //探险剩余时间  
363 - PlayTimes int //当前为第几次探险  
364 - DayNum int //当天日期,用于判断跨天  
365 - TotalWatchNumLeft int //当天剩余看视频次数  
366 - ThisIsWatch int //本次探险是否已经看过视频  
367 - IsMax int //是否已经通关 1是0否  
368 - CurCatLv int //参加探险的猫等级  
369 - IsStoryHappen int //此次是否触发故事  
370 -}  
371 -  
372 -//玩家排行榜数据  
373 -type UserRankInfo struct {  
374 - Gold int64 //金币  
375 - Head string //头像地址  
376 - NickName string //昵称  
377 - Highestlv int //当前最高猫等级  
378 - Uuid int //uuid  
379 -}  
380 -  
381 -//玩家任务数据 每日清零  
382 -type TaskData struct {  
383 - //StartOnline int //开始计算在线时间  
384 - StartOnline map[int]int64 //记录对应takid 和开始计时的时间  
385 - BuyCatTime int //商店购买猫次数  
386 - MergeTime int //合成猫次数  
387 - PlayWithTime int //陪玩次数  
388 - WatchAddTime int //看广告次数  
389 - CompleteId map[int]int //已经完成的任务的id,对应task表的id value无用  
390 - HaveComplete map[int]int //记录当日已完成的任务,已完成则不再完成  
391 -}  
392 -  
393 -//玩家成就数据  
394 -type AchieveMentData struct {  
395 - GetNewCatTime int //累计解锁新猫次数  
396 - GetAllJia int //累计获得猫爬架次数  
397 - GetRoomJu int //累计解锁新家具次数  
398 - StoryTime int //累计解锁故事  
399 - ShopTime int //累计解锁店铺  
400 - CompleteId map[int]int //已经完成的任务的id,对应achievement表id value为无用  
401 - HaveComplete map[int]int //记录已完成成就已完成则不再触发  
402 -}  
403 126
404 //玩家数据 127 //玩家数据
405 type UserData struct { 128 type UserData struct {
406 - Gold int64 //金币  
407 - Love int64 //爱心值  
408 - Goldrate int64 //金币生成速率  
409 - Loverate int64 //爱心生产速率  
410 - Highestlv int //当前最高猫等级  
411 - InviteId int //邀请者uid  
412 - CurBoxLv int //当前猫箱子等级  
413 - IsDouble int //当前加速标签 1表示双倍收益 0表示正常  
414 - IsAuto int //当前是否自动合成  
415 - IsBoxAcc int //是否处于加速生成箱子状态  
416 - RandGiftNum int //当前剩余空投猫粮次数  
417 - RandGiftDay int //记录当前猫粮日期,当日期变化则重置RandGiftNum  
418 - RandGiftTime int //记录上一次空投猫粮时间  
419 - Redbag int //红包值 单位为分  
420 - Head string //头像地址  
421 - NickName string //昵称  
422 - RealName string //实名  
423 - IsFirstRedBgCat int //是否合成过红包猫 0表示否1表示是  
424 - OfflineGold int64 //离线金币  
425 - OfflineLove int64 //离线爱心  
426 - CatShopInfo CatShopData //猫咖门店数据  
427 - Taskinfo TaskData //任务数据  
428 - AchieveMent AchieveMentData //成就数据  
429 - PosInfo []PosData //位置信息 从0开始  
430 - BuyCatInfo []BuyCatInfoData //商店购买猫数据 第一个元素为1级猫 第二个为2级猫以此类推  
431 - CatRoomInfo []CatRoomData //猫咖店数据 129 + Userid int //玩家id
  130 + Hot int
  131 + Coin int64 //金币
  132 + Loevexp int
  133 + Bean int //咖啡豆
  134 + Shopnum int //店铺数量
  135 + Lv int
  136 + Exp int
  137 + UserInviteId int
  138 + Userregtime int
  139 + Channel int
  140 + Isblack int
  141 + Scene int
  142 + Regtime int
  143 + InviteUid int
432 144
433 } 145 }
434 146
435 -//仓库数据详情  
436 -type WareHouseDesc struct {  
437 - Warelv int //红包猫等级 对应表id  
438 -}  
439 -  
440 -//玩家仓库数据  
441 -type UserWareHouseData struct {  
442 - Info []WareHouseDesc //下标表示位置  
443 -}  
444 -  
445 -const (  
446 - TASK_TYPE_ONLINE = 1 //在线  
447 - TASK_TYPE_BUYCAT = 2 //商店购买猫  
448 - TASK_TYPE_MERGE = 3 //合成猫  
449 - TASK_TYPE_PLAYWITHCAT = 4 //猫咪陪玩  
450 - TASK_TYPE_WATCHADD = 5 //观看广告  
451 - ACH_TYPE_GETCAT = 6 //累计解锁猫  
452 - ACH_TYPE_GETCATJIA = 7 //累计获得猫爬架  
453 - ACH_TYPE_GETCATROOMJIA = 8 //累计解锁新家具  
454 - ACH_TYPE_GETSTORY = 9 //累计解锁新故事  
455 - ACH_TYPE_GBESHOP = 10 //累计用于新店铺  
456 -)  
src/HttpServer/logic/errordef.go 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +package logic
  2 +
  3 +
  4 +const (
  5 + ERROR_OK = 0 //没有错误
  6 + ERROR_JSONUNMASHFAILED = 1 //json解析失败
  7 + ERROR_GETUSERBASICFAILED = 2 //获取玩家basic数据失败
  8 + ERROR_GETUSEREXTFAILED = 3 //获取玩家ext数据失败
  9 + ERROR_GETUSERIDFAILED = 4 //获取玩家uuid失败
  10 + ERROR_GETUSERMAPBYUIDFAILED = 5 //从玩家在线数据获取失败
  11 + ERROR_SRVDB_FAILED = 6 //服務器存储数据失败或者读取失败
  12 +)
0 \ No newline at end of file 13 \ No newline at end of file
src/HttpServer/logic/function.go 0 → 100644
@@ -0,0 +1,104 @@ @@ -0,0 +1,104 @@
  1 +package logic
  2 +
  3 +import (
  4 + "HttpServer/redishandler"
  5 + "common/logger"
  6 + "common/redis"
  7 + "encoding/json"
  8 + "net/http"
  9 + "strconv"
  10 +)
  11 +
  12 +func SetHeader(w http.ResponseWriter) {
  13 + w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域
  14 + w.Header().Set("Content-Type", "application/json")
  15 + w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid")
  16 +}
  17 +
  18 +//设置
  19 +func SetTouristUid(utoken string,uid int) error{
  20 + err := redishandler.GetRedisClient().HSet(redis.USER_TOURIST_UID, utoken,strconv.Itoa(uid))
  21 + if err != nil {
  22 + logger.Error("SetTouristUid failed,err=%v",err)
  23 + return err
  24 + }
  25 + return nil
  26 +}
  27 +
  28 +//获取游客的uid 返回值为uid
  29 +func GetTouristUid(utoken string) (int,error){
  30 + uidstr, err := redishandler.GetRedisClient().HGet(redis.USER_TOURIST_UID, utoken)
  31 + if err != nil {
  32 + return 0,err
  33 + }
  34 +
  35 + uid,err := strconv.Atoi(uidstr)
  36 + return uid,err
  37 +}
  38 +
  39 +//获取新的uuid
  40 +func GetNewUUid() int {
  41 + redishandler.GetRedisClient().Incr(redis.USER_MAX_UUID)
  42 + newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.USER_MAX_UUID)
  43 + if err != nil {
  44 + logger.Error("GetNewUUid failed,err=%v",err)
  45 + return 0
  46 + }
  47 +
  48 + return newuuid+10000
  49 +}
  50 +
  51 +func SaveUserBaseData(uuid int,value string) error {
  52 + err := redishandler.GetRedisClient().HSet(redis.USER_BASE_DATA, strconv.Itoa(uuid), value)
  53 + return err
  54 +}
  55 +
  56 +func GetUserBaseData(uuid int ) (string,error) {
  57 + strval,err := redishandler.GetRedisClient().HGet(redis.USER_BASIC_DATA, strconv.Itoa(uuid))
  58 + if err != nil {
  59 + logger.Error("GetUserBasic failed,err=%v",err)
  60 + return "",err
  61 + }
  62 +
  63 + return strval,err
  64 +
  65 +}
  66 +
  67 +func SaveUserBasic(uuid int,value string) error {
  68 + err := redishandler.GetRedisClient().HSet(redis.USER_BASIC_DATA, strconv.Itoa(uuid), value)
  69 + return err
  70 +}
  71 +
  72 +func GetUserBasic(uuid int ) (*UserBaseData,error) {
  73 + strval,err := redishandler.GetRedisClient().HGet(redis.USER_BASIC_DATA, strconv.Itoa(uuid))
  74 + if err != nil {
  75 + logger.Error("GetUserBasic failed,err=%v",err)
  76 + return nil,err
  77 + }
  78 + basic := new(UserBaseData)
  79 + err = json.Unmarshal([]byte(strval), basic)
  80 + return basic,err
  81 +
  82 +}
  83 +
  84 +func SaveUserExt(extdata * UserData) error {
  85 + if extdata == nil {
  86 + return nil
  87 + }
  88 + m_userInfo.Set(uint32(extdata.Userid),extdata)
  89 +
  90 + ext,_ := json.Marshal(&extdata)
  91 + err := redishandler.GetRedisClient().HSet(redis.USER_EXT_DATA, strconv.Itoa(extdata.Userid), string(ext))
  92 + return err
  93 +}
  94 +
  95 +func GetUserExt(uuid int) (*UserExtData,error) {
  96 + strval,err := redishandler.GetRedisClient().HGet(redis.USER_EXT_DATA, strconv.Itoa(uuid))
  97 + if err != nil {
  98 + logger.Error("GetUserExt failed,err=%v",err)
  99 + return nil,err
  100 + }
  101 + ext := new(UserExtData)
  102 + err = json.Unmarshal([]byte(strval), ext)
  103 + return ext,err
  104 +}
0 \ No newline at end of file 105 \ No newline at end of file
src/HttpServer/logic/httpserver.go
@@ -2,11 +2,7 @@ package logic @@ -2,11 +2,7 @@ package logic
2 2
3 import ( 3 import (
4 "HttpServer/conf" 4 "HttpServer/conf"
5 - "bytes"  
6 "common/logger" 5 "common/logger"
7 - "encoding/json"  
8 - "strconv"  
9 -  
10 "io/ioutil" 6 "io/ioutil"
11 //"log" 7 //"log"
12 "net/http" 8 "net/http"
@@ -23,42 +19,7 @@ func StartHttpServe() { @@ -23,42 +19,7 @@ func StartHttpServe() {
23 19
24 //just for test 20 //just for test
25 func Testsendhttp() { 21 func Testsendhttp() {
26 - var test UserLoginData  
27 - //test.Uuid = 100  
28 - test.Fromid = 200  
29 - test.Sharetype = 1  
30 -  
31 - client := &http.Client{}  
32 22
33 - bys, err := json.Marshal(&test)  
34 - if err != nil {  
35 - logger.Error("testsendhttp failed=%v", err)  
36 - return  
37 - }  
38 - body := bytes.NewBuffer(bys)  
39 - url := "http://127.0.0.1:50056/cat/login"  
40 - reqest, err := http.NewRequest("POST", url, body)  
41 - if err != nil {  
42 - logger.Error("http.NewRequest failed")  
43 - }  
44 - reqest.Header.Add("Uuid", "101")  
45 - //发送  
46 - //res, err := http.Post(url, "application/json;charset=utf-8", body)  
47 - res, err := client.Do(reqest)  
48 - if err != nil {  
49 - logger.Error(" post failed to %v err:%v data:%v", url, err, string(bys))  
50 - return  
51 - }  
52 -  
53 - result, _ := ioutil.ReadAll(res.Body)  
54 - res.Body.Close()  
55 -  
56 - s := string(result)  
57 - var resp GetUserDataResp  
58 - resp.Code = 0  
59 - var rdata UserLoginResp  
60 - _ = json.Unmarshal([]byte(s), &rdata)  
61 - logger.Info("testsendhttp , body:%v", rdata)  
62 } 23 }
63 24
64 func CheckErr(err error) { 25 func CheckErr(err error) {
@@ -68,13 +29,48 @@ func CheckErr(err error) { @@ -68,13 +29,48 @@ func CheckErr(err error) {
68 } 29 }
69 30
70 func startServerHttpServe() { 31 func startServerHttpServe() {
71 - http.HandleFunc("/cat/login", UserLogin) //登录 32 + http.HandleFunc("/catcafe/login", UserLogin) //登录
  33 + http.HandleFunc("/catcafe/user/saveUserData", saveUserData) //登录
  34 + http.HandleFunc("/catcafe/data/saveData", saveData) //登录
  35 + http.HandleFunc("/catcafe/data/getData", getData) //登录
72 36
73 37
74 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) 38 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
75 CheckErr(err) 39 CheckErr(err)
76 } 40 }
77 41
  42 +func saveUserData(w http.ResponseWriter, r *http.Request) {
  43 +
  44 + result, _ := ioutil.ReadAll(r.Body)
  45 + r.Body.Close()
  46 +
  47 + s := string(result)
  48 + logger.Info("saveUserData , body:%v,uuid=%v", s)
  49 +
  50 + HandleSaveUserData(w,s)
  51 +}
  52 +
  53 +func saveData(w http.ResponseWriter, r *http.Request) {
  54 +
  55 + result, _ := ioutil.ReadAll(r.Body)
  56 + r.Body.Close()
  57 +
  58 + s := string(result)
  59 + logger.Info("saveData , body:%v,uuid=%v", s)
  60 +
  61 + HandlesaveData(w,s)
  62 +}
  63 +
  64 +func getData(w http.ResponseWriter, r *http.Request) {
  65 +
  66 + result, _ := ioutil.ReadAll(r.Body)
  67 + r.Body.Close()
  68 +
  69 + s := string(result)
  70 + logger.Info("UserLogin , body:%v,uuid=%v", s)
  71 +
  72 + HandlegetData(w,s)
  73 +}
78 74
79 75
80 func UserLogin(w http.ResponseWriter, r *http.Request) { 76 func UserLogin(w http.ResponseWriter, r *http.Request) {
@@ -86,21 +82,21 @@ func UserLogin(w http.ResponseWriter, r *http.Request) { @@ -86,21 +82,21 @@ func UserLogin(w http.ResponseWriter, r *http.Request) {
86 //w.Header().Add("Access-Control-Allow-Headers", "") 82 //w.Header().Add("Access-Control-Allow-Headers", "")
87 //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") 83 //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")
88 84
89 - Uuid := 0 85 + /*Uuid := 0
90 if len(r.Header) > 0 { 86 if len(r.Header) > 0 {
91 Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) 87 Uuid, _ = strconv.Atoi(r.Header.Get("Uuid"))
92 } 88 }
93 89
94 if Uuid == 0 { 90 if Uuid == 0 {
95 return 91 return
96 - } 92 + }*/
97 result, _ := ioutil.ReadAll(r.Body) 93 result, _ := ioutil.ReadAll(r.Body)
98 r.Body.Close() 94 r.Body.Close()
99 95
100 s := string(result) 96 s := string(result)
101 - logger.Info("UserLogin , body:%v,uuid=%v", s, Uuid) 97 + logger.Info("UserLogin , body:%v,uuid=%v", s)
102 98
103 - //HandlerLogin(w, s, Uuid) 99 + HandleUserLogin(w,s)
104 } 100 }
105 101
106 102
src/HttpServer/logic/logic.go
1 -package logic  
2 \ No newline at end of file 1 \ No newline at end of file
  2 +package logic
  3 +
  4 +import (
  5 +
  6 + "common/beegomap"
  7 + "common/logger"
  8 +
  9 + "encoding/json"
  10 + "fmt"
  11 + "net/http"
  12 +
  13 + "time"
  14 +)
  15 +
  16 +var (
  17 + m_userInfo *beegomap.BeeMap //make(map[int32]*UserData
  18 +)
  19 +
  20 +func init() {
  21 + m_userInfo = beegomap.NewBeeMap()
  22 +}
  23 +
  24 +
  25 +
  26 +func InitTourist(req *UserLoginReq,resp *UserLoginResp) {
  27 + //首先生成user_base_data
  28 + var basedata UserBaseData
  29 + basedata.User_id = GetNewUUid()
  30 + basedata.User_avatar_url = ""
  31 + basedata.User_city = "天堂"
  32 + basedata.User_gender = 1
  33 + basedata.User_nickname = "游客" + string(basedata.User_id)
  34 + basedata.User_openid = ""
  35 + basedata.User_token = req.Token
  36 + resp.Result.Data.Dasedata = basedata
  37 + //保存base data
  38 + basic, _ := json.Marshal(&basedata)
  39 + SaveUserBasic(basedata.User_id,string(basic))
  40 +
  41 + SetTouristUid(req.Token,basedata.User_id)
  42 + //然后生成user_ext_data
  43 + var extdata UserExtData
  44 + extdata.User_id = basedata.User_id
  45 + extdata.Lv = 1
  46 + extdata.Bean = 0
  47 + extdata.Coin = 0
  48 + extdata.Exp = 0
  49 + extdata.Hot = 0
  50 + extdata.Invite_uid = req.User_invite_uid
  51 + extdata.LoveExp = 0
  52 + extdata.Reg_time = int(time.Now().Unix())
  53 + extdata.ShopNum = 0
  54 + extdata.User_channel = req.Channel_id
  55 + extdata.User_is_black = 0
  56 + extdata.User_reg_time = int(time.Now().Unix())
  57 + extdata.User_scene = req.Scene
  58 + resp.Result.Data.Extdata = extdata
  59 + //保存
  60 + udata :=new(UserData)
  61 + udata.Scene = extdata.User_scene
  62 + udata.Hot = extdata.Hot
  63 + udata.Exp = extdata.Exp
  64 + udata.Coin = extdata.Coin
  65 + udata.Bean = extdata.Bean
  66 + udata.Lv = extdata.Lv
  67 + udata.Channel = extdata.User_channel
  68 + udata.InviteUid = extdata.Invite_uid
  69 + udata.Isblack = extdata.User_is_black
  70 + udata.Loevexp = extdata.LoveExp
  71 + udata.Regtime = extdata.Reg_time
  72 + udata.Shopnum = extdata.ShopNum
  73 + udata.Userid = extdata.User_id
  74 + udata.UserInviteId = extdata.User_invite_uid
  75 + udata.Userregtime = extdata.User_reg_time
  76 +
  77 + SaveUserExt(udata)
  78 +
  79 +}
  80 +
  81 +//处理游客登录
  82 +func HandleTouristLogin(w http.ResponseWriter, req *UserLoginReq,resp *UserLoginResp) {
  83 +
  84 + logger.Info("HandleTouristLogin req=%v,resp=%v",req,resp)
  85 + for {
  86 + //首先判断是否存在这个游客账号
  87 + uuid,err := GetTouristUid(req.Token)
  88 + if err != nil {
  89 + //新账号 初始化
  90 + InitTourist(req,resp)
  91 + }else {
  92 + //读取数据
  93 + basic,err := GetUserBasic(uuid)
  94 + if err != nil {
  95 + logger.Error("HandleTouristLogin getbasic failed=%v", err)
  96 + resp.Result.Code = ERROR_GETUSERBASICFAILED
  97 + break
  98 + }
  99 + resp.Result.Data.Dasedata = *basic
  100 +
  101 + ext,err := GetUserExt(uuid)
  102 + if err != nil {
  103 + logger.Error("HandleTouristLogin getext failed=%v", err)
  104 + resp.Result.Code = ERROR_GETUSEREXTFAILED
  105 + break
  106 + }
  107 + resp.Result.Data.Extdata = *ext
  108 +
  109 + m_userInfo.Set(uint32(ext.User_id),ext)
  110 + }
  111 +
  112 + resp.Result.Code = ERROR_OK
  113 + break
  114 + }
  115 + //回包
  116 + respstr, _ := json.Marshal(&resp)
  117 + fmt.Fprint(w, string(respstr))
  118 +}
  119 +
  120 +func HandleUserLogin(w http.ResponseWriter, data string) {
  121 + SetHeader(w)
  122 + var resp UserLoginResp
  123 + resp.Status = "true"
  124 + resp.Result.Code = ERROR_OK
  125 + var rdata UserLoginReq
  126 + err := json.Unmarshal([]byte(data), &rdata)
  127 + for {
  128 + if err != nil {
  129 + logger.Error("HandleUserLogin json unmarshal failed=%v", err)
  130 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  131 + break
  132 + }
  133 +
  134 + if rdata.Logintype ==LOGIN_TYPE_TOURIST {
  135 + //游客登录
  136 + HandleTouristLogin(w,&rdata,&resp)
  137 + break
  138 + }
  139 +
  140 + if rdata.Logintype == LOGIN_TYPE_ACCOUNT {
  141 + //账号密码登录
  142 +
  143 + break
  144 + }
  145 +
  146 + if rdata.Logintype == LOGIN_TYPE_WECHAT {
  147 + //微信登录
  148 +
  149 + break
  150 + }
  151 +
  152 +
  153 + }
  154 +
  155 + //回包
  156 + //respstr, _ := json.Marshal(&resp)
  157 + //fmt.Fprint(w, string(respstr))
  158 +}
  159 +
  160 +func HandleSaveUserData(w http.ResponseWriter, data string) {
  161 + SetHeader(w)
  162 + var resp SaveUserDataResp
  163 + resp.Status = "true"
  164 + resp.Result.Code = ERROR_OK
  165 + var rdata SaveUserDataReq
  166 + err := json.Unmarshal([]byte(data), &rdata)
  167 + for {
  168 + if err != nil {
  169 + logger.Error("HandleSaveUserData json unmarshal failed=%v", err)
  170 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  171 + break
  172 + }
  173 +
  174 + uuid,err := GetTouristUid(rdata.Token)
  175 + if err != nil || uuid==0{
  176 + logger.Error("HandleSaveUserData json unmarshal failed=%v", err)
  177 + resp.Result.Code = ERROR_GETUSERIDFAILED
  178 + break
  179 + }
  180 +
  181 + vv := m_userInfo.Get(uint32(uuid))
  182 + if vv == nil {
  183 + logger.Error("HandleSaveUserData failed=%v", err)
  184 + resp.Result.Code = ERROR_GETUSERMAPBYUIDFAILED
  185 + break
  186 + }
  187 +
  188 + uinfo := vv.(*UserData)
  189 + uinfo.Coin = rdata.Coin
  190 + uinfo.Loevexp = rdata.Loveexp
  191 + uinfo.Hot = rdata.Hot
  192 + uinfo.Bean = rdata.Bean
  193 + uinfo.Shopnum = rdata.Shopnum
  194 + SaveUserExt(uinfo)
  195 +
  196 + basic,err := GetUserBasic(uuid)
  197 + if err != nil {
  198 + logger.Error("HandleTouristLogin getbasic failed=%v", err)
  199 + resp.Result.Code = ERROR_GETUSERBASICFAILED
  200 + break
  201 + }
  202 + resp.Result.Data.Dasedata = *basic
  203 +
  204 + ext,err := GetUserExt(uuid)
  205 + if err != nil {
  206 + logger.Error("HandleTouristLogin getext failed=%v", err)
  207 + resp.Result.Code = ERROR_GETUSEREXTFAILED
  208 + break
  209 + }
  210 + resp.Result.Data.Extdata = *ext
  211 +
  212 + resp.Result.Code = ERROR_OK
  213 + break
  214 + }
  215 +
  216 + //回包
  217 + respstr, _ := json.Marshal(&resp)
  218 + fmt.Fprint(w, string(respstr))
  219 +}
  220 +
  221 +func HandlesaveData(w http.ResponseWriter, data string) {
  222 + SetHeader(w)
  223 + var resp SaveDataResp
  224 + resp.Status = "true"
  225 + resp.Result.Code = ERROR_OK
  226 + var rdata SaveDataReq
  227 + err := json.Unmarshal([]byte(data), &rdata)
  228 + for {
  229 + if err != nil {
  230 + logger.Error("HandlesaveData json unmarshal failed=%v", err)
  231 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  232 + break
  233 + }
  234 +
  235 + uuid,err := GetTouristUid(rdata.Token)
  236 + if err != nil || uuid==0{
  237 + logger.Error("HandlesaveData GetTouristUid failed=%v", err)
  238 + resp.Result.Code = ERROR_GETUSERIDFAILED
  239 + break
  240 + }
  241 +
  242 +
  243 + err = SaveUserBaseData(uuid,rdata.Value)
  244 +
  245 + if err != nil {
  246 + logger.Error("HandlesaveData save failed=%v", err)
  247 + resp.Result.Code = ERROR_SRVDB_FAILED
  248 + break
  249 + }
  250 +
  251 + resp.Result.Code = ERROR_OK
  252 + break
  253 + }
  254 +
  255 + //回包
  256 + respstr, _ := json.Marshal(&resp)
  257 + fmt.Fprint(w, string(respstr))
  258 +}
  259 +
  260 +func HandlegetData(w http.ResponseWriter, data string) {
  261 + SetHeader(w)
  262 + var resp SaveDataResp
  263 + resp.Status = "true"
  264 + resp.Result.Code = ERROR_OK
  265 + var rdata SaveDataReq
  266 + err := json.Unmarshal([]byte(data), &rdata)
  267 + for {
  268 + if err != nil {
  269 + logger.Error("HandlegetData json unmarshal failed=%v", err)
  270 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  271 + break
  272 + }
  273 +
  274 + uuid,err := GetTouristUid(rdata.Token)
  275 + if err != nil || uuid==0{
  276 + logger.Error("HandlegetData GetTouristUid failed=%v", err)
  277 + resp.Result.Code = ERROR_GETUSERIDFAILED
  278 + break
  279 + }
  280 +
  281 +
  282 + ubase,err := GetUserBaseData(uuid)
  283 +
  284 + if err != nil {
  285 + logger.Error("HandlegetData get failed=%v", err)
  286 + resp.Result.Code = ERROR_SRVDB_FAILED
  287 + break
  288 + }
  289 +
  290 + resp.Result.Data = ubase
  291 + resp.Result.Code = ERROR_OK
  292 + break
  293 + }
  294 +
  295 + //回包
  296 + respstr, _ := json.Marshal(&resp)
  297 + fmt.Fprint(w, string(respstr))
  298 +}
3 \ No newline at end of file 299 \ No newline at end of file
src/HttpServer/main/main.go
@@ -45,7 +45,7 @@ func main() { @@ -45,7 +45,7 @@ func main() {
45 return 45 return
46 } 46 }
47 47
48 - 48 +
49 49
50 err = redishandler.Init() 50 err = redishandler.Init()
51 if err != nil { 51 if err != nil {
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_TOURIST_UID = "CATCAFE_USER_TOURIST_UID" //存储对应设备编码与uid的对应关系
  5 + USER_MAX_UUID = "CATCAFE_USER_MAX_UUID" //记录当前最大的uid,新增自增即可
  6 + USER_BASIC_DATA = "CATCAFE_USER_BASIC_DATA" //玩家基础信息
  7 + USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据
  8 + USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据
13 ) 9 )