|
|
@ -130,8 +130,10 @@ func (s *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *p
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var groupIDs []string
|
|
|
|
var groupIDs []string
|
|
|
|
groupVersionMap := make(map[string]*VersionInfo)
|
|
|
|
|
|
|
|
|
|
|
|
groupsVersionMap := make(map[string]*VersionInfo)
|
|
|
|
groupsMap := make(map[string]*model.Group)
|
|
|
|
groupsMap := make(map[string]*model.Group)
|
|
|
|
|
|
|
|
hasGroupUpdateMap := make(map[string]bool)
|
|
|
|
|
|
|
|
|
|
|
|
var targetKeys, versionIDs []string
|
|
|
|
var targetKeys, versionIDs []string
|
|
|
|
var versionNumbers []uint64
|
|
|
|
var versionNumbers []uint64
|
|
|
@ -139,7 +141,7 @@ func (s *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *p
|
|
|
|
// var requestBodyLen int
|
|
|
|
// var requestBodyLen int
|
|
|
|
|
|
|
|
|
|
|
|
for _, group := range req.ReqList {
|
|
|
|
for _, group := range req.ReqList {
|
|
|
|
groupVersionMap[group.GroupID] = &VersionInfo{
|
|
|
|
groupsVersionMap[group.GroupID] = &VersionInfo{
|
|
|
|
GroupID: group.GroupID,
|
|
|
|
GroupID: group.GroupID,
|
|
|
|
VersionID: group.VersionID,
|
|
|
|
VersionID: group.VersionID,
|
|
|
|
VersionNumber: group.Version,
|
|
|
|
VersionNumber: group.Version,
|
|
|
@ -157,19 +159,19 @@ func (s *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *p
|
|
|
|
if group.Status == constant.GroupStatusDismissed {
|
|
|
|
if group.Status == constant.GroupStatusDismissed {
|
|
|
|
err = servererrs.ErrDismissedAlready.Wrap()
|
|
|
|
err = servererrs.ErrDismissedAlready.Wrap()
|
|
|
|
log.ZError(ctx, "This group is Dismissed Already", err, "group is", group.GroupID)
|
|
|
|
log.ZError(ctx, "This group is Dismissed Already", err, "group is", group.GroupID)
|
|
|
|
delete(groupVersionMap, group.GroupID)
|
|
|
|
|
|
|
|
|
|
|
|
delete(groupsVersionMap, group.GroupID)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
groupsMap[group.GroupID] = group
|
|
|
|
groupsMap[group.GroupID] = group
|
|
|
|
// truegroupIDs = append(truegroupIDs, group.GroupID)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for key, val := range groupVersionMap {
|
|
|
|
|
|
|
|
targetKeys = append(targetKeys, key)
|
|
|
|
for groupID, vInfo := range groupsVersionMap {
|
|
|
|
versionIDs = append(versionIDs, val.VersionID)
|
|
|
|
targetKeys = append(targetKeys, groupID)
|
|
|
|
versionNumbers = append(versionNumbers, val.VersionNumber)
|
|
|
|
versionIDs = append(versionIDs, vInfo.VersionID)
|
|
|
|
|
|
|
|
versionNumbers = append(versionNumbers, vInfo.VersionNumber)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var hasGroupUpdate map[string]bool
|
|
|
|
|
|
|
|
opt := incrversion.BatchOption[[]*sdkws.GroupMemberFullInfo, pbgroup.BatchGetIncrementalGroupMemberResp]{
|
|
|
|
opt := incrversion.BatchOption[[]*sdkws.GroupMemberFullInfo, pbgroup.BatchGetIncrementalGroupMemberResp]{
|
|
|
|
Ctx: ctx,
|
|
|
|
Ctx: ctx,
|
|
|
|
TargetKeys: targetKeys,
|
|
|
|
TargetKeys: targetKeys,
|
|
|
@ -180,17 +182,18 @@ func (s *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *p
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for key, vlog := range vLogs {
|
|
|
|
|
|
|
|
|
|
|
|
for groupID, vlog := range vLogs {
|
|
|
|
vlog.Logs = slices.DeleteFunc(vlog.Logs, func(elem model.VersionLogElem) bool {
|
|
|
|
vlog.Logs = slices.DeleteFunc(vlog.Logs, func(elem model.VersionLogElem) bool {
|
|
|
|
if elem.EID == "" {
|
|
|
|
if elem.EID == "" {
|
|
|
|
vlog.LogLen--
|
|
|
|
vlog.LogLen--
|
|
|
|
hasGroupUpdate[key] = true
|
|
|
|
hasGroupUpdateMap[groupID] = true
|
|
|
|
return true
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
return false
|
|
|
|
})
|
|
|
|
})
|
|
|
|
if vlog.LogLen > 0 {
|
|
|
|
if vlog.LogLen > 0 {
|
|
|
|
hasGroupUpdate[key] = true
|
|
|
|
hasGroupUpdateMap[groupID] = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -198,30 +201,24 @@ func (s *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *p
|
|
|
|
},
|
|
|
|
},
|
|
|
|
CacheMaxVersions: s.db.BatchFindMaxGroupMemberVersionCache,
|
|
|
|
CacheMaxVersions: s.db.BatchFindMaxGroupMemberVersionCache,
|
|
|
|
Find: func(ctx context.Context, groupID string, ids []string) ([]*sdkws.GroupMemberFullInfo, error) {
|
|
|
|
Find: func(ctx context.Context, groupID string, ids []string) ([]*sdkws.GroupMemberFullInfo, error) {
|
|
|
|
// memberInfoMap := make(map[string][]*sdkws.GroupMemberFullInfo)
|
|
|
|
|
|
|
|
// for _, groupID := range groupIDs {
|
|
|
|
|
|
|
|
memberInfo, err := s.getGroupMembersInfo(ctx, groupID, ids)
|
|
|
|
memberInfo, err := s.getGroupMembersInfo(ctx, groupID, ids)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// memberInfoMap:=datautil.SliceToMap(memberInfo, func(e *sdkws.GroupMemberFullInfo) string {
|
|
|
|
|
|
|
|
// return e.GroupID
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
// // memberInfoMap[groupID] = memberInfo
|
|
|
|
|
|
|
|
// // }
|
|
|
|
|
|
|
|
return memberInfo, err
|
|
|
|
return memberInfo, err
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Resp: func(versions map[string]*model.VersionLog, deleteIdsMap map[string][]string, insertListMap, updateListMap map[string][]*sdkws.GroupMemberFullInfo, fullMap map[string]bool) *pbgroup.BatchGetIncrementalGroupMemberResp {
|
|
|
|
Resp: func(versions map[string]*model.VersionLog, deleteIdsMap map[string][]string, insertListMap, updateListMap map[string][]*sdkws.GroupMemberFullInfo, fullMap map[string]bool) *pbgroup.BatchGetIncrementalGroupMemberResp {
|
|
|
|
resList := make(map[string]*pbgroup.GetIncrementalGroupMemberResp)
|
|
|
|
resList := make(map[string]*pbgroup.GetIncrementalGroupMemberResp)
|
|
|
|
|
|
|
|
|
|
|
|
for key, version := range versions {
|
|
|
|
for groupID, versionLog := range versions {
|
|
|
|
resList[key] = &pbgroup.GetIncrementalGroupMemberResp{
|
|
|
|
resList[groupID] = &pbgroup.GetIncrementalGroupMemberResp{
|
|
|
|
VersionID: version.ID.Hex(),
|
|
|
|
VersionID: versionLog.ID.Hex(),
|
|
|
|
Version: uint64(version.Version),
|
|
|
|
Version: uint64(versionLog.Version),
|
|
|
|
Full: fullMap[key],
|
|
|
|
Full: fullMap[groupID],
|
|
|
|
Delete: deleteIdsMap[key],
|
|
|
|
Delete: deleteIdsMap[groupID],
|
|
|
|
Insert: insertListMap[key],
|
|
|
|
Insert: insertListMap[groupID],
|
|
|
|
Update: updateListMap[key],
|
|
|
|
Update: updateListMap[groupID],
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -235,17 +232,20 @@ func (s *groupServer) BatchGetIncrementalGroupMember(ctx context.Context, req *p
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for key, val := range resp.RespList {
|
|
|
|
|
|
|
|
if val.Full || hasGroupUpdate[key] {
|
|
|
|
for groupID, val := range resp.RespList {
|
|
|
|
count, err := s.db.FindGroupMemberNum(ctx, key)
|
|
|
|
if val.Full || hasGroupUpdateMap[groupID] {
|
|
|
|
|
|
|
|
count, err := s.db.FindGroupMemberNum(ctx, groupID)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
owner, err := s.db.TakeGroupOwner(ctx, key)
|
|
|
|
|
|
|
|
|
|
|
|
owner, err := s.db.TakeGroupOwner(ctx, groupID)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
resp.RespList[key].Group = s.groupDB2PB(groupsMap[key], owner.UserID, count)
|
|
|
|
|
|
|
|
|
|
|
|
resp.RespList[groupID].Group = s.groupDB2PB(groupsMap[groupID], owner.UserID, count)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|