Commit 3e2ecbe749fdf6a5b44f5768055442d83fe27351

Authored by 陆恒
1 parent 328b6d0f
Exists in master

加入退出队伍相关接口

src/HttpServer/logic/datadef.go
... ... @@ -157,6 +157,16 @@ type CreateTeamReq struct{
157 157 Limit int `json:"limit"`
158 158 }
159 159  
  160 +//队伍列表人员id
  161 +type TeamMemInfo struct {
  162 + MemList []int
  163 +}
  164 +
  165 +//队伍建筑信息
  166 +type TeamBuildingInfo struct {
  167 +
  168 +}
  169 +
160 170 type CreateTeamInfo struct {
161 171 Id int `json:"id"`
162 172 Name string `json:"name"`
... ... @@ -169,8 +179,15 @@ type CreateTeamInfo struct {
169 179 Status int `json:"status"`
170 180 Create_time int `json:"create_time"`
171 181 Update_time int `json:"update_time"`
  182 +}
172 183  
  184 +//队伍信息
  185 +type TeamInfo struct {
  186 + BaseInfo CreateTeamInfo
  187 + MemInfo TeamMemInfo
  188 + BInfo TeamBuildingInfo
173 189 }
  190 +
174 191 type CreateTeamDesc struct {
175 192 Team_data CreateTeamInfo `json:"team_data"`
176 193 }
... ... @@ -186,6 +203,39 @@ type CreateTeamResp struct {
186 203 }
187 204  
188 205  
  206 +type JoinTeamReq struct{
  207 + Token string `json:"token"`
  208 + Team_id int `json:"team_id"`
  209 +}
  210 +
  211 +type JoinTeamResp struct {
  212 + Status string `json:"status"`
  213 + Result CommonResult `json:"result"`
  214 +}
  215 +
  216 +
  217 +type JoinTeamByInviteReq struct{
  218 + Token string `json:"token"`
  219 + Inviter_id int `json:"inviter_id"`
  220 +}
  221 +
  222 +type JoinTeamByInviteResp struct {
  223 + Status string `json:"status"`
  224 + Result CommonResult `json:"result"`
  225 +}
  226 +
  227 +type QuitTeamReq struct{
  228 + Token string `json:"token"`
  229 + User_id int `json:"user_id"`
  230 + Type int `json:"type"`
  231 +}
  232 +
  233 +type QuitTeamResp struct {
  234 + Status string `json:"status"`
  235 + Result CommonResult `json:"result"`
  236 +}
  237 +
  238 +
189 239 //**********************************************************************************************************
190 240  
191 241  
... ...
src/HttpServer/logic/errordef.go
... ... @@ -16,4 +16,6 @@ const (
16 16 ERROR_GETTEAMINFO_FAILED = 11 //查询队伍信息失败
17 17 ERROR_NOTCAPTION = 12 //不是队长无法修改队伍信息
18 18 ERROR_TEAMNAMETHSDAME = 13 //修改队伍时名称重复
  19 + ERROR_TEAMALREADYINTEAM = 14 //已经在队伍中无法再加入
  20 + ERROR_TEAMNOTINTEAM = 15 //不在在队伍中无法再推出
19 21 )
20 22 \ No newline at end of file
... ...
src/HttpServer/logic/function.go
... ... @@ -15,6 +15,28 @@ func SetHeader(w http.ResponseWriter) {
15 15 w.Header().Set("Access-Control-Allow-Headers", "Content-Type,Uuid")
16 16 }
17 17  
  18 +func (tinfo *TeamInfo) IsInTeam(uuid int) bool {
  19 + inteam := false
  20 + for _,val := range tinfo.MemInfo.MemList {
  21 + if val == uuid {
  22 + inteam = true
  23 + break
  24 + }
  25 + }
  26 + return inteam
  27 +}
  28 +
  29 +func (tinfo *TeamInfo) DelTeamMember(uuid int) {
  30 +
  31 + for k,val := range tinfo.MemInfo.MemList {
  32 + if val == uuid {
  33 + tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList[:k],tinfo.MemInfo.MemList[k+1:]...)
  34 + break
  35 + }
  36 + }
  37 +
  38 +}
  39 +
