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