53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package logic
|
|
|
|
import (
|
|
"context"
|
|
pb "gitlab.33.cn/chat/dtalk/service/group/api"
|
|
"gitlab.33.cn/chat/dtalk/service/group/model/biz"
|
|
"gitlab.33.cn/chat/dtalk/service/group/service"
|
|
)
|
|
|
|
type ForceAddMembersLogic struct {
|
|
ctx context.Context
|
|
svc *service.Service
|
|
}
|
|
|
|
func NewForceAddMembersLogic(ctx context.Context, svc *service.Service) *ForceAddMembersLogic {
|
|
return &ForceAddMembersLogic{
|
|
ctx: ctx,
|
|
svc: svc,
|
|
}
|
|
}
|
|
|
|
// ForceAddMembers 多个人加入一个群
|
|
// 无视操作者是否在群里, 是否有管理权限, 群人数是否已满
|
|
// 强行拉 member 进群
|
|
func (l *ForceAddMembersLogic) ForceAddMembers(req *pb.ForceAddMembersReq) (*pb.ForceAddMembersResp, error) {
|
|
group, err := l.svc.GetGroupInfoByGroupId(l.ctx, req.GroupId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
members := make([]*biz.GroupMember, 0, len(req.Members))
|
|
for _, member := range req.Members {
|
|
_, err := FilteredMemberId(member.Id)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
|
|
members = append(members, &biz.GroupMember{
|
|
GroupId: group.GroupId,
|
|
GroupMemberId: member.Id,
|
|
GroupMemberName: member.Name,
|
|
GroupMemberType: biz.GroupTypeNormal,
|
|
})
|
|
}
|
|
|
|
err = l.svc.AddMembers(l.ctx, group, members)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &pb.ForceAddMembersResp{}, nil
|
|
}
|