From 15199d31e83419fcada170632afc1491d3bedf20 Mon Sep 17 00:00:00 2001 From: flswld Date: Sun, 12 Feb 2023 05:23:48 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=81=8A=E5=A4=A9=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gs/dao/player_mongo.go | 19 +++++++++++++++++-- gs/game/user_manager.go | 20 +++++++++++++++----- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/gs/dao/player_mongo.go b/gs/dao/player_mongo.go index cd19af6e..b3019c3c 100644 --- a/gs/dao/player_mongo.go +++ b/gs/dao/player_mongo.go @@ -246,14 +246,29 @@ func (d *Dao) QueryChatMsgList() ([]*model.ChatMsg, error) { func (d *Dao) QueryChatMsgListByUid(uid uint32) ([]*model.ChatMsg, error) { db := d.db.Collection("chat_msg") + result := make([]*model.ChatMsg, 0) find, err := db.Find( context.TODO(), - bson.D{{"ToUid", uid}, {"Uid", uid}}, + bson.D{{"ToUid", uid}}, + ) + if err != nil { + return nil, err + } + for find.Next(context.TODO()) { + item := new(model.ChatMsg) + err = find.Decode(item) + if err != nil { + return nil, err + } + result = append(result, item) + } + find, err = db.Find( + context.TODO(), + bson.D{{"Uid", uid}}, ) if err != nil { return nil, err } - result := make([]*model.ChatMsg, 0) for find.Next(context.TODO()) { item := new(model.ChatMsg) err = find.Decode(item) diff --git a/gs/game/user_manager.go b/gs/game/user_manager.go index 808e336d..eb873452 100644 --- a/gs/game/user_manager.go +++ b/gs/game/user_manager.go @@ -470,15 +470,25 @@ func (u *UserManager) LoadUserChatMsgFromDbSync(userId uint32) map[uint32][]*mod return chatMsgMap } for _, chatMsg := range chatMsgList { - msgList, exist := chatMsgMap[chatMsg.ToUid] + otherUid := uint32(0) + if chatMsg.Uid == userId { + otherUid = chatMsg.ToUid + } else if chatMsg.ToUid == userId { + otherUid = chatMsg.Uid + } else { + continue + } + msgList, exist := chatMsgMap[otherUid] if !exist { msgList = make([]*model.ChatMsg, 0) } - if len(msgList) > MaxMsgListLen { - continue - } msgList = append(msgList, chatMsg) - chatMsgMap[chatMsg.ToUid] = msgList + chatMsgMap[otherUid] = msgList + } + for otherUid, msgList := range chatMsgMap { + if len(msgList) > MaxMsgListLen { + chatMsgMap[otherUid] = msgList[len(msgList)-MaxMsgListLen:] + } } return chatMsgMap }