diff --git a/server/packages/sdk/src/db/mongoose.ts b/server/packages/sdk/src/db/mongoose.ts index 02d9c77e..ec51ccee 100644 --- a/server/packages/sdk/src/db/mongoose.ts +++ b/server/packages/sdk/src/db/mongoose.ts @@ -1 +1 @@ -export { Types } from 'mongoose'; +export { Types, isValidObjectId } from 'mongoose'; diff --git a/server/packages/sdk/src/index.ts b/server/packages/sdk/src/index.ts index de2ea3cf..1e3c0af3 100644 --- a/server/packages/sdk/src/index.ts +++ b/server/packages/sdk/src/index.ts @@ -25,7 +25,11 @@ export { } from './services/lib/settings'; // struct -export type { MessageMetaStruct } from './structs/chat'; +export type { + MessageStruct, + MessageReactionStruct, + MessageMetaStruct, +} from './structs/chat'; export type { BuiltinEventMap } from './structs/events'; export type { GroupStruct, diff --git a/server/packages/sdk/src/structs/chat.ts b/server/packages/sdk/src/structs/chat.ts index 168ebd5f..907a1111 100644 --- a/server/packages/sdk/src/structs/chat.ts +++ b/server/packages/sdk/src/structs/chat.ts @@ -1,3 +1,18 @@ +export interface MessageReactionStruct { + name: string; + author?: string; +} + +export interface MessageStruct { + _id: string; + content: string; + author: string; + groupId?: string; + converseId: string; + hasRecall: boolean; + reactions: MessageReactionStruct[]; +} + export interface MessageMetaStruct { mentions?: string[]; reply?: { diff --git a/server/services/core/user/user.service.ts b/server/services/core/user/user.service.ts index de55df89..a3f9c7f6 100644 --- a/server/services/core/user/user.service.ts +++ b/server/services/core/user/user.service.ts @@ -17,16 +17,18 @@ import { Errors, DataNotFoundError, EntityError, + db, } from 'tailchat-server-sdk'; import { generateRandomNumStr, generateRandomStr, getEmailAddress, } from '../../../lib/utils'; -import { Types } from 'mongoose'; import type { TFunction } from 'i18next'; import _ from 'lodash'; +const { isValidObjectId, Types } = db; + /** * 用户服务 */ @@ -543,6 +545,9 @@ class UserService extends TcService { async getUserInfoList(ctx: PureContext<{ userIds: string[] }>) { const userIds = ctx.params.userIds; + if (userIds.some((userId) => !isValidObjectId(userId))) { + throw new EntityError('Include invalid userId'); + } const list = await Promise.all( userIds.map((userId) => ctx.call('user.getUserInfo', {