52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package logic
|
|
|
|
import (
|
|
"gitlab.33.cn/chat/dtalk/gateway/api/v1/internal/types"
|
|
pb "gitlab.33.cn/chat/dtalk/service/group/api"
|
|
)
|
|
|
|
func (l *GroupLogic) CreateGroup(req *types.CreateGroupReq) (*types.CreateGroupResp, error) {
|
|
name := req.Name
|
|
addr := l.getOpe()
|
|
owner := &pb.GroupMemberInfo{
|
|
Id: addr,
|
|
Name: "",
|
|
}
|
|
members := make([]*pb.GroupMemberInfo, 0, len(req.MemberIds))
|
|
for _, memberId := range req.MemberIds {
|
|
members = append(members, &pb.GroupMemberInfo{
|
|
Id: memberId,
|
|
Name: "",
|
|
})
|
|
}
|
|
|
|
resp1, err := l.svcCtx.GroupClient.CreateGroup(l.ctx, &pb.CreateGroupReq{
|
|
Name: name,
|
|
GroupType: pb.GroupType_GROUP_TYPE_NORMAL,
|
|
Owner: owner,
|
|
Members: members,
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
groupId := resp1.GroupId
|
|
|
|
resp2, err := l.svcCtx.GroupClient.GetPriGroupInfo(l.ctx, &pb.GetPriGroupInfoReq{
|
|
GroupId: groupId,
|
|
PersonId: addr,
|
|
DisplayNum: int32(1 + len(members)),
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
Group := NewTypesGroupInfo(resp2.Group)
|
|
Members := NewTypesGroupMemberInfos(resp2.Group.Members)
|
|
|
|
return &types.CreateGroupResp{
|
|
GroupInfo: Group,
|
|
Members: Members,
|
|
}, nil
|
|
}
|