Commit 328b6d0f6bc3bf22755ff82f4ec98ad89023d5d0

Authored by 陆恒
1 parent e5c0d994
Exists in master

队伍相关接口

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