|
|
|
@@ -18,8 +18,11 @@ import (
|
|
|
|
|
"context"
|
|
|
|
|
"fmt"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/cache"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/common"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/database/mgo"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/model"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/webhook"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/localcache"
|
|
|
|
|
"math/big"
|
|
|
|
|
"math/rand"
|
|
|
|
|
"strconv"
|
|
|
|
@@ -29,10 +32,8 @@ import (
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/callbackstruct"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/convert"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/controller"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/mgo"
|
|
|
|
|
relationtb "github.com/openimsdk/open-im-server/v3/pkg/common/db/table/relation"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/servererrs"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/storage/controller"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/msgprocessor"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient"
|
|
|
|
|
"github.com/openimsdk/open-im-server/v3/pkg/rpcclient/grouphash"
|
|
|
|
@@ -110,7 +111,7 @@ func Start(ctx context.Context, config *Config, client discovery.SvcDiscoveryReg
|
|
|
|
|
}
|
|
|
|
|
return datautil.Slice(users, func(e *sdkws.UserInfo) notification.CommonUser { return e }), nil
|
|
|
|
|
})
|
|
|
|
|
cache.InitLocalCache(&config.LocalCacheConfig)
|
|
|
|
|
localcache.InitLocalCache(&config.LocalCacheConfig)
|
|
|
|
|
gs.conversationRpcClient = conversationRpcClient
|
|
|
|
|
gs.msgRpcClient = msgRpcClient
|
|
|
|
|
gs.config = config
|
|
|
|
@@ -234,14 +235,14 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbgroup.CreateGroupR
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var groupMembers []*relationtb.GroupMemberModel
|
|
|
|
|
var groupMembers []*model.GroupMember
|
|
|
|
|
group := convert.Pb2DBGroupInfo(req.GroupInfo)
|
|
|
|
|
if err := s.GenGroupID(ctx, &group.GroupID); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
joinGroup := func(userID string, roleLevel int32) error {
|
|
|
|
|
groupMember := &relationtb.GroupMemberModel{
|
|
|
|
|
groupMember := &model.GroupMember{
|
|
|
|
|
GroupID: group.GroupID,
|
|
|
|
|
UserID: userID,
|
|
|
|
|
RoleLevel: roleLevel,
|
|
|
|
@@ -271,7 +272,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbgroup.CreateGroupR
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if err := s.db.CreateGroup(ctx, []*relationtb.GroupModel{group}, groupMembers); err != nil {
|
|
|
|
|
if err := s.db.CreateGroup(ctx, []*model.Group{group}, groupMembers); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
resp := &pbgroup.CreateGroupResp{GroupInfo: &sdkws.GroupInfo{}}
|
|
|
|
@@ -339,7 +340,7 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbgroup.GetJo
|
|
|
|
|
if len(members) == 0 {
|
|
|
|
|
return &resp, nil
|
|
|
|
|
}
|
|
|
|
|
groupIDs := datautil.Slice(members, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
groupIDs := datautil.Slice(members, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
groups, err := s.db.FindGroup(ctx, groupIDs)
|
|
|
|
@@ -357,12 +358,12 @@ func (s *groupServer) GetJoinedGroupList(ctx context.Context, req *pbgroup.GetJo
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, members...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
resp.Groups = datautil.Slice(datautil.Order(groupIDs, groups, func(group *relationtb.GroupModel) string {
|
|
|
|
|
resp.Groups = datautil.Slice(datautil.Order(groupIDs, groups, func(group *model.Group) string {
|
|
|
|
|
return group.GroupID
|
|
|
|
|
}), func(group *relationtb.GroupModel) *sdkws.GroupInfo {
|
|
|
|
|
}), func(group *model.Group) *sdkws.GroupInfo {
|
|
|
|
|
var userID string
|
|
|
|
|
if user := ownerMap[group.GroupID]; user != nil {
|
|
|
|
|
userID = user.UserID
|
|
|
|
@@ -397,7 +398,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
|
|
|
|
|
return nil, errs.ErrRecordNotFound.WrapMsg("user not found")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var groupMember *relationtb.GroupMemberModel
|
|
|
|
|
var groupMember *model.GroupMember
|
|
|
|
|
var opUserID string
|
|
|
|
|
if !authverify.IsAppManagerUid(ctx, s.config.Share.IMAdminUserID) {
|
|
|
|
|
opUserID = mcontext.GetOpUserID(ctx)
|
|
|
|
@@ -418,9 +419,9 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
|
|
|
|
|
if group.NeedVerification == constant.AllNeedVerification {
|
|
|
|
|
if !authverify.IsAppManagerUid(ctx, s.config.Share.IMAdminUserID) {
|
|
|
|
|
if !(groupMember.RoleLevel == constant.GroupOwner || groupMember.RoleLevel == constant.GroupAdmin) {
|
|
|
|
|
var requests []*relationtb.GroupRequestModel
|
|
|
|
|
var requests []*model.GroupRequest
|
|
|
|
|
for _, userID := range req.InvitedUserIDs {
|
|
|
|
|
requests = append(requests, &relationtb.GroupRequestModel{
|
|
|
|
|
requests = append(requests, &model.GroupRequest{
|
|
|
|
|
UserID: userID,
|
|
|
|
|
GroupID: req.GroupID,
|
|
|
|
|
JoinSource: constant.JoinByInvitation,
|
|
|
|
@@ -444,9 +445,9 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbgroup.Invite
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var groupMembers []*relationtb.GroupMemberModel
|
|
|
|
|
var groupMembers []*model.GroupMember
|
|
|
|
|
for _, userID := range req.InvitedUserIDs {
|
|
|
|
|
member := &relationtb.GroupMemberModel{
|
|
|
|
|
member := &model.GroupMember{
|
|
|
|
|
GroupID: req.GroupID,
|
|
|
|
|
UserID: userID,
|
|
|
|
|
RoleLevel: constant.GroupOrdinaryUsers,
|
|
|
|
@@ -482,7 +483,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbgroup.GetGro
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
var resp pbgroup.GetGroupAllMemberResp
|
|
|
|
|
resp.Members = datautil.Slice(members, func(e *relationtb.GroupMemberModel) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
resp.Members = datautil.Slice(members, func(e *model.GroupMember) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
return convert.Db2PbGroupMember(e)
|
|
|
|
|
})
|
|
|
|
|
return &resp, nil
|
|
|
|
@@ -491,7 +492,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbgroup.GetGro
|
|
|
|
|
func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbgroup.GetGroupMemberListReq) (*pbgroup.GetGroupMemberListResp, error) {
|
|
|
|
|
var (
|
|
|
|
|
total int64
|
|
|
|
|
members []*relationtb.GroupMemberModel
|
|
|
|
|
members []*model.GroupMember
|
|
|
|
|
err error
|
|
|
|
|
)
|
|
|
|
|
if req.Keyword == "" {
|
|
|
|
@@ -506,7 +507,7 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbgroup.GetGr
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if req.Keyword != "" {
|
|
|
|
|
groupMembers := make([]*relationtb.GroupMemberModel, 0)
|
|
|
|
|
groupMembers := make([]*model.GroupMember, 0)
|
|
|
|
|
for _, member := range members {
|
|
|
|
|
if member.UserID == req.Keyword {
|
|
|
|
|
groupMembers = append(groupMembers, member)
|
|
|
|
@@ -554,7 +555,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbgroup.KickGrou
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, members...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
memberMap := make(map[string]*relationtb.GroupMemberModel)
|
|
|
|
|
memberMap := make(map[string]*model.GroupMember)
|
|
|
|
|
for i, member := range members {
|
|
|
|
|
memberMap[member.UserID] = members[i]
|
|
|
|
|
}
|
|
|
|
@@ -649,7 +650,7 @@ func (s *groupServer) GetGroupMembersInfo(ctx context.Context, req *pbgroup.GetG
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return &pbgroup.GetGroupMembersInfoResp{
|
|
|
|
|
Members: datautil.Slice(members, func(e *relationtb.GroupMemberModel) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
Members: datautil.Slice(members, func(e *model.GroupMember) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
return convert.Db2PbGroupMember(e)
|
|
|
|
|
}),
|
|
|
|
|
}, nil
|
|
|
|
@@ -687,7 +688,7 @@ func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbgroup.
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
groupMap := datautil.SliceToMap(groups, func(e *relationtb.GroupModel) string {
|
|
|
|
|
groupMap := datautil.SliceToMap(groups, func(e *model.Group) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
if ids := datautil.Single(datautil.Keys(groupMap), groupIDs); len(ids) > 0 {
|
|
|
|
@@ -704,10 +705,10 @@ func (s *groupServer) GetGroupApplicationList(ctx context.Context, req *pbgroup.
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, owners...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
resp.GroupRequests = datautil.Slice(groupRequests, func(e *relationtb.GroupRequestModel) *sdkws.GroupRequest {
|
|
|
|
|
resp.GroupRequests = datautil.Slice(groupRequests, func(e *model.GroupRequest) *sdkws.GroupRequest {
|
|
|
|
|
var ownerUserID string
|
|
|
|
|
if owner, ok := ownerMap[e.GroupID]; ok {
|
|
|
|
|
ownerUserID = owner.UserID
|
|
|
|
@@ -736,11 +737,11 @@ func (s *groupServer) GetGroupsInfo(ctx context.Context, req *pbgroup.GetGroupsI
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, owners...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
return &pbgroup.GetGroupsInfoResp{
|
|
|
|
|
GroupInfos: datautil.Slice(groups, func(e *relationtb.GroupModel) *sdkws.GroupInfo {
|
|
|
|
|
GroupInfos: datautil.Slice(groups, func(e *model.Group) *sdkws.GroupInfo {
|
|
|
|
|
var ownerUserID string
|
|
|
|
|
if owner, ok := ownerMap[e.GroupID]; ok {
|
|
|
|
|
ownerUserID = owner.UserID
|
|
|
|
@@ -783,9 +784,9 @@ func (s *groupServer) GroupApplicationResponse(ctx context.Context, req *pbgroup
|
|
|
|
|
if _, err := s.user.GetPublicUserInfo(ctx, req.FromUserID); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
var member *relationtb.GroupMemberModel
|
|
|
|
|
var member *model.GroupMember
|
|
|
|
|
if (!inGroup) && req.HandleResult == constant.GroupResponseAgree {
|
|
|
|
|
member = &relationtb.GroupMemberModel{
|
|
|
|
|
member = &model.GroupMember{
|
|
|
|
|
GroupID: req.GroupID,
|
|
|
|
|
UserID: req.FromUserID,
|
|
|
|
|
Nickname: "",
|
|
|
|
@@ -857,7 +858,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbgroup.JoinGroupReq)
|
|
|
|
|
}
|
|
|
|
|
log.ZDebug(ctx, "JoinGroup.groupInfo", "group", group, "eq", group.NeedVerification == constant.Directly)
|
|
|
|
|
if group.NeedVerification == constant.Directly {
|
|
|
|
|
groupMember := &relationtb.GroupMemberModel{
|
|
|
|
|
groupMember := &model.GroupMember{
|
|
|
|
|
GroupID: group.GroupID,
|
|
|
|
|
UserID: user.UserID,
|
|
|
|
|
RoleLevel: constant.GroupOrdinaryUsers,
|
|
|
|
@@ -871,7 +872,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbgroup.JoinGroupReq)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err := s.db.CreateGroup(ctx, nil, []*relationtb.GroupMemberModel{groupMember}); err != nil {
|
|
|
|
|
if err := s.db.CreateGroup(ctx, nil, []*model.GroupMember{groupMember}); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -883,7 +884,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbgroup.JoinGroupReq)
|
|
|
|
|
|
|
|
|
|
return &pbgroup.JoinGroupResp{}, nil
|
|
|
|
|
}
|
|
|
|
|
groupRequest := relationtb.GroupRequestModel{
|
|
|
|
|
groupRequest := model.GroupRequest{
|
|
|
|
|
UserID: req.InviterUserID,
|
|
|
|
|
ReqMsg: req.ReqMessage,
|
|
|
|
|
GroupID: req.GroupID,
|
|
|
|
@@ -892,7 +893,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbgroup.JoinGroupReq)
|
|
|
|
|
HandledTime: time.Unix(0, 0),
|
|
|
|
|
Ex: req.Ex,
|
|
|
|
|
}
|
|
|
|
|
if err = s.db.CreateGroupRequest(ctx, []*relationtb.GroupRequestModel{&groupRequest}); err != nil {
|
|
|
|
|
if err = s.db.CreateGroupRequest(ctx, []*model.GroupRequest{&groupRequest}); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
s.notification.JoinGroupApplicationNotification(ctx, req)
|
|
|
|
@@ -940,7 +941,7 @@ func (s *groupServer) deleteMemberAndSetConversationSeq(ctx context.Context, gro
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbgroup.SetGroupInfoReq) (*pbgroup.SetGroupInfoResp, error) {
|
|
|
|
|
var opMember *relationtb.GroupMemberModel
|
|
|
|
|
var opMember *model.GroupMember
|
|
|
|
|
if !authverify.IsAppManagerUid(ctx, s.config.Share.IMAdminUserID) {
|
|
|
|
|
var err error
|
|
|
|
|
opMember, err = s.db.TakeGroupMember(ctx, req.GroupInfoForSet.GroupID, mcontext.GetOpUserID(ctx))
|
|
|
|
@@ -1049,7 +1050,7 @@ func (s *groupServer) TransferGroupOwner(ctx context.Context, req *pbgroup.Trans
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, members...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
memberMap := datautil.SliceToMap(members, func(e *relationtb.GroupMemberModel) string { return e.UserID })
|
|
|
|
|
memberMap := datautil.SliceToMap(members, func(e *model.GroupMember) string { return e.UserID })
|
|
|
|
|
if ids := datautil.Single([]string{req.OldOwnerUserID, req.NewOwnerUserID}, datautil.Keys(memberMap)); len(ids) > 0 {
|
|
|
|
|
return nil, errs.ErrArgs.WrapMsg("user not in group " + strings.Join(ids, ","))
|
|
|
|
|
}
|
|
|
|
@@ -1078,7 +1079,7 @@ func (s *groupServer) TransferGroupOwner(ctx context.Context, req *pbgroup.Trans
|
|
|
|
|
|
|
|
|
|
func (s *groupServer) GetGroups(ctx context.Context, req *pbgroup.GetGroupsReq) (*pbgroup.GetGroupsResp, error) {
|
|
|
|
|
var (
|
|
|
|
|
group []*relationtb.GroupModel
|
|
|
|
|
group []*model.Group
|
|
|
|
|
err error
|
|
|
|
|
)
|
|
|
|
|
var resp pbgroup.GetGroupsResp
|
|
|
|
@@ -1095,7 +1096,7 @@ func (s *groupServer) GetGroups(ctx context.Context, req *pbgroup.GetGroupsReq)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
groupIDs := datautil.Slice(group, func(e *relationtb.GroupModel) string {
|
|
|
|
|
groupIDs := datautil.Slice(group, func(e *model.Group) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
@@ -1104,14 +1105,14 @@ func (s *groupServer) GetGroups(ctx context.Context, req *pbgroup.GetGroupsReq)
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ownerMemberMap := datautil.SliceToMap(ownerMembers, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
ownerMemberMap := datautil.SliceToMap(ownerMembers, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
groupMemberNumMap, err := s.db.MapGroupMemberNum(ctx, groupIDs)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
resp.Groups = datautil.Slice(group, func(group *relationtb.GroupModel) *pbgroup.CMSGroup {
|
|
|
|
|
resp.Groups = datautil.Slice(group, func(group *model.Group) *pbgroup.CMSGroup {
|
|
|
|
|
var (
|
|
|
|
|
userID string
|
|
|
|
|
username string
|
|
|
|
@@ -1135,7 +1136,7 @@ func (s *groupServer) GetGroupMembersCMS(ctx context.Context, req *pbgroup.GetGr
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, members...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
resp.Members = datautil.Slice(members, func(e *relationtb.GroupMemberModel) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
resp.Members = datautil.Slice(members, func(e *model.GroupMember) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
return convert.Db2PbGroupMember(e)
|
|
|
|
|
})
|
|
|
|
|
return &resp, nil
|
|
|
|
@@ -1153,14 +1154,14 @@ func (s *groupServer) GetUserReqApplicationList(ctx context.Context, req *pbgrou
|
|
|
|
|
if len(requests) == 0 {
|
|
|
|
|
return &pbgroup.GetUserReqApplicationListResp{Total: uint32(total)}, nil
|
|
|
|
|
}
|
|
|
|
|
groupIDs := datautil.Distinct(datautil.Slice(requests, func(e *relationtb.GroupRequestModel) string {
|
|
|
|
|
groupIDs := datautil.Distinct(datautil.Slice(requests, func(e *model.GroupRequest) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
}))
|
|
|
|
|
groups, err := s.db.FindGroup(ctx, groupIDs)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
groupMap := datautil.SliceToMap(groups, func(e *relationtb.GroupModel) string {
|
|
|
|
|
groupMap := datautil.SliceToMap(groups, func(e *model.Group) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
owners, err := s.db.FindGroupsOwner(ctx, groupIDs)
|
|
|
|
@@ -1170,7 +1171,7 @@ func (s *groupServer) GetUserReqApplicationList(ctx context.Context, req *pbgrou
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, owners...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
groupMemberNum, err := s.db.MapGroupMemberNum(ctx, groupIDs)
|
|
|
|
@@ -1179,7 +1180,7 @@ func (s *groupServer) GetUserReqApplicationList(ctx context.Context, req *pbgrou
|
|
|
|
|
}
|
|
|
|
|
return &pbgroup.GetUserReqApplicationListResp{
|
|
|
|
|
Total: uint32(total),
|
|
|
|
|
GroupRequests: datautil.Slice(requests, func(e *relationtb.GroupRequestModel) *sdkws.GroupRequest {
|
|
|
|
|
GroupRequests: datautil.Slice(requests, func(e *model.GroupRequest) *sdkws.GroupRequest {
|
|
|
|
|
var ownerUserID string
|
|
|
|
|
if owner, ok := ownerMap[e.GroupID]; ok {
|
|
|
|
|
ownerUserID = owner.UserID
|
|
|
|
@@ -1430,8 +1431,8 @@ func (s *groupServer) SetGroupMemberInfo(ctx context.Context, req *pbgroup.SetGr
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if err := s.db.UpdateGroupMembers(ctx, datautil.Slice(req.Members, func(e *pbgroup.SetGroupMemberInfo) *relationtb.BatchUpdateGroupMember {
|
|
|
|
|
return &relationtb.BatchUpdateGroupMember{
|
|
|
|
|
if err := s.db.UpdateGroupMembers(ctx, datautil.Slice(req.Members, func(e *pbgroup.SetGroupMemberInfo) *common.BatchUpdateGroupMember {
|
|
|
|
|
return &common.BatchUpdateGroupMember{
|
|
|
|
|
GroupID: e.GroupID,
|
|
|
|
|
UserID: e.UserID,
|
|
|
|
|
Map: UpdateGroupMemberMap(e),
|
|
|
|
@@ -1470,7 +1471,7 @@ func (s *groupServer) GetGroupAbstractInfo(ctx context.Context, req *pbgroup.Get
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
if ids := datautil.Single(req.GroupIDs, datautil.Slice(groups, func(group *relationtb.GroupModel) string {
|
|
|
|
|
if ids := datautil.Single(req.GroupIDs, datautil.Slice(groups, func(group *model.Group) string {
|
|
|
|
|
return group.GroupID
|
|
|
|
|
})); len(ids) > 0 {
|
|
|
|
|
return nil, servererrs.ErrGroupIDNotFound.WrapMsg("not found group " + strings.Join(ids, ","))
|
|
|
|
@@ -1483,7 +1484,7 @@ func (s *groupServer) GetGroupAbstractInfo(ctx context.Context, req *pbgroup.Get
|
|
|
|
|
return nil, servererrs.ErrGroupIDNotFound.WrapMsg(fmt.Sprintf("group %s not found member", strings.Join(ids, ",")))
|
|
|
|
|
}
|
|
|
|
|
return &pbgroup.GetGroupAbstractInfoResp{
|
|
|
|
|
GroupAbstractInfos: datautil.Slice(groups, func(group *relationtb.GroupModel) *pbgroup.GroupAbstractInfo {
|
|
|
|
|
GroupAbstractInfos: datautil.Slice(groups, func(group *model.Group) *pbgroup.GroupAbstractInfo {
|
|
|
|
|
users := groupUserMap[group.GroupID]
|
|
|
|
|
return convert.Db2PbGroupAbstractInfo(group.GroupID, users.MemberNum, users.Hash)
|
|
|
|
|
}),
|
|
|
|
@@ -1502,7 +1503,7 @@ func (s *groupServer) GetUserInGroupMembers(ctx context.Context, req *pbgroup.Ge
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return &pbgroup.GetUserInGroupMembersResp{
|
|
|
|
|
Members: datautil.Slice(members, func(e *relationtb.GroupMemberModel) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
Members: datautil.Slice(members, func(e *model.GroupMember) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
return convert.Db2PbGroupMember(e)
|
|
|
|
|
}),
|
|
|
|
|
}, nil
|
|
|
|
@@ -1530,7 +1531,7 @@ func (s *groupServer) GetGroupMemberRoleLevel(ctx context.Context, req *pbgroup.
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
return &pbgroup.GetGroupMemberRoleLevelResp{
|
|
|
|
|
Members: datautil.Slice(members, func(e *relationtb.GroupMemberModel) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
Members: datautil.Slice(members, func(e *model.GroupMember) *sdkws.GroupMemberFullInfo {
|
|
|
|
|
return convert.Db2PbGroupMember(e)
|
|
|
|
|
}),
|
|
|
|
|
}, nil
|
|
|
|
@@ -1544,14 +1545,14 @@ func (s *groupServer) GetGroupUsersReqApplicationList(ctx context.Context, req *
|
|
|
|
|
if len(requests) == 0 {
|
|
|
|
|
return &pbgroup.GetGroupUsersReqApplicationListResp{}, nil
|
|
|
|
|
}
|
|
|
|
|
groupIDs := datautil.Distinct(datautil.Slice(requests, func(e *relationtb.GroupRequestModel) string {
|
|
|
|
|
groupIDs := datautil.Distinct(datautil.Slice(requests, func(e *model.GroupRequest) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
}))
|
|
|
|
|
groups, err := s.db.FindGroup(ctx, groupIDs)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
groupMap := datautil.SliceToMap(groups, func(e *relationtb.GroupModel) string {
|
|
|
|
|
groupMap := datautil.SliceToMap(groups, func(e *model.Group) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
if ids := datautil.Single(groupIDs, datautil.Keys(groupMap)); len(ids) > 0 {
|
|
|
|
@@ -1564,7 +1565,7 @@ func (s *groupServer) GetGroupUsersReqApplicationList(ctx context.Context, req *
|
|
|
|
|
if err := s.PopulateGroupMember(ctx, owners...); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *relationtb.GroupMemberModel) string {
|
|
|
|
|
ownerMap := datautil.SliceToMap(owners, func(e *model.GroupMember) string {
|
|
|
|
|
return e.GroupID
|
|
|
|
|
})
|
|
|
|
|
groupMemberNum, err := s.db.MapGroupMemberNum(ctx, groupIDs)
|
|
|
|
@@ -1573,7 +1574,7 @@ func (s *groupServer) GetGroupUsersReqApplicationList(ctx context.Context, req *
|
|
|
|
|
}
|
|
|
|
|
return &pbgroup.GetGroupUsersReqApplicationListResp{
|
|
|
|
|
Total: int64(len(requests)),
|
|
|
|
|
GroupRequests: datautil.Slice(requests, func(e *relationtb.GroupRequestModel) *sdkws.GroupRequest {
|
|
|
|
|
GroupRequests: datautil.Slice(requests, func(e *model.GroupRequest) *sdkws.GroupRequest {
|
|
|
|
|
var ownerUserID string
|
|
|
|
|
if owner, ok := ownerMap[e.GroupID]; ok {
|
|
|
|
|
ownerUserID = owner.UserID
|
|
|
|
|