From 6d992bd0053d4762766e793f91ee2a8e12eac666 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Wed, 25 Oct 2023 10:06:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- comm/const.go | 4 ++++ modules/gameinvite/api.go | 20 ++++++++++++++++++++ modules/gameinvite/model.go | 25 +++++++++++++++++++++++++ modules/gameinvite/module.go | 30 ++++++++++++++++++++++++++++++ modules/maincity/api_synchpos.go | 14 +++++++------- modules/maincity/model.go | 22 +++++++++++----------- modules/maincity/module.go | 8 +++++--- 7 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 modules/gameinvite/api.go create mode 100644 modules/gameinvite/model.go create mode 100644 modules/gameinvite/module.go diff --git a/comm/const.go b/comm/const.go index 090a77e21..c3ca875c9 100644 --- a/comm/const.go +++ b/comm/const.go @@ -118,6 +118,7 @@ const ( ModuleMaincity core.M_Modules = "maincity" //主城同屏 ModuleMatchPool core.M_Modules = "matchpool" //匹配 ModuleTreasureMap core.M_Modules = "treasuremap" //藏宝图 + ModuleGameInvite core.M_Modules = "gameinvite" //游戏邀请 ) // 数据表名定义处 @@ -395,6 +396,9 @@ const ( TableAchieve = "achieve" //猜颜色 TableDcolorQieChuo = "dcolorqiecuo" + + //游戏邀请 + TableGameInvite = "gameinvite" ) // RPC服务接口定义处 diff --git a/modules/gameinvite/api.go b/modules/gameinvite/api.go new file mode 100644 index 000000000..c22608441 --- /dev/null +++ b/modules/gameinvite/api.go @@ -0,0 +1,20 @@ +package gameinvite + +import ( + "go_dreamfactory/lego/base" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" +) + +type apiComp struct { + modules.MCompGate + service base.IRPCXService + module *GameInvite +} + +func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + _ = this.MCompGate.Init(service, module, comp, options) + this.service = service.(base.IRPCXService) + this.module = module.(*GameInvite) + return +} diff --git a/modules/gameinvite/model.go b/modules/gameinvite/model.go new file mode 100644 index 000000000..4d34b1465 --- /dev/null +++ b/modules/gameinvite/model.go @@ -0,0 +1,25 @@ +package gameinvite + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" + + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/x/bsonx" +) + +type modelComp struct { + modules.MCompModel + module *GameInvite +} + +func (this *modelComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + err = this.MCompModel.Init(service, module, comp, options) + this.TableName = comm.TableGameInvite + this.module = module.(*GameInvite) + this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ + Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, + }) + return +} diff --git a/modules/gameinvite/module.go b/modules/gameinvite/module.go new file mode 100644 index 000000000..09fa3b749 --- /dev/null +++ b/modules/gameinvite/module.go @@ -0,0 +1,30 @@ +package gameinvite + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" +) + +type GameInvite struct { + modules.ModuleBase + service comm.IService + api *apiComp + model *modelComp +} + +func NewModule() core.IModule { + return &GameInvite{} +} + +func (this *GameInvite) GetType() core.M_Modules { + return comm.ModuleGameInvite +} + +func (this *GameInvite) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { + if err = this.ModuleBase.Init(service, module, options); err != nil { + return + } + this.service = service.(comm.IService) + return +} diff --git a/modules/maincity/api_synchpos.go b/modules/maincity/api_synchpos.go index 4214c952f..6a7586d7a 100644 --- a/modules/maincity/api_synchpos.go +++ b/modules/maincity/api_synchpos.go @@ -13,18 +13,18 @@ func (this *apiComp) SynchPosCheck(session comm.IUserSession, req *pb.MainCitySy // 查看某一封邮件 func (this *apiComp) SynchPos(session comm.IUserSession, req *pb.MainCitySynchPosPeek) (errdata *pb.ErrorData) { var ( - user *pb.DBUser + // user *pb.DBUser friends []*pb.BaseUserInfo groupUser map[string][]*pb.BaseUserInfo = make(map[string][]*pb.BaseUserInfo) ok bool - err error + // err error ) - if user, err = this.module.ModuleUser.GetUser(session.GetUserId()); err != nil { - return - } - self := comm.GetUserBaseInfo(user) + // if user, err = this.module.ModuleUser.GetUser(session.GetUserId()); err != nil { + // return + // } + // self := comm.GetUserBaseInfo(user) friends = this.module.model.getplayerPos(session.GetUserId()) - friends = append(friends, self) + // friends = append(friends, self) for _, v := range friends { if _, ok = groupUser[v.Sid]; !ok { groupUser[v.Sid] = make([]*pb.BaseUserInfo, 0) diff --git a/modules/maincity/model.go b/modules/maincity/model.go index 38a8a805d..3cc7e6f6b 100644 --- a/modules/maincity/model.go +++ b/modules/maincity/model.go @@ -1,31 +1,23 @@ package maincity import ( - "go_dreamfactory/comm" "go_dreamfactory/lego/core" - "go_dreamfactory/modules" + "go_dreamfactory/lego/core/cbase" "go_dreamfactory/pb" "sync" - - "go.mongodb.org/mongo-driver/mongo" - "go.mongodb.org/mongo-driver/x/bsonx" ) type modelComp struct { - modules.MCompModel + cbase.ModuleCompBase module *MainCity lock sync.RWMutex onlines map[string][]*pb.BaseUserInfo //关联用户信息 } func (this *modelComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { - err = this.MCompModel.Init(service, module, comp, options) - this.TableName = comm.Tablekftask + err = this.ModuleCompBase.Init(service, module, comp, options) this.module = module.(*MainCity) this.onlines = make(map[string][]*pb.BaseUserInfo) - this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ - Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, - }) return } @@ -34,6 +26,14 @@ func (this *modelComp) setplayerPos(uid string, friends []*pb.BaseUserInfo) { this.onlines[uid] = append(this.onlines[uid], friends...) this.lock.Unlock() } +func (this *modelComp) addplayerPos(uid string, friend *pb.BaseUserInfo) { + this.lock.Lock() + if _, ok := this.onlines[uid]; ok { + this.onlines[uid] = append(this.onlines[uid], friend) + } + this.lock.Unlock() +} + func (this *modelComp) getplayerPos(uid string) (friends []*pb.BaseUserInfo) { this.lock.RLock() friends = this.onlines[uid] diff --git a/modules/maincity/module.go b/modules/maincity/module.go index 66380cbfd..7332f5c7b 100644 --- a/modules/maincity/module.go +++ b/modules/maincity/module.go @@ -95,9 +95,11 @@ func (this *MainCity) EventUserLogin(session comm.IUserSession) { func (this *MainCity) EventUserOffline(uid string, sessionid string) { this.model.removelayerPos(uid) } -func (this *MainCity) AddFriends(user1 *pb.BaseUserInfo, user2 *pb.BaseUserInfo) { - this.model.setplayerPos(user1.Uid, []*pb.BaseUserInfo{user2}) - this.model.setplayerPos(user2.Uid, []*pb.BaseUserInfo{user1}) +func (this *MainCity) AddFriends(user1 *pb.BaseUserInfo, users []*pb.BaseUserInfo) { + this.model.setplayerPos(user1.Uid, users) + for _, user := range users { + this.model.addplayerPos(user.Uid, user1) + } } func (this *MainCity) UpdateRelatedUser(uid string, users []*pb.BaseUserInfo) {