package gameinvite import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/sys/configure" "time" ) // 踢馆(熊猫武馆) func (this *apiComp) QiecuoCheck(session comm.IUserSession, req *pb.GameInviteQiecuoReq) (errdata *pb.ErrorData) { if req.Fid == "" { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } func (this *apiComp) Qiecuo(session comm.IUserSession, req *pb.GameInviteQiecuoReq) (errdata *pb.ErrorData) { if errdata = this.QiecuoCheck(session, req); errdata != nil { return } var ( err error info *pb.GameInviteQiecuoRecord gamedata *pb.GameInviteData user *pb.DBUser ok bool keep bool ) //切磋请求处理 if info, err = this.module.model.queryQiecuo(session.GetUserId()); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } //目标是否在线 if !this.module.ModuleUser.IsOnline(req.Fid) { errdata = &pb.ErrorData{ Code: pb.ErrorCode_UserOffline, Title: pb.ErrorCode_UserOffline.ToString(), } return } if user, err = this.module.ModuleUser.GetUser(session.GetUserId()); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } keep = false if gamedata, ok = info.Invite[req.Gtype]; !ok { gamedata = &pb.GameInviteData{ Targets: make([]*pb.GameInviteQiecuoInvite, 0), Member: make([]string, 0), Rules: req.Rules, } info.Invite[req.Gtype] = gamedata } else { gamedata.Rules = req.Rules } // for i, v := range gamedata.Targets { // if v.Uid == session.GetUserId() { // gamedata.Targets = append(gamedata.Targets[0:i], gamedata.Targets[i+1:]...) // keep = true // } // } for _, v := range gamedata.Targets { if v.Uid == req.Fid { keep = true if configure.Now().Sub(time.Unix(v.Timestamp, 0)).Seconds() > 10 { v.Timestamp = configure.Now().Unix() } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_PracticeSent, Title: pb.ErrorCode_PracticeSent.ToString(), } return } } } if !keep { gamedata.Targets = append(gamedata.Targets, &pb.GameInviteQiecuoInvite{ Uid: req.Fid, Timestamp: configure.Now().Unix(), }) } this.module.model.Change(session.GetUserId(), map[string]interface{}{ "invite": info.Invite, }) session.SendMsg(string(this.module.GetType()), "qiecuo", &pb.DColorQiecuoResp{Fid: req.Fid}) this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify", &pb.GameInviteQiecuonotifyPush{User: comm.GetUserBaseInfo(user), NotifyType: 1, Gtype: req.Gtype, Rules: req.Rules}, req.Fid) return }