From 9138866fad15a1096fce4bfac945b9a9295e34f2 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Wed, 19 Oct 2022 18:00:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E6=9C=8D=E6=9F=A5=E8=AF=A2=E8=8B=B1?= =?UTF-8?q?=E9=9B=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- comm/const.go | 4 +++- comm/imodule.go | 2 ++ modules/hero/module.go | 26 +++++++++++++++++++++++ modules/user/api.go | 1 + modules/user/api_getserverdata.go | 35 +++++++++++++++++++++++++++++++ modules/user/api_login.go | 1 + services/worker/main.go | 22 +++++++++++++++++++ 7 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 modules/user/api_getserverdata.go diff --git a/comm/const.go b/comm/const.go index faf2c4b00..7d606d976 100644 --- a/comm/const.go +++ b/comm/const.go @@ -61,7 +61,7 @@ const ( ModuleHunting core.M_Modules = "hunting" //狩猎 ModuleLinestory core.M_Modules = "linestory" //支线剧情 ModuleBattle core.M_Modules = "battle" //战斗 - ModuleLibrary core.M_Modules = "library" // + ModuleLibrary core.M_Modules = "library" // 藏书馆 //ModuleFetter core.M_Modules = "herofetter" //好友模块 ) @@ -147,6 +147,8 @@ const ( TableFetter = "herofetter" TableCrossSession = "crosssession" + + TableServerData = "serverdata" // 跨服服务器相关数据 ) //RPC服务接口定义处 diff --git a/comm/imodule.go b/comm/imodule.go index 8e573a989..def167356 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -63,6 +63,8 @@ type ( //Create Monster CreateMonster(heroCid string, star, lv int32) (hero *pb.DBHero) + // 跨服查询英雄详细信息 + QueryCrossHeroinfo(oid string) (hero *pb.DBHero, err error) } //玩家 diff --git a/modules/hero/module.go b/modules/hero/module.go index ddd54c9bb..0c29cb2c9 100644 --- a/modules/hero/module.go +++ b/modules/hero/module.go @@ -7,7 +7,11 @@ import ( "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules" "go_dreamfactory/pb" + "go_dreamfactory/sys/db" "go_dreamfactory/utils" + + "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/mongo" ) func NewModule() core.IModule { @@ -337,3 +341,25 @@ func (this *Hero) CreateMonster(heroCid string, star, lv int32) (hero *pb.DBHero hero = this.modelHero.InitTempHero(heroCid, star, lv) return } + +// 只通过唯一id 查询英雄信息 +func (this *Hero) QueryCrossHeroinfo(oid string) (hero *pb.DBHero, err error) { + for _, tag := range db.GetServerTags() { + conn, err1 := db.ServerDBConn(tag) // 遍历连接对象 + if err1 != nil { + continue + } + filter := bson.M{ + "_id": oid, + } + sr := conn.Mgo.FindOne(comm.TableHero, filter) + hero = &pb.DBHero{} + if err = sr.Decode(hero); err != nil { + if err != mongo.ErrNoDocuments { + return + } + } + } + + return +} diff --git a/modules/user/api.go b/modules/user/api.go index 9d4ad715d..91b33fcdd 100644 --- a/modules/user/api.go +++ b/modules/user/api.go @@ -28,6 +28,7 @@ const ( UserSubTypeBattlerecord = "battlerecord" //玩家战斗记录 UserSubTypeShowteam = "showteam" //展示阵容 UserSubTypeSettingteam = "settingteam" //设置阵容展示 + UserGetServerDataResp = "getserverdata" //获取服务器信息 ) type apiComp struct { diff --git a/modules/user/api_getserverdata.go b/modules/user/api_getserverdata.go new file mode 100644 index 000000000..6a3aa88c2 --- /dev/null +++ b/modules/user/api_getserverdata.go @@ -0,0 +1,35 @@ +package user + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + "go_dreamfactory/sys/db" + "time" + + "go.mongodb.org/mongo-driver/bson" + "google.golang.org/protobuf/proto" +) + +func (this *apiComp) GetServerDataCheck(session comm.IUserSession, req *pb.UserGetServerDataReq) (code pb.ErrorCode) { + return +} + +func (this *apiComp) GetServerData(session comm.IUserSession, req *pb.UserGetServerDataReq) (code pb.ErrorCode, data proto.Message) { + + rsp := &pb.UserGetServerDataResp{ + Data: &pb.DBServerData{}, + } + + if conn, err := db.Cross(); err == nil { + dbModel := db.NewDBModel(comm.TableHero, time.Hour, conn) + if _data := dbModel.DB.FindOne("serverdata", bson.M{}); _data != nil { + _data.Decode(rsp.Data) + } else { + this.module.Errorf("err:%v", err) + } + } + if err := session.SendMsg(string(this.module.GetType()), UserGetServerDataResp, rsp); err != nil { + code = pb.ErrorCode_SystemError + } + return +} diff --git a/modules/user/api_login.go b/modules/user/api_login.go index 77e0d6e17..c59c97a37 100644 --- a/modules/user/api_login.go +++ b/modules/user/api_login.go @@ -143,5 +143,6 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod //推送登录公告 this.chat.SendSysChatToUser(session, comm.UserLoginNotice, 0) + return } diff --git a/services/worker/main.go b/services/worker/main.go index 05693f3af..4d97b6147 100644 --- a/services/worker/main.go +++ b/services/worker/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "go_dreamfactory/comm" "go_dreamfactory/modules/battle" "go_dreamfactory/modules/chat" "go_dreamfactory/modules/equipment" @@ -28,6 +29,7 @@ import ( "go_dreamfactory/modules/task" "go_dreamfactory/modules/user" "go_dreamfactory/modules/viking" + "go_dreamfactory/pb" "go_dreamfactory/services" "go_dreamfactory/sys/db" "time" @@ -37,6 +39,9 @@ import ( "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" ) /* @@ -112,4 +117,21 @@ func (this *Service) InitSys() { } else { log.Infof("init sys.db success!") } + conn, err := db.Local() + 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(), + } + model.DB.InsertOne(comm.TableServerData, server) + } + } }