fix: 因编译器暂不支持嵌套引用类型,故重新在entity内声明CosOrigin(以后适配)
This commit is contained in:
parent
db522727ec
commit
70747be388
|
|
@ -4,6 +4,7 @@ import { Schema as System } from './System';
|
|||
import { Schema as Session } from './Session';
|
||||
import { Schema as Domain } from './Domain';
|
||||
import { Style } from '../types/Style';
|
||||
export type CosOrigin = 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
export type AppType = 'web' | 'wechatMp' | 'wechatPublic' | 'native';
|
||||
export type WechatMpConfig = {
|
||||
type: 'wechatMp';
|
||||
|
|
@ -18,6 +19,9 @@ export type WechatMpConfig = {
|
|||
mode: 'clear' | 'compatible' | 'safe';
|
||||
dataFormat: 'json' | 'xml';
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WebConfig = {
|
||||
type: 'web';
|
||||
|
|
@ -36,6 +40,9 @@ export type WebConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WechatPublicConfig = {
|
||||
type: 'wechatPublic';
|
||||
|
|
@ -58,6 +65,9 @@ export type WechatPublicConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type NativeConfig = {
|
||||
type: 'native';
|
||||
|
|
@ -71,6 +81,9 @@ export type NativeConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
type Versions = string[];
|
||||
export interface Schema extends EntityShape {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ import { String, Int, Text, Float, Boolean } from 'oak-domain/lib/types/DataType
|
|||
import { EntityShape } from 'oak-domain/lib/types/Entity';
|
||||
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
|
||||
import { Schema as Application } from './Application';
|
||||
import { CosOrigin } from '../types/Config';
|
||||
export interface Schema extends EntityShape {
|
||||
origin: 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
origin: CosOrigin;
|
||||
type: 'image' | 'video' | 'audio' | 'file';
|
||||
bucket?: String<32>;
|
||||
objectId?: String<64>;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/E
|
|||
import { GenericAction } from "oak-domain/lib/actions/action";
|
||||
import { String, Text } from "oak-domain/lib/types/DataType";
|
||||
import { Style } from "../../types/Style";
|
||||
export type CosOrigin = "qiniu" | "wechat" | "ctyun" | "aliyun" | "tencent" | "local" | "unknown" | "s3";
|
||||
export type AppType = "web" | "wechatMp" | "wechatPublic" | "native";
|
||||
export type WechatMpConfig = {
|
||||
type: "wechatMp";
|
||||
|
|
@ -18,6 +19,9 @@ export type WechatMpConfig = {
|
|||
mode: "clear" | "compatible" | "safe";
|
||||
dataFormat: "json" | "xml";
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WebConfig = {
|
||||
type: "web";
|
||||
|
|
@ -36,6 +40,9 @@ export type WebConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WechatPublicConfig = {
|
||||
type: "wechatPublic";
|
||||
|
|
@ -58,6 +65,9 @@ export type WechatPublicConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type NativeConfig = {
|
||||
type: "native";
|
||||
|
|
@ -71,6 +81,9 @@ export type NativeConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
type Versions = string[];
|
||||
export type OpSchema = EntityShape & {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@ import { ForeignKey } from "oak-domain/lib/types/DataType";
|
|||
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, ExprOp, ExpressionKey } from "oak-domain/lib/types/Demand";
|
||||
import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/Entity";
|
||||
import { GenericAction } from "oak-domain/lib/actions/action";
|
||||
import { CosOrigin } from "../../types/Config";
|
||||
import { String, Text, Int, Float, Boolean } from "oak-domain/lib/types/DataType";
|
||||
export type OpSchema = EntityShape & {
|
||||
origin: "qiniu" | "wechat" | "ctyun" | "aliyun" | "tencent" | "local" | "unknown" | "s3";
|
||||
origin: CosOrigin;
|
||||
type: "image" | "video" | "audio" | "file";
|
||||
bucket?: String<32> | null;
|
||||
objectId?: String<64> | null;
|
||||
|
|
@ -33,7 +34,7 @@ export type OpFilter = {
|
|||
$$createAt$$: Q_DateValue;
|
||||
$$seq$$: Q_NumberValue;
|
||||
$$updateAt$$: Q_DateValue;
|
||||
origin: Q_EnumValue<"qiniu" | "wechat" | "ctyun" | "aliyun" | "tencent" | "local" | "unknown" | "s3">;
|
||||
origin: Q_EnumValue<CosOrigin>;
|
||||
type: Q_EnumValue<"image" | "video" | "audio" | "file">;
|
||||
bucket: Q_StringValue;
|
||||
objectId: Q_StringValue;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { getCosBackend } from '../utils/cos/index.backend';
|
||||
import { OakException } from 'oak-domain/lib/types/Exception';
|
||||
import { applicationProjection } from '../types/Projection';
|
||||
import assert from 'assert';
|
||||
const triggers = [
|
||||
{
|
||||
name: '生成extraFile需要的上传meta',
|
||||
|
|
@ -9,20 +10,60 @@ const triggers = [
|
|||
action: 'create',
|
||||
fn: async ({ operation }, context) => {
|
||||
const { data } = operation;
|
||||
let cachedOrigin = undefined;
|
||||
const getCosOrigin = async () => {
|
||||
if (cachedOrigin) {
|
||||
return cachedOrigin;
|
||||
}
|
||||
const [application] = await context.select("application", {
|
||||
data: {
|
||||
config: {
|
||||
cos: {
|
||||
defaultOrigin: 1,
|
||||
}
|
||||
},
|
||||
system: {
|
||||
config: {
|
||||
Cos: {
|
||||
defaultOrigin: 1,
|
||||
}
|
||||
},
|
||||
platform: {
|
||||
config: {
|
||||
Cos: {
|
||||
defaultOrigin: 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
filter: {
|
||||
id: context.getApplicationId(),
|
||||
},
|
||||
}, {});
|
||||
assert(application, `找不到 当前应用程序`);
|
||||
cachedOrigin = application.config?.cos?.defaultOrigin ||
|
||||
application.system?.config?.Cos?.defaultOrigin ||
|
||||
application.system?.platform?.config?.Cos?.defaultOrigin;
|
||||
return cachedOrigin;
|
||||
};
|
||||
const formMeta = async (data) => {
|
||||
const { origin } = data;
|
||||
// 如果提供了就用提供的origin,否则尝试从应用程序、系统配置、平台配置中获取默认的Cos源
|
||||
const configOrigin = data.origin || await getCosOrigin();
|
||||
data.origin = configOrigin;
|
||||
assert(configOrigin, `extraFile的origin未指定,且应用程序、系统配置、平台配置中也没有默认的Cos源,请检查`);
|
||||
if (!data.applicationId) {
|
||||
data.applicationId = context.getApplicationId();
|
||||
}
|
||||
if (origin === 'unknown') {
|
||||
if (configOrigin === 'unknown') {
|
||||
Object.assign(data, {
|
||||
uploadState: 'success',
|
||||
});
|
||||
return;
|
||||
}
|
||||
const cos = getCosBackend(origin);
|
||||
const cos = getCosBackend(configOrigin);
|
||||
if (!cos) {
|
||||
throw new OakException(`origin为${origin}的extraFile没有定义Cos类,请调用registerCos注入`);
|
||||
throw new OakException(`origin为${configOrigin}的extraFile没有定义Cos类,请调用registerCos注入`);
|
||||
}
|
||||
await cos.formUploadMeta(context.getApplication(), data);
|
||||
Object.assign(data, {
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ export type Config = {
|
|||
tencent?: TencentYunCosConfig;
|
||||
local?: LocalCosConfig;
|
||||
s3?: S3CosConfig;
|
||||
defaultOrigin?: CosOrigin;
|
||||
};
|
||||
Live?: {
|
||||
qiniu?: QiniuLiveConfig;
|
||||
|
|
@ -202,5 +203,6 @@ export type Config = {
|
|||
passwordVerifyGap?: number;
|
||||
};
|
||||
};
|
||||
export type Origin = 'ali' | 'tencent' | 'qiniu' | 'amap' | 'ctyun' | 'local';
|
||||
export type AccountOrigin = 'ali' | 'tencent' | 'qiniu' | 'amap' | 'ctyun' | 'local' | 's3';
|
||||
export type CosOrigin = 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
export type Service = 'Map' | 'Cos' | 'Live' | 'Sms' | 'Emails';
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { Origin, Service, Config } from '../types/Config';
|
||||
import { AccountOrigin, Service, Config } from '../types/Config';
|
||||
/**
|
||||
* @param systemConfig
|
||||
* @param service
|
||||
* @param origin
|
||||
* @returns
|
||||
*/
|
||||
export declare function getConfig(systemConfig: Config, service: Service, origin: Origin): {
|
||||
export declare function getConfig(systemConfig: Config, service: Service, origin: AccountOrigin): {
|
||||
instance: import("oak-external-sdk").ALiYunInstance;
|
||||
config: any;
|
||||
} | {
|
||||
|
|
@ -20,6 +20,9 @@ export declare function getConfig(systemConfig: Config, service: Service, origin
|
|||
} | {
|
||||
instance: import("oak-external-sdk").LocalInstance;
|
||||
config: any;
|
||||
} | {
|
||||
instance: import("oak-external-sdk").S3Instance;
|
||||
config: any;
|
||||
} | {
|
||||
instance: import("oak-external-sdk").AmapInstance;
|
||||
config: any;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { assert } from 'oak-domain/lib/utils/assert';
|
||||
import { OakDataException } from 'oak-domain/lib/types/Exception';
|
||||
import { AmapSDK, QiniuSDK, CTYunSDK, ALiYunSDK, TencentYunSDK, LocalSDK } from 'oak-external-sdk';
|
||||
import { AmapSDK, QiniuSDK, CTYunSDK, ALiYunSDK, TencentYunSDK, LocalSDK, S3SDK } from 'oak-external-sdk';
|
||||
/**
|
||||
* @param systemConfig
|
||||
* @param service
|
||||
|
|
@ -60,6 +60,15 @@ export function getConfig(systemConfig, service, origin) {
|
|||
config: originConfig,
|
||||
};
|
||||
}
|
||||
case 's3': {
|
||||
const s3Account = originCloudAccounts.find((ele) => ele.accessKey === originConfig.accessKey);
|
||||
assert(s3Account, `调用的服务${service}源${origin}找不到相应的平台帐号,请联系管理员`);
|
||||
const s3Instance = S3SDK.getInstance(s3Account.accessKey, s3Account.secretKey);
|
||||
return {
|
||||
instance: s3Instance,
|
||||
config: originConfig,
|
||||
};
|
||||
}
|
||||
default: {
|
||||
assert(origin === 'amap');
|
||||
const amapAccount = originCloudAccounts.find((ele) => ele.webApiKey === originConfig.webApiKey);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/types/Entity';
|
||||
import { EntityDict } from '../oak-app-domain';
|
||||
import { Schema as Livestream } from '../oak-app-domain/Livestream/Schema';
|
||||
import { Origin } from '../types/Config';
|
||||
import { AccountOrigin } from '../types/Config';
|
||||
import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
|
||||
/**
|
||||
* 创建直播流并生成推拉流地址
|
||||
|
|
@ -11,7 +11,7 @@ import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
|
|||
* @returns Livestream 对象
|
||||
*/
|
||||
export declare function getLivestream<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
|
||||
origin: Origin;
|
||||
origin: AccountOrigin;
|
||||
streamTitle: string;
|
||||
expireAt: number;
|
||||
}, context: Cxt): Promise<Pick<Livestream, 'streamTitle' | 'hub' | 'rtmpPushUrl' | 'rtmpPlayUrl' | 'pcPushUrl' | 'streamKey' | 'expireAt'>>;
|
||||
|
|
@ -23,12 +23,12 @@ export declare function getLivestream<ED extends EntityDict & BaseEntityDict, Cx
|
|||
* @returns livestream对象
|
||||
*/
|
||||
export declare function getStreamObj<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
|
||||
origin: Origin;
|
||||
origin: AccountOrigin;
|
||||
streamTitle: string;
|
||||
expireAt: number;
|
||||
}, context: Cxt): Promise<Pick<Livestream, 'streamTitle' | 'hub' | 'rtmpPushUrl' | 'rtmpPlayUrl' | 'pcPushUrl' | 'streamKey' | 'expireAt'>>;
|
||||
export declare function getPlayBackUrl<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
|
||||
origin: Origin;
|
||||
origin: AccountOrigin;
|
||||
streamTitle: string;
|
||||
start: number;
|
||||
end: number;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { Schema as System } from './System';
|
|||
import { Schema as Session } from './Session';
|
||||
import { Schema as Domain } from './Domain';
|
||||
import { Style } from '../types/Style';
|
||||
export type CosOrigin = 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
export type AppType = 'web' | 'wechatMp' | 'wechatPublic' | 'native';
|
||||
export type WechatMpConfig = {
|
||||
type: 'wechatMp';
|
||||
|
|
@ -18,6 +19,9 @@ export type WechatMpConfig = {
|
|||
mode: 'clear' | 'compatible' | 'safe';
|
||||
dataFormat: 'json' | 'xml';
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WebConfig = {
|
||||
type: 'web';
|
||||
|
|
@ -36,6 +40,9 @@ export type WebConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WechatPublicConfig = {
|
||||
type: 'wechatPublic';
|
||||
|
|
@ -58,6 +65,9 @@ export type WechatPublicConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type NativeConfig = {
|
||||
type: 'native';
|
||||
|
|
@ -71,6 +81,9 @@ export type NativeConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
type Versions = string[];
|
||||
export interface Schema extends EntityShape {
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ import { String, Int, Text, Float, Boolean } from 'oak-domain/lib/types/DataType
|
|||
import { EntityShape } from 'oak-domain/lib/types/Entity';
|
||||
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
|
||||
import { Schema as Application } from './Application';
|
||||
import { CosOrigin } from '../types/Config';
|
||||
export interface Schema extends EntityShape {
|
||||
origin: 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
origin: CosOrigin;
|
||||
type: 'image' | 'video' | 'audio' | 'file';
|
||||
bucket?: String<32>;
|
||||
objectId?: String<64>;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/E
|
|||
import { GenericAction } from "oak-domain/lib/actions/action";
|
||||
import { String, Text } from "oak-domain/lib/types/DataType";
|
||||
import { Style } from "../../types/Style";
|
||||
export type CosOrigin = "qiniu" | "wechat" | "ctyun" | "aliyun" | "tencent" | "local" | "unknown" | "s3";
|
||||
export type AppType = "web" | "wechatMp" | "wechatPublic" | "native";
|
||||
export type WechatMpConfig = {
|
||||
type: "wechatMp";
|
||||
|
|
@ -18,6 +19,9 @@ export type WechatMpConfig = {
|
|||
mode: "clear" | "compatible" | "safe";
|
||||
dataFormat: "json" | "xml";
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WebConfig = {
|
||||
type: "web";
|
||||
|
|
@ -36,6 +40,9 @@ export type WebConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type WechatPublicConfig = {
|
||||
type: "wechatPublic";
|
||||
|
|
@ -58,6 +65,9 @@ export type WechatPublicConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
export type NativeConfig = {
|
||||
type: "native";
|
||||
|
|
@ -71,6 +81,9 @@ export type NativeConfig = {
|
|||
hostname: string;
|
||||
port: string;
|
||||
};
|
||||
cos?: {
|
||||
defaultOrigin: CosOrigin;
|
||||
};
|
||||
};
|
||||
type Versions = string[];
|
||||
export type OpSchema = EntityShape & {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,10 @@ import { ForeignKey } from "oak-domain/lib/types/DataType";
|
|||
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, Q_EnumValue, NodeId, ExprOp, ExpressionKey } from "oak-domain/lib/types/Demand";
|
||||
import { MakeAction as OakMakeAction, EntityShape } from "oak-domain/lib/types/Entity";
|
||||
import { GenericAction } from "oak-domain/lib/actions/action";
|
||||
import { CosOrigin } from "../../types/Config";
|
||||
import { String, Text, Int, Float, Boolean } from "oak-domain/lib/types/DataType";
|
||||
export type OpSchema = EntityShape & {
|
||||
origin: "qiniu" | "wechat" | "ctyun" | "aliyun" | "tencent" | "local" | "unknown" | "s3";
|
||||
origin: CosOrigin;
|
||||
type: "image" | "video" | "audio" | "file";
|
||||
bucket?: String<32> | null;
|
||||
objectId?: String<64> | null;
|
||||
|
|
@ -33,7 +34,7 @@ export type OpFilter = {
|
|||
$$createAt$$: Q_DateValue;
|
||||
$$seq$$: Q_NumberValue;
|
||||
$$updateAt$$: Q_DateValue;
|
||||
origin: Q_EnumValue<"qiniu" | "wechat" | "ctyun" | "aliyun" | "tencent" | "local" | "unknown" | "s3">;
|
||||
origin: Q_EnumValue<CosOrigin>;
|
||||
type: Q_EnumValue<"image" | "video" | "audio" | "file">;
|
||||
bucket: Q_StringValue;
|
||||
objectId: Q_StringValue;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const tslib_1 = require("tslib");
|
||||
const index_backend_1 = require("../utils/cos/index.backend");
|
||||
const Exception_1 = require("oak-domain/lib/types/Exception");
|
||||
const Projection_1 = require("../types/Projection");
|
||||
const assert_1 = tslib_1.__importDefault(require("assert"));
|
||||
const triggers = [
|
||||
{
|
||||
name: '生成extraFile需要的上传meta',
|
||||
|
|
@ -11,20 +13,60 @@ const triggers = [
|
|||
action: 'create',
|
||||
fn: async ({ operation }, context) => {
|
||||
const { data } = operation;
|
||||
let cachedOrigin = undefined;
|
||||
const getCosOrigin = async () => {
|
||||
if (cachedOrigin) {
|
||||
return cachedOrigin;
|
||||
}
|
||||
const [application] = await context.select("application", {
|
||||
data: {
|
||||
config: {
|
||||
cos: {
|
||||
defaultOrigin: 1,
|
||||
}
|
||||
},
|
||||
system: {
|
||||
config: {
|
||||
Cos: {
|
||||
defaultOrigin: 1,
|
||||
}
|
||||
},
|
||||
platform: {
|
||||
config: {
|
||||
Cos: {
|
||||
defaultOrigin: 1,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
filter: {
|
||||
id: context.getApplicationId(),
|
||||
},
|
||||
}, {});
|
||||
(0, assert_1.default)(application, `找不到 当前应用程序`);
|
||||
cachedOrigin = application.config?.cos?.defaultOrigin ||
|
||||
application.system?.config?.Cos?.defaultOrigin ||
|
||||
application.system?.platform?.config?.Cos?.defaultOrigin;
|
||||
return cachedOrigin;
|
||||
};
|
||||
const formMeta = async (data) => {
|
||||
const { origin } = data;
|
||||
// 如果提供了就用提供的origin,否则尝试从应用程序、系统配置、平台配置中获取默认的Cos源
|
||||
const configOrigin = data.origin || await getCosOrigin();
|
||||
data.origin = configOrigin;
|
||||
(0, assert_1.default)(configOrigin, `extraFile的origin未指定,且应用程序、系统配置、平台配置中也没有默认的Cos源,请检查`);
|
||||
if (!data.applicationId) {
|
||||
data.applicationId = context.getApplicationId();
|
||||
}
|
||||
if (origin === 'unknown') {
|
||||
if (configOrigin === 'unknown') {
|
||||
Object.assign(data, {
|
||||
uploadState: 'success',
|
||||
});
|
||||
return;
|
||||
}
|
||||
const cos = (0, index_backend_1.getCosBackend)(origin);
|
||||
const cos = (0, index_backend_1.getCosBackend)(configOrigin);
|
||||
if (!cos) {
|
||||
throw new Exception_1.OakException(`origin为${origin}的extraFile没有定义Cos类,请调用registerCos注入`);
|
||||
throw new Exception_1.OakException(`origin为${configOrigin}的extraFile没有定义Cos类,请调用registerCos注入`);
|
||||
}
|
||||
await cos.formUploadMeta(context.getApplication(), data);
|
||||
Object.assign(data, {
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
|
||||
declare const _default: (import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "sessionMessage", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "application", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "message", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "address", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "article", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "articleMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "extraFile", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "user", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "userEntityGrant", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatQrCode", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "notification", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatLogin", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "parasite", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMenu", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatPublicTag", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "wechatMpJump", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "system", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "passport", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthApplication", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthProvider", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUser", import("..").BRC<import("../oak-app-domain").EntityDict>> | import("oak-domain/lib/types").Trigger<import("../oak-app-domain").EntityDict, "oauthUserAuthorization", import("../context/BackendRuntimeContext").BackendRuntimeContext<import("../oak-app-domain").EntityDict>>)[];
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export declare function createToDo<ED extends EntityDict & BaseEntityDict, T ext
|
|||
redirectTo: EntityDict['toDo']['OpSchema']['redirectTo'];
|
||||
entity: any;
|
||||
entityId: string;
|
||||
}, userIds?: string[]): Promise<0 | 1>;
|
||||
}, userIds?: string[]): Promise<1 | 0>;
|
||||
/**
|
||||
* 完成todo例程,当在entity对象上进行action操作时(操作条件是filter),将对应的todo完成
|
||||
* 必须在entity的action的后trigger中调用
|
||||
|
|
|
|||
|
|
@ -169,6 +169,7 @@ export type Config = {
|
|||
tencent?: TencentYunCosConfig;
|
||||
local?: LocalCosConfig;
|
||||
s3?: S3CosConfig;
|
||||
defaultOrigin?: CosOrigin;
|
||||
};
|
||||
Live?: {
|
||||
qiniu?: QiniuLiveConfig;
|
||||
|
|
@ -202,5 +203,6 @@ export type Config = {
|
|||
passwordVerifyGap?: number;
|
||||
};
|
||||
};
|
||||
export type Origin = 'ali' | 'tencent' | 'qiniu' | 'amap' | 'ctyun' | 'local';
|
||||
export type AccountOrigin = 'ali' | 'tencent' | 'qiniu' | 'amap' | 'ctyun' | 'local' | 's3';
|
||||
export type CosOrigin = 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
export type Service = 'Map' | 'Cos' | 'Live' | 'Sms' | 'Emails';
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import { Origin, Service, Config } from '../types/Config';
|
||||
import { AccountOrigin, Service, Config } from '../types/Config';
|
||||
/**
|
||||
* @param systemConfig
|
||||
* @param service
|
||||
* @param origin
|
||||
* @returns
|
||||
*/
|
||||
export declare function getConfig(systemConfig: Config, service: Service, origin: Origin): {
|
||||
export declare function getConfig(systemConfig: Config, service: Service, origin: AccountOrigin): {
|
||||
instance: import("oak-external-sdk").ALiYunInstance;
|
||||
config: any;
|
||||
} | {
|
||||
|
|
@ -20,6 +20,9 @@ export declare function getConfig(systemConfig: Config, service: Service, origin
|
|||
} | {
|
||||
instance: import("oak-external-sdk").LocalInstance;
|
||||
config: any;
|
||||
} | {
|
||||
instance: import("oak-external-sdk").S3Instance;
|
||||
config: any;
|
||||
} | {
|
||||
instance: import("oak-external-sdk").AmapInstance;
|
||||
config: any;
|
||||
|
|
|
|||
|
|
@ -63,6 +63,15 @@ function getConfig(systemConfig, service, origin) {
|
|||
config: originConfig,
|
||||
};
|
||||
}
|
||||
case 's3': {
|
||||
const s3Account = originCloudAccounts.find((ele) => ele.accessKey === originConfig.accessKey);
|
||||
(0, assert_1.assert)(s3Account, `调用的服务${service}源${origin}找不到相应的平台帐号,请联系管理员`);
|
||||
const s3Instance = oak_external_sdk_1.S3SDK.getInstance(s3Account.accessKey, s3Account.secretKey);
|
||||
return {
|
||||
instance: s3Instance,
|
||||
config: originConfig,
|
||||
};
|
||||
}
|
||||
default: {
|
||||
(0, assert_1.assert)(origin === 'amap');
|
||||
const amapAccount = originCloudAccounts.find((ele) => ele.webApiKey === originConfig.webApiKey);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/types/Entity';
|
||||
import { EntityDict } from '../oak-app-domain';
|
||||
import { Schema as Livestream } from '../oak-app-domain/Livestream/Schema';
|
||||
import { Origin } from '../types/Config';
|
||||
import { AccountOrigin } from '../types/Config';
|
||||
import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
|
||||
/**
|
||||
* 创建直播流并生成推拉流地址
|
||||
|
|
@ -11,7 +11,7 @@ import { BackendRuntimeContext } from '../context/BackendRuntimeContext';
|
|||
* @returns Livestream 对象
|
||||
*/
|
||||
export declare function getLivestream<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
|
||||
origin: Origin;
|
||||
origin: AccountOrigin;
|
||||
streamTitle: string;
|
||||
expireAt: number;
|
||||
}, context: Cxt): Promise<Pick<Livestream, 'streamTitle' | 'hub' | 'rtmpPushUrl' | 'rtmpPlayUrl' | 'pcPushUrl' | 'streamKey' | 'expireAt'>>;
|
||||
|
|
@ -23,12 +23,12 @@ export declare function getLivestream<ED extends EntityDict & BaseEntityDict, Cx
|
|||
* @returns livestream对象
|
||||
*/
|
||||
export declare function getStreamObj<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
|
||||
origin: Origin;
|
||||
origin: AccountOrigin;
|
||||
streamTitle: string;
|
||||
expireAt: number;
|
||||
}, context: Cxt): Promise<Pick<Livestream, 'streamTitle' | 'hub' | 'rtmpPushUrl' | 'rtmpPlayUrl' | 'pcPushUrl' | 'streamKey' | 'expireAt'>>;
|
||||
export declare function getPlayBackUrl<ED extends EntityDict & BaseEntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
|
||||
origin: Origin;
|
||||
origin: AccountOrigin;
|
||||
streamTitle: string;
|
||||
start: number;
|
||||
end: number;
|
||||
|
|
|
|||
|
|
@ -6,7 +6,8 @@ import { Schema as Domain } from './Domain';
|
|||
|
||||
import { Style } from '../types/Style';
|
||||
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
|
||||
import { CosOrigin } from '../types/Config';
|
||||
|
||||
export type CosOrigin = 'qiniu' | 'wechat' | 'ctyun' | 'aliyun' | 'tencent' | 'local' | 'unknown' | 's3';
|
||||
|
||||
export type AppType = 'web' | 'wechatMp' | 'wechatPublic' | 'native';
|
||||
export type WechatMpConfig = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue