feat: 新增群组成员数量统计功能并在接口中返回
实现了群组成员数量统计的接口,包含数据库层统计逻辑,在群组详情、设置等接口中返回实时成员数,同时修复了测试用例中参数空格问题。
This commit is contained in:
@@ -37,7 +37,7 @@ func (p localCryptoProvider) RegistrationSMSEnabled() (bool, error) {
|
||||
func (p localCryptoProvider) ThirdPartyConfig(string, ...string) (map[string]string, error) {
|
||||
return nil, types.ErrUnsupported
|
||||
}
|
||||
func (p localCryptoProvider) LatestAppRelease(string, string) (*types.AppRelease, error) {
|
||||
func (p localCryptoProvider) LatestAppRelease(string, string, string) (*types.AppRelease, error) {
|
||||
return nil, types.ErrUnsupported
|
||||
}
|
||||
func (p localCryptoProvider) ModerationProvider() (*types.ModerationProviderConfig, error) {
|
||||
|
||||
@@ -1892,6 +1892,7 @@ type GroupBusinessPersistenceInterface interface {
|
||||
UpsertMember(types.TenantID, *types.GroupMember) (*types.GroupMember, error)
|
||||
GetMember(types.TenantID, string, types.Uid) (*types.GroupMember, error)
|
||||
ListMembers(types.TenantID, string, types.GroupMemberListOptions) ([]types.GroupMember, string, error)
|
||||
MembersCount(types.TenantID, []string) (map[string]int64, error)
|
||||
UpdateMember(types.TenantID, string, types.Uid, types.GroupMemberPatch) (*types.GroupMember, error)
|
||||
CreateInvitation(types.TenantID, *types.GroupInvitation) (*types.GroupInvitation, error)
|
||||
AcceptInvitation(types.TenantID, string, types.Uid, any, time.Time) (*types.GroupInvitation, error)
|
||||
@@ -2064,6 +2065,27 @@ func (groupBusinessMapper) GetMember(tenantID types.TenantID, topic string, uid
|
||||
return member, err
|
||||
}
|
||||
|
||||
func (groupBusinessMapper) MembersCount(tenantID types.TenantID, topics []string) (map[string]int64, error) {
|
||||
cleaned := make([]string, 0, len(topics))
|
||||
seen := make(map[string]bool, len(topics))
|
||||
for _, topic := range topics {
|
||||
topic = strings.TrimSpace(topic)
|
||||
if topic == "" || seen[topic] {
|
||||
continue
|
||||
}
|
||||
seen[topic] = true
|
||||
cleaned = append(cleaned, topic)
|
||||
}
|
||||
if len(cleaned) == 0 {
|
||||
return map[string]int64{}, nil
|
||||
}
|
||||
tenantAdp, err := tenantBusinessAdapter(tenantID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return tenantAdp.TenantGroupMembersCount(tenantID, cleaned)
|
||||
}
|
||||
|
||||
func (groupBusinessMapper) ListMembers(tenantID types.TenantID, topic string, opts types.GroupMemberListOptions) ([]types.GroupMember, string, error) {
|
||||
if strings.TrimSpace(topic) == "" {
|
||||
return nil, "", types.ErrMalformed
|
||||
|
||||
Reference in New Issue
Block a user