From ad19a5d083fe7a8c997efa697d4c8853ff516abd Mon Sep 17 00:00:00 2001 From: archer <545436317@qq.com> Date: Wed, 24 Dec 2025 13:35:54 +0800 Subject: [PATCH] update parent --- packages/service/core/app/controller.ts | 33 +++++++++---------- projects/app/src/pages/api/core/app/create.ts | 5 ++- .../pages/api/core/app/httpTools/update.ts | 8 ++--- .../src/pages/api/core/app/mcpTools/update.ts | 8 ++--- projects/app/src/pages/api/core/app/update.ts | 18 +++++----- .../src/pages/api/core/app/version/publish.ts | 3 +- 6 files changed, 33 insertions(+), 42 deletions(-) diff --git a/packages/service/core/app/controller.ts b/packages/service/core/app/controller.ts index 9ff88bd8c..576dfd2f4 100644 --- a/packages/service/core/app/controller.ts +++ b/packages/service/core/app/controller.ts @@ -27,8 +27,9 @@ import { getS3ChatSource } from '../../common/s3/sources/chat'; import { MongoAppChatLog } from './logs/chatLogsSchema'; import { MongoAppRegistration } from '../../support/appRegistration/schema'; import { MongoMcpKey } from '../../support/mcp/schema'; -import { type ClientSession } from '../../common/mongo'; import { MongoAppRecord } from './record/schema'; +import { mongoSessionRun } from '../../common/mongo/sessionRun'; +import { addLog } from '../../common/system/log'; export const beforeUpdateAppFormat = ({ nodes }: { nodes?: StoreNodeItemType[] }) => { if (!nodes) return; @@ -210,23 +211,21 @@ export const deleteAppsImmediate = async ({ await MongoAppRecord.deleteMany({ teamId, appId: { $in: appIds } }); }; -export const updateParentFoldersUpdateTime = async ({ - parentId, - session -}: { - parentId?: string | null; - session?: ClientSession; -}) => { - while (true) { - if (!parentId) return; +export const updateParentFoldersUpdateTime = ({ parentId }: { parentId?: string | null }) => { + mongoSessionRun(async (session) => { + while (true) { + if (!parentId) return; - const parentApp = await MongoApp.findById(parentId, 'parentId updateTime'); - if (!parentApp) return; + const parentApp = await MongoApp.findById(parentId, 'parentId updateTime'); + if (!parentApp) return; - parentApp.updateTime = new Date(); - await parentApp.save({ session }); + parentApp.updateTime = new Date(); + await parentApp.save({ session }); - // 递归更新上层 - parentId = parentApp.parentId; - } + // 递归更新上层 + parentId = parentApp.parentId; + } + }).catch((err) => { + addLog.error('updateParentFoldersUpdateTime error', err); + }); }; diff --git a/projects/app/src/pages/api/core/app/create.ts b/projects/app/src/pages/api/core/app/create.ts index 8246df691..f8fb5918b 100644 --- a/projects/app/src/pages/api/core/app/create.ts +++ b/projects/app/src/pages/api/core/app/create.ts @@ -244,9 +244,8 @@ export const onCreateApp = async ({ await getS3AvatarSource().refreshAvatar(_avatar, undefined, session); - await updateParentFoldersUpdateTime({ - parentId, - session + updateParentFoldersUpdateTime({ + parentId }); (async () => { diff --git a/projects/app/src/pages/api/core/app/httpTools/update.ts b/projects/app/src/pages/api/core/app/httpTools/update.ts index 344bbf2f4..626c0e1f3 100644 --- a/projects/app/src/pages/api/core/app/httpTools/update.ts +++ b/projects/app/src/pages/api/core/app/httpTools/update.ts @@ -52,11 +52,6 @@ async function handler(req: ApiRequestProps, res: NextApiR { session } ); - await updateParentFoldersUpdateTime({ - parentId: app.parentId, - session - }); - await MongoAppVersion.updateOne( { appId }, { @@ -67,6 +62,9 @@ async function handler(req: ApiRequestProps, res: NextApiR { session } ); }); + updateParentFoldersUpdateTime({ + parentId: app.parentId + }); } export default NextAPI(handler); diff --git a/projects/app/src/pages/api/core/app/mcpTools/update.ts b/projects/app/src/pages/api/core/app/mcpTools/update.ts index 555a3646d..7ccdb7735 100644 --- a/projects/app/src/pages/api/core/app/mcpTools/update.ts +++ b/projects/app/src/pages/api/core/app/mcpTools/update.ts @@ -53,11 +53,6 @@ async function handler( { session } ); - await updateParentFoldersUpdateTime({ - parentId: app.parentId, - session - }); - await MongoAppVersion.updateOne( { appId }, { @@ -68,6 +63,9 @@ async function handler( { session } ); }); + updateParentFoldersUpdateTime({ + parentId: app.parentId + }); return {}; } diff --git a/projects/app/src/pages/api/core/app/update.ts b/projects/app/src/pages/api/core/app/update.ts index 358045ec7..4ac37333b 100644 --- a/projects/app/src/pages/api/core/app/update.ts +++ b/projects/app/src/pages/api/core/app/update.ts @@ -134,26 +134,24 @@ async function handler(req: ApiRequestProps) { edges }), ...(chatConfig && { chatConfig }), - ...(isMove && { inheritPermission: true }) + ...(isMove && { inheritPermission: true }), + updateTime: new Date() }, { session } ); if (isMove) { // Update both old and new parent folders - await updateParentFoldersUpdateTime({ - parentId: app.parentId, - session + updateParentFoldersUpdateTime({ + parentId: app.parentId }); - await updateParentFoldersUpdateTime({ - parentId, - session + updateParentFoldersUpdateTime({ + parentId }); } else { // Update current parent folder - await updateParentFoldersUpdateTime({ - parentId: parentId || app.parentId, - session + updateParentFoldersUpdateTime({ + parentId: parentId || app.parentId }); } diff --git a/projects/app/src/pages/api/core/app/version/publish.ts b/projects/app/src/pages/api/core/app/version/publish.ts index d7a1e3873..627c0fa57 100644 --- a/projects/app/src/pages/api/core/app/version/publish.ts +++ b/projects/app/src/pages/api/core/app/version/publish.ts @@ -29,8 +29,7 @@ async function handler(req: ApiRequestProps, res: NextApiRe beforeUpdateAppFormat({ nodes }); - - await updateParentFoldersUpdateTime({ + updateParentFoldersUpdateTime({ parentId: app.parentId });