package parkour import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/sys/configure" cfg "go_dreamfactory/sys/configure/structs" "time" ) //参数校验 func (this *apiComp) InviteCheck(session comm.IUserSession, req *pb.ParkourInviteReq) (code pb.ErrorCode) { if req.Uid == session.GetUserId() { code = pb.ErrorCode_ReqParameterError } return } ///邀请组队 func (this *apiComp) Invite(session comm.IUserSession, req *pb.ParkourInviteReq) (code pb.ErrorCode, data *pb.ErrorData) { var ( info *pb.DBParkour tinfo *pb.DBParkour tuser *pb.DBUser mount *cfg.GameBuzkashiMountData ok bool err error ) if code = this.InviteCheck(session, req); code != pb.ErrorCode_Success { return } if info, err = this.module.parkourComp.queryinfo(session.GetUserId()); err != nil { code = pb.ErrorCode_DBError return } if info.Captainid != "" && info.Captainid != session.GetUserId() { //自己不是队长 无权邀请他人 code = pb.ErrorCode_ParkourInviteNoPermissions return } if len(info.Member) > 3 { code = pb.ErrorCode_ReqParameterError return } if tuser = this.module.ModuleUser.GetUser(session.GetUserId()); tuser == nil { code = pb.ErrorCode_SystemError return } if mount, err = this.module.configure.getGameBuzkashiMount(info.Dfmount); err != nil { code = pb.ErrorCode_ConfigNoFound return } ok = false for _, v := range info.Member { if v.Uid == session.GetUserId() { ok = true } } if !ok { info.Member = append(info.Member, &pb.DBRaceMember{Uid: tuser.Uid, Name: tuser.Name, Avatar: tuser.Avatar, Mount: info.Dfmount, Hp: mount.Hp}) } if tinfo, err = this.module.parkourComp.queryinfo(req.Uid); err != nil { code = pb.ErrorCode_DBError return } if tuser = this.module.ModuleUser.GetUser(req.Uid); tuser == nil { code = pb.ErrorCode_SystemError return } if mount, err = this.module.configure.getGameBuzkashiMount(tinfo.Dfmount); err != nil { code = pb.ErrorCode_ConfigNoFound return } //目标是否在线 if !this.module.ModuleUser.IsOnline(req.Uid) { info.Member = append(info.Member, &pb.DBRaceMember{Uid: tuser.Uid, Name: tuser.Name, Avatar: tuser.Avatar, Mount: tinfo.Dfmount, Hp: mount.Hp, Isai: true}) } else { if tinfo.Captainid != "" { code = pb.ErrorCode_ParkourTargetTeamed return } ok = false for _, v := range info.Invite { if v.Uid == req.Uid { v.Expired = configure.Now().Add(time.Second * 10).Unix() ok = true } } if !ok { info.Invite = append(info.Invite, &pb.DBRaceInvite{Uid: tuser.Uid, Name: tuser.Name, Avatar: tuser.Avatar, Expired: configure.Now().Add(time.Second * 10).Unix()}) } this.module.SendMsgToUser(string(this.module.GetType()), "invitenotice", &pb.ParkourInviteNoticePush{Team: info, State: 1}, req.Uid) } if err = this.module.parkourComp.Change(session.GetUserId(), map[string]interface{}{ "invite": info.Invite, "member": info.Member, }); err != nil { code = pb.ErrorCode_DBError return } session.SendMsg(string(this.module.GetType()), "invite", &pb.ParkourInviteResp{Issucc: true, Team: info}) return }