package practice import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "go_dreamfactory/sys/configure" "time" ) //接受切磋 func (this *apiComp) AcceptCheck(session comm.IUserSession, req *pb.PracticeAcceptReq) (errdata *pb.ErrorData) { if req.Uid == "" { code = pb.ErrorCode_ReqParameterError } return } func (this *apiComp) Accept(session comm.IUserSession, req *pb.PracticeAcceptReq) (errdata *pb.ErrorData) { if code = this.AcceptCheck(session, req); code != pb.ErrorCode_Success { return } var ( err error redRecord *pb.DBPracticeQiecuoRecord blueRecord *pb.DBPracticeQiecuoRecord keep bool ) //校验切磋请求是否超时 if redRecord, err = this.module.modelQiecuo.queryQiecuo(req.Uid); err != nil { code = pb.ErrorCode_DBError return } if blueRecord, err = this.module.modelQiecuo.queryQiecuo(session.GetUserId()); err != nil { code = pb.ErrorCode_DBError return } if redRecord.Status == 1 { //已经在战斗中了 code = pb.ErrorCode_PracticeQiecuoing return } keep = false for _, v := range redRecord.Targets { if v.Uid == session.GetUserId() { if configure.Now().Sub(time.Unix(v.Timestamp, 0)).Seconds() > 10 { code = pb.ErrorCode_PracticeInviteTimeOut return } keep = true } } if !keep { code = pb.ErrorCode_ReqParameterError return } //发起者 red red := this.module.ModuleUser.GetUser(req.Uid) if red == nil { code = pb.ErrorCode_UserNofound this.module.Error("未找到红方信息", log.Field{Key: "uid", Value: req.Uid}) return } blue := this.module.ModuleUser.GetUser(session.GetUserId()) if blue == nil { code = pb.ErrorCode_UserNofound this.module.Error("未找到蓝方信息", log.Field{Key: "uid", Value: session.GetUserId()}) return } if redRecord.Battid, code = this.module.pvp.CreatePvp( &pb.PvpUserInfo{Uid: red.Uid, Name: red.Name, Avatar: red.Avatar, Lv: red.Lv}, &pb.PvpUserInfo{Uid: blue.Uid, Name: blue.Name, Avatar: blue.Avatar, Lv: blue.Lv}, pb.PvpType_friends, ); code != pb.ErrorCode_Success { this.module.Error("CreatePvp", log.Field{Key: "code", Value: code}) return } redRecord.Status = 1 redRecord.Member = []string{session.GetUserId(), req.Uid} blueRecord.Status = 1 blueRecord.Member = []string{session.GetUserId(), req.Uid} this.module.modelQiecuo.Change(session.GetUserId(), map[string]interface{}{ "status": 1, "member": redRecord.Member, "battid": redRecord.Battid, }) this.module.modelQiecuo.Change(req.Uid, map[string]interface{}{ "status": 1, "member": redRecord.Member, "battid": redRecord.Battid, }) if err := session.SendMsg(string(this.module.GetType()), "accept", &pb.FriendAcceptResp{ IsSucc: true, }); err != nil { code = pb.ErrorCode_SystemError return } this.module.SendMsgToUser(string(this.module.GetType()), "qiecuonotify", &pb.PracticeQiecuonotifyPush{Uid: session.GetUserId(), NotifyType: 2}, req.Uid) go this.module.ModuleBuried.TriggerBuried(req.Uid, comm.GetBuriedParam(comm.Rtype183, 1)) return }