go_dreamfactory/modules/arena/api_challengereward.go
2022-10-24 17:59:41 +08:00

79 lines
2.0 KiB
Go

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
}