go_dreamfactory/services/worker/main.go
2022-11-03 15:58:19 +08:00

154 lines
3.9 KiB
Go

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/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(),
)
}
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)
}
}
}