diff --git a/server/internal/logic/sys/im_admin_query_client.go b/server/internal/logic/sys/im_admin_query_client.go index 6913e4a..efeeb8f 100644 --- a/server/internal/logic/sys/im_admin_query_client.go +++ b/server/internal/logic/sys/im_admin_query_client.go @@ -120,37 +120,56 @@ func normalizeImAdminRow(row map[string]any, aliases map[string]string) { } func normalizeImAdminValue(target string, value any) any { - if target != "credentials" { - return value - } - items, ok := value.([]any) - if !ok { - return value - } - parts := make([]string, 0, len(items)) - for _, item := range items { - m, ok := item.(map[string]any) + switch target { + case "credentials": + items, ok := value.([]any) if !ok { - continue + return value } - method, _ := m["method"].(string) - val, _ := m["value"].(string) - if method == "" && val == "" { - continue - } - text := method - if val != "" { - if text != "" { - text += ":" + parts := make([]string, 0, len(items)) + for _, item := range items { + m, ok := item.(map[string]any) + if !ok { + continue } - text += val + method, _ := m["method"].(string) + val, _ := m["value"].(string) + if method == "" && val == "" { + continue + } + text := method + if val != "" { + if text != "" { + text += ":" + } + text += val + } + if done, ok := m["done"].(bool); ok && !done { + text += "(未验证)" + } + parts = append(parts, text) } - if done, ok := m["done"].(bool); ok && !done { - text += "(未验证)" + return strings.Join(parts, ", ") + case "profileJson", "trustedJson", "accessJson": + return normalizeImAdminJSONString(value) + default: + return value + } +} + +func normalizeImAdminJSONString(value any) string { + switch v := value.(type) { + case nil: + return "" + case string: + return v + default: + encoded, err := json.Marshal(v) + if err != nil { + return "" } - parts = append(parts, text) + return string(encoded) } - return strings.Join(parts, ", ") } func snakeToLowerCamel(s string) string {