Commit 328b6d0f6bc3bf22755ff82f4ec98ad89023d5d0
1 parent
e5c0d994
Exists in
master
队伍相关接口
Showing
6 changed files
with
313 additions
and
3 deletions
Show diff stats
src/HttpServer/logic/datadef.go
... | ... | @@ -150,6 +150,42 @@ type GetAccessTokenResp struct { |
150 | 150 | } |
151 | 151 | |
152 | 152 | |
153 | +type CreateTeamReq struct{ | |
154 | + Token string `json:"token"` | |
155 | + Name string `json:"name"` | |
156 | + Is_open int `json:"is_open"` | |
157 | + Limit int `json:"limit"` | |
158 | +} | |
159 | + | |
160 | +type CreateTeamInfo struct { | |
161 | + Id int `json:"id"` | |
162 | + Name string `json:"name"` | |
163 | + Is_open int `json:"is_open"` | |
164 | + Num int `json:"num"` | |
165 | + Assets int `json:"assets"` | |
166 | + Least int `json:"least"` | |
167 | + Captain_id int `json:"captain_id"` | |
168 | + Creator_id int `json:"creator_id"` | |
169 | + Status int `json:"status"` | |
170 | + Create_time int `json:"create_time"` | |
171 | + Update_time int `json:"update_time"` | |
172 | + | |
173 | +} | |
174 | +type CreateTeamDesc struct { | |
175 | + Team_data CreateTeamInfo `json:"team_data"` | |
176 | +} | |
177 | + | |
178 | +type CreateTeamData struct { | |
179 | + Code int `json:"code"` | |
180 | + Data CreateTeamDesc `json:"data"` | |
181 | +} | |
182 | + | |
183 | +type CreateTeamResp struct { | |
184 | + Status string `json:"status"` | |
185 | + Result CreateTeamData `json:"result"` | |
186 | +} | |
187 | + | |
188 | + | |
153 | 189 | //********************************************************************************************************** |
154 | 190 | |
155 | 191 | ... | ... |
src/HttpServer/logic/errordef.go
... | ... | @@ -10,4 +10,10 @@ const ( |
10 | 10 | ERROR_GETUSERMAPBYUIDFAILED = 5 //从玩家在线数据获取失败 |
11 | 11 | ERROR_SRVDB_FAILED = 6 //服務器存储数据失败或者读取失败 |
12 | 12 | ERROR_HTTPPOSTFAILED = 7 //http请求失败 |
13 | + ERROR_TEAM_ALREADYEXIST = 8 //队伍名称已经存在 | |
14 | + ERROR_CREATE_SHOPNOTENOUGH = 9 //创建队伍店铺数量不够 | |
15 | + ERROR_QUERYTEAMID_FAILED = 10 //查询队伍id失败 | |
16 | + ERROR_GETTEAMINFO_FAILED = 11 //查询队伍信息失败 | |
17 | + ERROR_NOTCAPTION = 12 //不是队长无法修改队伍信息 | |
18 | + ERROR_TEAMNAMETHSDAME = 13 //修改队伍时名称重复 | |
13 | 19 | ) |
14 | 20 | \ No newline at end of file | ... | ... |
src/HttpServer/logic/function.go
... | ... | @@ -36,7 +36,7 @@ func GetTouristUid(utoken string) (int,error){ |
36 | 36 | return uid,err |
37 | 37 | } |
38 | 38 | |
39 | -//获取新的uuid | |
39 | +//获取玩家新的uuid | |
40 | 40 | func GetNewUUid() int { |
41 | 41 | redishandler.GetRedisClient().Incr(redis.USER_MAX_UUID) |
42 | 42 | newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.USER_MAX_UUID) |
... | ... | @@ -45,7 +45,19 @@ func GetNewUUid() int { |
45 | 45 | return 0 |
46 | 46 | } |
47 | 47 | |
48 | - return newuuid+10000 | |
48 | + return newuuid+100000 | |
49 | +} | |
50 | + | |
51 | +//获取新的teamid | |
52 | +func GetNewTeamId() int { | |
53 | + redishandler.GetRedisClient().Incr(redis.TEAM_MAX_UUID) | |
54 | + newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.TEAM_MAX_UUID) | |
55 | + if err != nil { | |
56 | + logger.Error("GetNewUUid failed,err=%v",err) | |
57 | + return 0 | |
58 | + } | |
59 | + | |
60 | + return newuuid+100000 | |
49 | 61 | } |
50 | 62 | |
51 | 63 | func SaveUserBaseData(uuid int,value string) error { |
... | ... | @@ -101,4 +113,76 @@ func GetUserExt(uuid int) (*UserExtData,error) { |
101 | 113 | ext := new(UserExtData) |
102 | 114 | err = json.Unmarshal([]byte(strval), ext) |
103 | 115 | return ext,err |
116 | +} | |
117 | + | |
118 | +//检测队伍名称是否已经存在 | |
119 | +func GetUserTeamNameIsExist(name string) bool { | |
120 | + _,err := redishandler.GetRedisClient().HGet(redis.TEAM_USERTEAM_NAME, name) | |
121 | + if err != nil { | |
122 | + return true | |
123 | + } | |
124 | + return false | |
125 | +} | |
126 | + | |
127 | +//删除存储的队伍名称 | |
128 | +func DelUserTeamName(name string) error{ | |
129 | + err := redishandler.GetRedisClient().HDel(redis.TEAM_USERTEAM_NAME, name) | |
130 | + if err != nil { | |
131 | + logger.Error("SetUserTeamName err=%v),err") | |
132 | + } | |
133 | + return err | |
134 | +} | |
135 | + | |
136 | +//存储队伍名称 | |
137 | +func SetUserTeamName(name string,teamid int) { | |
138 | + err := redishandler.GetRedisClient().HSet(redis.TEAM_USERTEAM_NAME, name, strconv.Itoa(teamid)) | |
139 | + if err != nil { | |
140 | + logger.Error("SetUserTeamName err=%v),err") | |
141 | + } | |
142 | +} | |
143 | + | |
144 | +//保存队伍信息 | |
145 | +func SaveTeamInfo(teamid int,tinfo *CreateTeamInfo) error { | |
146 | + team,_ := json.Marshal(tinfo) | |
147 | + err := redishandler.GetRedisClient().HSet(redis.TEAM_INFO, strconv.Itoa(teamid), string(team)) | |
148 | + if err != nil { | |
149 | + logger.Error("SaveTeamInfo err=%v),err") | |
150 | + return err | |
151 | + } | |
152 | + return nil | |
153 | +} | |
154 | + | |
155 | +//获取队伍信息 | |
156 | +func GetTeamInfo(teamid int) (*CreateTeamInfo,error) { | |
157 | + info := new(CreateTeamInfo) | |
158 | + vv,err := redishandler.GetRedisClient().HGet(redis.TEAM_INFO,strconv.Itoa(teamid)) | |
159 | + if err != nil { | |
160 | + logger.Error("GetTeamInfo failed,err=%v",err) | |
161 | + return nil,err | |
162 | + } | |
163 | + | |
164 | + err = json.Unmarshal([]byte(vv), info) | |
165 | + return info,err | |
166 | +} | |
167 | + | |
168 | +//保存teamid与uuid | |
169 | +func SaveTeamToUuid(teamid,uuid int) error { | |
170 | + err := redishandler.GetRedisClient().HSet(redis.TEAM_TEAMID_TOUUID, strconv.Itoa(uuid), strconv.Itoa(teamid)) | |
171 | + if err != nil { | |
172 | + logger.Error("SaveTeamToUuid err=%v),err") | |
173 | + return err | |
174 | + } | |
175 | + return nil | |
176 | +} | |
177 | + | |
178 | +//获取teamid与uuid | |
179 | +func GetTeamByUuid(uuid int) (int,error) { | |
180 | + vv,err := redishandler.GetRedisClient().HGet(redis.TEAM_TEAMID_TOUUID,strconv.Itoa(uuid)) | |
181 | + if err != nil { | |
182 | + logger.Error("GetTeamByUuid failed,err=%v",err) | |
183 | + return 0,err | |
184 | + } | |
185 | + | |
186 | + teamid,err := strconv.Atoi(vv) | |
187 | + return teamid,err | |
104 | 188 | } |
105 | 189 | \ No newline at end of file | ... | ... |
src/HttpServer/logic/httpserver.go
... | ... | @@ -34,12 +34,36 @@ func startServerHttpServe() { |
34 | 34 | http.HandleFunc("/catcafe/data/saveData", SaveData) //保存游戏自定义数据 |
35 | 35 | http.HandleFunc("/catcafe/data/getData", GetData) //获取自定义数据 |
36 | 36 | http.HandleFunc("/catcafe/team/textCheck", TextCheck) //敏感词检测 |
37 | + http.HandleFunc("/catcafe/team/createTeam", CreateTeam) //创建队伍 | |
38 | + http.HandleFunc("/catcafe/team/updateTeamData", UpdateTeamData) //修改队伍信息 | |
37 | 39 | |
38 | 40 | |
39 | 41 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
40 | 42 | CheckErr(err) |
41 | 43 | } |
42 | 44 | |
45 | +func UpdateTeamData(w http.ResponseWriter, r *http.Request) { | |
46 | + | |
47 | + result, _ := ioutil.ReadAll(r.Body) | |
48 | + r.Body.Close() | |
49 | + | |
50 | + s := string(result) | |
51 | + logger.Info("UpdateTeamData , body:%v,uuid=%v", s) | |
52 | + | |
53 | + HandleUpdateTeamData(w,s) | |
54 | +} | |
55 | + | |
56 | +func CreateTeam(w http.ResponseWriter, r *http.Request) { | |
57 | + | |
58 | + result, _ := ioutil.ReadAll(r.Body) | |
59 | + r.Body.Close() | |
60 | + | |
61 | + s := string(result) | |
62 | + logger.Info("CreateTeam , body:%v,uuid=%v", s) | |
63 | + | |
64 | + HandleCreateTeam(w,s) | |
65 | +} | |
66 | + | |
43 | 67 | func TextCheck(w http.ResponseWriter, r *http.Request) { |
44 | 68 | |
45 | 69 | result, _ := ioutil.ReadAll(r.Body) | ... | ... |
src/HttpServer/logic/logic.go
... | ... | @@ -398,4 +398,160 @@ func HandleTextCheck(w http.ResponseWriter, data string) { |
398 | 398 | //回包 |
399 | 399 | respstr, _ := json.Marshal(&resp) |
400 | 400 | fmt.Fprint(w, string(respstr)) |
401 | -} | |
402 | 401 | \ No newline at end of file |
402 | +} | |
403 | + | |
404 | +func HandleCreateTeam(w http.ResponseWriter, data string) { | |
405 | + SetHeader(w) | |
406 | + var resp CreateTeamResp | |
407 | + resp.Status = "true" | |
408 | + resp.Result.Code = ERROR_OK | |
409 | + var rdata CreateTeamReq | |
410 | + err := json.Unmarshal([]byte(data), &rdata) | |
411 | + for { | |
412 | + if err != nil { | |
413 | + logger.Error("HandleCreateTeam json unmarshal failed=%v", err) | |
414 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
415 | + break | |
416 | + } | |
417 | + | |
418 | + uuid,err := GetTouristUid(rdata.Token) | |
419 | + if err != nil || uuid==0{ | |
420 | + logger.Error("HandleCreateTeam GetTouristUid failed=%v", err) | |
421 | + resp.Result.Code = ERROR_GETUSERIDFAILED | |
422 | + break | |
423 | + } | |
424 | + | |
425 | + | |
426 | + //首先判断一下当前队伍名称是否已经存在 | |
427 | + isexist := GetUserTeamNameIsExist(rdata.Name) | |
428 | + if isexist { | |
429 | + logger.Error("HandleCreateTeam name mulit failed=%v", err) | |
430 | + resp.Result.Code = ERROR_TEAM_ALREADYEXIST | |
431 | + break | |
432 | + } | |
433 | + | |
434 | + /*//判断店铺数量 | |
435 | + vv := m_userInfo.Get(uint32(uuid)) | |
436 | + if vv == nil { | |
437 | + logger.Error("HandleCreateTeam failed=%v", err) | |
438 | + resp.Result.Code = ERROR_GETUSERMAPBYUIDFAILED | |
439 | + break | |
440 | + } | |
441 | + | |
442 | + uinfo := vv.(*UserData) | |
443 | + if uinfo.Shopnum < rdata.Limit { | |
444 | + logger.Error("HandleCreateTeam failed=%v", err) | |
445 | + resp.Result.Code = ERROR_CREATE_SHOPNOTENOUGH | |
446 | + break | |
447 | + }*/ | |
448 | + | |
449 | + //初始化队伍数据 | |
450 | + var teaminfo CreateTeamInfo | |
451 | + teaminfo.Name = rdata.Name | |
452 | + teaminfo.Status = 0 | |
453 | + teaminfo.Id = GetNewTeamId() | |
454 | + teaminfo.Assets = 0 | |
455 | + teaminfo.Captain_id = uuid | |
456 | + teaminfo.Creator_id = uuid | |
457 | + teaminfo.Create_time = int(time.Now().Unix()) | |
458 | + teaminfo.Is_open = rdata.Is_open | |
459 | + teaminfo.Least = rdata.Limit | |
460 | + teaminfo.Num = 1 | |
461 | + teaminfo.Update_time = int(time.Now().Unix()) | |
462 | + resp.Result.Data.Team_data = teaminfo | |
463 | + | |
464 | + //保存队伍数据 | |
465 | + SaveTeamInfo(teaminfo.Id,&teaminfo) | |
466 | + | |
467 | + //保存队伍id | |
468 | + SaveTeamToUuid(teaminfo.Id,uuid) | |
469 | + | |
470 | + //保存队伍名称 | |
471 | + SetUserTeamName(rdata.Name,teaminfo.Id) | |
472 | + | |
473 | + resp.Result.Code = ERROR_OK | |
474 | + break | |
475 | + } | |
476 | + | |
477 | + //回包 | |
478 | + respstr, _ := json.Marshal(&resp) | |
479 | + fmt.Fprint(w, string(respstr)) | |
480 | +} | |
481 | + | |
482 | +func HandleUpdateTeamData(w http.ResponseWriter, data string) { | |
483 | + SetHeader(w) | |
484 | + var resp SaveDataResp | |
485 | + resp.Status = "true" | |
486 | + resp.Result.Code = ERROR_OK | |
487 | + var rdata CreateTeamReq | |
488 | + err := json.Unmarshal([]byte(data), &rdata) | |
489 | + for { | |
490 | + if err != nil { | |
491 | + logger.Error("HandleUpdateTeamData json unmarshal failed=%v", err) | |
492 | + resp.Result.Code = ERROR_JSONUNMASHFAILED | |
493 | + break | |
494 | + } | |
495 | + | |
496 | + uuid,err := GetTouristUid(rdata.Token) | |
497 | + if err != nil || uuid==0{ | |
498 | + logger.Error("HandleUpdateTeamData GetTouristUid failed=%v", err) | |
499 | + resp.Result.Code = ERROR_GETUSERIDFAILED | |
500 | + break | |
501 | + } | |
502 | + | |
503 | + | |
504 | + //首先判断一下当前队伍名称是否已经存在 | |
505 | + isexist := GetUserTeamNameIsExist(rdata.Name) | |
506 | + if isexist { | |
507 | + logger.Error("HandleUpdateTeamData name mulit failed=%v", err) | |
508 | + resp.Result.Code = ERROR_TEAM_ALREADYEXIST | |
509 | + break | |
510 | + } | |
511 | + | |
512 | + //首先查询teamid | |
513 | + teamid,err := GetTeamByUuid(uuid) | |
514 | + if err != nil { | |
515 | + logger.Error("HandleUpdateTeamData getteamid failed=%v", err) | |
516 | + resp.Result.Code = ERROR_QUERYTEAMID_FAILED | |
517 | + break | |
518 | + } | |
519 | + //查询队伍数据 | |
520 | + teaminfo,err := GetTeamInfo(teamid) | |
521 | + if err != nil { | |
522 | + logger.Error("HandleUpdateTeamData getteaminfo failed=%v", err) | |
523 | + resp.Result.Code = ERROR_GETTEAMINFO_FAILED | |
524 | + break | |
525 | + } | |
526 | + | |
527 | + if teaminfo.Captain_id != uuid { | |
528 | + logger.Error("HandleUpdateTeamData notcaption failed=%v", err) | |
529 | + resp.Result.Code = ERROR_NOTCAPTION | |
530 | + break | |
531 | + } | |
532 | + if teaminfo.Name == rdata.Name { | |
533 | + logger.Error("HandleUpdateTeamData namesame failed=%v", err) | |
534 | + resp.Result.Code = ERROR_TEAMNAMETHSDAME | |
535 | + break | |
536 | + } | |
537 | + | |
538 | + orinname := teaminfo.Name | |
539 | + teaminfo.Name = rdata.Name | |
540 | + teaminfo.Is_open = rdata.Is_open | |
541 | + teaminfo.Least = rdata.Limit | |
542 | + teaminfo.Update_time = int(time.Now().Unix()) | |
543 | + | |
544 | + //保存队伍数据 | |
545 | + SaveTeamInfo(teaminfo.Id,teaminfo) | |
546 | + | |
547 | + DelUserTeamName(orinname) | |
548 | + //保存队伍名称 | |
549 | + SetUserTeamName(rdata.Name,teaminfo.Id) | |
550 | + | |
551 | + resp.Result.Code = ERROR_OK | |
552 | + break | |
553 | + } | |
554 | + | |
555 | + //回包 | |
556 | + respstr, _ := json.Marshal(&resp) | |
557 | + fmt.Fprint(w, string(respstr)) | |
558 | +} | ... | ... |
src/common/redis/def.go
... | ... | @@ -7,4 +7,8 @@ const ( |
7 | 7 | USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据 |
8 | 8 | USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据 |
9 | 9 | MSG_CKECK_ACCESSTOKEN = "CATCAFE_MSG_CKECK_ACCESSTOKEN" //敏感词检测的key |
10 | + TEAM_USERTEAM_NAME = "CATCAFE_TEAM_USERTEAM_NAME" //存储了玩家队伍名称 | |
11 | + TEAM_INFO = "CATCAFE_TEAM_INFO" //存储了玩家队伍信息 | |
12 | + TEAM_MAX_UUID = "CATCAFE_TEAM_MAX_UUID" //记录当前最大的teamid,新增自增即可 | |
13 | + TEAM_TEAMID_TOUUID = "CATCAFE_TEAM_TEAMID_TOUUID" //记录teamid与uuid的关系 | |
10 | 14 | ) | ... | ... |