From 859d09cf134691c8c7c2ba65c35f1e265ad835ae Mon Sep 17 00:00:00 2001 From: qcqcqc <1220204124@zust.edu.cn> Date: Fri, 24 Oct 2025 14:09:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E4=BA=86=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=8F=90?= =?UTF-8?q?=E4=BE=9Borigin=E5=88=99=E4=B8=8D=E9=9C=80=E8=A6=81=E5=86=8D?= =?UTF-8?q?=E5=8E=BB=E6=9F=A5=E8=AF=A2=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/triggers/extraFile.ts | 60 ++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/src/triggers/extraFile.ts b/src/triggers/extraFile.ts index 10b3eeec5..032ff1956 100644 --- a/src/triggers/extraFile.ts +++ b/src/triggers/extraFile.ts @@ -7,6 +7,7 @@ import { RemoveTrigger } from 'oak-domain/lib/types/Trigger'; import { BRC } from '../types/RuntimeCxt'; import { applicationProjection } from '../types/Projection'; import assert from 'assert'; +import { CosOrigin } from '../types/Config'; const triggers: Trigger>[] = [ { @@ -17,41 +18,54 @@ const triggers: Trigger>[] = [ fn: async ({ operation }, context) => { const { data } = operation; - const [application] = await context.select("application", { - data: { - config: { - cos: { - defaultOrigin: 1, - } - }, - system: { + let cachedOrigin: CosOrigin | undefined = undefined; + + const getCosOrigin = async (): Promise => { + if (cachedOrigin) { + return cachedOrigin; + } + + const [application] = await context.select("application", { + data: { config: { - Cos: { + cos: { defaultOrigin: 1, } }, - platform: { + system: { config: { Cos: { defaultOrigin: 1, } + }, + platform: { + config: { + Cos: { + defaultOrigin: 1, + } + } } } - } - }, - filter: { - id: context.getApplicationId()!, - }, - }, {}); + }, + filter: { + id: context.getApplicationId()!, + }, + }, {}); + + assert(application, `找不到 当前应用程序`); + + cachedOrigin = application.config?.cos?.defaultOrigin || + application.system?.config?.Cos?.defaultOrigin || + application.system?.platform?.config?.Cos?.defaultOrigin; + + return cachedOrigin; + } - assert(application, `找不到 当前应用程序`); const formMeta = async (data: EntityDict['extraFile']['OpSchema']): Promise => { - const configOrigin = data.origin || - application!.config?.cos?.defaultOrigin || - application!.system?.config?.Cos?.defaultOrigin || - application!.system?.platform?.config?.Cos?.defaultOrigin; + // 如果提供了就用提供的origin,否则尝试从应用程序、系统配置、平台配置中获取默认的Cos源 + const configOrigin = data.origin || await getCosOrigin(); assert(configOrigin, `extraFile的origin未指定,且应用程序、系统配置、平台配置中也没有默认的Cos源,请检查`); @@ -115,8 +129,8 @@ const triggers: Trigger>[] = [ }, }, {}); if (count === 0) { - const uploader = getCosBackend(origin!); - const application2 = context.getApplication(true) || application; + const uploader = getCosBackend(origin!); + const application2 = context.getApplication(true) || application; await uploader.removeFile( application2 as EntityDict['application']['Schema'], extraFile as EntityDict['extraFile']['OpSchema']