Commit bf38495cd5410a906e9d661dbebd6131e930e89a
1 parent
17901090
Exists in
master
提交基本登录接口
Showing
5 changed files
with
472 additions
and
22 deletions
Show diff stats
src/HttpServer/logic/datadef.go
@@ -9,19 +9,15 @@ package logic | @@ -9,19 +9,15 @@ package logic | ||
9 | //"107":"签到罐" | 9 | //"107":"签到罐" |
10 | 10 | ||
11 | type UserLoginReq struct { | 11 | type UserLoginReq struct { |
12 | - Fromid int `json:"fromid"` | ||
13 | - Sharetype int `json:"sharetype"` | ||
14 | - Gameid string `json:"gameid"` | ||
15 | - Channel string `json:"channel"` | 12 | + |
16 | } | 13 | } |
17 | 14 | ||
18 | type UserLoginData struct { | 15 | type UserLoginData struct { |
16 | + Isnew int `json:"isnew"` | ||
19 | Walletgold int `json:"walletgold"` | 17 | Walletgold int `json:"walletgold"` |
20 | - Leftredbagcnt int `json:"leftredbagcnt"` | ||
21 | - Guangold int `json:"guangold"` | ||
22 | - Userlv int `json:"userlv"` | ||
23 | - Userexp int `json:"userexp"` | ||
24 | - Sumloginday int `json:"sumloginday"` | 18 | + Guangold int `json:"guangold"` |
19 | + PlayerData string `json:"playerData"` | ||
20 | + | ||
25 | } | 21 | } |
26 | 22 | ||
27 | type UserLoginResp struct { | 23 | type UserLoginResp struct { |
@@ -332,14 +328,13 @@ type WithDrawDesc struct { | @@ -332,14 +328,13 @@ type WithDrawDesc struct { | ||
332 | Cid int `json:"cid"` | 328 | Cid int `json:"cid"` |
333 | Cnum float32 `json:"cnum"` | 329 | Cnum float32 `json:"cnum"` |
334 | Isnew int `json:"isnew"` | 330 | Isnew int `json:"isnew"` |
335 | - Limitlv int `json:"limitlv"` | ||
336 | Preisfind int `json:"preisfind"` | 331 | Preisfind int `json:"preisfind"` |
337 | Day int `json:"day"` | 332 | Day int `json:"day"` |
338 | } | 333 | } |
339 | 334 | ||
340 | //玩家数据 | 335 | //玩家数据 |
341 | type UserData struct { | 336 | type UserData struct { |
342 | - Userid int //玩家id | 337 | + Userid string //玩家w唯一id |
343 | Lv int //玩家当前等级 | 338 | Lv int //玩家当前等级 |
344 | LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 | 339 | LvRewardGet int //当前等级奖励是否已经领取 1未领取 2普通领取 3双倍领取 |
345 | Exp int //玩家当前经验值 | 340 | Exp int //玩家当前经验值 |
src/HttpServer/logic/function.go
1 | package logic | 1 | package logic |
2 | 2 | ||
3 | -import "net/http" | 3 | +import ( |
4 | + "HttpServer/jsonconf" | ||
5 | + "HttpServer/redishandler" | ||
6 | + "bytes" | ||
7 | + "common/logger" | ||
8 | + "common/redis" | ||
9 | + "crypto/md5" | ||
10 | + "encoding/hex" | ||
11 | + "encoding/json" | ||
12 | + "errors" | ||
13 | + "io/ioutil" | ||
14 | + "net/http" | ||
15 | + "sort" | ||
16 | + "strconv" | ||
17 | + "time" | ||
18 | +) | ||
4 | 19 | ||
5 | func SetHeader(w http.ResponseWriter) { | 20 | func SetHeader(w http.ResponseWriter) { |
6 | w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 | 21 | w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域 |
7 | w.Header().Set("Content-Type", "application/json") | 22 | w.Header().Set("Content-Type", "application/json") |
8 | - w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid") | 23 | + w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid,Gameid,Channel") |
24 | +} | ||
25 | + | ||
26 | +func GettotalParam(paramlist []string) string { | ||
27 | + //排序 | ||
28 | + sort.Strings(paramlist) | ||
29 | + | ||
30 | + //拼接 | ||
31 | + sumparam := "" | ||
32 | + for _, val := range paramlist { | ||
33 | + sumparam += val | ||
34 | + } | ||
35 | + | ||
36 | + return sumparam | ||
37 | +} | ||
38 | + | ||
39 | +func GetHashValue(signsum string) string { | ||
40 | + /*h := sha1.New() | ||
41 | + h.Write([]byte(signsum)) | ||
42 | + bs := h.Sum(nil) | ||
43 | + sign := hex.EncodeToString(bs)*/ | ||
44 | + ctx := md5.New() | ||
45 | + ctx.Write([]byte(signsum)) | ||
46 | + return hex.EncodeToString(ctx.Sum(nil)) | ||
47 | +} | ||
48 | + | ||
49 | +func DoHttpPost(bys []byte, apistr string) (string, error) { | ||
50 | + body := bytes.NewBuffer(bys) | ||
51 | + url1 := XIAOXINGXING_SDKURLOFFICAL + apistr //"api/server/addcoin" | ||
52 | + | ||
53 | + res, err := http.Post(url1, "application/json;charset=utf-8", body) | ||
54 | + if err != nil { | ||
55 | + logger.Error("DoHttpPost failed err=%v", err) | ||
56 | + return "", err | ||
57 | + } | ||
58 | + result, _ := ioutil.ReadAll(res.Body) | ||
59 | + defer res.Body.Close() | ||
60 | + | ||
61 | + return string(result), nil | ||
62 | +} | ||
63 | + | ||
64 | +func GetCoinFromSdk(uuid int, gameid string, channel string) (int, error) { | ||
65 | + | ||
66 | + SERVERKEY := XIAOXINGXING_SERVERKEYTEST | ||
67 | + if gameid == "1015" { | ||
68 | + SERVERKEY = XIAOXINGXING_SERVERKEYTEST_1015 | ||
69 | + } | ||
70 | + | ||
71 | + var paramlist []string | ||
72 | + var params GetCoinDesc | ||
73 | + params.Sign_type = "md5" | ||
74 | + params.Gameid = gameid | ||
75 | + params.Channel = channel | ||
76 | + params.Uid = uuid | ||
77 | + params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) | ||
78 | + signtypestr := "sign_type=" + params.Sign_type | ||
79 | + timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) | ||
80 | + paramgameid := "gameid=" + gameid | ||
81 | + pchannel := "channel=" + channel | ||
82 | + puid := "uid=" + strconv.Itoa(uuid) | ||
83 | + paramlist = append(paramlist, signtypestr) | ||
84 | + paramlist = append(paramlist, timestampstr) | ||
85 | + paramlist = append(paramlist, paramgameid) | ||
86 | + paramlist = append(paramlist, pchannel) | ||
87 | + paramlist = append(paramlist, puid) | ||
88 | + | ||
89 | + sumparam := GettotalParam(paramlist) | ||
90 | + //加serverkey | ||
91 | + signsum := sumparam + SERVERKEY | ||
92 | + | ||
93 | + //进行hash | ||
94 | + sign := GetHashValue(signsum) | ||
95 | + params.Sign = sign | ||
96 | + logger.Info("GetCoinFromSdk sumparam is:%v,sign is:", signsum, sign) | ||
97 | + | ||
98 | + bys, err := json.Marshal(¶ms) | ||
99 | + if err != nil { | ||
100 | + logger.Error("GetCoinFromSdk failed=%v", err) | ||
101 | + return 0, err | ||
102 | + } | ||
103 | + res, err := DoHttpPost(bys, "api/server/getcoin") | ||
104 | + if err != nil { | ||
105 | + logger.Error("GetCoinFromSdk failed=%v", err) | ||
106 | + return 0, err | ||
107 | + } | ||
108 | + | ||
109 | + logger.Info("GetCoinFromSdk res=%v", res) | ||
110 | + | ||
111 | + var resp AddCoinResp | ||
112 | + err = json.Unmarshal([]byte(res), &resp) | ||
113 | + if err != nil { | ||
114 | + logger.Error("GetCoinFromSdk failed=%v", err) | ||
115 | + return 0, err | ||
116 | + } | ||
117 | + | ||
118 | + if resp.Code != "0" { | ||
119 | + logger.Error("GetCoinFromSdk failed=%v", resp.Msg) | ||
120 | + return 0, err | ||
121 | + } | ||
122 | + | ||
123 | + return resp.Data.Mycoin, nil | ||
124 | +} | ||
125 | + | ||
126 | +//1任务 2成就 | ||
127 | +func GetTaskInfo(uuid int, tasktype int, channel string) (*TaskList, error) { | ||
128 | + unqiueuuid := strconv.Itoa(uuid) + channel | ||
129 | + var data string | ||
130 | + var err error | ||
131 | + if tasktype == 1 { | ||
132 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_TASKINFO_LIST, unqiueuuid) | ||
133 | + //兼容老的数据 | ||
134 | + if err != nil { | ||
135 | + //没有读到数据 则去读取一下老的id | ||
136 | + olddata, err := redishandler.GetRedisClient().HGet(redis.USER_TASKINFO_LIST, strconv.Itoa(uuid)) | ||
137 | + if err == nil { | ||
138 | + err = redishandler.GetRedisClient().HSet(redis.USER_TASKINFO_LIST, unqiueuuid, olddata) | ||
139 | + if err == nil { | ||
140 | + //删除老的数据 以后都走新的数据 | ||
141 | + err = redishandler.GetRedisClient().HDel(redis.USER_TASKINFO_LIST, strconv.Itoa(uuid)) | ||
142 | + logger.Info("GetTaskInfo uuid=%v do set", uuid) | ||
143 | + } | ||
144 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_TASKINFO_LIST, unqiueuuid) | ||
145 | + } | ||
146 | + } | ||
147 | + } else if tasktype == 2 { | ||
148 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, unqiueuuid) | ||
149 | + //成就这一块需要兼容老的数据 | ||
150 | + if err != nil { | ||
151 | + //没有读到数据 则去读取一下老的id | ||
152 | + olddata, err := redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid)) | ||
153 | + if err == nil { | ||
154 | + err = redishandler.GetRedisClient().HSet(redis.USER_ACHIEVEMENTINFO_LIST, unqiueuuid, olddata) | ||
155 | + if err == nil { | ||
156 | + //删除老的数据 以后都走新的数据 | ||
157 | + err = redishandler.GetRedisClient().HDel(redis.USER_ACHIEVEMENTINFO_LIST, strconv.Itoa(uuid)) | ||
158 | + logger.Info("GetTaskInfo uuid=%v do set", uuid) | ||
159 | + } | ||
160 | + data, err = redishandler.GetRedisClient().HGet(redis.USER_ACHIEVEMENTINFO_LIST, unqiueuuid) | ||
161 | + } | ||
162 | + } | ||
163 | + } else { | ||
164 | + logger.Error("tasktype invalid") | ||
165 | + return nil, errors.New("tasktype invalid") | ||
166 | + } | ||
167 | + | ||
168 | + if err != nil { | ||
169 | + return nil, err | ||
170 | + } | ||
171 | + | ||
172 | + var list TaskList | ||
173 | + err = json.Unmarshal([]byte(data), &list) | ||
174 | + if err != nil { | ||
175 | + logger.Error("GetTaskInfo err=%v", err) | ||
176 | + return nil, err | ||
177 | + } | ||
178 | + | ||
179 | + return &list, err | ||
180 | +} | ||
181 | + | ||
182 | +func SaveTaskInfo(uuid string, tasktype int, list *TaskList) error { | ||
183 | + savestr, err := json.Marshal(list) | ||
184 | + if err != nil { | ||
185 | + logger.Error("SaveTaskInfo err =%v", err) | ||
186 | + return err | ||
187 | + } | ||
188 | + | ||
189 | + if tasktype == 1 { | ||
190 | + err = redishandler.GetRedisClient().HSet(redis.USER_TASKINFO_LIST, uuid, string(savestr)) | ||
191 | + } else if tasktype == 2 { | ||
192 | + err = redishandler.GetRedisClient().HSet(redis.USER_ACHIEVEMENTINFO_LIST, uuid, string(savestr)) | ||
193 | + //logger.Info("SaveTaskInfo savestr=%v", string(savestr)) | ||
194 | + } else { | ||
195 | + logger.Error("tasktype invalid") | ||
196 | + return errors.New("tasktype invalid") | ||
197 | + } | ||
198 | + return err | ||
199 | +} | ||
200 | + | ||
201 | +func (t *TaskList) IsInTaskList(id int) bool { | ||
202 | + for _, val := range t.Taskdata { | ||
203 | + if val.Taskid == id { | ||
204 | + return true | ||
205 | + } | ||
206 | + } | ||
207 | + return false | ||
208 | +} | ||
209 | + | ||
210 | +func InitTaskAndAchievement(uuid int, channel string) error { | ||
211 | + unqiueid := strconv.Itoa(uuid) + channel | ||
212 | + //先初始化任务 | ||
213 | + tlist, err := GetTaskInfo(uuid, 1, channel) | ||
214 | + if tlist == nil { | ||
215 | + tasklist := new(TaskList) | ||
216 | + for _, val := range jsonconf.GetJsonConf().TaskConfig { | ||
217 | + var tmp TaskListDesc | ||
218 | + tmp.Taskstatus = 1 | ||
219 | + tmp.Taskid = val.Id | ||
220 | + tmp.Taskprogress = 0 | ||
221 | + tasklist.Taskdata = append(tasklist.Taskdata, tmp) | ||
222 | + } | ||
223 | + | ||
224 | + err := SaveTaskInfo(unqiueid, 1, tasklist) | ||
225 | + if err != nil { | ||
226 | + logger.Error("InitTaskAndAchievement err=%v", err) | ||
227 | + //return err | ||
228 | + } | ||
229 | + } else { | ||
230 | + for _, val := range jsonconf.GetJsonConf().TaskConfig { | ||
231 | + if !tlist.IsInTaskList(val.Id) { | ||
232 | + var tmp TaskListDesc | ||
233 | + tmp.Taskstatus = 1 | ||
234 | + tmp.Taskid = val.Id | ||
235 | + tmp.Taskprogress = 0 | ||
236 | + tlist.Taskdata = append(tlist.Taskdata, tmp) | ||
237 | + } | ||
238 | + } | ||
239 | + | ||
240 | + for k, _ := range tlist.Taskdata { | ||
241 | + tlist.Taskdata[k].Taskprogress = 0 | ||
242 | + tlist.Taskdata[k].Taskstatus = 1 | ||
243 | + | ||
244 | + } | ||
245 | + | ||
246 | + err := SaveTaskInfo(unqiueid, 1, tlist) | ||
247 | + if err != nil { | ||
248 | + logger.Error("InitTaskAndAchievement err=%v", err) | ||
249 | + //return err | ||
250 | + } | ||
251 | + } | ||
252 | + | ||
253 | + //成就 | ||
254 | + alist, err := GetTaskInfo(uuid, 2, channel) | ||
255 | + if alist == nil { | ||
256 | + achievelist := new(TaskList) | ||
257 | + for _, val := range jsonconf.GetJsonConf().AchieventConfig { | ||
258 | + var tmp TaskListDesc | ||
259 | + tmp.Taskstatus = 1 | ||
260 | + tmp.Taskid = val.Id | ||
261 | + tmp.Taskprogress = 0 | ||
262 | + achievelist.Taskdata = append(achievelist.Taskdata, tmp) | ||
263 | + } | ||
264 | + | ||
265 | + err = SaveTaskInfo(unqiueid, 2, achievelist) | ||
266 | + if err != nil { | ||
267 | + logger.Error("InitTaskAndAchievement err=%v", err) | ||
268 | + return err | ||
269 | + } | ||
270 | + } else { | ||
271 | + for _, val := range jsonconf.GetJsonConf().AchieventConfig { | ||
272 | + if !alist.IsInTaskList(val.Id) { | ||
273 | + var tmp TaskListDesc | ||
274 | + tmp.Taskstatus = 1 | ||
275 | + tmp.Taskid = val.Id | ||
276 | + tmp.Taskprogress = 0 | ||
277 | + alist.Taskdata = append(alist.Taskdata, tmp) | ||
278 | + } | ||
279 | + } | ||
280 | + | ||
281 | + err = SaveTaskInfo(unqiueid, 2, alist) | ||
282 | + if err != nil { | ||
283 | + logger.Error("InitTaskAndAchievement err=%v", err) | ||
284 | + return err | ||
285 | + } | ||
286 | + } | ||
287 | + | ||
288 | + return nil | ||
289 | +} | ||
290 | + | ||
291 | + | ||
292 | +func InitUserInfo(resp *UserLoginResp, uniqueuid ,gameid ,channel string,uuid int) error { | ||
293 | + | ||
294 | + var initdata UserData | ||
295 | + initdata.Lv = 1 | ||
296 | + initdata.LvRewardGet = 0 | ||
297 | + initdata.Exp = 0 | ||
298 | + initdata.Userid = uniqueuid | ||
299 | + initdata.ContinueLoginDay = 1 | ||
300 | + initdata.SumLoginDay = 1 | ||
301 | + initdata.GetFromGuanCnt = 0 | ||
302 | + initdata.GuanGold = 0 | ||
303 | + initdata.LastLoginTime = int(time.Now().Unix()) | ||
304 | + goldnum, _ := GetCoinFromSdk(uuid, gameid, channel) | ||
305 | + initdata.RealGold = goldnum | ||
306 | + initdata.WatchAddsTime = WATCH_ADD_DAY_LIMIT | ||
307 | + initdata.LeftFreeRB = FREE_REDBAG_NUM | ||
308 | + initdata.UpLvCostTime = 0 | ||
309 | + initdata.UpLvCostTimeSec = int(time.Now().Unix()) | ||
310 | + | ||
311 | + for _, val := range jsonconf.GetJsonConf().RmbConfig { | ||
312 | + var tmp WithDrawDesc | ||
313 | + tmp.Cid = val.Id | ||
314 | + tmp.Cnum = val.Rmb_num | ||
315 | + if val.Time == 1 { | ||
316 | + tmp.Isnew = 1 | ||
317 | + } else { | ||
318 | + tmp.Isnew = 2 | ||
319 | + } | ||
320 | + if val.Id == 1 { | ||
321 | + tmp.Preisfind = 1 | ||
322 | + } else { | ||
323 | + tmp.Preisfind = 0 | ||
324 | + } | ||
325 | + tmp.Day = val.Login_day | ||
326 | + initdata.WithDraw.Cashdata = append(initdata.WithDraw.Cashdata, tmp) | ||
327 | + } | ||
328 | + | ||
329 | + resp.Data.Guangold = initdata.GuanGold | ||
330 | + resp.Data.Walletgold = initdata.RealGold | ||
331 | + resp.Data.Isnew = 1 | ||
332 | + | ||
333 | + err := SaveUserInfo(&initdata, uniqueuid) | ||
334 | + if err != nil { | ||
335 | + logger.Error("InitUserInfo err=%v", err) | ||
336 | + return err | ||
337 | + } | ||
338 | + | ||
339 | + //初始化一下玩家的任务与成就数据数据 | ||
340 | + err = InitTaskAndAchievement(uuid, channel) | ||
341 | + | ||
342 | + return err | ||
343 | +} | ||
344 | + | ||
345 | +func SaveUserInfo(data *UserData, uniqueid string) error { | ||
346 | + | ||
347 | + savestr, err := json.Marshal(data) | ||
348 | + if err != nil { | ||
349 | + return err | ||
350 | + } | ||
351 | + | ||
352 | + err = redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, uniqueid, string(savestr)) | ||
353 | + | ||
354 | + return err | ||
355 | +} | ||
356 | + | ||
357 | +func GetUserInfo(uniqueid string) (*UserData, error) { | ||
358 | + | ||
359 | + data, err := redishandler.GetRedisClient().HGet(redis.USER_DATA_KEY, uniqueid) | ||
360 | + if err != nil { | ||
361 | + return nil, err | ||
362 | + } | ||
363 | + var tmp UserData | ||
364 | + err = json.Unmarshal([]byte(data), &tmp) | ||
365 | + if err != nil { | ||
366 | + return nil, err | ||
367 | + } | ||
368 | + | ||
369 | + return &tmp, nil | ||
370 | +} | ||
371 | + | ||
372 | +func SaveUserSelfData(uniqueid ,savedata string) error { | ||
373 | + err := redishandler.GetRedisClient().HSet(redis.USER_DATA_KEY, uniqueid, savedata) | ||
374 | + return err | ||
375 | +} | ||
376 | + | ||
377 | +func GetUserSelfData(uniqueid string) (string,error) { | ||
378 | + data, err := redishandler.GetRedisClient().HGet(redis.USER_SELF_DATA_KEY, uniqueid) | ||
379 | + if err != nil { | ||
380 | + return "", err | ||
381 | + } | ||
382 | + | ||
383 | + | ||
384 | + return data, nil | ||
9 | } | 385 | } |
10 | \ No newline at end of file | 386 | \ No newline at end of file |
src/HttpServer/logic/httpserver.go
@@ -94,7 +94,7 @@ func ClearData(w http.ResponseWriter, r *http.Request) { | @@ -94,7 +94,7 @@ func ClearData(w http.ResponseWriter, r *http.Request) { | ||
94 | redishandler.GetRedisClient().HDel(redis.USER_DATA_KEY, rkey) | 94 | redishandler.GetRedisClient().HDel(redis.USER_DATA_KEY, rkey) |
95 | redishandler.GetRedisClient().HDel(redis.USER_TASKINFO_LIST, rkey) | 95 | redishandler.GetRedisClient().HDel(redis.USER_TASKINFO_LIST, rkey) |
96 | redishandler.GetRedisClient().HDel(redis.USER_ACHIEVEMENTINFO_LIST, rkey) | 96 | redishandler.GetRedisClient().HDel(redis.USER_ACHIEVEMENTINFO_LIST, rkey) |
97 | - redishandler.GetRedisClient().HDel(redis.USER_WITHDRAW_RECORDLIST, rkey) | 97 | + //redishandler.GetRedisClient().HDel(redis.USER_WITHDRAW_RECORDLIST, rkey) |
98 | 98 | ||
99 | fmt.Fprint(w, "success!") | 99 | fmt.Fprint(w, "success!") |
100 | } | 100 | } |
@@ -564,23 +564,29 @@ func Watchads(w http.ResponseWriter, r *http.Request) { | @@ -564,23 +564,29 @@ func Watchads(w http.ResponseWriter, r *http.Request) { | ||
564 | 564 | ||
565 | func UserLogin(w http.ResponseWriter, r *http.Request) { | 565 | func UserLogin(w http.ResponseWriter, r *http.Request) { |
566 | 566 | ||
567 | + gameid := "" | ||
568 | + channel := "" | ||
569 | + uniqueid := "" | ||
567 | Uuid := 0 | 570 | Uuid := 0 |
568 | if len(r.Header) > 0 { | 571 | if len(r.Header) > 0 { |
569 | Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) | 572 | Uuid, _ = strconv.Atoi(r.Header.Get("Uuid")) |
573 | + gameid = r.Header.Get("Gameid") | ||
574 | + channel = r.Header.Get("Channel") | ||
575 | + uniqueid = r.Header.Get("Uuid") + r.Header.Get("Channel") | ||
570 | } | 576 | } |
571 | 577 | ||
572 | if Uuid == 0 { | 578 | if Uuid == 0 { |
573 | SetHeader(w) | 579 | SetHeader(w) |
574 | - //logger.Error("Uuid is nil!") | 580 | + logger.Error("Uuid is nil!") |
575 | return | 581 | return |
576 | } | 582 | } |
577 | result, _ := ioutil.ReadAll(r.Body) | 583 | result, _ := ioutil.ReadAll(r.Body) |
578 | r.Body.Close() | 584 | r.Body.Close() |
579 | 585 | ||
580 | s := string(result) | 586 | s := string(result) |
581 | - logger.Info("UserLogin , body:%v,uuid=%v", s, Uuid) | 587 | + logger.Info("UserLogin , body:%v,uuid=%v", s, uniqueid) |
582 | 588 | ||
583 | - //HandlerLogin(w, s, Uuid) | 589 | + HandlerLogin(w, s, uniqueid,gameid,channel,Uuid) |
584 | } | 590 | } |
585 | 591 | ||
586 | func Getuserdata(w http.ResponseWriter, r *http.Request) { | 592 | func Getuserdata(w http.ResponseWriter, r *http.Request) { |
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 | + "HttpServer/redishandler" | ||
6 | + "common/logger" | ||
7 | + "common/redis" | ||
8 | + "encoding/json" | ||
9 | + "fmt" | ||
10 | + "net/http" | ||
11 | +) | ||
12 | + | ||
13 | +func HandlerLogin(w http.ResponseWriter, data string, uniqueuuid ,gameid,channel string,uuid int) { | ||
14 | + SetHeader(w) | ||
15 | + | ||
16 | + var resp UserLoginResp | ||
17 | + resp.Code = 0 | ||
18 | + | ||
19 | + for { | ||
20 | + | ||
21 | + //先判断一下是否是新用户 | ||
22 | + isexist, err := redishandler.GetRedisClient().HExists(redis.USER_DATA_KEY, uniqueuuid) | ||
23 | + if err != nil { | ||
24 | + logger.Error("redis failed err=%v", err) | ||
25 | + resp.Message = "服务器错误" | ||
26 | + resp.Code = ERROR_SRV_ERROR | ||
27 | + break | ||
28 | + } | ||
29 | + | ||
30 | + if !isexist { | ||
31 | + //不存在 | ||
32 | + | ||
33 | + //不存在老的数据 之间走新号流程 | ||
34 | + err = InitUserInfo(&resp, uniqueuuid,gameid,channel,uuid) | ||
35 | + | ||
36 | + | ||
37 | + } else { | ||
38 | + uinfo, err := GetUserInfo(uniqueuuid) | ||
39 | + | ||
40 | + if err != nil { | ||
41 | + logger.Info("GetUserInfo HandlerLogin data failed:%v,for:%v", err, data) | ||
42 | + resp.Message = "GetUserInfo failed" | ||
43 | + resp.Code = 1 | ||
44 | + break | ||
45 | + } | ||
46 | + | ||
47 | + | ||
48 | + | ||
49 | + resp.Data.Guangold = uinfo.GuanGold | ||
50 | + resp.Data.Walletgold = uinfo.RealGold | ||
51 | + | ||
52 | + resp.Data.Isnew= 0 | ||
53 | + } | ||
54 | + | ||
55 | + pdata,err := GetUserSelfData(uniqueuuid) | ||
56 | + | ||
57 | + if err != nil { | ||
58 | + logger.Info("GetUserSelfData HandlerLogin data failed:%v,for:%v", err, data) | ||
59 | + resp.Message = "GetUserSelfData failed" | ||
60 | + resp.Code = 1 | ||
61 | + break | ||
62 | + } | ||
63 | + resp.Data.PlayerData = pdata | ||
64 | + | ||
65 | + | ||
66 | + resp.Code = ERROR_OK | ||
67 | + break | ||
68 | + } | ||
69 | + | ||
70 | + //回包 | ||
71 | + respstr, _ := json.Marshal(&resp) | ||
72 | + fmt.Fprint(w, string(respstr)) | ||
73 | + | ||
74 | + logger.Info("###HandlerLogin###rdata:%v", string(respstr)) | ||
75 | +} | ||
3 | \ No newline at end of file | 76 | \ 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_DATA_KEY = "STARSTAR_USER_DATA_KEY" //玩家数据 | ||
5 | - USER_WITHDRAW_RECORDLIST = "STARSTAR_USER_WITHDRAW_RECORDLIST" //玩家提现记录 | ||
6 | - USER_TASKINFO_LIST = "STARSTAR_USER_TASKINFO_LIST" //任务列表数据缓存 | ||
7 | - USER_ACHIEVEMENTINFO_LIST = "STARSTAR_USER_ACHIEVEMENTINFO_LIST" //成就列表数据缓存 | 4 | + USER_DATA_KEY = "RUSSIAXIAOXIAO_USER_DATA_KEY" //玩家数据 |
5 | + USER_SELF_DATA_KEY = "RUSSIAXIAOXIAO_USER_SELF_DATA_KEY" //玩家自定义数据 | ||
6 | + USER_TASKINFO_LIST = "RUSSIAXIAOXIAO_USER_TASKINFO_LIST" //任务列表数据缓存 | ||
7 | + USER_ACHIEVEMENTINFO_LIST = "RUSSIAXIAOXIAO_USER_ACHIEVEMENTINFO_LIST" //成就列表数据缓存 | ||
8 | 8 | ||
9 | ) | 9 | ) |