From 40b7314f6d5bcce20d9ceefca1017ebb7c942dbf Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 19 Aug 2022 11:58:46 +0800 Subject: [PATCH 1/2] model add update time --- pkg/common/db/model_struct.go | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/pkg/common/db/model_struct.go b/pkg/common/db/model_struct.go index f59b904a4..560dc29d5 100644 --- a/pkg/common/db/model_struct.go +++ b/pkg/common/db/model_struct.go @@ -248,20 +248,21 @@ type BlackList struct { EndDisableTime time.Time `gorm:"column:end_disable_time"` } type Conversation struct { - OwnerUserID string `gorm:"column:owner_user_id;primary_key;type:char(128)" json:"OwnerUserID"` - ConversationID string `gorm:"column:conversation_id;primary_key;type:char(128)" json:"conversationID"` - ConversationType int32 `gorm:"column:conversation_type" json:"conversationType"` - UserID string `gorm:"column:user_id;type:char(64)" json:"userID"` - GroupID string `gorm:"column:group_id;type:char(128)" json:"groupID"` - RecvMsgOpt int32 `gorm:"column:recv_msg_opt" json:"recvMsgOpt"` - UnreadCount int32 `gorm:"column:unread_count" json:"unreadCount"` - DraftTextTime int64 `gorm:"column:draft_text_time" json:"draftTextTime"` - IsPinned bool `gorm:"column:is_pinned" json:"isPinned"` - IsPrivateChat bool `gorm:"column:is_private_chat" json:"isPrivateChat"` - GroupAtType int32 `gorm:"column:group_at_type" json:"groupAtType"` - IsNotInGroup bool `gorm:"column:is_not_in_group" json:"isNotInGroup"` - AttachedInfo string `gorm:"column:attached_info;type:varchar(1024)" json:"attachedInfo"` - Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` + OwnerUserID string `gorm:"column:owner_user_id;primary_key;type:char(128)" json:"OwnerUserID"` + ConversationID string `gorm:"column:conversation_id;primary_key;type:char(128)" json:"conversationID"` + ConversationType int32 `gorm:"column:conversation_type" json:"conversationType"` + UserID string `gorm:"column:user_id;type:char(64)" json:"userID"` + GroupID string `gorm:"column:group_id;type:char(128)" json:"groupID"` + RecvMsgOpt int32 `gorm:"column:recv_msg_opt" json:"recvMsgOpt"` + UnreadCount int32 `gorm:"column:unread_count" json:"unreadCount"` + DraftTextTime int64 `gorm:"column:draft_text_time" json:"draftTextTime"` + IsPinned bool `gorm:"column:is_pinned" json:"isPinned"` + IsPrivateChat bool `gorm:"column:is_private_chat" json:"isPrivateChat"` + GroupAtType int32 `gorm:"column:group_at_type" json:"groupAtType"` + IsNotInGroup bool `gorm:"column:is_not_in_group" json:"isNotInGroup"` + UpdateUnreadCountTime int64 `gorm:"column:update_unread_count_time" json:"updateUnreadCountTime"` + AttachedInfo string `gorm:"column:attached_info;type:varchar(1024)" json:"attachedInfo"` + Ex string `gorm:"column:ex;type:varchar(1024)" json:"ex"` } func (Conversation) TableName() string { From 9a82dd356c3a1fd4339221db435d4537edcfb153 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Fri, 19 Aug 2022 13:04:38 +0800 Subject: [PATCH 2/2] callback add offline info --- internal/push/logic/callback.go | 11 ++++++++--- internal/push/logic/push_to_client.go | 20 +++++++++++++++++--- pkg/call_back_struct/push.go | 3 ++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/internal/push/logic/callback.go b/internal/push/logic/callback.go index 44f703ef8..1bb51fcc1 100644 --- a/internal/push/logic/callback.go +++ b/internal/push/logic/callback.go @@ -12,7 +12,7 @@ import ( http2 "net/http" ) -func callbackOfflinePush(operationID string, userIDList []string, msg *commonPb.MsgData, offlinePushUserIDList *[]string) cbApi.CommonCallbackResp { +func callbackOfflinePush(operationID string, userIDList []string, msg *commonPb.MsgData, offlinePushUserIDList *[]string, offlineInfo *commonPb.OfflinePushInfo) cbApi.CommonCallbackResp { callbackResp := cbApi.CommonCallbackResp{OperationID: operationID} if !config.Config.Callback.CallbackOfflinePush.Enable { return callbackResp @@ -47,8 +47,13 @@ func callbackOfflinePush(operationID string, userIDList []string, msg *commonPb. return callbackResp } } - if resp.ErrCode == constant.CallbackHandleSuccess && resp.ActionCode == constant.ActionAllow && len(resp.UserIDList) != 0 { - *offlinePushUserIDList = resp.UserIDList + if resp.ErrCode == constant.CallbackHandleSuccess && resp.ActionCode == constant.ActionAllow { + if len(resp.UserIDList) != 0 { + *offlinePushUserIDList = resp.UserIDList + } + if resp.OfflinePushInfo != nil { + *offlineInfo = *resp.OfflinePushInfo + } } log.NewDebug(operationID, utils.GetSelfFuncName(), offlinePushUserIDList, resp.UserIDList) return callbackResp diff --git a/internal/push/logic/push_to_client.go b/internal/push/logic/push_to_client.go index 49b3fdfe7..c398de5fb 100644 --- a/internal/push/logic/push_to_client.go +++ b/internal/push/logic/push_to_client.go @@ -17,6 +17,7 @@ import ( pbPush "Open_IM/pkg/proto/push" pbRelay "Open_IM/pkg/proto/relay" pbRtc "Open_IM/pkg/proto/rtc" + commonPb "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" "encoding/json" @@ -123,8 +124,8 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { } } - - callbackResp := callbackOfflinePush(pushMsg.OperationID, UIDList, pushMsg.MsgData, &[]string{}) + var offlineInfo commonPb.OfflinePushInfo + callbackResp := callbackOfflinePush(pushMsg.OperationID, UIDList, pushMsg.MsgData, &[]string{}, &offlineInfo) log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offline callback Resp") if callbackResp.ErrCode != 0 { log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "callbackOfflinePush result: ", callbackResp) @@ -133,6 +134,12 @@ func MsgToUser(pushMsg *pbPush.PushMsgReq) { log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offlinePush stop") return } + if offlineInfo.Title != "" { + content = offlineInfo.Title + } + if offlineInfo.Desc != "" { + jsonCustomContent = offlineInfo.Desc + } if offlinePusher == nil { return } @@ -258,7 +265,8 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) { if len(onlineFailedUserIDList) > 0 { var offlinePushUserIDList []string var needOfflinePushUserIDList []string - callbackResp := callbackOfflinePush(pushMsg.OperationID, onlineFailedUserIDList, pushMsg.MsgData, &offlinePushUserIDList) + var offlineInfo commonPb.OfflinePushInfo + callbackResp := callbackOfflinePush(pushMsg.OperationID, onlineFailedUserIDList, pushMsg.MsgData, &offlinePushUserIDList, &offlineInfo) log.NewDebug(pushMsg.OperationID, utils.GetSelfFuncName(), "offline callback Resp") if callbackResp.ErrCode != 0 { log.NewError(pushMsg.OperationID, utils.GetSelfFuncName(), "callbackOfflinePush result: ", callbackResp) @@ -272,6 +280,12 @@ func MsgToSuperGroupUser(pushMsg *pbPush.PushMsgReq) { } else { needOfflinePushUserIDList = onlineFailedUserIDList } + if offlineInfo.Title != "" { + content = offlineInfo.Title + } + if offlineInfo.Desc != "" { + jsonCustomContent = offlineInfo.Desc + } if offlinePusher == nil { return } diff --git a/pkg/call_back_struct/push.go b/pkg/call_back_struct/push.go index e3803a0e2..6ff649a3d 100644 --- a/pkg/call_back_struct/push.go +++ b/pkg/call_back_struct/push.go @@ -15,7 +15,8 @@ type CallbackBeforePushReq struct { type CallbackBeforePushResp struct { *CommonCallbackResp - UserIDList []string `json:"userIDList"` + UserIDList []string `json:"userIDList"` + OfflinePushInfo *commonPb.OfflinePushInfo `json:"offlinePushInfo"` } type CallbackBeforeSuperGroupOnlinePushReq struct {