feat(群组): 添加群组解散状态支持与过滤逻辑

新增群组解散状态常量,在群组列表和详情接口中增加解散群组的过滤和报错处理,避免返回已解散的群组数据
This commit is contained in:
kk123kk123
2026-09-14 20:06:41 +08:00
parent 275c9e5fcd
commit 6291fa2b60
2 changed files with 12 additions and 2 deletions
+10 -1
View File
@@ -55,6 +55,7 @@ const (
imReasonFileUnavailable = "FILE_UNAVAILABLE"
imReasonRateLimited = "RATE_LIMITED"
imReasonResourceNotFound = "RESOURCE_NOT_FOUND"
imReasonGroupDissolved = "GROUP_DISSOLVED"
imReasonValidationFailed = "VALIDATION_FAILED"
)
@@ -4774,7 +4775,11 @@ func serveIMGroupList(wrt http.ResponseWriter, req *http.Request) {
continue
}
item := groupListItemPayload(sub)
if settings, err := store.GroupBusiness.GetSettings(principal.TenantID, sub.Topic); err == nil {
if settings, err := store.GroupBusiness.GetSettings(principal.TenantID, sub.Topic); err == nil && settings != nil {
if settings.GroupStatus == types.GroupStatusDissolved {
// Defensive check: hide dissolved groups even if their subscription cleanup lagged.
continue
}
item = mergeGroupListSettingsPayload(item, settings)
}
if category != "" && groupCategory(groupMemberRole(sub.ModeGiven&sub.ModeWant)) != category {
@@ -5083,6 +5088,10 @@ func serveIMGroupDetail(wrt http.ResponseWriter, req *http.Request, topic string
}
payload := groupDetailPayload(group, selfSub)
if settings, err := store.GroupBusiness.GetSettings(principal.TenantID, topic); err == nil {
if settings != nil && settings.GroupStatus == types.GroupStatusDissolved {
writeIMError(wrt, req, http.StatusGone, 30004, imReasonGroupDissolved, "group dissolved", map[string]any{"topic": topic})
return
}
payload = mergeGroupSettingsPayload(payload, settings)
}
writeIMSuccess(wrt, req, payload)