From 17aa4b83279fd2d38a2d452f66accece8d94e51c Mon Sep 17 00:00:00 2001 From: jingyang <3161362058@qq.com> Date: Wed, 3 Apr 2024 16:12:21 +0800 Subject: [PATCH] Optimized Notification Signed-off-by: jingyang <3161362058@qq.com> --- frontend/packages/client-sdk/src/app.ts | 7 +-- .../providers/workorder/src/api/platform.ts | 4 +- .../providers/workorder/src/pages/_app.tsx | 1 - .../src/pages/api/platform/feishu.ts | 48 +++++++++++++------ .../src/pages/api/workorder/listByUser.ts | 3 +- .../src/pages/workorder/create/index.tsx | 2 +- .../workorder/src/services/backend/auth.ts | 3 +- 7 files changed, 41 insertions(+), 27 deletions(-) diff --git a/frontend/packages/client-sdk/src/app.ts b/frontend/packages/client-sdk/src/app.ts index de003cd8cbed..13b16d79bfed 100644 --- a/frontend/packages/client-sdk/src/app.ts +++ b/frontend/packages/client-sdk/src/app.ts @@ -1,11 +1,6 @@ import { v4 } from 'uuid'; import { API_NAME } from './constants'; -import { - AppMessageType, - AppSendMessageType, - MasterReplyMessageType, - SessionV1 -} from './types'; +import { AppMessageType, AppSendMessageType, MasterReplyMessageType, SessionV1 } from './types'; import { isBrowser } from './utils'; class ClientSDK { diff --git a/frontend/providers/workorder/src/api/platform.ts b/frontend/providers/workorder/src/api/platform.ts index dde722eaa176..193d98dca96d 100644 --- a/frontend/providers/workorder/src/api/platform.ts +++ b/frontend/providers/workorder/src/api/platform.ts @@ -1,6 +1,7 @@ import { SystemEnvResponse } from '@/pages/api/platform/getEnv'; import { GET, POST } from '@/services/request'; import { AppSession } from '@/types/user'; +import { WorkOrderEditForm } from '@/types/workorder'; import { AxiosProgressEvent } from 'axios'; export const getSystemEnv = () => GET('/api/platform/getEnv'); @@ -34,4 +35,5 @@ export const deleteFileByName = ({ fileName }: { fileName: string }) => { export const AuthByDesktopSession = (payload: { token: string }) => POST('/api/auth/desktop', payload); -export const FeishuNotification = () => POST('/api/platform/feishu'); +export const FeishuNotification = (payload: WorkOrderEditForm) => + POST('/api/platform/feishu', payload); diff --git a/frontend/providers/workorder/src/pages/_app.tsx b/frontend/providers/workorder/src/pages/_app.tsx index dec93eb66e19..9f558c1ca3ee 100644 --- a/frontend/providers/workorder/src/pages/_app.tsx +++ b/frontend/providers/workorder/src/pages/_app.tsx @@ -55,7 +55,6 @@ function App({ Component, pageProps }: AppProps) { const { domain } = await initSystemEnv(); try { const res = await sealosApp.getSession(); - console.log(res, 'session====='); if (!res?.token) return; authUser(res.token); } catch (err) { diff --git a/frontend/providers/workorder/src/pages/api/platform/feishu.ts b/frontend/providers/workorder/src/pages/api/platform/feishu.ts index a1b27bcaa38c..9b4f48f4af1d 100644 --- a/frontend/providers/workorder/src/pages/api/platform/feishu.ts +++ b/frontend/providers/workorder/src/pages/api/platform/feishu.ts @@ -1,32 +1,50 @@ +import { verifyAccessToken } from '@/services/backend/auth'; import { jsonRes } from '@/services/backend/response'; import { ApiResp } from '@/services/kubernet'; +import { WorkOrderEditForm } from '@/types/workorder'; import type { NextApiRequest, NextApiResponse } from 'next'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { + const userForm = req.body as WorkOrderEditForm; + const { userId } = await verifyAccessToken(req); const feishuUrl = process.env.ADMIN_FEISHU_URL; const feishuCallBackUrl = process.env.ADMIN_FEISHU_CALLBACK_URL; const payload = { - msg_type: 'post', - content: { - post: { - zh_cn: { - title: '工单提醒', - content: [ - [ - { - tag: 'text', - text: '有新工单: ' + msg_type: 'interactive', + card: { + elements: [ + { + tag: 'markdown', + content: `**用户ID:** ${userId}\n所属分类: ${userForm.type}\n描述信息: ${userForm.description}` + }, + { + tag: 'action', + actions: [ + { + tag: 'button', + text: { + tag: 'plain_text', + content: '查看详情' }, - { - tag: 'a', - text: '请查看链接', - href: feishuCallBackUrl + type: 'primary', + multi_url: { + url: feishuCallBackUrl, + android_url: '', + ios_url: '', + pc_url: '' } - ] + } ] } + ], + header: { + template: 'blue', + title: { + content: '有新的工单,请立即查看', + tag: 'plain_text' + } } } }; diff --git a/frontend/providers/workorder/src/pages/api/workorder/listByUser.ts b/frontend/providers/workorder/src/pages/api/workorder/listByUser.ts index 8d953d5685c2..4d8bd3fbbd6d 100644 --- a/frontend/providers/workorder/src/pages/api/workorder/listByUser.ts +++ b/frontend/providers/workorder/src/pages/api/workorder/listByUser.ts @@ -38,6 +38,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) data: result }); } catch (error) { - jsonRes(res, { code: 500, data: error }); + console.log(error); + jsonRes(res, { code: 500, error: error }); } } diff --git a/frontend/providers/workorder/src/pages/workorder/create/index.tsx b/frontend/providers/workorder/src/pages/workorder/create/index.tsx index 58b69eb28aa6..d4091fad7e85 100644 --- a/frontend/providers/workorder/src/pages/workorder/create/index.tsx +++ b/frontend/providers/workorder/src/pages/workorder/create/index.tsx @@ -64,7 +64,7 @@ export default function EditOrder() { orderId: res.orderId, content: data.description }); - await FeishuNotification(); + await FeishuNotification(data); toast({ status: 'success', title: 'success' diff --git a/frontend/providers/workorder/src/services/backend/auth.ts b/frontend/providers/workorder/src/services/backend/auth.ts index 3fcf316dc495..2e96ca9c40ca 100644 --- a/frontend/providers/workorder/src/services/backend/auth.ts +++ b/frontend/providers/workorder/src/services/backend/auth.ts @@ -2,7 +2,6 @@ import { AppTokenPayload, DesktopTokenPayload } from '@/types/user'; import { verify, sign } from 'jsonwebtoken'; import type { NextApiRequest } from 'next'; import { ERROR_ENUM } from '../error'; -import { reject } from 'lodash'; const desktopJwtSecret = (process.env.DESKTOP_JWT_SECRET as string) || '123456789'; const appJwtSecret = (process.env.APP_JWT_SECRET as string) || '123456789'; @@ -30,7 +29,7 @@ export const verifyDesktopToken: (token: string) => Promise Promise = (token) => - new Promise((resolve) => { + new Promise((resolve, reject) => { verify(token, appJwtSecret, (err, payload) => { if (err) { reject(err);