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 | ) |