package main import ( "flag" "fmt" "go_dreamfactory/comm" "go_dreamfactory/modules/arena" "go_dreamfactory/modules/battle" "go_dreamfactory/modules/chat" "go_dreamfactory/modules/equipment" "go_dreamfactory/modules/forum" "go_dreamfactory/modules/friend" "go_dreamfactory/modules/gm" "go_dreamfactory/modules/gourmet" "go_dreamfactory/modules/hero" "go_dreamfactory/modules/horoscope" "go_dreamfactory/modules/hunting" "go_dreamfactory/modules/items" "go_dreamfactory/modules/library" "go_dreamfactory/modules/linestory" "go_dreamfactory/modules/mail" "go_dreamfactory/modules/mainline" "go_dreamfactory/modules/martialhall" "go_dreamfactory/modules/moonfantasy" "go_dreamfactory/modules/notify" "go_dreamfactory/modules/pagoda" "go_dreamfactory/modules/pay" "go_dreamfactory/modules/privilege" "go_dreamfactory/modules/rtask" "go_dreamfactory/modules/shop" "go_dreamfactory/modules/smithy" "go_dreamfactory/modules/sociaty" "go_dreamfactory/modules/sys" "go_dreamfactory/modules/task" "go_dreamfactory/modules/troll" "go_dreamfactory/modules/user" "go_dreamfactory/modules/viking" "go_dreamfactory/pb" "go_dreamfactory/services" "go_dreamfactory/sys/db" "time" "go_dreamfactory/lego" "go_dreamfactory/lego/base/rpcx" "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/log" "go_dreamfactory/lego/sys/timewheel" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" ) /* 服务类型:worker 服务描述:处理梦工厂的具体业务需求,包含 user,pack,mail,friend...功能业务模块 */ var ( conf = flag.String("conf", "./conf/worker_1.yaml", "获取需要启动的服务配置文件") //启动服务的Id ) /*服务启动的入口函数*/ func main() { flag.Parse() s := NewService( rpcx.SetConfPath(*conf), rpcx.SetVersion("1.0.0.0"), ) s.OnInstallComp( //装备组件 services.NewGateRouteComp(), //此服务需要接受用户的消息 需要装备网关组件 ) lego.Run(s, //运行模块 sys.NewModule(), user.NewModule(), items.NewModule(), mail.NewModule(), friend.NewModule(), hero.NewModule(), equipment.NewModule(), task.NewModule(), mainline.NewModule(), shop.NewModule(), notify.NewModule(), chat.NewModule(), gm.NewModule(), forum.NewModule(), pagoda.NewModule(), gourmet.NewModule(), martialhall.NewModule(), rtask.NewModule(), viking.NewModule(), smithy.NewModule(), moonfantasy.NewModule(), hunting.NewModule(), battle.NewModule(), linestory.NewModule(), library.NewModule(), arena.NewModule(), troll.NewModule(), sociaty.NewModule(), horoscope.NewModule(), pay.NewModule(), privilege.NewModule(), ) } func NewService(ops ...rpcx.Option) core.IService { s := new(Service) s.Configure(ops...) return s } //worker 的服务对象定义 type Service struct { services.ServiceBase } //初始化worker需要的一些系统工具 func (this *Service) InitSys() { this.ServiceBase.InitSys() //定时系统 if err := timewheel.OnInit(nil, timewheel.SetTick(time.Minute)); err != nil { panic(fmt.Sprintf("init sys.timewheel err: %s", err.Error())) } else { log.Infof("init sys.timewheel success!") } //存储系统 if err := db.OnInit(this.GetSettings().Sys["db"]); err != nil { panic(fmt.Sprintf("init sys.db err: %s", err.Error())) } else { log.Infof("init sys.db success!") } 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) server := &pb.DBServerData{ Id: primitive.NewObjectID().Hex(), ServerState: 1, DisposableLoop: 1, FixedLoop: 0, SeasonType: 201, OpenTime: time.Now().Unix(), } model.DB.InsertOne(comm.TableServerData, server) } } }