From 6449c4a53d9b60b1aa55c494e669dcc8fa03f352 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Wed, 13 Apr 2022 16:20:30 +0800 Subject: [PATCH] push update --- internal/push/getui/push.go | 2 +- internal/push/jpush/push.go | 6 +- .../push/jpush/requestBody/notification.go | 19 ++- internal/push/logic/init.go | 12 +- internal/push/logic/push_to_client.go | 109 +++++++++--------- internal/push/push_interface.go | 2 +- 6 files changed, 69 insertions(+), 81 deletions(-) diff --git a/internal/push/getui/push.go b/internal/push/getui/push.go index e6db6c273..f46b0d0ee 100644 --- a/internal/push/getui/push.go +++ b/internal/push/getui/push.go @@ -98,7 +98,7 @@ func newGetuiClient() *Getui { return &Getui{} } -func (g *Getui) Push(userIDList []string, alert, detailContent, platform, operationID string) (resp string, err error) { +func (g *Getui) Push(userIDList []string, alert, detailContent, operationID string) (resp string, err error) { token, err := db.DB.GetGetuiToken() log.NewDebug(operationID, utils.GetSelfFuncName(), "token:", token) if err != nil { diff --git a/internal/push/jpush/push.go b/internal/push/jpush/push.go index 439ee845f..aaaee306d 100644 --- a/internal/push/jpush/push.go +++ b/internal/push/jpush/push.go @@ -32,13 +32,13 @@ func (j *JPush) SetAlias(cid, alias string) (resp string, err error) { return resp, nil } -func (j *JPush) Push(accounts []string, alert, detailContent, platform, operationID string) (string, error) { +func (j *JPush) Push(accounts []string, alert, detailContent, operationID string) (string, error) { var pf requestBody.Platform - _ = pf.SetPlatform(platform) + pf.SetAll() var au requestBody.Audience au.SetAlias(accounts) var no requestBody.Notification - no.SetAlert(alert, platform) + no.SetAlert(alert) var me requestBody.Message me.SetMsgContent(detailContent) var o requestBody.Options diff --git a/internal/push/jpush/requestBody/notification.go b/internal/push/jpush/requestBody/notification.go index 3f2876612..9ff49a439 100644 --- a/internal/push/jpush/requestBody/notification.go +++ b/internal/push/jpush/requestBody/notification.go @@ -2,7 +2,6 @@ package requestBody import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" ) type Notification struct { @@ -23,18 +22,14 @@ type Ios struct { Badge string `json:"badge,omitempty"` } -func (n *Notification) SetAlert(alert, platform string) { +func (n *Notification) SetAlert(alert string) { n.Alert = alert - switch platform { - case constant.AndroidPlatformStr: - n.Android.Alert = alert - n.SetAndroidIntent() - case constant.IOSPlatformStr: - n.IOS.Alert = alert - n.IOS.Sound = "default" - n.IOS.Badge = "+1" - default: - } + n.Android.Alert = alert + n.SetAndroidIntent() + n.IOS.Alert = alert + n.IOS.Sound = "default" + n.IOS.Badge = "+1" + } func (n *Notification) SetAndroidIntent() { n.Android.Intent.URL = config.Config.Push.Jpns.PushIntent diff --git a/internal/push/logic/init.go b/internal/push/logic/init.go index d2d127091..79eb460dc 100644 --- a/internal/push/logic/init.go +++ b/internal/push/logic/init.go @@ -8,25 +8,23 @@ package logic import ( "Open_IM/pkg/common/config" - "Open_IM/pkg/common/constant" "Open_IM/pkg/common/kafka" "Open_IM/pkg/statistics" "fmt" ) var ( - rpcServer RPCServer - pushCh PushConsumerHandler - pushTerminal []int32 - producer *kafka.Producer - count uint64 + rpcServer RPCServer + pushCh PushConsumerHandler + producer *kafka.Producer + count uint64 ) func Init(rpcPort int) { rpcServer.Init(rpcPort) pushCh.Init() - pushTerminal = []int32{constant.IOSPlatformID, constant.AndroidPlatformID} + } func init() { producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index c6e512ccb..5a5317b81 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -59,68 +59,63 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { if v.ResultCode == 0 { continue } - //supported terminal - for _, t := range pushTerminal { - if v.RecvPlatFormID == t { - //Use offline push messaging - var UIDList []string - UIDList = append(UIDList, v.RecvID) - customContent := OpenIMContent{ - SessionType: int(pushMsg.MsgData.SessionType), - From: pushMsg.MsgData.SendID, - To: pushMsg.MsgData.RecvID, - Seq: pushMsg.MsgData.Seq, - } - bCustomContent, _ := json.Marshal(customContent) - jsonCustomContent := string(bCustomContent) - var content string - if pushMsg.MsgData.OfflinePushInfo != nil { - content = pushMsg.MsgData.OfflinePushInfo.Title + //Use offline push messaging + var UIDList []string + UIDList = append(UIDList, v.RecvID) + customContent := OpenIMContent{ + SessionType: int(pushMsg.MsgData.SessionType), + From: pushMsg.MsgData.SendID, + To: pushMsg.MsgData.RecvID, + Seq: pushMsg.MsgData.Seq, + } + bCustomContent, _ := json.Marshal(customContent) + jsonCustomContent := string(bCustomContent) + var content string + if pushMsg.MsgData.OfflinePushInfo != nil { + content = pushMsg.MsgData.OfflinePushInfo.Title + } else { + switch pushMsg.MsgData.ContentType { + case constant.Text: + content = constant.ContentType2PushContent[constant.Text] + case constant.Picture: + content = constant.ContentType2PushContent[constant.Picture] + case constant.Voice: + content = constant.ContentType2PushContent[constant.Voice] + case constant.Video: + content = constant.ContentType2PushContent[constant.Video] + case constant.File: + content = constant.ContentType2PushContent[constant.File] + case constant.AtText: + a := AtContent{} + _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) + if utils.IsContain(v.RecvID, a.AtUserList) { + content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] } else { - switch pushMsg.MsgData.ContentType { - case constant.Text: - content = constant.ContentType2PushContent[constant.Text] - case constant.Picture: - content = constant.ContentType2PushContent[constant.Picture] - case constant.Voice: - content = constant.ContentType2PushContent[constant.Voice] - case constant.Video: - content = constant.ContentType2PushContent[constant.Video] - case constant.File: - content = constant.ContentType2PushContent[constant.File] - case constant.AtText: - a := AtContent{} - _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) - if utils.IsContain(v.RecvID, a.AtUserList) { - content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] - } else { - content = constant.ContentType2PushContent[constant.GroupMsg] - } - default: - content = constant.ContentType2PushContent[constant.Common] - } + content = constant.ContentType2PushContent[constant.GroupMsg] } - var offlinePusher pusher.OfflinePusher - if config.Config.Push.Getui.Enable { - log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), config.Config.Push.Getui) - offlinePusher = getui.GetuiClient - } - if config.Config.Push.Jpns.Enable { - offlinePusher = jpush.JPushClient - } - if offlinePusher == nil { - offlinePusher = jpush.JPushClient - } - pushResult, err := offlinePusher.Push(UIDList, content, jsonCustomContent, constant.PlatformIDToName(t), pushMsg.OperationID) - if err != nil { - log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error(), constant.PlatformIDToName(t)) - } else { - log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData, constant.PlatformIDToName(t)) - } - + default: + content = constant.ContentType2PushContent[constant.Common] } } + var offlinePusher pusher.OfflinePusher + if config.Config.Push.Getui.Enable { + log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), config.Config.Push.Getui) + offlinePusher = getui.GetuiClient + } + if config.Config.Push.Jpns.Enable { + offlinePusher = jpush.JPushClient + } + if offlinePusher == nil { + offlinePusher = jpush.JPushClient + } + pushResult, err := offlinePusher.Push(UIDList, content, jsonCustomContent, pushMsg.OperationID) + if err != nil { + log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error()) + } else { + log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData) + } + } } diff --git a/internal/push/push_interface.go b/internal/push/push_interface.go index f89fcf664..59b4764b4 100644 --- a/internal/push/push_interface.go +++ b/internal/push/push_interface.go @@ -1,5 +1,5 @@ package push type OfflinePusher interface { - Push(userIDList []string, alert, detailContent, platform, operationID string) (resp string, err error) + Push(userIDList []string, alert, detailContent, operationID string) (resp string, err error) }