Merge branch 'meixiongfeng' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev

This commit is contained in:
meixiongfeng 2022-10-20 16:06:07 +08:00
commit a60a40d760
11 changed files with 225 additions and 11 deletions

View File

@ -0,0 +1,21 @@
[
{
"key": 2,
"disposable_loop": [
201,
203,
202,
204,
203,
202,
201,
204
],
"fixed_loop": [
201,
202,
203,
204
]
}
]

View File

@ -2,12 +2,11 @@ package hero
import (
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/core/cbase"
"go_dreamfactory/modules"
)
type apiComp struct {
cbase.ModuleCompBase
//cbase.ModuleCompBase
modules.MCompGate
service core.IService
module *Hero

View File

@ -72,11 +72,11 @@ func (this *apiComp) Fusion(session comm.IUserSession, req *pb.HeroFusionReq) (c
}
// 获得新卡
newHero, err := this.module.modelHero.createHeroOverlying(session.GetUserId(), conf.Hero, 1)
if err != nil {
if err == nil {
session.SendMsg(string(this.module.GetType()), HeroFusionResp, &pb.HeroFusionResp{Heroid: conf.Hero})
ChangeList = append(ChangeList, newHero)
}
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList})
session.SendMsg(string(this.module.GetType()), HeroFusionResp, &pb.HeroFusionResp{Heroid: conf.Hero})
return
}

View File

@ -14,6 +14,7 @@ import (
"go_dreamfactory/lego/sys/cron"
"go_dreamfactory/lego/sys/log"
"go.mongodb.org/mongo-driver/bson"
"google.golang.org/protobuf/types/known/anypb"
)
@ -77,6 +78,7 @@ func (this *ChatComp) Start() (err error) {
}
}
})
this.module.chat.module.rank.DB.Find("heor", bson.M{})
return
}

View File

