|
|
@ -724,7 +724,7 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if groupRequest.HandleResult != 0 {
|
|
|
|
if groupRequest.HandleResult != 0 {
|
|
|
|
return nil, errs.ErrArgs.Wrap("group request already processed")
|
|
|
|
return nil, errs.ErrGroupRequestHandled.Wrap("group request already processed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var inGroup bool
|
|
|
|
var inGroup bool
|
|
|
|
_, err = s.GroupDatabase.TakeGroupMember(ctx, req.GroupID, req.FromUserID)
|
|
|
|
_, err = s.GroupDatabase.TakeGroupMember(ctx, req.GroupID, req.FromUserID)
|
|
|
@ -733,17 +733,16 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
|
|
|
|
} else if !s.IsNotFound(err) {
|
|
|
|
} else if !s.IsNotFound(err) {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
user, err := s.User.GetPublicUserInfo(ctx, req.FromUserID)
|
|
|
|
if _, err := s.User.GetPublicUserInfo(ctx, req.FromUserID); err != nil {
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var member *relationTb.GroupMemberModel
|
|
|
|
var member *relationTb.GroupMemberModel
|
|
|
|
if (!inGroup) && req.HandleResult == constant.GroupResponseAgree {
|
|
|
|
if (!inGroup) && req.HandleResult == constant.GroupResponseAgree {
|
|
|
|
member = &relationTb.GroupMemberModel{
|
|
|
|
member = &relationTb.GroupMemberModel{
|
|
|
|
GroupID: req.GroupID,
|
|
|
|
GroupID: req.GroupID,
|
|
|
|
UserID: user.UserID,
|
|
|
|
UserID: req.FromUserID,
|
|
|
|
Nickname: user.Nickname,
|
|
|
|
Nickname: "",
|
|
|
|
FaceURL: user.FaceURL,
|
|
|
|
FaceURL: "",
|
|
|
|
RoleLevel: constant.GroupOrdinaryUsers,
|
|
|
|
RoleLevel: constant.GroupOrdinaryUsers,
|
|
|
|
JoinTime: time.Now(),
|
|
|
|
JoinTime: time.Now(),
|
|
|
|
JoinSource: groupRequest.JoinSource,
|
|
|
|
JoinSource: groupRequest.JoinSource,
|
|
|
@ -762,29 +761,12 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbGroup
|
|
|
|
switch req.HandleResult {
|
|
|
|
switch req.HandleResult {
|
|
|
|
case constant.GroupResponseAgree:
|
|
|
|
case constant.GroupResponseAgree:
|
|
|
|
s.Notification.GroupApplicationAcceptedNotification(ctx, req)
|
|
|
|
s.Notification.GroupApplicationAcceptedNotification(ctx, req)
|
|
|
|
if !inGroup {
|
|
|
|
|
|
|
|
groupMember := &relationTb.GroupMemberModel{}
|
|
|
|
|
|
|
|
groupMember.GroupID = group.GroupID
|
|
|
|
|
|
|
|
groupMember.RoleLevel = constant.GroupOrdinaryUsers
|
|
|
|
|
|
|
|
groupMember.OperatorUserID = mcontext.GetOpUserID(ctx)
|
|
|
|
|
|
|
|
groupMember.JoinSource = groupRequest.JoinSource
|
|
|
|
|
|
|
|
groupMember.InviterUserID = groupRequest.InviterUserID
|
|
|
|
|
|
|
|
groupMember.JoinTime = time.Now()
|
|
|
|
|
|
|
|
groupMember.MuteEndTime = time.Unix(0, 0)
|
|
|
|
|
|
|
|
if err := CallbackBeforeMemberJoinGroup(ctx, groupMember, group.Ex); err != nil && err != errs.ErrCallbackContinue {
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := s.GroupDatabase.CreateGroup(ctx, nil, []*relationTb.GroupMemberModel{groupMember}); err != nil {
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := s.conversationRpcClient.GroupChatFirstCreateConversation(ctx, req.GroupID, []string{req.FromUserID}); err != nil {
|
|
|
|
|
|
|
|
return nil, err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
s.Notification.MemberEnterNotification(ctx, req)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
case constant.GroupResponseRefuse:
|
|
|
|
case constant.GroupResponseRefuse:
|
|
|
|
s.Notification.GroupApplicationRejectedNotification(ctx, req)
|
|
|
|
s.Notification.GroupApplicationRejectedNotification(ctx, req)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if member != nil {
|
|
|
|
|
|
|
|
s.Notification.MemberEnterNotification(ctx, req)
|
|
|
|
|
|
|
|
}
|
|
|
|
return &pbGroup.GroupApplicationResponseResp{}, nil
|
|
|
|
return &pbGroup.GroupApplicationResponseResp{}, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|