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,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,4 +10,10 @@ const ( | ||
10 | ERROR_GETUSERMAPBYUIDFAILED = 5 //从玩家在线数据获取失败 | 10 | ERROR_GETUSERMAPBYUIDFAILED = 5 //从玩家在线数据获取失败 |
11 | ERROR_SRVDB_FAILED = 6 //服務器存储数据失败或者读取失败 | 11 | ERROR_SRVDB_FAILED = 6 //服務器存储数据失败或者读取失败 |
12 | ERROR_HTTPPOSTFAILED = 7 //http请求失败 | 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 | \ No newline at end of file | 20 | \ No newline at end of file |
src/HttpServer/logic/function.go
@@ -36,7 +36,7 @@ func GetTouristUid(utoken string) (int,error){ | @@ -36,7 +36,7 @@ func GetTouristUid(utoken string) (int,error){ | ||
36 | return uid,err | 36 | return uid,err |
37 | } | 37 | } |
38 | 38 | ||
39 | -//获取新的uuid | 39 | +//获取玩家新的uuid |
40 | func GetNewUUid() int { | 40 | func GetNewUUid() int { |
41 | redishandler.GetRedisClient().Incr(redis.USER_MAX_UUID) | 41 | redishandler.GetRedisClient().Incr(redis.USER_MAX_UUID) |
42 | newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.USER_MAX_UUID) | 42 | newuuid ,err:= redishandler.GetRedisClient().GetInt(redis.USER_MAX_UUID) |
@@ -45,7 +45,19 @@ func GetNewUUid() int { | @@ -45,7 +45,19 @@ func GetNewUUid() int { | ||
45 | return 0 | 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 | func SaveUserBaseData(uuid int,value string) error { | 63 | func SaveUserBaseData(uuid int,value string) error { |
@@ -101,4 +113,76 @@ func GetUserExt(uuid int) (*UserExtData,error) { | @@ -101,4 +113,76 @@ func GetUserExt(uuid int) (*UserExtData,error) { | ||
101 | ext := new(UserExtData) | 113 | ext := new(UserExtData) |
102 | err = json.Unmarshal([]byte(strval), ext) | 114 | err = json.Unmarshal([]byte(strval), ext) |
103 | return ext,err | 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 | \ No newline at end of file | 189 | \ No newline at end of file |
src/HttpServer/logic/httpserver.go
@@ -34,12 +34,36 @@ func startServerHttpServe() { | @@ -34,12 +34,36 @@ func startServerHttpServe() { | ||
34 | http.HandleFunc("/catcafe/data/saveData", SaveData) //保存游戏自定义数据 | 34 | http.HandleFunc("/catcafe/data/saveData", SaveData) //保存游戏自定义数据 |
35 | http.HandleFunc("/catcafe/data/getData", GetData) //获取自定义数据 | 35 | http.HandleFunc("/catcafe/data/getData", GetData) //获取自定义数据 |
36 | http.HandleFunc("/catcafe/team/textCheck", TextCheck) //敏感词检测 | 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 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) | 41 | err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil) |
40 | CheckErr(err) | 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 | func TextCheck(w http.ResponseWriter, r *http.Request) { | 67 | func TextCheck(w http.ResponseWriter, r *http.Request) { |
44 | 68 | ||
45 | result, _ := ioutil.ReadAll(r.Body) | 69 | result, _ := ioutil.ReadAll(r.Body) |
src/HttpServer/logic/logic.go
@@ -398,4 +398,160 @@ func HandleTextCheck(w http.ResponseWriter, data string) { | @@ -398,4 +398,160 @@ func HandleTextCheck(w http.ResponseWriter, data string) { | ||
398 | //回包 | 398 | //回包 |
399 | respstr, _ := json.Marshal(&resp) | 399 | respstr, _ := json.Marshal(&resp) |
400 | fmt.Fprint(w, string(respstr)) | 400 | fmt.Fprint(w, string(respstr)) |
401 | -} | ||
402 | \ No newline at end of file | 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,4 +7,8 @@ const ( | ||
7 | USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据 | 7 | USER_EXT_DATA = "CATCAFE_USER_EXT_DATA" //玩家游戏数据 |
8 | USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据 | 8 | USER_BASE_DATA = "CATCAFE_USER_BASE_DATA" //小游戏自定义数据 |
9 | MSG_CKECK_ACCESSTOKEN = "CATCAFE_MSG_CKECK_ACCESSTOKEN" //敏感词检测的key | 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 | ) |