fix duplicated offline push

pull/1815/head
a3d21 2 years ago
parent 8b683ddccb
commit 9c8d8881ae

@ -118,18 +118,29 @@ func (p *Pusher) Push2User(ctx context.Context, userIDs []string, msg *sdkws.Msg
return nil return nil
} }
for _, v := range wsResults { if len(wsResults) == 0 {
if msg.SendID != v.UserID && (!v.OnlinePush) { return nil
if err = callbackOfflinePush(ctx, userIDs, msg, &[]string{}); err != nil { }
return err
}
err = p.offlinePushMsg(ctx, msg.SendID, msg, []string{v.UserID}) onlinePushSuccUserIDSet := utils.SliceSet(utils.Filter(wsResults, func(e *msggateway.SingleMsgToUserResults) (string, bool) {
if err != nil { return e.UserID, e.OnlinePush && e.UserID != ""
return err }))
}
offlinePushUserIDList := utils.Filter(wsResults, func(e *msggateway.SingleMsgToUserResults) (string, bool) {
_, exist := onlinePushSuccUserIDSet[e.UserID]
return e.UserID, !exist && e.UserID != "" && e.UserID != msg.SendID
})
if len(offlinePushUserIDList) > 0 {
if err = callbackOfflinePush(ctx, offlinePushUserIDList, msg, &[]string{}); err != nil {
return err
}
err = p.offlinePushMsg(ctx, msg.SendID, msg, offlinePushUserIDList)
if err != nil {
return err
} }
} }
return nil return nil
} }

Loading…
Cancel
Save