18 40 //设置
19 41 func SetTouristUid(utoken string,uid int) error{
20 42 err := redishandler.GetRedisClient().HSet(redis.USER_TOURIST_UID, utoken,strconv.Itoa(uid))
... ... @@ -142,7 +164,7 @@ func SetUserTeamName(name string,teamid int) {
142 164 }
143 165  
144 166 //保存队伍信息
145   -func SaveTeamInfo(teamid int,tinfo *CreateTeamInfo) error {
  167 +func SaveTeamInfo(teamid int,tinfo *TeamInfo) error {
146 168 team,_ := json.Marshal(tinfo)
147 169 err := redishandler.GetRedisClient().HSet(redis.TEAM_INFO, strconv.Itoa(teamid), string(team))
148 170 if err != nil {
... ... @@ -153,8 +175,8 @@ func SaveTeamInfo(teamid int,tinfo *CreateTeamInfo) error {
153 175 }
154 176  
155 177 //获取队伍信息
156   -func GetTeamInfo(teamid int) (*CreateTeamInfo,error) {
157   - info := new(CreateTeamInfo)
  178 +func GetTeamInfo(teamid int) (*TeamInfo,error) {
  179 + info := new(TeamInfo)
158 180 vv,err := redishandler.GetRedisClient().HGet(redis.TEAM_INFO,strconv.Itoa(teamid))
159 181 if err != nil {
160 182 logger.Error("GetTeamInfo failed,err=%v",err)
... ...
src/HttpServer/logic/httpserver.go
... ... @@ -36,12 +36,48 @@ func startServerHttpServe() {
36 36 http.HandleFunc("/catcafe/team/textCheck", TextCheck) //敏感词检测
37 37 http.HandleFunc("/catcafe/team/createTeam", CreateTeam) //创建队伍
38 38 http.HandleFunc("/catcafe/team/updateTeamData", UpdateTeamData) //修改队伍信息
  39 + http.HandleFunc("/catcafe/team/joinTeam", JoinTeam) //主动加入队伍
  40 + http.HandleFunc("/catcafe/team/joinTeamByInvite", JoinTeamByInvite) //被邀请加入队伍
  41 + http.HandleFunc("/catcafe/team/quitTeam", QuitTeam) //被邀请加入队伍
39 42  
40 43  
41 44 err := http.ListenAndServe(conf.GetServerHttpAddrConf(), nil)
42 45 CheckErr(err)
43 46 }
44 47  
  48 +func QuitTeam(w http.ResponseWriter, r *http.Request) {
  49 +
  50 + result, _ := ioutil.ReadAll(r.Body)
  51 + r.Body.Close()
  52 +
  53 + s := string(result)
  54 + logger.Info("QuitTeam , body:%v,uuid=%v", s)
  55 +
  56 + HandleQuitTeam(w,s)
  57 +}
  58 +
  59 +func JoinTeamByInvite(w http.ResponseWriter, r *http.Request) {
  60 +
  61 + result, _ := ioutil.ReadAll(r.Body)
  62 + r.Body.Close()
  63 +
  64 + s := string(result)
  65 + logger.Info("JoinTeamByInvite , body:%v,uuid=%v", s)
  66 +
  67 + HandleJoinTeamByInvite(w,s)
  68 +}
  69 +
  70 +func JoinTeam(w http.ResponseWriter, r *http.Request) {
  71 +
  72 + result, _ := ioutil.ReadAll(r.Body)
  73 + r.Body.Close()
  74 +
  75 + s := string(result)
  76 + logger.Info("JoinTeam , body:%v,uuid=%v", s)
  77 +
  78 + HandleJoinTeam(w,s)
  79 +}
  80 +
45 81 func UpdateTeamData(w http.ResponseWriter, r *http.Request) {
46 82  
47 83 result, _ := ioutil.ReadAll(r.Body)
... ...
src/HttpServer/logic/logic.go
... ... @@ -446,6 +446,8 @@ func HandleCreateTeam(w http.ResponseWriter, data string) {
446 446 }*/
447 447  
448 448 //初始化队伍数据
  449 + var bteaminfo TeamInfo
  450 + bteaminfo.MemInfo.MemList = append(bteaminfo.MemInfo.MemList,uuid)
449 451 var teaminfo CreateTeamInfo
450 452 teaminfo.Name = rdata.Name
451 453 teaminfo.Status = 0
... ... @@ -459,9 +461,9 @@ func HandleCreateTeam(w http.ResponseWriter, data string) {
459 461 teaminfo.Num = 1
460 462 teaminfo.Update_time = int(time.Now().Unix())
461 463 resp.Result.Data.Team_data = teaminfo
462   -
  464 + bteaminfo.BaseInfo = teaminfo
463 465 //保存队伍数据
464   - SaveTeamInfo(teaminfo.Id,&teaminfo)
  466 + SaveTeamInfo(teaminfo.Id,&bteaminfo)
465 467  
466 468 //保存队伍id
467 469 SaveTeamToUuid(teaminfo.Id,uuid)
... ... @@ -523,29 +525,29 @@ func HandleUpdateTeamData(w http.ResponseWriter, data string) {
523 525 break
524 526 }
525 527  
526   - if teaminfo.Captain_id != uuid {
  528 + if teaminfo.BaseInfo.Creator_id != uuid {
527 529 logger.Error("HandleUpdateTeamData notcaption failed=%v", err)
528 530 resp.Result.Code = ERROR_NOTCAPTION
529 531 break
530 532 }
531   - if teaminfo.Name == rdata.Name {
  533 + if teaminfo.BaseInfo.Name == rdata.Name {
532 534 logger.Error("HandleUpdateTeamData namesame failed=%v", err)
533 535 resp.Result.Code = ERROR_TEAMNAMETHSDAME
534 536 break
535 537 }
536 538  
537   - orinname := teaminfo.Name
538   - teaminfo.Name = rdata.Name
539   - teaminfo.Is_open = rdata.Is_open
540   - teaminfo.Least = rdata.Limit
541   - teaminfo.Update_time = int(time.Now().Unix())
  539 + orinname := teaminfo.BaseInfo.Name
  540 + teaminfo.BaseInfo.Name = rdata.Name
  541 + teaminfo.BaseInfo.Is_open = rdata.Is_open
  542 + teaminfo.BaseInfo.Least = rdata.Limit
  543 + teaminfo.BaseInfo.Update_time = int(time.Now().Unix())
542 544  
543 545 //保存队伍数据
544   - SaveTeamInfo(teaminfo.Id,teaminfo)
  546 + SaveTeamInfo(teaminfo.BaseInfo.Id,teaminfo)
545 547  
546 548 DelUserTeamName(orinname)
547 549 //保存队伍名称
548   - SetUserTeamName(rdata.Name,teaminfo.Id)
  550 + SetUserTeamName(rdata.Name,teaminfo.BaseInfo.Id)
549 551  
550 552 resp.Result.Code = ERROR_OK
551 553 break
... ... @@ -555,3 +557,210 @@ func HandleUpdateTeamData(w http.ResponseWriter, data string) {
555 557 respstr, _ := json.Marshal(&resp)
556 558 fmt.Fprint(w, string(respstr))
557 559 }
  560 +
  561 +
  562 +func HandleJoinTeam(w http.ResponseWriter, data string) {
  563 + SetHeader(w)
  564 + var resp JoinTeamResp
  565 + resp.Status = "true"
  566 + resp.Result.Code = ERROR_OK
  567 + var rdata JoinTeamReq
  568 + err := json.Unmarshal([]byte(data), &rdata)
  569 + for {
  570 + if err != nil {
  571 + logger.Error("HandleJoinTeam json unmarshal failed=%v", err)
  572 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  573 + break
  574 + }
  575 +
  576 + uuid,err := GetTouristUid(rdata.Token)
  577 + if err != nil || uuid==0{
  578 + logger.Error("HandleJoinTeam GetTouristUid failed=%v", err)
  579 + resp.Result.Code = ERROR_GETUSERIDFAILED
  580 + break
  581 + }
  582 +
  583 + //获取店铺数据
  584 + tinfo,err := GetTeamInfo(rdata.Team_id)
  585 + if err != nil {
  586 + logger.Error("HandleJoinTeam GetTeamInfoFailed failed=%v", err)
  587 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  588 + break
  589 + }
  590 +
  591 + //判断店铺数量
  592 + vv := m_userInfo.Get(uint32(uuid))
  593 + if vv == nil {
  594 + logger.Error("HandleJoinTeam failed=%v", err)
  595 + resp.Result.Code = ERROR_GETUSERMAPBYUIDFAILED
  596 + break
  597 + }
  598 +
  599 + uinfo := vv.(*UserData)
  600 + if uinfo.Shopnum < tinfo.BaseInfo.Least {
  601 + logger.Error("HandleJoinTeam failed=%v", err)
  602 + resp.Result.Code = ERROR_CREATE_SHOPNOTENOUGH
  603 + break
  604 + }
  605 +
  606 + //判断一下是否已经在队伍中
  607 + inteam := tinfo.IsInTeam(uuid)
  608 +
  609 + if inteam {
  610 + logger.Error("HandleJoinTeam already inteam failed=%v", err)
  611 + resp.Result.Code = ERROR_TEAMALREADYINTEAM
  612 + break
  613 + }
  614 +
  615 + tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList,uuid)
  616 +
  617 + //保存队伍数据
  618 + SaveTeamInfo(tinfo.BaseInfo.Id,tinfo)
  619 +
  620 +
  621 + resp.Result.Code = ERROR_OK
  622 + resp.Result.Data = ""
  623 + break
  624 + }
  625 +
  626 + //回包
  627 + respstr, _ := json.Marshal(&resp)
  628 + fmt.Fprint(w, string(respstr))
  629 +}
  630 +
  631 +
  632 +func HandleJoinTeamByInvite(w http.ResponseWriter, data string) {
  633 + SetHeader(w)
  634 + var resp JoinTeamByInviteResp
  635 + resp.Status = "true"
  636 + resp.Result.Code = ERROR_OK
  637 + var rdata JoinTeamByInviteReq
  638 + err := json.Unmarshal([]byte(data), &rdata)
  639 + for {
  640 + if err != nil {
  641 + logger.Error("HandleJoinTeamByInvite json unmarshal failed=%v", err)
  642 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  643 + break
  644 + }
  645 +
  646 + uuid,err := GetTouristUid(rdata.Token)
  647 + if err != nil || uuid==0{
  648 + logger.Error("HandleJoinTeamByInvite GetTouristUid failed=%v", err)
  649 + resp.Result.Code = ERROR_GETUSERIDFAILED
  650 + break
  651 + }
  652 +
  653 +
  654 + //获取店铺数据
  655 + teamid,err := GetTeamByUuid(rdata.Inviter_id)
  656 + if err != nil {
  657 + logger.Error("HandleJoinTeamByInvite GetTeamInfoFailed failed=%v", err)
  658 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  659 + break
  660 + }
  661 + tinfo ,err := GetTeamInfo(teamid)
  662 + if err != nil {
  663 + logger.Error("HandleJoinTeamByInvite GetTeamInfoFailed failed=%v", err)
  664 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  665 + break
  666 + }
  667 +
  668 +
  669 + //判断一下是否已经在队伍中
  670 + inteam := tinfo.IsInTeam(uuid)
  671 +
  672 + if inteam {
  673 + logger.Error("HandleJoinTeamByInvite already inteam failed=%v", err)
  674 + resp.Result.Code = ERROR_TEAMALREADYINTEAM
  675 + break
  676 + }
  677 +
  678 + tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList,uuid)
  679 +
  680 + //保存队伍数据
  681 + SaveTeamInfo(tinfo.BaseInfo.Id,tinfo)
  682 +
  683 +
  684 + resp.Result.Code = ERROR_OK
  685 + resp.Result.Data = ""
  686 + break
  687 + }
  688 +
  689 + //回包
  690 + respstr, _ := json.Marshal(&resp)
  691 + fmt.Fprint(w, string(respstr))
  692 +}
  693 +
  694 +
  695 +func HandleQuitTeam(w http.ResponseWriter, data string) {
  696 + SetHeader(w)
  697 + var resp QuitTeamResp
  698 + resp.Status = "true"
  699 + resp.Result.Code = ERROR_OK
  700 + var rdata QuitTeamReq
  701 + err := json.Unmarshal([]byte(data), &rdata)
  702 + for {
  703 + if err != nil {
  704 + logger.Error("HandleQuitTeam json unmarshal failed=%v", err)
  705 + resp.Result.Code = ERROR_JSONUNMASHFAILED
  706 + break
  707 + }
  708 +
  709 + uuid,err := GetTouristUid(rdata.Token)
  710 + if err != nil || uuid==0{
  711 + logger.Error("HandleQuitTeam GetTouristUid failed=%v", err)
  712 + resp.Result.Code = ERROR_GETUSERIDFAILED
  713 + break
  714 + }
  715 +
  716 + teamid,err := GetTeamByUuid(uuid)
  717 + if err != nil {
  718 + logger.Error("HandleQuitTeam GetTeamInfoFailed failed=%v", err)
  719 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  720 + break
  721 + }
  722 + tinfo ,err := GetTeamInfo(teamid)
  723 + if err != nil {
  724 + logger.Error("HandleQuitTeam GetTeamInfoFailed failed=%v", err)
  725 + resp.Result.Code = ERROR_GETTEAMINFO_FAILED
  726 + break
  727 + }
  728 + //判断一下是否已经在队伍中
  729 + inteam := tinfo.IsInTeam(uuid)
  730 +
  731 + if !inteam {
  732 + logger.Error("HandleQuitTeam not inteam failed=%v", err)
  733 + resp.Result.Code = ERROR_TEAMNOTINTEAM
  734 + break
  735 + }
  736 +
  737 + if rdata.Type == 0 {
  738 + //踢人 需要判断是否是队长
  739 + if uuid!=tinfo.BaseInfo.Captain_id {
  740 + logger.Error("HandleQuitTeam not caption failed=%v", err)
  741 + resp.Result.Code = ERROR_NOTCAPTION
  742 + break
  743 + }
  744 + }else {
  745 + //主动离开 需要扣除投资额
  746 + //todo 扣除投资额
  747 + }
  748 +
  749 +
  750 + //删除成员信息
  751 + //tinfo.MemInfo.MemList = append(tinfo.MemInfo.MemList,uuid)
  752 + tinfo.DelTeamMember(rdata.User_id)
  753 +
  754 + //保存队伍数据
  755 + SaveTeamInfo(tinfo.BaseInfo.Id,tinfo)
  756 +
  757 +
  758 + resp.Result.Code = ERROR_OK
  759 + resp.Result.Data = ""
  760 + break
  761 + }
  762 +
  763 + //回包
  764 + respstr, _ := json.Marshal(&resp)
  765 + fmt.Fprint(w, string(respstr))
  766 +}
558 767 \ No newline at end of file
... ...