diff --git a/modules/pagoda/api_ranklist.go b/modules/pagoda/api_ranklist.go index 3f6eb0b3b..4832ce907 100644 --- a/modules/pagoda/api_ranklist.go +++ b/modules/pagoda/api_ranklist.go @@ -35,7 +35,7 @@ func (this *apiComp) RankList(session comm.IUserSession, req *pb.PagodaRankListR pipe *pipe.RedisPipe = conn.Redis.RedisPipe(context.TODO()) ) if req.FloorId == 0 { - rd = pipe.ZRange("pagodaSeasonRank"+strconv.Itoa(int(req.FloorId)), 0, 50) + rd = pipe.ZRange("pagodaSeasonRank", 0, 50) } else { rd = pipe.ZRange("pagodaList"+strconv.Itoa(int(req.FloorId)), 0, 50) } diff --git a/modules/pagoda/comp_configure.go b/modules/pagoda/comp_configure.go index 91a426b12..287d43410 100644 --- a/modules/pagoda/comp_configure.go +++ b/modules/pagoda/comp_configure.go @@ -169,18 +169,15 @@ func (this *configureComp) GetPassCheckByID(id int32) *cfg.GamePassCheckData { } // 获取 -func (this *configureComp) GetPagodaSeasonReward() [][]int32 { - rank := make([][]int32, 0) +func (this *configureComp) GetPagodaSeasonReward() []*cfg.GamePagodaSeasonRewardData { + if v, err := this.GetConfigure(game_pagodaseasonreward); err == nil { var ( configure *cfg.GamePagodaSeasonReward ok bool ) if configure, ok = v.(*cfg.GamePagodaSeasonReward); ok { - for _, v := range configure.GetDataList() { - rank = append(rank, v.Ranking) - } - return rank + return configure.GetDataList() } } return nil diff --git a/modules/pagoda/model_rank.go b/modules/pagoda/model_rank.go index 676a46d80..b91d952a3 100644 --- a/modules/pagoda/model_rank.go +++ b/modules/pagoda/model_rank.go @@ -248,14 +248,19 @@ func (this *ModelRank) seasonSettlement() { if list == nil { return } + + rankReward := this.modulePagoda.configure.GetPagodaSeasonReward() + if rankReward == nil { + return + } if !db.IsCross() { if conn, err := db.Cross(); err == nil { var ( - pipe *pipe.RedisPipe = conn.Redis.RedisPipe(context.TODO()) - //Items []*pb.UserAssets + pipe *pipe.RedisPipe = conn.Redis.RedisPipe(context.TODO()) + Items []*pb.UserAssets ) - rd := pipe.ZRange("pagodaSeasonRank0", 0, 50) + rd := pipe.ZRange("pagodaSeasonRank", 0, 50) if _, err = pipe.Exec(); err != nil { this.modulePagoda.Errorln(err) @@ -263,20 +268,27 @@ func (this *ModelRank) seasonSettlement() { } uids := rd.Val() - if len(uids) > 0 { - //Items = make([]*pb.UserAssets, 0) //TO 排名配置 - // for i, v := range v.RankReward { - // Items[i] = &pb.UserAssets{ - // A: v.A, - // T: v.T, - // N: v.N, - // } - // } - //发邮件 - // this.modulePagoda.mail.SendNewMail(&pb.DBMailData{ - // CreateTime: uint64(configure.Now().Unix()), - // Items: Items, - // }, uids...) + for index, uid := range uids { + Items = make([]*pb.UserAssets, 0) //TO 排名配置 + for _, v := range rankReward { + if len(v.Ranking) != 2 { + continue + } + if index >= int(v.Ranking[0]) && index <= int(v.Ranking[1]) { + for _, v1 := range v.Reward { + Items = append(Items, &pb.UserAssets{ + A: v1.A, + T: v1.T, + N: v1.N, + }) + } + this.modulePagoda.mail.SendNewMail(&pb.DBMailData{ + CreateTime: uint64(configure.Now().Unix()), + Items: Items, + }, uid) + break + } + } } } } diff --git a/modules/pagoda/module.go b/modules/pagoda/module.go index 5a24f6001..122aa5d5c 100644 --- a/modules/pagoda/module.go +++ b/modules/pagoda/module.go @@ -24,7 +24,7 @@ type Pagoda struct { configure *configureComp battle comm.IBattle service base.IRPCXService - //mail comm.Imail + mail comm.Imail } func NewModule() core.IModule { @@ -73,11 +73,14 @@ func (this *Pagoda) Start() (err error) { if module, err = this.service.GetModule(comm.ModuleBattle); err != nil { return } - // if module, err = this.service.GetModule(comm.ModuleMail); err != nil { - // return - // } - //this.mail = module.(comm.Imail) + this.battle = module.(comm.IBattle) + + if module, err = this.service.GetModule(comm.ModuleMail); err != nil { + return + } + this.mail = module.(comm.Imail) + this.service.RegisterFunctionName(string(comm.Rpc_ModuleSeasonPagodaReward), this.Rpc_ModuleSeasonPagodaReward) return } diff --git a/modules/timer/module.go b/modules/timer/module.go index 56446e8b3..87cb43042 100644 --- a/modules/timer/module.go +++ b/modules/timer/module.go @@ -23,7 +23,7 @@ type Timer struct { cbase.ModuleBase options *Options service base.IRPCXService //rpc服务对象 通过这个对象可以发布服务和调用其他服务的接口 - rank *PagodaRank + //rank *PagodaRank rank2 *VikingRank rank3 *HuntingRank chat *ChatComp //俩天系统定时任务 @@ -59,7 +59,7 @@ func (this *Timer) Start() (err error) { func (this *Timer) OnInstallComp() { this.ModuleBase.OnInstallComp() - this.rank = this.RegisterComp(new(PagodaRank)).(*PagodaRank) + //this.rank = this.RegisterComp(new(PagodaRank)).(*PagodaRank) this.rank2 = this.RegisterComp(new(VikingRank)).(*VikingRank) this.rank3 = this.RegisterComp(new(HuntingRank)).(*HuntingRank) this.chat = this.RegisterComp(new(ChatComp)).(*ChatComp) diff --git a/modules/timer/pagodarank.go b/modules/timer/pagodarank.go index 5c5d56eb8..0728f0992 100644 --- a/modules/timer/pagodarank.go +++ b/modules/timer/pagodarank.go @@ -8,7 +8,6 @@ import ( "go_dreamfactory/lego/core" "go_dreamfactory/lego/core/cbase" - "go_dreamfactory/lego/sys/cron" "go_dreamfactory/lego/sys/log" "go.mongodb.org/mongo-driver/bson" @@ -34,11 +33,8 @@ func (this *PagodaRank) Init(service core.IService, module core.IModule, comp co func (this *PagodaRank) Start() (err error) { err = this.MCompModel.Start() - - cron.AddFunc("*/60 * * * * ?", this.TimerPagoda) //每60s执行一次 - - cron.AddFunc("*/60 * * * * ?", this.TimerSeason) //每60s执行一次 - + //cron.AddFunc("*/60 * * * * ?", this.TimerPagoda) //每60s执行一次 + //cron.AddFunc("*/60 * * * * ?", this.TimerSeason) //每60s执行一次 return } diff --git a/modules/timer/season.go b/modules/timer/season.go index 955be891f..21613d2a3 100644 --- a/modules/timer/season.go +++ b/modules/timer/season.go @@ -9,6 +9,7 @@ import ( "go_dreamfactory/sys/configure" cfg "go_dreamfactory/sys/configure/structs" "go_dreamfactory/sys/db" + "time" "go_dreamfactory/lego/base" "go_dreamfactory/lego/core" @@ -53,11 +54,36 @@ func (this *SeasonPagoda) Init(service core.IService, module core.IModule, comp func (this *SeasonPagoda) Start() (err error) { err = this.MCompModel.Start() err = this.MCompConfigure.Start() + configure.RegisterConfigure(game_seasonloop, cfg.NewGameSeasonLoop, nil) configure.RegisterConfigure(game_seasonreward, cfg.NewGamePagodaSeasonReward, nil) cron.AddFunc("0 0 23 L * ?", this.TimerSeasonOver) //每月最后一天23点执行一次 cron.AddFunc("0 0 5 /* * ?", this.TimerSeasonStar) //每月第一天5点执行一次 + conn, err := db.Cross() + if err == nil { + model := db.NewDBModel(comm.TableServerData, 0, conn) + + _len, err1 := model.DB.CountDocuments(comm.TableServerData, bson.M{}) + if err1 == nil && _len == 0 { + fmt.Printf("%v,%v", _len, err1) + server := &pb.DBServerData{ + Id: primitive.NewObjectID().Hex(), + ServerState: 1, + DisposableLoop: 1, + FixedLoop: 0, + SeasonType: 201, + OpenTime: time.Now().Unix(), + } + conf := this.GetSeasonLoop(comm.SeasonType) + if len(conf.DisposableLoop) > 0 { + server.SeasonType = conf.DisposableLoop[0] + } + + model.DB.InsertOne(comm.TableServerData, server) + } + } + return } func (this *SeasonPagoda) CreatTestData(index int) {