From 53d5a77424fa5c21022a6b0d3a23313555f7a2e1 Mon Sep 17 00:00:00 2001 From: AndrewZuo01 Date: Tue, 21 Nov 2023 18:53:04 +0800 Subject: [PATCH] update callback setrgoup info --- deployments/templates/openim.yaml | 6 ++--- internal/rpc/group/callback.go | 37 +++++++++++++++++++++++++++++++ internal/rpc/group/group.go | 6 +++++ pkg/callbackstruct/group.go | 27 +++++++++++++++++++--- 4 files changed, 70 insertions(+), 6 deletions(-) diff --git a/deployments/templates/openim.yaml b/deployments/templates/openim.yaml index b7d12c168..075042b54 100644 --- a/deployments/templates/openim.yaml +++ b/deployments/templates/openim.yaml @@ -312,7 +312,7 @@ iosPush: # Timeout in seconds # Whether to continue execution if callback fails callback: - url: "http://125.124.195.201:18889/sdkName/callbackBeforeInviteJoinGroupCommand" + url: "http://125.124.195.201:18889/sdkName/callbackAfterSetGroupInfoCommand" beforeSendSingleMsg: enable: false timeout: 5 @@ -394,11 +394,11 @@ callback: failedContinue: true ##TODO CALLBACK joinGroupAfter: - enable: true + enable: false timeout: 5 failedContinue: true setGroupInfoAfter: - enable: false + enable: true timeout: 5 failedContinue: true setGroupInfoBefore: diff --git a/internal/rpc/group/callback.go b/internal/rpc/group/callback.go index 382d1e8dd..b66a5a754 100644 --- a/internal/rpc/group/callback.go +++ b/internal/rpc/group/callback.go @@ -230,4 +230,41 @@ func CallbackAfterJoinGroup(ctx context.Context, req *group.JoinGroupReq) error return nil } +func CallbackBeforeSetGroupInfo(ctx context.Context, req *group.SetGroupInfoReq) error { + if !config.Config.Callback.CallbackBeforeSetGroupInfo.Enable { + return nil + } + callbackReq := &callbackstruct.CallbackBeforeSetGroupInfoReq{ + CallbackCommand: callbackstruct.CallbackBeforeSetGroupInfoCommand, + OperationID: mcontext.GetOperationID(ctx), + GroupInfoForSet: req.GroupInfoForSet, + } + resp := &callbackstruct.CallbackBeforeSetGroupInfoResp{} + if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackBeforeSetGroupInfo); err != nil { + if err == errs.ErrCallbackContinue { + return nil + } + return err + } + return nil +} +func CallbackAfterSetGroupInfo(ctx context.Context, req *group.SetGroupInfoReq) error { + if !config.Config.Callback.CallbackAfterSetGroupInfo.Enable { + return nil + } + callbackReq := &callbackstruct.CallbackAfterSetGroupInfoReq{ + CallbackCommand: callbackstruct.CallbackAfterSetGroupInfoCommand, + OperationID: mcontext.GetOperationID(ctx), + GroupInfoForSet: req.GroupInfoForSet, + } + resp := &callbackstruct.CallbackAfterSetGroupInfoResp{} + if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackAfterSetGroupInfo); err != nil { + if err == errs.ErrCallbackContinue { + return nil + } + return err + } + return nil +} + // TODO CALLBACK diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 4f79ba3fe..a7b36ab4d 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -937,6 +937,9 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInf return nil, errs.ErrNoPermission.Wrap("no group owner or admin") } } + if err := CallbackBeforeSetGroupInfo(ctx, req); err != nil { + return nil, err + } group, err := s.GroupDatabase.TakeGroup(ctx, req.GroupInfoForSet.GroupID) if err != nil { return nil, err @@ -1005,6 +1008,9 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInf default: s.Notification.GroupInfoSetNotification(ctx, tips) } + if err := CallbackAfterSetGroupInfo(ctx, req); err != nil { + return nil, err + } return resp, nil } diff --git a/pkg/callbackstruct/group.go b/pkg/callbackstruct/group.go index 2ab2fddaf..26ae845c5 100644 --- a/pkg/callbackstruct/group.go +++ b/pkg/callbackstruct/group.go @@ -100,17 +100,38 @@ type CallbackBeforeInviteUserToGroupResp struct { RefusedMembersAccount []string `json:"refusedMembersAccount,omitempty"` // Optional field to list members whose invitation is refused. } -// TODO CALLBACK 2 - type CallbackAfterJoinGroupReq struct { CallbackCommand `json:"callbackCommand"` OperationID string `json:"operationID"` GroupID string `json:"groupID"` ReqMessage string `json:"reqMessage"` JoinSource int32 `json:"joinSource"` - InviterUserID string `json:"string"` + InviterUserID string `json:"inviterUserID"` EventTime int64 `json:"eventTime"` } type CallbackAfterJoinGroupResp struct { CommonCallbackResp } + +type CallbackBeforeSetGroupInfoReq struct { + CallbackCommand `json:"callbackCommand"` + OperationID string `json:"operationID"` + GroupInfoForSet *common.GroupInfoForSet `json:"groupInfoForSet"` +} + +type CallbackBeforeSetGroupInfoResp struct { + CommonCallbackResp + GroupInfoForSet *common.GroupInfoForSet `json:"groupInfoForSet"` +} + +type CallbackAfterSetGroupInfoReq struct { + CallbackCommand `json:"callbackCommand"` + OperationID string `json:"operationID"` + GroupInfoForSet *common.GroupInfoForSet `json:"groupInfoForSet"` +} + +type CallbackAfterSetGroupInfoResp struct { + CommonCallbackResp +} + +// TODO CALLBACK 2