From 0f247ee1619246907dcdc866925844e9417a0007 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Mon, 24 Oct 2022 16:50:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=9C=A8=E7=BA=BF=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/game_msgdistrib.json | 6 ++++++ modules/gourmet/api_getranduser.go | 29 +++++++++++++++++++---------- modules/user/module.go | 6 ++++-- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/bin/json/game_msgdistrib.json b/bin/json/game_msgdistrib.json index 14562d9cf..bc265eab0 100644 --- a/bin/json/game_msgdistrib.json +++ b/bin/json/game_msgdistrib.json @@ -160,5 +160,11 @@ "open": true, "routrules": "~/worker", "describe": "好友助战英雄列表" + }, + { + "msgid": "gourmet.getranduser", + "open": true, + "routrules": "~/worker", + "describe": "获取在线玩家数据" } ] \ No newline at end of file diff --git a/modules/gourmet/api_getranduser.go b/modules/gourmet/api_getranduser.go index f8556f9ff..f4cadc4c2 100644 --- a/modules/gourmet/api_getranduser.go +++ b/modules/gourmet/api_getranduser.go @@ -5,7 +5,9 @@ import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/pb" + "go_dreamfactory/sys/db" "go_dreamfactory/utils" + "time" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo/options" @@ -32,8 +34,9 @@ func (this *apiComp) GetRandUser(session comm.IUserSession, req *pb.GourmetGetRa if code != pb.ErrorCode_Success { return // 参数校验失败直接返回 } + // 获取在线玩家信息 - onlineList, err := this.module.ModuleUser.CrossUserOnlineList() + onlineList, err := this.module.ModuleUser.UserOnlineList() if err != nil { code = pb.ErrorCode_DBError return @@ -61,15 +64,21 @@ func (this *apiComp) GetRandUser(session comm.IUserSession, req *pb.GourmetGetRa } left := int(req.People) - len(mapUser) if left > 0 { // 一个人也没有 那就从db 中随机取 - if _data, err1 := this.module.modelGourmet.DB.Find(core.SqlTable(comm.TableUser), bson.M{}, options.Find().SetSort(bson.M{"lv": -1}).SetLimit(int64(req.People))); err1 == nil { - for _data.Next(context.TODO()) { - temp := &pb.DBUser{} - if err = _data.Decode(temp); err == nil { - if len(mapUser) >= int(req.People) { - break - } - if _, ok := mapUser[temp.Uid]; !ok { - szDbUser = append(szDbUser, temp) + tag, _, b := utils.UIdSplit(session.GetUserId()) + if b { + if conn, err := db.ServerDBConn(tag); err == nil { + dbModel := db.NewDBModel(comm.TableHero, time.Hour, conn) + if _data, err1 := dbModel.DB.Find(core.SqlTable(comm.TableUser), bson.M{}, options.Find().SetSort(bson.M{"lv": -1}).SetLimit(int64(req.People))); err1 == nil { + for _data.Next(context.TODO()) { + temp := &pb.DBUser{} + if err = _data.Decode(temp); err == nil { + if len(mapUser) >= int(req.People) { + break + } + if _, ok := mapUser[temp.Uid]; !ok { + szDbUser = append(szDbUser, temp) + } + } } } } diff --git a/modules/user/module.go b/modules/user/module.go index cdaa9fe7e..375e3519f 100644 --- a/modules/user/module.go +++ b/modules/user/module.go @@ -111,7 +111,9 @@ func (this *User) GetUserSession(uid string) *pb.CacheUser { // 清除session func (this *User) CleanSession(session comm.IUserSession) { - this.modelUser.updateOfflineTime(session.GetUserId()) + if !this.IsCross() { + this.modelUser.updateOfflineTime(session.GetUserId()) + } sId := fmt.Sprintf("%s-%s", comm.RDS_SESSION, session.GetUserId()) this.modelSession.Del(sId, db.SetDBMgoLog(false)) this.modelSession.DelListlds(comm.RDS_SESSION, session.GetUserId()) @@ -355,7 +357,7 @@ func (this *User) getUserFromRemoteDb(uid string, rsp *pb.DBUser) error { return errors.New("sid split error") } conn, err := db.ServerDBConn(sid) - if err != nil { + if err != nil { return err } model := db.NewDBModel(comm.TableUser, 0, conn)