diff --git a/modules/mainline/api_challengeover.go b/modules/mainline/api_challengeover.go index 74b2776c8..37a73ebc7 100644 --- a/modules/mainline/api_challengeover.go +++ b/modules/mainline/api_challengeover.go @@ -173,5 +173,6 @@ func (this *apiComp) ChallengeOver(session comm.IUserSession, req *pb.MainlineCh tasks = append(tasks, comm.GetBuriedParam(comm.Rtype60, 1)) tasks = append(tasks, comm.GetBuriedParam(comm.Rtype61, 1, int32(req.Level))) go this.module.ModuleBuried.TriggerBuried(session.Clone(), tasks...) + go this.module.ModuleSys.CheckOpenCond(session.Clone(), comm.OpencondTypeMaxmapid, req.Level) return } diff --git a/modules/sociaty/api_cross_sign.go b/modules/sociaty/api_cross_sign.go index 535bbc75e..c5d039775 100644 --- a/modules/sociaty/api_cross_sign.go +++ b/modules/sociaty/api_cross_sign.go @@ -71,21 +71,28 @@ func (this *apiComp) Sign(session comm.IUserSession, req *pb.SociatySignReq) (er if cfg, ok := this.module.sociatySignConf.GetDataMap()[signCfgId]; ok { // 更新公会经验 if cfg.Exp.T == "guildexp" { - if err := this.module.modelSociaty.updateSociatyExp(cfg.Exp.N, sociaty); err != nil { - this.module.Error("公会经验更新", - log.Field{Key: "uid", Value: uid}, - log.Field{Key: "sociatyId", Value: sociaty.Id}, - log.Field{Key: "经验", Value: cfg.Exp.N}, - log.Field{Key: "err", Value: err.Error()}, - ) - } + update := map[string]interface{}{} + this.module.modelSociaty.updateSociatyExp(cfg.Exp.N, sociaty, update) // 更新等级 - if err := this.module.modelSociaty.changeLv(sociaty); err != nil { - this.module.Error("公会等级更新", - log.Field{Key: "uid", Value: uid}, - log.Field{Key: "sociatyId", Value: sociaty.Id}, - log.Field{Key: "err", Value: err.Error()}, - ) + if changelv, err := this.module.modelSociaty.changeLv(sociaty, update); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + } else if changelv { + this.module.modelSociaty.EventApp.Dispatch(comm.EventSociatyRankChanged, &SociatyListen{ + sociaty: sociaty, + }) + go this.module.ModuleSys.CheckOpenCond(session.Clone(), comm.OpencondTypeWorldtaskid, sociaty.Lv) + } + if err := this.module.modelSociaty.updateSociaty(sociaty.Id, update); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return } } } diff --git a/modules/sociaty/config.go b/modules/sociaty/config.go index 194bfe9fe..c99686a64 100644 --- a/modules/sociaty/config.go +++ b/modules/sociaty/config.go @@ -2,6 +2,7 @@ package sociaty import ( "fmt" + "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/modules" cfg "go_dreamfactory/sys/configure/structs" @@ -19,10 +20,12 @@ const ( type configureComp struct { modules.MCompConfigure + module *Sociaty } func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { err = this.MCompConfigure.Init(service, module, comp, options) + this.module = module.(*Sociaty) err = this.LoadMultiConfigure(map[string]interface{}{ gameSociatyLv: cfg.NewGameGuildLv, gameSociatyTask: cfg.NewGameGuildTask, @@ -44,7 +47,7 @@ func (this *configureComp) getSociatyLvCfg() (data *cfg.GameGuildLv, err error) return } else { if data, ok = v.(*cfg.GameGuildLv); !ok { - err = fmt.Errorf("%T no is *cfg.GameGuildLv", v) + err = comm.NewNotFoundConfErr(string(this.module.GetType()), gameSociatyLv, fmt.Errorf("%T no is *cfg.GameGuildLv", v)) return } } diff --git a/modules/sociaty/model_sociaty.go b/modules/sociaty/model_sociaty.go index 42a9b8fee..448edb06b 100644 --- a/modules/sociaty/model_sociaty.go +++ b/modules/sociaty/model_sociaty.go @@ -775,13 +775,10 @@ func (this *ModelSociaty) updateResourceFromTask(sociaty *pb.DBSociaty, conf *cf } // 更新经验 -func (this *ModelSociaty) updateSociatyExp(val int32, sociaty *pb.DBSociaty) error { +func (this *ModelSociaty) updateSociatyExp(val int32, sociaty *pb.DBSociaty, update map[string]interface{}) { exp := sociaty.Exp //经验 exp += val - update := map[string]interface{}{ - "exp": exp, - } - return this.updateSociaty(sociaty.Id, update) + update["exp"] = exp } // 更新成员贡献值 @@ -886,37 +883,26 @@ func (this *ModelSociaty) rank() (rank []*pb.DBSociatyRank) { } // 等级更新 -func (this *ModelSociaty) changeLv(sociaty *pb.DBSociaty) error { - ggl, err := this.module.configure.getSociatyLvCfg() - if err != nil { - return err - } +func (this *ModelSociaty) changeLv(sociaty *pb.DBSociaty, update map[string]interface{}) (changelv bool, err error) { + var ( + ggl *cfg.GameGuildLv + ) - if ggl == nil { - return errors.New("sociatyLvConf is nil") + if ggl, err = this.module.configure.getSociatyLvCfg(); err != nil { + return } curLv := sociaty.Lv - update := map[string]interface{}{} lv := curLv + 1 if conf, ok := ggl.GetDataMap()[lv]; ok { if sociaty.Exp > conf.Exp { update["lv"] = lv + sociaty.Lv = lv + changelv = true } } - - if len(update) > 0 { - if err = this.updateSociaty(sociaty.Id, update); err != nil { - return err - } - // 更新排行榜 - this.EventApp.Dispatch(comm.EventSociatyRankChanged, &SociatyListen{ - sociaty: sociaty, - }) - } - - return nil + return } // 获取可容纳的最大上限 diff --git a/modules/sociaty/module.go b/modules/sociaty/module.go index caa8b991e..5cb199712 100644 --- a/modules/sociaty/module.go +++ b/modules/sociaty/module.go @@ -278,7 +278,7 @@ func (this *Sociaty) RpcUpdateSociaty(ctx context.Context, req *SociatyUpdatePar } // 设置工会经验 -func (this *Sociaty) BingoSetExp(session comm.IUserSession, exp int32) error { +func (this *Sociaty) BingoSetExp(session comm.IUserSession, exp int32) (err error) { sociaty := this.modelSociaty.getUserSociaty(session.GetUserId()) if sociaty == nil || sociaty.Id == "" { log.Warn("未获得公会信息", log.Field{Key: "uid", Value: session.GetUserId()}) @@ -289,12 +289,12 @@ func (this *Sociaty) BingoSetExp(session comm.IUserSession, exp int32) error { "exp": sociaty.Exp, } - err := this.modelSociaty.updateSociaty(sociaty.Id, update) - if err != nil { - return err + if _, err = this.modelSociaty.changeLv(sociaty, update); err != nil { + return } - return this.modelSociaty.changeLv(sociaty) + err = this.modelSociaty.updateSociaty(sociaty.Id, update) + return } // 设置工会活跃度 diff --git a/modules/user/model_user.go b/modules/user/model_user.go index 2bf1949e4..316e0f138 100644 --- a/modules/user/model_user.go +++ b/modules/user/model_user.go @@ -24,16 +24,12 @@ import ( type ModelUser struct { modules.MCompModel module *User - // EventApp *event_v2.App } func (this *ModelUser) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { this.TableName = comm.TableUser err = this.MCompModel.Init(service, module, comp, options) this.module = module.(*User) - // this.EventApp = event_v2.NewApp() - // this.EventApp.Listen(comm.EventUserVipChanged, this.ChangeVipExp) - // this.EventApp.Listen(comm.EventUserChanged, this.ChangeLevel) // 通过uid创建索引 this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, @@ -279,7 +275,7 @@ func (this *ModelUser) changelv(session comm.IUserSession, lv int32, exp int64, ) } this.module.chat.SendSysChatToUser(session, comm.ChatSystem12, lv, 0, name) - this.module.sys.CheckOpenCond(session, comm.OpencondTypePlatlv, lv) + go this.module.sys.CheckOpenCond(session.Clone(), comm.OpencondTypePlatlv, lv) session.Push() } diff --git a/modules/wtask/api_finish.go b/modules/wtask/api_finish.go index 816c899f0..b2af04dc7 100644 --- a/modules/wtask/api_finish.go +++ b/modules/wtask/api_finish.go @@ -17,8 +17,7 @@ func (this *apiComp) FinishCheck(session comm.IUserSession, req *pb.WTaskFinishR // /获取系统公告 func (this *apiComp) Finish(session comm.IUserSession, req *pb.WTaskFinishReq) (errdata *pb.ErrorData) { var ( - conf *cfg.GameWorldTaskData - // afterconf *cfg.GameWorldTaskData + conf *cfg.GameWorldTaskData wtask *pb.DBWTask condis []*pb.ConIProgress award []*pb.UserAtno @@ -151,5 +150,6 @@ func (this *apiComp) Finish(session comm.IUserSession, req *pb.WTaskFinishReq) ( if conf.Des == 5 { this.module.caravan.TaskComplete(session, req.Tid) } + go this.module.ModuleSys.CheckOpenCond(session.Clone(), comm.OpencondTypeWorldtaskid, req.Tid) return }