diff --git a/modules/pay/api_activitybuy.go b/modules/pay/api_activitybuy.go index 281f8af7f..abf772262 100644 --- a/modules/pay/api_activitybuy.go +++ b/modules/pay/api_activitybuy.go @@ -1,8 +1,10 @@ package pay import ( + "fmt" "go_dreamfactory/comm" "go_dreamfactory/pb" + "go_dreamfactory/sys/configure" cfg "go_dreamfactory/sys/configure/structs" ) @@ -64,13 +66,20 @@ func (this *apiComp) ActivityBuy(session comm.IUserSession, req *pb.PayActivityB return } + if _, ok := info.Activitys[conf.Type].Items[conf.Id]; !ok { + info.Activitys[conf.Type].Items[conf.Id] = &pb.PayActivityGiftbagItem{ + Id: conf.Id, + Lastrefresh: configure.Now().Unix(), + } + } + buynum = info.Activitys[conf.Type].Items[conf.Id].Buyunm totalbuy = info.Activitys[conf.Type].Items[conf.Id].Totalbuynum if conf.RepeatNum >= totalbuy || conf.BuyNum >= 0 && buynum >= conf.BuyNum { errdata = &pb.ErrorData{ - Code: pb.ErrorCode_PayBuyNumNotEnough, - Title: pb.ErrorCode_PayBuyNumNotEnough.ToString(), - Message: err.Error(), + Code: pb.ErrorCode_ReqParameterError, + Title: pb.ErrorCode_ReqParameterError.ToString(), + Message: fmt.Sprintf("conf.RepeatNum:%d totalbuy:%d conf.BuyNum:%d buynum:%d", conf.RepeatNum, totalbuy, conf.BuyNum, buynum), } return } diff --git a/modules/uniongve/api_challengefinish.go b/modules/uniongve/api_challengefinish.go index 6b062d2b6..49594ad66 100644 --- a/modules/uniongve/api_challengefinish.go +++ b/modules/uniongve/api_challengefinish.go @@ -21,6 +21,7 @@ func (this *apiComp) ChallengeFinish(session comm.IUserSession, req *pb.Uniongve score *cfg.GameGuildBossScoreData info *pb.DBUnionGve prop []*cfg.Gameatn + award []*pb.UserAssets ok bool err error ) @@ -48,10 +49,6 @@ func (this *apiComp) ChallengeFinish(session comm.IUserSession, req *pb.Uniongve } } - if errdata = this.module.DispenseRes(session, prop, true); errdata != nil { - return - } - lock, _ := this.module.modelUniongve.userlock(req.Unionid) err = lock.Lock() if err != nil { @@ -73,9 +70,21 @@ func (this *apiComp) ChallengeFinish(session comm.IUserSession, req *pb.Uniongve if v.Hp > 0 { ok = true v.Hp -= score.Hp + + record := &pb.DBGveRecord{ + Uid: session.GetUserId(), + Formation: make([]string, 0), + } + for i, v := range req.Report.Info.Redflist[0].Team { + record.Formation[i] = "" + if v != nil { + record.Formation[i] = v.HeroID + } + } + v.Record = append(v.Record) if v.Hp < 0 { v.Hp = 0 - this.module.modelUniongve.booskill(req.Unionid, req.Boosid, info) + go this.module.modelUniongve.booskill(req.Unionid, req.Boosid, info) } } break @@ -92,15 +101,33 @@ func (this *apiComp) ChallengeFinish(session comm.IUserSession, req *pb.Uniongve } return } - } - if err = this.module.modelUniongve.updateUnionGve(info); err != nil { - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_DBError, - Title: pb.ErrorCode_DBError.ToString(), - Message: err.Error(), + if errdata = this.module.DispenseRes(session, prop, true); errdata != nil { + return + } + award = make([]*pb.UserAssets, 0) + for _, v := range prop { + award = append(award, &pb.UserAssets{ + A: v.A, + T: v.T, + N: v.N, + }) + } + + if err = this.module.modelUniongve.updateUnionGve(info); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return } - return } - session.SendMsg(string(this.module.GetType()), "challengefinish", &pb.UniongveChallengeFinishResp{}) + + session.SendMsg(string(this.module.GetType()), "challengefinish", &pb.UniongveChallengeFinishResp{ + Unionid: req.Unionid, + Boosid: req.Boosid, + Efficient: ok, + Award: award, + }) return } diff --git a/modules/uniongve/modelUniongve.go b/modules/uniongve/modelUniongve.go index efd6e7585..e21776dd1 100644 --- a/modules/uniongve/modelUniongve.go +++ b/modules/uniongve/modelUniongve.go @@ -162,5 +162,34 @@ func (this *ModelUniongve) userlock(id string) (result *redis.RedisMutex, err er // 击杀boos func (this *ModelUniongve) booskill(unionid string, boosid int32, info *pb.DBUnionGve) { + var ( + // conf *cfg.GameGuildBossData + members []*pb.SociatyMemberInfo + offlist []string = make([]string, 0) + onine []string = make([]string, 0) + // err error + ) + // if conf, err = this.module.configure.getguildbossByid(boosid); err != nil { + // this.module.Errorln(err) + // return + // } + members = this.module.sociaty.MembersBySociatyId(unionid) + if members == nil || len(members) == 0 { + this.module.Error("MembersBySociatyId is nil !") + return + } + for _, v := range members { + if v.OfflineTime != 0 { + offlist = append(offlist, v.Uid) + } else { + onine = append(onine, v.Uid) + } + } + + for _, v := range info.Boos { + if v.Hp > 0 { + return + } + } } diff --git a/modules/uniongve/module.go b/modules/uniongve/module.go index 3f38a0f6a..4393ceed3 100644 --- a/modules/uniongve/module.go +++ b/modules/uniongve/module.go @@ -14,6 +14,8 @@ func NewModule() core.IModule { type UnionGve struct { modules.ModuleBase service core.IService + sociaty comm.ISociaty + mail comm.Imail battle comm.IBattle api *apiComp modelUniongve *ModelUniongve @@ -34,6 +36,14 @@ func (this *UnionGve) Init(service core.IService, module core.IModule, options c func (this *UnionGve) Start() (err error) { err = this.ModuleBase.Start() var module core.IModule + if module, err = this.service.GetModule(comm.ModuleSociaty); err != nil { + return + } + this.sociaty = module.(comm.ISociaty) + if module, err = this.service.GetModule(comm.ModuleMail); err != nil { + return + } + this.mail = module.(comm.Imail) if module, err = this.service.GetModule(comm.ModuleBattle); err != nil { return }