diff --git a/internal/push/push_handler.go b/internal/push/push_handler.go index c91b5a653..5f3428692 100644 --- a/internal/push/push_handler.go +++ b/internal/push/push_handler.go @@ -46,9 +46,9 @@ func (c *ConsumerHandler) handleMs2PsChat(ctx context.Context, msg []byte) { var err error switch msgFromMQ.MsgData.SessionType { case constant.SuperGroupChatType: - err = c.pusher.MsgToSuperGroupUser(ctx, pbData.ConversationID, pbData.MsgData) + err = c.pusher.Push2SuperGroup(ctx, pbData.MsgData.GroupID, pbData.MsgData) default: - err = c.pusher.MsgToUser(ctx, pbData.ConversationID, pbData.MsgData) + err = c.pusher.Push2User(ctx, []string{pbData.MsgData.SendID, pbData.MsgData.RecvID}, pbData.MsgData) } if err != nil { log.ZError(ctx, "push failed", err, "msg", pbData.String()) diff --git a/internal/push/push_rpc_server.go b/internal/push/push_rpc_server.go index 1cc8efd3c..35f8055c0 100644 --- a/internal/push/push_rpc_server.go +++ b/internal/push/push_rpc_server.go @@ -47,9 +47,9 @@ func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) e func (r *pushServer) PushMsg(ctx context.Context, pbData *pbPush.PushMsgReq) (resp *pbPush.PushMsgResp, err error) { switch pbData.MsgData.SessionType { case constant.SuperGroupChatType: - err = r.pusher.MsgToSuperGroupUser(ctx, pbData.ConversationID, pbData.MsgData) + err = r.pusher.Push2SuperGroup(ctx, pbData.MsgData.GroupID, pbData.MsgData) default: - err = r.pusher.MsgToUser(ctx, pbData.ConversationID, pbData.MsgData) + err = r.pusher.Push2User(ctx, []string{pbData.MsgData.RecvID, pbData.MsgData.SendID}, pbData.MsgData) } if err != nil { return nil, err diff --git a/internal/push/push_to_client.go b/internal/push/push_to_client.go index 91f183f66..54844678b 100644 --- a/internal/push/push_to_client.go +++ b/internal/push/push_to_client.go @@ -58,9 +58,8 @@ func NewOfflinePusher(cache cache.MsgModel) offlinepush.OfflinePusher { return offlinePusher } -func (p *Pusher) MsgToUser(ctx context.Context, userID string, msg *sdkws.MsgData) error { - var userIDs = []string{userID} - log.ZDebug(ctx, "Get msg from msg_transfer And push msg", "userID", userID, "msg", msg.String()) +func (p *Pusher) Push2User(ctx context.Context, userIDs []string, msg *sdkws.MsgData) error { + log.ZDebug(ctx, "Get msg from msg_transfer And push msg", "userIDs", userIDs, "msg", msg.String()) // callback if err := callbackOnlinePush(ctx, userIDs, msg); err != nil && err != errs.ErrCallbackContinue { return err @@ -71,36 +70,38 @@ func (p *Pusher) MsgToUser(ctx context.Context, userID string, msg *sdkws.MsgDat return err } isOfflinePush := utils.GetSwitchFromOptions(msg.Options, constant.IsOfflinePush) - log.ZDebug(ctx, "push_result", "ws push result", wsResults, "sendData", msg, "isOfflinePush", isOfflinePush, "push_to_userID", userID) + log.ZDebug(ctx, "push_result", "ws push result", wsResults, "sendData", msg, "isOfflinePush", isOfflinePush, "push_to_userID", userIDs) p.successCount++ - if isOfflinePush && userID != msg.SendID { - // save invitation info for offline push - for _, v := range wsResults { - if v.OnlinePush { - return nil + for _, userID := range userIDs { + if isOfflinePush && userID != msg.SendID { + // save invitation info for offline push + for _, v := range wsResults { + if v.OnlinePush { + return nil + } } - } - if msg.ContentType == constant.SignalingNotification { - isSend, err := p.database.HandleSignalInvite(ctx, msg, userID) + if msg.ContentType == constant.SignalingNotification { + isSend, err := p.database.HandleSignalInvite(ctx, msg, userID) + if err != nil { + return err + } + if !isSend { + return nil + } + } + if err := callbackOfflinePush(ctx, userIDs, msg, &[]string{}); err != nil { + return err + } + err = p.offlinePushMsg(ctx, userID, msg, userIDs) if err != nil { return err } - if !isSend { - return nil - } - } - if err := callbackOfflinePush(ctx, userIDs, msg, &[]string{}); err != nil { - return err - } - err = p.offlinePushMsg(ctx, userID, msg, userIDs) - if err != nil { - return err } } return nil } -func (p *Pusher) MsgToSuperGroupUser(ctx context.Context, groupID string, msg *sdkws.MsgData) (err error) { +func (p *Pusher) Push2SuperGroup(ctx context.Context, groupID string, msg *sdkws.MsgData) (err error) { operationID := mcontext.GetOperationID(ctx) log.Debug(operationID, "Get super group msg from msg_transfer And push msg", msg.String(), groupID) var pushToUserIDs []string