package arena import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/mgo" "go_dreamfactory/pb" "time" "google.golang.org/protobuf/proto" ) //参数校验 func (this *apiComp) ChallengeRewardCheck(session comm.IUserSession, req *pb.ArenaChallengeRewardReq) (code pb.ErrorCode) { return } ///挑战奖励领取 func (this *apiComp) ChallengeReward(session comm.IUserSession, req *pb.ArenaChallengeRewardReq) (code pb.ErrorCode, data proto.Message) { var ( red *pb.DBArenaUser bule *pb.DBArenaUser err error iswin bool ) if code = this.ChallengeRewardCheck(session, req); code != pb.ErrorCode_Success { return } if req.Iswin { if code, iswin = this.module.battle.CheckBattleReport(session, req.Report); code != pb.ErrorCode_Success { return } if !iswin { code = pb.ErrorCode_BattleValidationFailed return } } if red, err = this.module.modelArena.queryPlayerInfo(req.Report.Info.RedCompId); err != nil && err != mgo.MongodbNil { code = pb.ErrorCode_DBError return } if bule, err = this.module.modelArena.queryPlayerInfo(req.Report.Info.BlueCompId); err != nil && err != mgo.MongodbNil { code = pb.ErrorCode_DBError return } if len(red.Record) > 10 { red.Record = red.Record[1:] } if len(bule.Record) > 10 { bule.Record = bule.Record[1:] } red.Record = append(red.Record, &pb.DBArenaBattleRecord{ Bid: req.Report.Info.Id, Time: time.Now().Unix(), Iswin: req.Iswin, Isdefend: false, Rivalid: bule.Uid, Rivalname: bule.Name, }) if err = this.module.modelArena.Change(red.Uid, map[string]interface{}{"record": red.Record}); err != nil { code = pb.ErrorCode_DBError return } bule.Record = append(red.Record, &pb.DBArenaBattleRecord{ Bid: req.Report.Info.Id, Time: time.Now().Unix(), Iswin: !req.Iswin, Isdefend: true, Rivalid: red.Uid, Rivalname: red.Name, }) if err = this.module.modelArena.Change(bule.Uid, map[string]interface{}{"record": bule.Record}); err != nil { code = pb.ErrorCode_DBError return } return }