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