push update

This commit is contained in:
Gordon 2022-04-13 18:33:22 +08:00
parent 6449c4a53d
commit 4f8fcd2d3d
3 changed files with 71 additions and 59 deletions

View File

@ -8,23 +8,25 @@ package logic
import ( import (
"Open_IM/pkg/common/config" "Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/kafka" "Open_IM/pkg/common/kafka"
"Open_IM/pkg/statistics" "Open_IM/pkg/statistics"
"fmt" "fmt"
) )
var ( var (
rpcServer RPCServer rpcServer RPCServer
pushCh PushConsumerHandler pushCh PushConsumerHandler
producer *kafka.Producer pushTerminal []int32
count uint64 producer *kafka.Producer
count uint64
) )
func Init(rpcPort int) { func Init(rpcPort int) {
rpcServer.Init(rpcPort) rpcServer.Init(rpcPort)
pushCh.Init() pushCh.Init()
pushTerminal = []int32{constant.IOSPlatformID, constant.AndroidPlatformID}
} }
func init() { func init() {
producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic) producer = kafka.NewKafkaProducer(config.Config.Kafka.Ws2mschat.Addr, config.Config.Kafka.Ws2mschat.Topic)

View File

@ -59,61 +59,63 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) {
if v.ResultCode == 0 { if v.ResultCode == 0 {
continue continue
} }
//Use offline push messaging if utils.IsContainInt32(v.RecvPlatFormID, pushTerminal) {
var UIDList []string //Use offline push messaging
UIDList = append(UIDList, v.RecvID) var UIDList []string
customContent := OpenIMContent{ UIDList = append(UIDList, v.RecvID)
SessionType: int(pushMsg.MsgData.SessionType), customContent := OpenIMContent{
From: pushMsg.MsgData.SendID, SessionType: int(pushMsg.MsgData.SessionType),
To: pushMsg.MsgData.RecvID, From: pushMsg.MsgData.SendID,
Seq: pushMsg.MsgData.Seq, To: pushMsg.MsgData.RecvID,
} Seq: pushMsg.MsgData.Seq,
bCustomContent, _ := json.Marshal(customContent) }
jsonCustomContent := string(bCustomContent) bCustomContent, _ := json.Marshal(customContent)
var content string jsonCustomContent := string(bCustomContent)
if pushMsg.MsgData.OfflinePushInfo != nil { var content string
content = pushMsg.MsgData.OfflinePushInfo.Title if pushMsg.MsgData.OfflinePushInfo != nil {
content = pushMsg.MsgData.OfflinePushInfo.Title
} else {
switch pushMsg.MsgData.ContentType { } else {
case constant.Text: switch pushMsg.MsgData.ContentType {
content = constant.ContentType2PushContent[constant.Text] case constant.Text:
case constant.Picture: content = constant.ContentType2PushContent[constant.Text]
content = constant.ContentType2PushContent[constant.Picture] case constant.Picture:
case constant.Voice: content = constant.ContentType2PushContent[constant.Picture]
content = constant.ContentType2PushContent[constant.Voice] case constant.Voice:
case constant.Video: content = constant.ContentType2PushContent[constant.Voice]
content = constant.ContentType2PushContent[constant.Video] case constant.Video:
case constant.File: content = constant.ContentType2PushContent[constant.Video]
content = constant.ContentType2PushContent[constant.File] case constant.File:
case constant.AtText: content = constant.ContentType2PushContent[constant.File]
a := AtContent{} case constant.AtText:
_ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) a := AtContent{}
if utils.IsContain(v.RecvID, a.AtUserList) { _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a)
content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] if utils.IsContain(v.RecvID, a.AtUserList) {
} else { content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common]
content = constant.ContentType2PushContent[constant.GroupMsg] } else {
} content = constant.ContentType2PushContent[constant.GroupMsg]
default: }
content = constant.ContentType2PushContent[constant.Common] 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)
} }
}
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)
} }
} }

View File

@ -43,6 +43,14 @@ func IsContain(target string, List []string) bool {
} }
return false return false
} }
func IsContainInt32(target int32, List []int32) bool {
for _, element := range List {
if target == element {
return true
}
}
return false
}
func InterfaceArrayToStringArray(data []interface{}) (i []string) { func InterfaceArrayToStringArray(data []interface{}) (i []string) {
for _, param := range data { for _, param := range data {