push update

pull/213/head
Gordon 3 years ago
parent 6449c4a53d
commit 4f8fcd2d3d

@ -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)

@ -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 { } else {
switch pushMsg.MsgData.ContentType { switch pushMsg.MsgData.ContentType {
case constant.Text: case constant.Text:
content = constant.ContentType2PushContent[constant.Text] content = constant.ContentType2PushContent[constant.Text]
case constant.Picture: case constant.Picture:
content = constant.ContentType2PushContent[constant.Picture] content = constant.ContentType2PushContent[constant.Picture]
case constant.Voice: case constant.Voice:
content = constant.ContentType2PushContent[constant.Voice] content = constant.ContentType2PushContent[constant.Voice]
case constant.Video: case constant.Video:
content = constant.ContentType2PushContent[constant.Video] content = constant.ContentType2PushContent[constant.Video]
case constant.File: case constant.File:
content = constant.ContentType2PushContent[constant.File] content = constant.ContentType2PushContent[constant.File]
case constant.AtText: case constant.AtText:
a := AtContent{} a := AtContent{}
_ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a) _ = utils.JsonStringToStruct(string(pushMsg.MsgData.Content), &a)
if utils.IsContain(v.RecvID, a.AtUserList) { if utils.IsContain(v.RecvID, a.AtUserList) {
content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common] content = constant.ContentType2PushContent[constant.AtText] + constant.ContentType2PushContent[constant.Common]
} else { } else {
content = constant.ContentType2PushContent[constant.GroupMsg] content = constant.ContentType2PushContent[constant.GroupMsg]
}
default:
content = constant.ContentType2PushContent[constant.Common]
} }
default:
content = constant.ContentType2PushContent[constant.Common]
} }
} var offlinePusher pusher.OfflinePusher
var offlinePusher pusher.OfflinePusher if config.Config.Push.Getui.Enable {
if config.Config.Push.Getui.Enable { log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), config.Config.Push.Getui)
log.NewInfo(pushMsg.OperationID, utils.GetSelfFuncName(), config.Config.Push.Getui) offlinePusher = getui.GetuiClient
offlinePusher = getui.GetuiClient }
} if config.Config.Push.Jpns.Enable {
if config.Config.Push.Jpns.Enable { offlinePusher = jpush.JPushClient
offlinePusher = jpush.JPushClient }
} if offlinePusher == nil {
if offlinePusher == nil { offlinePusher = jpush.JPushClient
offlinePusher = jpush.JPushClient }
} pushResult, err := offlinePusher.Push(UIDList, content, jsonCustomContent, pushMsg.OperationID)
pushResult, err := offlinePusher.Push(UIDList, content, jsonCustomContent, pushMsg.OperationID) if err != nil {
if err != nil { log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error())
log.NewError(pushMsg.OperationID, "offline push error", pushMsg.String(), err.Error()) } else {
} else { log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData)
log.NewDebug(pushMsg.OperationID, "offline push return result is ", pushResult, pushMsg.MsgData) }
} }
} }

@ -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 {

Loading…
Cancel
Save