Commit 3e2ecbe749fdf6a5b44f5768055442d83fe27351
1 parent
328b6d0f
Exists in
master
加入退出队伍相关接口
Showing
5 changed files
with
333 additions
and
14 deletions
Show diff stats
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 | ... | ... |