From 8a9a4f0c2d672fbebf16ad42334ce9b93755953c Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Mon, 2 Dec 2024 14:58:23 +0800 Subject: [PATCH] =?UTF-8?q?fix=E5=90=8C=E6=84=8F=E5=A5=BD=E5=8F=8B?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E7=94=B3=E8=AF=B7=E8=AE=B0=E5=BD=95=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldsrv/friendmgr.go | 92 +++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/worldsrv/friendmgr.go b/worldsrv/friendmgr.go index 4a8e394..7b4f82e 100644 --- a/worldsrv/friendmgr.go +++ b/worldsrv/friendmgr.go @@ -608,51 +608,59 @@ func (this *FriendMgr) FriendAgree(p *Player, destP *model.BindFriend) { } } - ret, err := model.QueryFriendApplyBySnid(p.Platform, p.SnId) - if err != nil { - return friend.OpResultCode_OPRC_Error - } - // 维护申请放和被申请方的申请列表 - //查看是否在申请列表 - if ret != nil { - if ret.ApplySnids != nil { - for i, as := range ret.ApplySnids { - if as.SnId == destP.SnId { - // 删除被申请者的申请列表 - ret.ApplySnids = append(ret.ApplySnids[:i], ret.ApplySnids[i+1:]...) - model.UpsertFriendApply(p.Platform, p.SnId, ret) - - // 删除发起方的申请列表 - data, err := model.QueryFriendApplyListBySnid(p.Platform, destP.SnId) - if err != nil { - logger.Logger.Errorf("QueryFriendApplyListBySnid err:%v", err) - } else { - if data == nil { - data = model.NewApplyList(destP.SnId) - } - for k, v := range data.List { - if v == p.SnId { - data.List = append(data.List[:k], data.List[k+1:]...) - model.UpsertApplyList(p.Platform, data) - applyList = data.List - break - } - } - } - - // 保存好友关系 - if friendDB != nil { - friendDB.BindFriend = append(friendDB.BindFriend, &model.BindFriend{ - SnId: p.SnId, - CreateTime: time.Now().Unix(), - }) - model.UpsertFriend(friendDB) - } - return nil - } + // 删除申请者的申请列表 + delApplyListFunc := func(plt string, snid int32, applySnid int32) friend.OpResultCode { + // 删除被申请者的申请列表 + list1, err := model.QueryFriendApplyBySnid(plt, snid) + if err != nil { + return friend.OpResultCode_OPRC_Error + } + for k, v := range list1.ApplySnids { + if v.SnId == applySnid { + list1.ApplySnids = append(list1.ApplySnids[:k], list1.ApplySnids[k+1:]...) + model.UpsertFriendApply(plt, snid, list1) + break } } + // 删除发起方的申请列表 + list2, err := model.QueryFriendApplyListBySnid(plt, applySnid) + if err != nil { + return friend.OpResultCode_OPRC_Error + } + for k, v := range list2.List { + if v == snid { + list2.List = append(list2.List[:k], list2.List[k+1:]...) + model.UpsertApplyList(plt, list2) + break + } + } + + if applySnid == destP.SnId { + applyList = list2.List + } + + return friend.OpResultCode_OPRC_Sucess } + + //查看是否在申请列表 + code := delApplyListFunc(p.Platform, p.SnId, destP.SnId) + if code != friend.OpResultCode_OPRC_Sucess { + return code + } + code = delApplyListFunc(p.Platform, destP.SnId, p.SnId) + if code != friend.OpResultCode_OPRC_Sucess { + return code + } + // 保存好友关系 + if friendDB != nil { + friendDB.BindFriend = append(friendDB.BindFriend, &model.BindFriend{ + SnId: p.SnId, + CreateTime: time.Now().Unix(), + }) + model.UpsertFriend(friendDB) + return friend.OpResultCode_OPRC_Sucess + } + return friend.OpResultCode_OPRC_Error }), task.CompleteNotifyWrapper(func(data interface{}, tt task.Task) { if data != nil {