From d120772257506835749247eccb4b3cba4c62ceae Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Sat, 11 Feb 2023 18:41:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E5=BC=80?= =?UTF-8?q?=E6=94=BE=E5=B9=B3=E5=8F=B0=E6=9C=BA=E5=99=A8=E4=BA=BA=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E6=B6=88=E6=81=AF=E5=9B=9E=E8=B0=83=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/packages/sdk/src/services/lib/call.ts | 21 ++++++++++++++++++-- server/services/openapi/app.service.ts | 17 ++++++++++++++++ server/services/openapi/bot.service.ts | 14 ++++++++----- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/server/packages/sdk/src/services/lib/call.ts b/server/packages/sdk/src/services/lib/call.ts index aaeac4e9..57e2ad25 100644 --- a/server/packages/sdk/src/services/lib/call.ts +++ b/server/packages/sdk/src/services/lib/call.ts @@ -73,9 +73,9 @@ export function call(ctx: TcPureContext) { /** * 获取用户信息 */ - async getUserInfo(userId: string): Promise { + async getUserInfo(userId: string): Promise { return await ctx.call('user.getUserInfo', { - userId, + userId: String(userId), }); }, /** @@ -112,5 +112,22 @@ export function call(ctx: TcPureContext) { : (userAllPermissions ?? []).includes(p) ); }, + /** + * 添加到收件箱 + * @param type 如果是插件则命名规范为包名加信息名,如: plugin:com.msgbyte.topic + * @param payload 内容体,相关的逻辑由前端处理 + * @param userId 如果是添加到当前用户则userId可以不填 + */ + async appendInbox( + type: string, + payload: any, + userId?: string + ): Promise { + return await ctx.call('chat.inbox.append', { + userId, + type, + payload, + }); + }, }; } diff --git a/server/services/openapi/app.service.ts b/server/services/openapi/app.service.ts index 84741097..8e697f37 100644 --- a/server/services/openapi/app.service.ts +++ b/server/services/openapi/app.service.ts @@ -48,6 +48,10 @@ class OpenAppService extends TcService { params: { appId: 'string', }, + cache: { + keys: ['appId'], + ttl: 60 * 60, // 1 hour + }, }); this.registerAction('create', this.create, { params: { @@ -204,6 +208,8 @@ class OpenAppService extends TcService { }) .exec(); + await this.cleanAppInfoCache(appId); + return true; } @@ -241,6 +247,8 @@ class OpenAppService extends TcService { }, } ); + + await this.cleanAppInfoCache(appId); } /** @@ -277,6 +285,15 @@ class OpenAppService extends TcService { }, } ); + + await this.cleanAppInfoCache(appId); + } + + /** + * 清理获取开放平台应用的缓存 + */ + private async cleanAppInfoCache(appId: string) { + await this.cleanActionCache('get', [String(appId)]); } } diff --git a/server/services/openapi/bot.service.ts b/server/services/openapi/bot.service.ts index f7315f8b..756dc511 100644 --- a/server/services/openapi/bot.service.ts +++ b/server/services/openapi/bot.service.ts @@ -15,7 +15,11 @@ class OpenBotService extends TcService { } this.registerEventListener('chat.inbox.append', async (payload, ctx) => { - const userInfo = await call(ctx).getUserInfo(payload._id); + const userInfo = await call(ctx).getUserInfo(String(payload.userId)); + + if (!userInfo) { + return; + } if (userInfo.type !== 'openapiBot') { return; @@ -44,9 +48,9 @@ class OpenBotService extends TcService { } got - .post(callbackUrl) - .then((res) => { - this.logger.info('调用机器人通知接口回调成功', res); + .post(callbackUrl, { json: payload }) + .then(() => { + this.logger.info('调用机器人通知接口回调成功'); }) .catch((err) => { this.logger.error('调用机器人通知接口回调失败:', err); @@ -121,7 +125,7 @@ class OpenBotService extends TcService { }); try { - const botId = 'open_' + appInfo._id; + const botId = 'open_' + appInfo.appId; const nickname = appInfo.appName; const avatar = appInfo.appIcon; const { _id: botUserId, email } = await ctx.call<