From be4fd38ca7316d64a312284ddeca8241e8c4bbad Mon Sep 17 00:00:00 2001 From: by <123456@qq.com> Date: Fri, 10 Jan 2025 11:41:45 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbproxy/svc/l_friendunread.go | 9 +++++++++ dbproxy/svc/u_friend.go | 4 ++++ dbproxy/svc/u_player.go | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/dbproxy/svc/l_friendunread.go b/dbproxy/svc/l_friendunread.go index 1f1b9b4..3823014 100644 --- a/dbproxy/svc/l_friendunread.go +++ b/dbproxy/svc/l_friendunread.go @@ -36,6 +36,9 @@ func (svc *FriendUnreadSvc) UpsertFriendUnread(args *model.FriendUnreadByKey, re if cc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpsertFriendUnread Find is err: ", err) @@ -76,6 +79,9 @@ func (svc *FriendUnreadSvc) UpdateFriendUnread(args *model.FriendUnreadByKey, re if cc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("UpdateFriendUnread Find is err: ", err) @@ -98,6 +104,9 @@ func (svc *FriendUnreadSvc) QueryFriendUnreadByKey(args *model.FriendUnreadByKey if fc == nil { return FriendUnreadColError } + if ret == nil { + ret = &model.FriendUnreadRet{} + } err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.FU) if err != nil && err != mgo.ErrNotFound { logger.Logger.Error("QueryFriendUnreadByKey is err: ", err) diff --git a/dbproxy/svc/u_friend.go b/dbproxy/svc/u_friend.go index ed308e2..7476263 100644 --- a/dbproxy/svc/u_friend.go +++ b/dbproxy/svc/u_friend.go @@ -54,6 +54,10 @@ func (svc *FriendSvc) QueryFriendByKey(args *model.FriendByKey, ret *model.Frien if fc == nil { return FriendColError } + if ret == nil { + ret = &model.FriendRet{} + ret.Fri = &model.Friend{} + } err := fc.Find(bson.M{"platform": args.Platform, "snid": args.SnId}).One(&ret.Fri) if err != nil && !errors.Is(err, mgo.ErrNotFound) { logger.Logger.Error("QueryFriendByKey is err: ", err) diff --git a/dbproxy/svc/u_player.go b/dbproxy/svc/u_player.go index 21efae5..9e3eae0 100644 --- a/dbproxy/svc/u_player.go +++ b/dbproxy/svc/u_player.go @@ -9,6 +9,7 @@ import ( "reflect" "strconv" "strings" + "sync" "time" newMongo "go.mongodb.org/mongo-driver/mongo" @@ -68,6 +69,7 @@ func PlayerDelBackupDataCollection(plt string) *mongo.Collection { } type PlayerDataSvc struct { + mu sync.Mutex // 互斥锁 } func (svc *PlayerDataSvc) InsertPlayerData(args *model.InsertPlayerDataParam, ret *model.PlayerDataRet) (err error) { @@ -323,6 +325,8 @@ func SavePlayerData(pd *model.PlayerData) (err error) { * 保存玩家的全部信息 */ func (svc *PlayerDataSvc) SavePlayerData(pd *model.PlayerData, ret *bool) (err error) { + svc.mu.Lock() + defer svc.mu.Unlock() err = SavePlayerData(pd) *ret = err == nil return