@ -10,22 +10,21 @@ import (
/*
装备模块 API
*/
type forumComp struct {
type ForumComp struct {
modules.MCompModel
service core.IService
}
//组件初始化接口
func (this *forumComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
func (this *ForumComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TablePagodaRecord
this.TableName = comm.TableHuntingRankList
this.MCompModel.Init(service, module, comp, options)
this.service = service
return
}
func (this *forumComp) Start() (err error) {
func (this *ForumComp) Start() (err error) {
err = this.MCompModel.Start()
//cron.AddFunc("*/5 * * * * ?", this.Timer) //每五秒执行一次
//cron.AddFunc("*/60 * * * * ?", this.Timer) //每60s执行一次
return
}

View File

@ -27,6 +27,8 @@ type Timer struct {
rank2 *VikingRank
rank3 *HuntingRank
chat *ChatComp //俩天系统定时任务
season *SeasonPagoda
forum *ForumComp
}
//模块名
@ -59,6 +61,8 @@ func (this *Timer) OnInstallComp() {
this.rank2 = this.RegisterComp(new(VikingRank)).(*VikingRank)
this.rank3 = this.RegisterComp(new(HuntingRank)).(*HuntingRank)
this.chat = this.RegisterComp(new(ChatComp)).(*ChatComp)
this.season = this.RegisterComp(new(SeasonPagoda)).(*SeasonPagoda)
}
//日志

View File

@ -1,23 +1,38 @@
package timer
import (
"context"
"fmt"
"go_dreamfactory/comm"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
"go_dreamfactory/sys/configure"
cfg "go_dreamfactory/sys/configure/structs"
"time"
"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"
)
var (
game_seasonloop = "game_seasonloop.json"
)
type SeasonPagoda struct {
cbase.ModuleCompBase
modules.MCompConfigure
modules.MCompModel
service core.IService
dbName string
module *Timer
}
//组件初始化接口
func (this *SeasonPagoda) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.MCompConfigure.Init(service, module, comp, options)
this.TableName = comm.TableSeasonPagoda
this.MCompModel.Init(service, module, comp, options)
this.service = service
@ -27,14 +42,66 @@ 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)
cron.AddFunc("0 0 23 L * ?", this.TimerSeasonOver) //每月最后一天23点执行一次
cron.AddFunc("0 0 5 /* * ?", this.TimerSeasonStar) //每月第一天5点执行一次
// _data := this.GetSeasonLoop(2)
// this.module.Debugf("%v", _data)
// this.TimerSeasonOver()
return
}
func (this *SeasonPagoda) GetSeasonLoop(id int32) *cfg.GameSeasonLoopData {
if v, err := this.GetConfigure(game_seasonloop); err != nil {
log.Errorf("get global conf err:%v", err)
return nil
} else {
if configure, ok := v.(*cfg.GameSeasonLoop); ok {
return configure.Get(id)
}
log.Errorf("%T no is *cfg.Game_global", v)
return nil
}
}
// // 赛季塔结束
func (this *SeasonPagoda) TimerSeasonOver() {
this.module.Debugf("TimerSeasonOver:%d", time.Now().Unix())
// 修改
conf := this.GetSeasonLoop(2)
rest, err := this.DB.Find(comm.TableServerData, bson.M{})
if err != nil {
serverData := &pb.DBServerData{}
for rest.Next(context.TODO()) {
rest.Decode(serverData)
if serverData.FixedLoop == 0 {
if len(conf.DisposableLoop) >= int(serverData.DisposableLoop) && len(conf.FixedLoop) > 0 { // 开始执行循环逻辑
serverData.FixedLoop = 1
serverData.DisposableLoop = 0
serverData.SeasonType = conf.FixedLoop[int(serverData.FixedLoop)-1]
} else {
serverData.DisposableLoop++
serverData.SeasonType = conf.DisposableLoop[int(serverData.DisposableLoop)-1]
}
} else { // 循环
if len(conf.FixedLoop) >= int(serverData.FixedLoop) {
serverData.FixedLoop = 1
} else {
serverData.FixedLoop++
}
serverData.SeasonType = conf.FixedLoop[int(serverData.FixedLoop)-1]
}
fmt.Printf("%v", serverData)
break
}
this.DB.UpdateOne(comm.TableServerData, bson.M{}, serverData)
}
}
// 赛季塔开始

View File

@ -120,6 +120,14 @@ func (this *Service) InitSys() {
conn, err := db.Local()
if err == nil {
model := db.NewDBModel(comm.TableServerData, 0, conn)
// rest, err1 := model.DB.Find(comm.TableServerData, bson.M{})
// server1 := &pb.DBServerData{}
// for rest.Next(context.TODO()) {
// rest.Decode(server1)
// fmt.Printf("%v", server1)
// break
// }
_len, err1 := model.DB.CountDocuments(comm.TableServerData, bson.M{})
if err1 != nil && _len > 0 {
fmt.Printf("%v,%v", _len, err1)

View File

@ -0,0 +1,42 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
type GameSeasonLoop struct {
_dataMap map[int32]*GameSeasonLoopData
_dataList []*GameSeasonLoopData
}
func NewGameSeasonLoop(_buf []map[string]interface{}) (*GameSeasonLoop, error) {
_dataList := make([]*GameSeasonLoopData, 0, len(_buf))
dataMap := make(map[int32]*GameSeasonLoopData)
for _, _ele_ := range _buf {
if _v, err2 := DeserializeGameSeasonLoopData(_ele_); err2 != nil {
return nil, err2
} else {
_dataList = append(_dataList, _v)
dataMap[_v.Key] = _v
}
}
return &GameSeasonLoop{_dataList:_dataList, _dataMap:dataMap}, nil
}
func (table *GameSeasonLoop) GetDataMap() map[int32]*GameSeasonLoopData {
return table._dataMap
}
func (table *GameSeasonLoop) GetDataList() []*GameSeasonLoopData {
return table._dataList
}
func (table *GameSeasonLoop) Get(key int32) *GameSeasonLoopData {
return table._dataMap[key]
}

View File

@ -0,0 +1,65 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
package cfg
import "errors"
type GameSeasonLoopData struct {
Key int32
DisposableLoop []int32
FixedLoop []int32
}
const TypeId_GameSeasonLoopData = 1327247853
func (*GameSeasonLoopData) GetTypeId() int32 {
return 1327247853
}
func (_v *GameSeasonLoopData)Deserialize(_buf map[string]interface{}) (err error) {
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["disposable_loop"].([]interface{}); !_ok_ { err = errors.New("disposable_loop error"); return }
_v.DisposableLoop = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.DisposableLoop = append(_v.DisposableLoop, _list_v_)
}
}
{
var _arr_ []interface{}
var _ok_ bool
if _arr_, _ok_ = _buf["fixed_loop"].([]interface{}); !_ok_ { err = errors.New("fixed_loop error"); return }
_v.FixedLoop = make([]int32, 0, len(_arr_))
for _, _e_ := range _arr_ {
var _list_v_ int32
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
_v.FixedLoop = append(_v.FixedLoop, _list_v_)
}
}
return
}
func DeserializeGameSeasonLoopData(_buf map[string]interface{}) (*GameSeasonLoopData, error) {
v := &GameSeasonLoopData{}
if err := v.Deserialize(_buf); err == nil {
return v, nil
} else {
return nil, err
}
}

View File

@ -63,6 +63,7 @@ type Tables struct {
Opencond *GameOpencond
Stroy *GameStroy
Pagoda *GamePagoda
SeasonLoop *GameSeasonLoop
PagodaTaskReward *GamePagodaTaskReward
PagodaSeasonReward *GamePagodaSeasonReward
Rdtask *GameRdtask
@ -430,6 +431,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
if tables.Pagoda, err = NewGamePagoda(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_seasonloop") ; err != nil {
return nil, err
}
if tables.SeasonLoop, err = NewGameSeasonLoop(buf) ; err != nil {
return nil, err
}
if buf, err = loader("game_pagodataskreward") ; err != nil {
return nil, err
}