From a6920641ad62f5aed84d78937986d83539b15154 Mon Sep 17 00:00:00 2001 From: XuqmGroup Date: Tue, 28 Apr 2026 10:27:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(sdk):=20=E6=B7=BB=E5=8A=A0=E5=8D=B3?= =?UTF-8?q?=E6=97=B6=E9=80=9A=E8=AE=AF=E5=92=8C=E6=8E=A8=E9=80=81=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ApiClient 类用于处理 API 请求和响应 - 实现 ImClient 类支持 WebSocket 连接和消息收发 - 添加 ImSDK 类提供完整的即时通讯功能接口 - 定义 ImTypes.swift 包含聊天类型、消息类型等相关数据结构 - 实现 PushSDK 类支持推送通知令牌注册 - 添加基础的 UpdateSDK 框架结构 - 集成登录认证和聊天室订阅功能 - 实现群组管理、好友关系和会话功能 - 支持多种消息类型包括文本、图片、视频、音频等 - 提供历史消息查询和黑名单管理功能 --- tenant-platform/src/api/im.ts | 76 +++- .../src/views/im/ImManagementView.vue | 415 ++++++++++++++---- 2 files changed, 410 insertions(+), 81 deletions(-) diff --git a/tenant-platform/src/api/im.ts b/tenant-platform/src/api/im.ts index b960648..267ac3d 100644 --- a/tenant-platform/src/api/im.ts +++ b/tenant-platform/src/api/im.ts @@ -19,7 +19,7 @@ export interface ImUser { avatar?: string status: 'ACTIVE' | 'BANNED' gender: 'UNKNOWN' | 'MALE' | 'FEMALE' - createdAt: string + createdAt: number } export interface ImGroup { @@ -27,9 +27,33 @@ export interface ImGroup { appId: string name: string creatorId: string - memberIds: string[] - adminIds: string[] - createdAt: string + groupType?: string | null + memberIds: string + adminIds: string + announcement?: string | null + createdAt: number +} + +export interface ImMessage { + id: string + appId: string + fromUserId: string + toId: string + chatType: 'SINGLE' | 'GROUP' + msgType: string + content: string + status: string + mentionedUserIds?: string | null + groupReadCount?: number | null + createdAt: number +} + +export interface PagedResult { + content: T[] + totalElements: number + totalPages: number + size: number + number: number } export interface ImStats { @@ -41,13 +65,13 @@ export interface ImStats { export const imAdminApi = { listUsers(appId: string, page = 0, size = 20) { - return imClient.get<{ data: { content: ImUser[]; totalElements: number; totalPages: number } }>( + return imClient.get<{ data: PagedResult }>( '/api/im/admin/users', { params: { appId, page, size } }, ) }, updateUserStatus(appId: string, userId: string, status: 'ACTIVE' | 'BANNED') { - return imClient.put(`/api/im/admin/users/${userId}/status`, { status }, { params: { appId } }) + return imClient.put(`/api/im/admin/users/${encodeURIComponent(userId)}/status`, { status }, { params: { appId } }) }, listGroups(appId: string) { @@ -58,6 +82,46 @@ export const imAdminApi = { return imClient.get<{ data: ImStats }>('/api/im/admin/stats', { params: { appId } }) }, + getMessages( + appId: string, + userA: string, + userB: string, + page = 0, + size = 20, + filters?: { + msgType?: string + keyword?: string + startTime?: string + endTime?: string + }, + ) { + return imClient.get<{ data: PagedResult }>('/api/im/admin/messages', { + params: { + appId, + userA, + userB, + page, + size, + ...(filters?.msgType ? { msgType: filters.msgType } : {}), + ...(filters?.keyword ? { keyword: filters.keyword } : {}), + ...(filters?.startTime ? { startTime: filters.startTime } : {}), + ...(filters?.endTime ? { endTime: filters.endTime } : {}), + }, + }) + }, + + revokeMessage(appId: string, messageId: string) { + return imClient.post<{ data: ImMessage }>( + `/api/im/admin/messages/${encodeURIComponent(messageId)}/revoke`, + {}, + { params: { appId } }, + ) + }, + + dismissGroup(appId: string, groupId: string) { + return imClient.delete<{ data: null }>(`/api/im/admin/groups/${encodeURIComponent(groupId)}`, { params: { appId } }) + }, + registerUser(appId: string, userId: string, nickname?: string, avatar?: string) { return imClient.post<{ data: ImUser }>( '/api/im/admin/users', diff --git a/tenant-platform/src/views/im/ImManagementView.vue b/tenant-platform/src/views/im/ImManagementView.vue index ff40ed3..410d0b6 100644 --- a/tenant-platform/src/views/im/ImManagementView.vue +++ b/tenant-platform/src/views/im/ImManagementView.vue @@ -2,7 +2,6 @@
- @@ -14,44 +13,48 @@ - + -
注册用户 刷新
+ - - - -