diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index cff59c1a6..a096e4eb4 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -70,7 +70,7 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { wsResult = append(wsResult, reply.SinglePushResult...) } } - log.NewInfo(pushMsg.OperationID, "push_result", wsResult, "sendData", pushMsg.MsgData) + log.NewInfo(pushMsg.OperationID, "push_result", wsResult, "sendData", pushMsg.MsgData, "isOfflinePush", isOfflinePush) successCount++ if isOfflinePush && pushMsg.PushToUserID != pushMsg.MsgData.SendID { // save invitation info for offline push diff --git a/internal/rpc/msg/send_msg.go b/internal/rpc/msg/send_msg.go index c072b1b71..e712afcfd 100644 --- a/internal/rpc/msg/send_msg.go +++ b/internal/rpc/msg/send_msg.go @@ -107,6 +107,17 @@ func userIsMuteInGroup(groupID, userID string) (bool, error) { return false, nil } +func groupIsMuted(groupID string) (bool, error) { + groupInfo, err := rocksCache.GetGroupInfoFromCache(groupID) + if err != nil { + return false, utils.Wrap(err, "GetGroupInfoFromCache failed") + } + if groupInfo.Status == constant.GroupStatusMuted { + return true, nil + } + return false, nil +} + func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, string, []string) { switch data.MsgData.SessionType { case constant.SingleChatType: @@ -182,7 +193,15 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s return false, 202, "you are not in group", nil } } - isMute, err := userIsMuteInGroup(data.MsgData.GroupID, data.MsgData.SendID) + isMute, err := groupIsMuted(data.MsgData.GroupID) + if err != nil { + errMsg := data.OperationID + err.Error() + return false, 223, errMsg, nil + } + if isMute { + return false, 225, "group id muted", nil + } + isMute, err = userIsMuteInGroup(data.MsgData.GroupID, data.MsgData.SendID) if err != nil { errMsg := data.OperationID + err.Error() return false, 223, errMsg, nil @@ -245,7 +264,15 @@ func (rpc *rpcChat) messageVerification(data *pbChat.SendMsgReq) (bool, int32, s return false, 202, "you are not in group", nil } } - isMute, err := userIsMuteInGroup(data.MsgData.GroupID, data.MsgData.SendID) + isMute, err := groupIsMuted(data.MsgData.GroupID) + if err != nil { + errMsg := data.OperationID + err.Error() + return false, 223, errMsg, nil + } + if isMute { + return false, 225, "group id muted", nil + } + isMute, err = userIsMuteInGroup(data.MsgData.GroupID, data.MsgData.SendID) if err != nil { errMsg := data.OperationID + err.Error() return false, 223, errMsg, nil