From 879ad86e0f4498aabf4d21b57c4d7e82ee7657cb Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 29 Sep 2022 18:14:36 +0800 Subject: [PATCH 1/5] revoke message --- internal/rpc/msg/query_msg.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/rpc/msg/query_msg.go b/internal/rpc/msg/query_msg.go index 31a088354..f8a2afc7c 100644 --- a/internal/rpc/msg/query_msg.go +++ b/internal/rpc/msg/query_msg.go @@ -5,11 +5,13 @@ import ( "Open_IM/pkg/common/log" promePkg "Open_IM/pkg/common/prometheus" "Open_IM/pkg/proto/msg" + "Open_IM/pkg/utils" "context" go_redis "github.com/go-redis/redis/v8" ) func (rpc *rpcChat) GetSuperGroupMsg(context context.Context, req *msg.GetSuperGroupMsgReq) (*msg.GetSuperGroupMsgResp, error) { + log.Debug(req.OperationID, utils.GetSelfFuncName(), req.String()) resp := new(msg.GetSuperGroupMsgResp) redisMsgList, failedSeqList, err := commonDB.DB.GetMessageListBySeq(req.GroupID, []uint32{req.Seq}, req.OperationID) if err != nil { @@ -40,6 +42,7 @@ func (rpc *rpcChat) GetSuperGroupMsg(context context.Context, req *msg.GetSuperG resp.MsgData = m } } + log.Debug(req.OperationID, utils.GetSelfFuncName(), resp.String()) return resp, nil } From 9b3dee6aa4575c641a93d2446dab41b57789466c Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 29 Sep 2022 18:31:36 +0800 Subject: [PATCH 2/5] revoke message --- internal/rpc/msg/send_msg.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index bcb6ba524..877080378 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -161,24 +161,25 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s return false, 201, err.Error(), nil } if data.MsgData.ContentType == constant.AdvancedRevoke { - revokeMesage := new(MessageRevoked) - err := utils.JsonStringToStruct(string(data.MsgData.Content), revokeMesage) + revokeMessage := new(MessageRevoked) + err := utils.JsonStringToStruct(string(data.MsgData.Content), revokeMessage) if err != nil { log.Error(data.OperationID, "json unmarshal err:", err.Error()) return false, 201, err.Error(), nil } - req := pbChat.GetSuperGroupMsgReq{OperationID: data.OperationID, Seq: revokeMesage.Seq, GroupID: data.MsgData.GroupID} + log.Debug(data.OperationID, "revoke message is", revokeMessage) + req := pbChat.GetSuperGroupMsgReq{OperationID: data.OperationID, Seq: revokeMessage.Seq, GroupID: data.MsgData.GroupID} resp, err := rpc.GetSuperGroupMsg(context.Background(), &req) if err != nil { log.Error(data.OperationID, "GetSuperGroupMsgReq err:", err.Error()) } else if resp.ErrCode != 0 { log.Error(data.OperationID, "GetSuperGroupMsgReq err:", err.Error()) } else { - if resp.MsgData != nil && resp.MsgData.ClientMsgID == revokeMesage.ClientMsgID && resp.MsgData.Seq == revokeMesage.Seq { - revokeMesage.SourceMessageSendTime = resp.MsgData.SendTime - revokeMesage.SourceMessageSenderNickname = resp.MsgData.SenderNickname - revokeMesage.SourceMessageSendID = resp.MsgData.SendID - data.MsgData.Content = []byte(utils.StructToJsonString(revokeMesage)) + if resp.MsgData != nil && resp.MsgData.ClientMsgID == revokeMessage.ClientMsgID && resp.MsgData.Seq == revokeMessage.Seq { + revokeMessage.SourceMessageSendTime = resp.MsgData.SendTime + revokeMessage.SourceMessageSenderNickname = resp.MsgData.SenderNickname + revokeMessage.SourceMessageSendID = resp.MsgData.SendID + data.MsgData.Content = []byte(utils.StructToJsonString(revokeMessage)) } else { return false, 201, errors.New("msg err").Error(), nil } From d7e88a32132b0aedb40db13a36f1075801dcb059 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 29 Sep 2022 18:32:20 +0800 Subject: [PATCH 3/5] revoke message --- internal/rpc/msg/send_msg.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 877080378..b0a385688 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -179,6 +179,7 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s revokeMessage.SourceMessageSendTime = resp.MsgData.SendTime revokeMessage.SourceMessageSenderNickname = resp.MsgData.SenderNickname revokeMessage.SourceMessageSendID = resp.MsgData.SendID + log.Debug(data.OperationID, "new revoke message is ", revokeMessage) data.MsgData.Content = []byte(utils.StructToJsonString(revokeMessage)) } else { return false, 201, errors.New("msg err").Error(), nil From e814d9ea63029a38919af254ac4dd5e922f1c0a8 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 29 Sep 2022 18:35:47 +0800 Subject: [PATCH 4/5] revoke message --- internal/rpc/msg/send_msg.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index b0a385688..1a948aca4 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -167,7 +167,7 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s log.Error(data.OperationID, "json unmarshal err:", err.Error()) return false, 201, err.Error(), nil } - log.Debug(data.OperationID, "revoke message is", revokeMessage) + log.Debug(data.OperationID, "revoke message is", *revokeMessage) req := pbChat.GetSuperGroupMsgReq{OperationID: data.OperationID, Seq: revokeMessage.Seq, GroupID: data.MsgData.GroupID} resp, err := rpc.GetSuperGroupMsg(context.Background(), &req) if err != nil { From ac631f7c49b4ce5b11d26e4dd38c7448bb99172e Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 29 Sep 2022 19:29:22 +0800 Subject: [PATCH 5/5] revoke message --- internal/rpc/msg/send_msg.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index 1a948aca4..32a239def 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -168,24 +168,26 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s return false, 201, err.Error(), nil } log.Debug(data.OperationID, "revoke message is", *revokeMessage) - req := pbChat.GetSuperGroupMsgReq{OperationID: data.OperationID, Seq: revokeMessage.Seq, GroupID: data.MsgData.GroupID} - resp, err := rpc.GetSuperGroupMsg(context.Background(), &req) - if err != nil { - log.Error(data.OperationID, "GetSuperGroupMsgReq err:", err.Error()) - } else if resp.ErrCode != 0 { - log.Error(data.OperationID, "GetSuperGroupMsgReq err:", err.Error()) - } else { - if resp.MsgData != nil && resp.MsgData.ClientMsgID == revokeMessage.ClientMsgID && resp.MsgData.Seq == revokeMessage.Seq { - revokeMessage.SourceMessageSendTime = resp.MsgData.SendTime - revokeMessage.SourceMessageSenderNickname = resp.MsgData.SenderNickname - revokeMessage.SourceMessageSendID = resp.MsgData.SendID - log.Debug(data.OperationID, "new revoke message is ", revokeMessage) - data.MsgData.Content = []byte(utils.StructToJsonString(revokeMessage)) + + if revokeMessage.RevokerID != revokeMessage.SourceMessageSendID { + req := pbChat.GetSuperGroupMsgReq{OperationID: data.OperationID, Seq: revokeMessage.Seq, GroupID: data.MsgData.GroupID} + resp, err := rpc.GetSuperGroupMsg(context.Background(), &req) + if err != nil { + log.Error(data.OperationID, "GetSuperGroupMsgReq err:", err.Error()) + } else if resp.ErrCode != 0 { + log.Error(data.OperationID, "GetSuperGroupMsgReq err:", err.Error()) } else { - return false, 201, errors.New("msg err").Error(), nil + if resp.MsgData != nil && resp.MsgData.ClientMsgID == revokeMessage.ClientMsgID && resp.MsgData.Seq == revokeMessage.Seq { + revokeMessage.SourceMessageSendTime = resp.MsgData.SendTime + revokeMessage.SourceMessageSenderNickname = resp.MsgData.SenderNickname + revokeMessage.SourceMessageSendID = resp.MsgData.SendID + log.Debug(data.OperationID, "new revoke message is ", revokeMessage) + data.MsgData.Content = []byte(utils.StructToJsonString(revokeMessage)) + } else { + return false, 201, errors.New("msg err").Error(), nil + } } } - } if groupInfo.GroupType == constant.SuperGroup { return true, 0, "", nil