package parkour import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //参数校验 func (this *apiComp) QuitTeamCheck(session comm.IUserSession, req *pb.ParkourQuitTeamReq) (errdata *pb.ErrorData) { return } ///退出队伍 func (this *apiComp) QuitTeam(session comm.IUserSession, req *pb.ParkourQuitTeamReq) (errdata *pb.ErrorData) { var ( tean *pb.DBParkour ntean *pb.DBParkour member *pb.DBRaceMember users []string ok bool err error ) if errdata = this.QuitTeamCheck(session, req); errdata != nil { return } if tean, err = this.module.parkourComp.queryinfo(req.Captainid); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } for i, v := range tean.Member { if v.Uid == session.GetUserId() { tean.Member = append(tean.Member[0:i], tean.Member[i+1:]...) member = v ok = true } else if !v.Isai { users = append(users, v.Uid) } } if !ok { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } return } if req.Captainid == session.GetUserId() { //自己是队长 if len(users) > 0 { for i, v := range users { if i == 0 { if ntean, err = this.module.parkourComp.queryinfo(v); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } else { ntean.Captainid = users[0] ntean.Member = tean.Member if err = this.module.parkourComp.Change(v, map[string]interface{}{ "captainid": v, "member": tean.Member, }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } } } else { if err = this.module.parkourComp.Change(v, map[string]interface{}{ "captainid": users[0], }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } } } this.module.SendMsgToUsers(string(this.module.GetType()), "teamchanage", &pb.ParkourTeamChanagePush{Team: ntean}, users...) } tean.Invite = make([]*pb.DBRaceInvite, 0) tean.Member = make([]*pb.DBRaceMember, 0) if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{ "state": pb.RaceTeamState_resting, "captainid": "", "invite": tean.Invite, "member": tean.Member, }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } } else { if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{ "state": pb.RaceTeamState_resting, "captainid": "", }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if err = this.module.parkourComp.Change(req.Captainid, map[string]interface{}{ "member": tean.Member, }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if len(users) > 0 { this.module.SendMsgToUsers(string(this.module.GetType()), "teamquitnotice", &pb.ParkourTeamQuitNoticePush{Member: member}, users...) this.module.SendMsgToUsers(string(this.module.GetType()), "teamchanage", &pb.ParkourTeamChanagePush{Team: tean}, users...) } } session.SendMsg(string(this.module.GetType()), "quitteam", &pb.ParkourQuitTeamResp{}) return }