mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 03:13:15 +08:00 
			
		
		
		
	update webhook implement contents.
This commit is contained in:
		
							parent
							
								
									ba170badc3
								
							
						
					
					
						commit
						a38611009a
					
				@ -101,32 +101,7 @@ func (s *groupServer) webhookAfterCreateGroup(ctx context.Context, after *config
 | 
				
			|||||||
	s.webhookClient.AsyncPost(ctx, cbReq.GetCallbackCommand(), cbReq, &callbackstruct.CallbackAfterCreateGroupResp{}, after)
 | 
						s.webhookClient.AsyncPost(ctx, cbReq.GetCallbackCommand(), cbReq, &callbackstruct.CallbackAfterCreateGroupResp{}, after)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *groupServer) webhookBeforeMemberJoinGroup(ctx context.Context, before *config.BeforeConfig, groupMember *model.GroupMember, groupEx string) error {
 | 
					func (s *groupServer) webhookBeforeMembersJoinGroup(ctx context.Context, before *config.BeforeConfig, groupMembers []*model.GroupMember, groupEx string) error {
 | 
				
			||||||
	return webhook.WithCondition(ctx, before, func(ctx context.Context) error {
 | 
					 | 
				
			||||||
		cbReq := &callbackstruct.CallbackBeforeMemberJoinGroupReq{
 | 
					 | 
				
			||||||
			CallbackCommand: callbackstruct.CallbackBeforeMemberJoinGroupCommand,
 | 
					 | 
				
			||||||
			GroupID:         groupMember.GroupID,
 | 
					 | 
				
			||||||
			UserID:          groupMember.UserID,
 | 
					 | 
				
			||||||
			Ex:              groupMember.Ex,
 | 
					 | 
				
			||||||
			GroupEx:         groupEx,
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		resp := &callbackstruct.CallbackBeforeMemberJoinGroupResp{}
 | 
					 | 
				
			||||||
		if err := s.webhookClient.SyncPost(ctx, cbReq.GetCallbackCommand(), cbReq, resp, before); err != nil {
 | 
					 | 
				
			||||||
			return err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if resp.MuteEndTime != nil {
 | 
					 | 
				
			||||||
			groupMember.MuteEndTime = time.UnixMilli(*resp.MuteEndTime)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		datautil.NotNilReplace(&groupMember.FaceURL, resp.FaceURL)
 | 
					 | 
				
			||||||
		datautil.NotNilReplace(&groupMember.Ex, resp.Ex)
 | 
					 | 
				
			||||||
		datautil.NotNilReplace(&groupMember.Nickname, resp.Nickname)
 | 
					 | 
				
			||||||
		datautil.NotNilReplace(&groupMember.RoleLevel, resp.RoleLevel)
 | 
					 | 
				
			||||||
		return nil
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (s *groupServer) webhookBeforeMemberJoinGroupBatch(ctx context.Context, before *config.BeforeConfig, groupMembers []*model.GroupMember, groupEx string) error {
 | 
					 | 
				
			||||||
	return webhook.WithCondition(ctx, before, func(ctx context.Context) error {
 | 
						return webhook.WithCondition(ctx, before, func(ctx context.Context) error {
 | 
				
			||||||
		groupMembersMap := datautil.SliceToMap(groupMembers, func(e *model.GroupMember) string {
 | 
							groupMembersMap := datautil.SliceToMap(groupMembers, func(e *model.GroupMember) string {
 | 
				
			||||||
			return e.UserID
 | 
								return e.UserID
 | 
				
			||||||
@ -137,26 +112,32 @@ func (s *groupServer) webhookBeforeMemberJoinGroupBatch(ctx context.Context, bef
 | 
				
			|||||||
			groupMembersCallback = append(groupMembersCallback, &callbackstruct.CallbackGroupMember{
 | 
								groupMembersCallback = append(groupMembersCallback, &callbackstruct.CallbackGroupMember{
 | 
				
			||||||
				UserID: member.UserID,
 | 
									UserID: member.UserID,
 | 
				
			||||||
				Ex:     member.Ex,
 | 
									Ex:     member.Ex,
 | 
				
			||||||
				GroupEx: groupEx,
 | 
					 | 
				
			||||||
			})
 | 
								})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		cbReq := &callbackstruct.CallbackBeforeMemberJoinGroupBatchReq{
 | 
							cbReq := &callbackstruct.CallbackBeforeMembersJoinGroupReq{
 | 
				
			||||||
			CallbackCommand: callbackstruct.CallbackBeforeMemberJoinGroupBatchCommand,
 | 
								CallbackCommand: callbackstruct.CallbackBeforeMemberJoinGroupBatchCommand,
 | 
				
			||||||
			MembersList:     groupMembersCallback,
 | 
								MembersList:     groupMembersCallback,
 | 
				
			||||||
 | 
								GroupEx:         groupEx,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		resp := &callbackstruct.CallbackBeforeMemberJoinGroupBatchResp{}
 | 
							resp := &callbackstruct.CallbackBeforeMembersJoinGroupResp{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err := s.webhookClient.SyncPost(ctx, cbReq.GetCallbackCommand(), cbReq, resp, before); err != nil {
 | 
							if err := s.webhookClient.SyncPost(ctx, cbReq.GetCallbackCommand(), cbReq, resp, before); err != nil {
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for _, memberCallbackResp := range resp.MemberCallbacks {
 | 
							for _, memberCallbackResp := range resp.MemberCallbacks {
 | 
				
			||||||
 | 
								if _, ok := groupMembersMap[(*memberCallbackResp.UserID)]; ok {
 | 
				
			||||||
 | 
									if memberCallbackResp.MuteEndTime != nil {
 | 
				
			||||||
 | 
										groupMembersMap[(*memberCallbackResp.UserID)].MuteEndTime = time.UnixMilli(*memberCallbackResp.MuteEndTime)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].FaceURL, memberCallbackResp.FaceURL)
 | 
									datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].FaceURL, memberCallbackResp.FaceURL)
 | 
				
			||||||
				datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].Ex, memberCallbackResp.Ex)
 | 
									datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].Ex, memberCallbackResp.Ex)
 | 
				
			||||||
				datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].Nickname, memberCallbackResp.Nickname)
 | 
									datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].Nickname, memberCallbackResp.Nickname)
 | 
				
			||||||
				datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].RoleLevel, memberCallbackResp.RoleLevel)
 | 
									datautil.NotNilReplace(&groupMembersMap[(*memberCallbackResp.UserID)].RoleLevel, memberCallbackResp.RoleLevel)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
@ -281,10 +262,13 @@ func (s *groupServer) webhookBeforeInviteUserToGroup(ctx context.Context, before
 | 
				
			|||||||
			return err
 | 
								return err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if len(resp.RefusedMembersAccount) > 0 {
 | 
					 | 
				
			||||||
		// Handle the scenario where certain members are refused
 | 
							// Handle the scenario where certain members are refused
 | 
				
			||||||
		// You might want to update the req.Members list or handle it as per your business logic
 | 
							// You might want to update the req.Members list or handle it as per your business logic
 | 
				
			||||||
		}
 | 
					
 | 
				
			||||||
 | 
							// if len(resp.RefusedMembersAccount) > 0 {
 | 
				
			||||||
 | 
							// implement members are refused
 | 
				
			||||||
 | 
							// }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -271,7 +271,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbgroup.CreateGroupR
 | 
				
			|||||||
		joinGroupFunc(userID, constant.GroupOrdinaryUsers)
 | 
							joinGroupFunc(userID, constant.GroupOrdinaryUsers)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := s.webhookBeforeMemberJoinGroupBatch(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, groupMembers, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
						if err := s.webhookBeforeMembersJoinGroup(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, groupMembers, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -443,7 +443,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
 | 
				
			|||||||
		groupMembers = append(groupMembers, member)
 | 
							groupMembers = append(groupMembers, member)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := s.webhookBeforeMemberJoinGroupBatch(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, groupMembers, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
						if err := s.webhookBeforeMembersJoinGroup(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, groupMembers, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -811,7 +811,8 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbgroup
 | 
				
			|||||||
			InviterUserID:  groupRequest.InviterUserID,
 | 
								InviterUserID:  groupRequest.InviterUserID,
 | 
				
			||||||
			OperatorUserID: mcontext.GetOpUserID(ctx),
 | 
								OperatorUserID: mcontext.GetOpUserID(ctx),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if err := s.webhookBeforeMemberJoinGroup(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, member, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
					
 | 
				
			||||||
 | 
							if err := s.webhookBeforeMembersJoinGroup(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, []*model.GroupMember{member}, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -880,7 +881,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbgroup.JoinGroupReq)
 | 
				
			|||||||
			MuteEndTime:    time.UnixMilli(0),
 | 
								MuteEndTime:    time.UnixMilli(0),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if err := s.webhookBeforeMemberJoinGroup(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, groupMember, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
							if err := s.webhookBeforeMembersJoinGroup(ctx, &s.config.WebhooksConfig.BeforeMemberJoinGroup, []*model.GroupMember{groupMember}, group.Ex); err != nil && err != servererrs.ErrCallbackContinue {
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -59,23 +59,15 @@ type CallbackAfterCreateGroupResp struct {
 | 
				
			|||||||
	CommonCallbackResp
 | 
						CommonCallbackResp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CallbackBeforeMemberJoinGroupReq struct {
 | 
					 | 
				
			||||||
	CallbackCommand `json:"callbackCommand"`
 | 
					 | 
				
			||||||
	GroupID         string `json:"groupID"`
 | 
					 | 
				
			||||||
	UserID          string `json:"userID"`
 | 
					 | 
				
			||||||
	Ex              string `json:"ex"`
 | 
					 | 
				
			||||||
	GroupEx         string `json:"groupEx"`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type CallbackGroupMember struct {
 | 
					type CallbackGroupMember struct {
 | 
				
			||||||
	UserID string `json:"userID"`
 | 
						UserID string `json:"userID"`
 | 
				
			||||||
	Ex     string `json:"ex"`
 | 
						Ex     string `json:"ex"`
 | 
				
			||||||
	GroupEx string `json:"groupEx"`
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CallbackBeforeMemberJoinGroupBatchReq struct {
 | 
					type CallbackBeforeMembersJoinGroupReq struct {
 | 
				
			||||||
	CallbackCommand `json:"callbackCommand"`
 | 
						CallbackCommand `json:"callbackCommand"`
 | 
				
			||||||
	MembersList     []*CallbackGroupMember
 | 
						MembersList     []*CallbackGroupMember
 | 
				
			||||||
 | 
						GroupEx         string `json:"groupEx"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MemberJoinGroupCallBack struct {
 | 
					type MemberJoinGroupCallBack struct {
 | 
				
			||||||
@ -86,20 +78,12 @@ type MemberJoinGroupCallBack struct {
 | 
				
			|||||||
	MuteEndTime *int64  `json:"muteEndTime"`
 | 
						MuteEndTime *int64  `json:"muteEndTime"`
 | 
				
			||||||
	Ex          *string `json:"ex"`
 | 
						Ex          *string `json:"ex"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
type CallbackBeforeMemberJoinGroupBatchResp struct {
 | 
					
 | 
				
			||||||
 | 
					type CallbackBeforeMembersJoinGroupResp struct {
 | 
				
			||||||
	CommonCallbackResp
 | 
						CommonCallbackResp
 | 
				
			||||||
	MemberCallbacks []*MemberJoinGroupCallBack
 | 
						MemberCallbacks []*MemberJoinGroupCallBack
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CallbackBeforeMemberJoinGroupResp struct {
 | 
					 | 
				
			||||||
	CommonCallbackResp
 | 
					 | 
				
			||||||
	Nickname    *string `json:"nickname"`
 | 
					 | 
				
			||||||
	FaceURL     *string `json:"faceURL"`
 | 
					 | 
				
			||||||
	RoleLevel   *int32  `json:"roleLevel"`
 | 
					 | 
				
			||||||
	MuteEndTime *int64  `json:"muteEndTime"`
 | 
					 | 
				
			||||||
	Ex          *string `json:"ex"`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type CallbackBeforeSetGroupMemberInfoReq struct {
 | 
					type CallbackBeforeSetGroupMemberInfoReq struct {
 | 
				
			||||||
	CallbackCommand `json:"callbackCommand"`
 | 
						CallbackCommand `json:"callbackCommand"`
 | 
				
			||||||
	GroupID         string  `json:"groupID"`
 | 
						GroupID         string  `json:"groupID"`
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user