groupCallback

This commit is contained in:
wangchuxiao 2023-01-05 20:04:11 +08:00
parent 4aa7abf94b
commit 2d67f95413
4 changed files with 49 additions and 47 deletions

View File

@ -14,12 +14,12 @@ import (
"google.golang.org/protobuf/types/known/wrapperspb"
)
func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq) (isPass bool, err error) {
func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq) (err error) {
defer func() {
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), err, "req", req, "isPass", isPass, "err", err)
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), err, "req", req)
}()
if !config.Config.Callback.CallbackBeforeCreateGroup.Enable {
return true, nil
return nil
}
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), req.String())
commonCallbackReq := &cbApi.CallbackBeforeCreateGroupReq{
@ -34,9 +34,9 @@ func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq)
}
//utils.CopyStructFields(req, msg.MsgData)
defer log.NewDebug(req.OperationID, utils.GetSelfFuncName(), commonCallbackReq, *resp)
isPass, err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeCreateGroupCommand, commonCallbackReq,
err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeCreateGroupCommand, commonCallbackReq,
resp, config.Config.Callback.CallbackBeforeCreateGroup.CallbackTimeOut, &config.Config.Callback.CallbackBeforeCreateGroup.CallbackFailedContinue)
if isPass && err == nil {
if err == nil {
if resp.GroupID != nil {
req.GroupInfo.GroupID = *resp.GroupID
}
@ -74,16 +74,16 @@ func callbackBeforeCreateGroup(ctx context.Context, req *pbGroup.CreateGroupReq)
req.GroupInfo.LookMemberInfo = *resp.LookMemberInfo
}
}
return isPass, err
return err
}
func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, groupMember *im_mysql_model.GroupMember, groupEx string) (isPass bool, err error) {
func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, groupMember *im_mysql_model.GroupMember, groupEx string) (err error) {
defer func() {
trace_log.SetContextInfo(ctx, "CallbackBeforeMemberJoinGroup", err, "groupMember", *groupMember, "groupEx", groupEx, "isPass", isPass)
trace_log.SetContextInfo(ctx, "CallbackBeforeMemberJoinGroup", err, "groupMember", *groupMember, "groupEx", groupEx)
}()
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
if !config.Config.Callback.CallbackBeforeMemberJoinGroup.Enable {
return true, nil
return nil
}
log.NewDebug(operationID, "args: ", *groupMember)
callbackReq := cbApi.CallbackBeforeMemberJoinGroupReq{
@ -97,9 +97,9 @@ func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, grou
resp := &cbApi.CallbackBeforeMemberJoinGroupResp{
CommonCallbackResp: &callbackResp,
}
isPass, err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeMemberJoinGroupCommand, callbackReq,
err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeMemberJoinGroupCommand, callbackReq,
resp, config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackTimeOut, &config.Config.Callback.CallbackBeforeMemberJoinGroup.CallbackFailedContinue)
if isPass && err == nil {
if err == nil {
if resp.MuteEndTime != nil {
groupMember.MuteEndTime = utils.UnixSecondToTime(*resp.MuteEndTime)
}
@ -116,16 +116,16 @@ func CallbackBeforeMemberJoinGroup(ctx context.Context, operationID string, grou
groupMember.RoleLevel = *resp.RoleLevel
}
}
return isPass, err
return err
}
func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (isPass bool, err error) {
func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroupMemberInfoReq) (err error) {
defer func() {
trace_log.SetContextInfo(ctx, "CallbackBeforeSetGroupMemberInfo", err, "req", *req)
}()
callbackResp := cbApi.CommonCallbackResp{OperationID: req.OperationID}
if !config.Config.Callback.CallbackBeforeSetGroupMemberInfo.Enable {
return true, nil
return nil
}
callbackReq := cbApi.CallbackBeforeSetGroupMemberInfoReq{
CallbackCommand: constant.CallbackBeforeSetGroupMemberInfoCommand,
@ -148,9 +148,9 @@ func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroup
resp := &cbApi.CallbackBeforeSetGroupMemberInfoResp{
CommonCallbackResp: &callbackResp,
}
isPass, err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetGroupMemberInfoCommand, callbackReq,
err = http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackBeforeSetGroupMemberInfoCommand, callbackReq,
resp, config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackTimeOut, &config.Config.Callback.CallbackBeforeSetGroupMemberInfo.CallbackFailedContinue)
if isPass && err == nil {
if err == nil {
if resp.FaceURL != nil {
req.FaceURL = &wrapperspb.StringValue{Value: *resp.FaceURL}
}
@ -164,5 +164,5 @@ func CallbackBeforeSetGroupMemberInfo(ctx context.Context, req *pbGroup.SetGroup
req.Ex = &wrapperspb.StringValue{Value: *resp.Ex}
}
}
return isPass, err
return err
}

View File

@ -1,7 +1,7 @@
package call_back_struct
import (
"errors"
"Open_IM/pkg/common/constant"
"fmt"
)
@ -26,26 +26,25 @@ type CommonCallbackReq struct {
}
type CallbackResp interface {
Parse() (IsPass bool, err error)
Parse() (err error)
}
type CommonCallbackResp struct {
ActionCode int `json:"actionCode"`
ErrCode int `json:"errCode"`
ErrCode int32 `json:"errCode"`
ErrMsg string `json:"errMsg"`
OperationID string `json:"operationID"`
}
func (c *CommonCallbackResp) Parse() (isPass bool, err error) {
if c.ActionCode != 0 {
err = errors.New(fmt.Sprintf("callback response error actionCode is %d, errCode is %d, errMsg is %s", c.ActionCode, c.ErrCode, c.ErrMsg))
return false, err
func (c *CommonCallbackResp) Parse() (err error) {
if c.ActionCode != constant.NoError || c.ErrCode != constant.NoError {
newErr := constant.ErrCallback
newErr.ErrCode = c.ErrCode
newErr.DetailErrMsg = fmt.Sprintf("callback response error actionCode is %d, errCode is %d, errMsg is %s", c.ActionCode, c.ErrCode, c.ErrMsg)
err = newErr
return
}
if c.ErrCode != 0 {
err = errors.New(fmt.Sprintf("callback response error actionCode is %d, errCode is %d, errMsg is %s", c.ActionCode, c.ErrCode, c.ErrMsg))
return false, err
}
return true, nil
return
}
type UserStatusBaseCallback struct {

View File

@ -12,7 +12,7 @@ import (
type ErrInfo struct {
ErrCode int32
ErrMsg string
WrapErrMsg string
DetailErrMsg string
}
func (e ErrInfo) Error() string {
@ -31,6 +31,8 @@ var (
ErrInternalServer = ErrInfo{ServerInternalError, "ServerInternalError", ""}
ErrNetwork = ErrInfo{NetworkError, "NetworkError", ""}
ErrNoPermission = ErrInfo{NoPermissionError, "NoPermissionError", ""}
ErrCallback = ErrInfo{ErrMsg: "CallbackError"}
ErrCallbackContinue = ErrInfo{ErrMsg: "CallbackContinueError"}
ErrUserIDNotFound = ErrInfo{UserIDNotFoundError, "UserIDNotFoundError", ""}
ErrGroupIDNotFound = ErrInfo{GroupIDNotFoundError, "GroupIDNotFoundError", ""}
@ -62,7 +64,7 @@ var (
func toDetail(err error, info ErrInfo) ErrInfo {
errInfo := info
errInfo.WrapErrMsg = err.Error()
errInfo.DetailErrMsg = err.Error()
return errInfo
}

View File

@ -8,6 +8,7 @@ package http
import (
cbApi "Open_IM/pkg/call_back_struct"
"Open_IM/pkg/common/constant"
"bytes"
"encoding/json"
"io/ioutil"
@ -57,22 +58,22 @@ func Post(url string, data interface{}, timeOutSecond int) (content []byte, err
return result, nil
}
func CallBackPostReturn(url, callbackCommand string, input interface{}, output cbApi.CallbackResp, timeOut int, failedContinue *bool) (bool, error) {
func CallBackPostReturn(url, callbackCommand string, input interface{}, output cbApi.CallbackResp, timeOut int, failedContinue *bool) error {
v := urlLib.Values{}
v.Set("callbackCommand", callbackCommand)
url = url + "?" + v.Encode()
b, err := Post(url, input, timeOut)
if err != nil {
if failedContinue != nil {
return *failedContinue, err
if failedContinue != nil && *failedContinue {
return constant.ErrCallbackContinue
}
return true, err
return constant.ErrNetwork
}
if err = json.Unmarshal(b, output); err != nil {
if failedContinue != nil {
return *failedContinue, err
if failedContinue != nil && *failedContinue {
return constant.ErrCallbackContinue
}
return true, err
return constant.ErrData
}
return output.Parse()
}