This commit is contained in:
wangwenchen 2023-11-24 16:55:19 +08:00
parent 540f6a6783
commit ec70479986
47 changed files with 1116 additions and 54 deletions

View File

@ -12,6 +12,7 @@ import { createSession } from './session';
import { getCurrentMenu, getMenu, createMenu, createConditionalMenu, deleteConditionalMenu, deleteMenu } from './wechatMenu';
import { createTag, getTags, editTag, deleteTag, syncTag, oneKeySync } from './wechatPublicTag';
import { getTagUsers, batchtagging, batchuntagging, getUserTags, getUsers, tagging, syncToLocale, syncToWechat } from './userWechatPublicTag';
import { wechatMpJump } from './wechatMpJump';
declare const aspectDict: {
mergeUser: typeof mergeUser;
switchTo: typeof switchTo;
@ -65,5 +66,6 @@ declare const aspectDict: {
tagging: typeof tagging;
syncToLocale: typeof syncToLocale;
syncToWechat: typeof syncToWechat;
wechatMpJump: typeof wechatMpJump;
};
export default aspectDict;

View File

@ -12,6 +12,7 @@ import { createSession } from './session';
import { getCurrentMenu, getMenu, createMenu, createConditionalMenu, deleteConditionalMenu, deleteMenu, } from './wechatMenu';
import { createTag, getTags, editTag, deleteTag, syncTag, oneKeySync, } from './wechatPublicTag';
import { getTagUsers, batchtagging, batchuntagging, getUserTags, getUsers, tagging, syncToLocale, syncToWechat, } from './userWechatPublicTag';
import { wechatMpJump, } from './wechatMpJump';
const aspectDict = {
mergeUser,
switchTo,
@ -65,5 +66,6 @@ const aspectDict = {
tagging,
syncToLocale,
syncToWechat,
wechatMpJump,
};
export default aspectDict;

13
es/aspects/wechatMpJump.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
import { EntityDict } from "../oak-app-domain";
import { BackendRuntimeContext } from "../context/BackendRuntimeContext";
export declare function wechatMpJump<ED extends EntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
applicationId: string;
jump_wxa: {
path: string;
query: string;
env_version: string;
};
expireType: number;
expiresAt: number;
expireInterval: number;
}, context: Cxt): Promise<any>;

View File

@ -0,0 +1,24 @@
import { cloneDeep } from 'oak-domain/lib/utils/lodash';
import { applicationProjection } from '../types/Projection';
import { assert } from 'oak-domain/lib/utils/assert';
import { WechatSDK, } from 'oak-external-sdk';
export async function wechatMpJump(params, context) {
const { applicationId, jump_wxa, expireType, expiresAt, expireInterval } = params;
assert(applicationId);
const [application] = await context.select('application', {
data: cloneDeep(applicationProjection),
filter: {
id: applicationId,
},
}, {
dontCollect: true,
});
assert(application);
const { type, config } = application;
assert(type === 'wechatMp');
const config2 = config;
const { appId, appSecret } = config2;
const wechatInstance = WechatSDK.getInstance(appId, 'wechatMp', appSecret);
const result = await wechatInstance.getURLScheme({ jump_wxa, expireType, expiresAt, expireInterval });
return result;
}

View File

@ -29,7 +29,7 @@ export default OakComponent({
},
},
methods: {
goPage() {
async goPage() {
const { router } = this.state;
const pathname = router?.pathname;
const props = router?.props || {};
@ -37,10 +37,24 @@ export default OakComponent({
if (!pathname) {
return;
}
this.redirectTo({
url: pathname,
...props,
}, state, true);
try {
await this.redirectTo({
url: pathname,
...props,
}, state, true);
}
catch (err) {
if (process.env.OAK_PLATFORM === 'wechatMp') {
if (err?.errMsg?.includes('navigateTo:fail')) {
this.features.message.setMessage({
type: 'warning',
content: '该功能请去电脑端操作网址https://www.gecomebox.com/console/',
});
return;
}
}
throw err;
}
},
},
});

18
es/entities/WechatMpJump.d.ts vendored Normal file
View File

@ -0,0 +1,18 @@
import { Boolean, Datetime, Int, String } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { Schema as Message } from './Message';
type Jump_wxa = {
path?: string;
query?: string;
env_version?: string;
};
export interface Schema extends EntityShape {
message?: Message;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;
expireInterval?: Int<2>;
expiresAt?: Datetime;
expired: Boolean;
}
export {};

View File

@ -0,0 +1,30 @@
const entityDesc = {
locales: {
zh_CN: {
name: '短信跳小程序',
attr: {
message: '消息',
expired: '是否过期',
jump_wxa: '目标小程序信息',
openlink: "目标链接及参数",
expireType: '失效类型',
expireInterval: '到期失效的间隔',
expiresAt: '过期时间',
},
},
},
indexes: [
{
name: 'index_uuid',
attributes: [
{
name: 'expired',
},
{
name: 'expiresAt',
},
],
},
],
};
export {};

View File

@ -47,6 +47,7 @@ import { EntityDef as UserSystem } from "./UserSystem/Schema";
import { EntityDef as UserWechatPublicTag } from "./UserWechatPublicTag/Schema";
import { EntityDef as WechatLogin } from "./WechatLogin/Schema";
import { EntityDef as WechatMenu } from "./WechatMenu/Schema";
import { EntityDef as WechatMpJump } from "./WechatMpJump/Schema";
import { EntityDef as WechatPublicAutoReply } from "./WechatPublicAutoReply/Schema";
import { EntityDef as WechatPublicTag } from "./WechatPublicTag/Schema";
import { EntityDef as WechatPublicTemplate } from "./WechatPublicTemplate/Schema";
@ -102,6 +103,7 @@ export type EntityDict = {
userWechatPublicTag: UserWechatPublicTag;
wechatLogin: WechatLogin;
wechatMenu: WechatMenu;
wechatMpJump: WechatMpJump;
wechatPublicAutoReply: WechatPublicAutoReply;
wechatPublicTag: WechatPublicTag;
wechatPublicTemplate: WechatPublicTemplate;

View File

@ -9,6 +9,7 @@ import { Channel, Weight } from "../../types/Message";
import * as User from "../User/Schema";
import * as Platform from "../Platform/Schema";
import * as MessageSystem from "../MessageSystem/Schema";
import * as WechatMpJump from "../WechatMpJump/Schema";
type Router = {
pathname: string;
props?: Record<string, any>;
@ -56,6 +57,8 @@ export type Schema = EntityShape & {
platform?: Platform.Schema | null;
messageSystem$message?: Array<MessageSystem.Schema>;
messageSystem$message$$aggr?: AggregationResult<MessageSystem.Schema>;
wechatMpJump$message?: Array<WechatMpJump.Schema>;
wechatMpJump$message$$aggr?: AggregationResult<WechatMpJump.Schema>;
} & {
[A in ExpressionKey]?: any;
};
@ -81,6 +84,7 @@ type AttrFilter = {
iState: Q_EnumValue<IState>;
visitState: Q_EnumValue<VisitState>;
messageSystem$message: MessageSystem.Filter & SubQueryPredicateMetadata;
wechatMpJump$message: WechatMpJump.Filter & SubQueryPredicateMetadata;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
@ -112,6 +116,12 @@ export type Projection = {
messageSystem$message$$aggr?: MessageSystem.Aggregation & {
$entity: "messageSystem";
};
wechatMpJump$message?: WechatMpJump.Selection & {
$entity: "wechatMpJump";
};
wechatMpJump$message$$aggr?: WechatMpJump.Aggregation & {
$entity: "wechatMpJump";
};
} & Partial<ExprOp<OpAttr | string>>;
type MessageIdProjection = OneOf<{
id: number;
@ -195,6 +205,7 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
[K: string]: any;
}) & {
messageSystem$message?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">>>;
wechatMpJump$message?: OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">> | OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
@ -226,6 +237,7 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "userId" | "plat
})) & {
[k: string]: any;
messageSystem$message?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">>>;
wechatMpJump$message?: OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<WechatMpJump.RemoveOperation["action"], Omit<WechatMpJump.RemoveOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">> | OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<WechatMpJump.RemoveOperation["action"], Omit<WechatMpJump.RemoveOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">>>;
};
export type UpdateOperation = OakOperation<"update" | ParticularAction | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({

View File

@ -12,6 +12,7 @@ import * as UserSystem from "../UserSystem/Schema";
import * as UserWechatPublicTag from "../UserWechatPublicTag/Schema";
import * as WechatLogin from "../WechatLogin/Schema";
import * as WechatMenu from "../WechatMenu/Schema";
import * as WechatMpJump from "../WechatMpJump/Schema";
import * as WechatPublicAutoReply from "../WechatPublicAutoReply/Schema";
import * as WechatPublicTag from "../WechatPublicTag/Schema";
import * as WechatPublicTemplate from "../WechatPublicTemplate/Schema";
@ -19,13 +20,13 @@ import * as WechatQrCode from "../WechatQrCode/Schema";
import * as WechatUser from "../WechatUser/Schema";
export type OpSchema = EntityShape & {
modiId: ForeignKey<"modi">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
modiId: ForeignKey<"modi">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
modi: Modi.Schema;
user?: User.Schema;
@ -34,6 +35,7 @@ export type Schema = EntityShape & {
userWechatPublicTag?: UserWechatPublicTag.Schema;
wechatLogin?: WechatLogin.Schema;
wechatMenu?: WechatMenu.Schema;
wechatMpJump?: WechatMpJump.Schema;
wechatPublicAutoReply?: WechatPublicAutoReply.Schema;
wechatPublicTag?: WechatPublicTag.Schema;
wechatPublicTemplate?: WechatPublicTemplate.Schema;
@ -49,7 +51,7 @@ type AttrFilter = {
$$updateAt$$: Q_DateValue;
modiId: Q_StringValue;
modi: Modi.Filter;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entityId: Q_StringValue;
user: User.Filter;
userEntityGrant: UserEntityGrant.Filter;
@ -57,6 +59,7 @@ type AttrFilter = {
userWechatPublicTag: UserWechatPublicTag.Filter;
wechatLogin: WechatLogin.Filter;
wechatMenu: WechatMenu.Filter;
wechatMpJump: WechatMpJump.Filter;
wechatPublicAutoReply: WechatPublicAutoReply.Filter;
wechatPublicTag: WechatPublicTag.Filter;
wechatPublicTemplate: WechatPublicTemplate.Filter;
@ -81,6 +84,7 @@ export type Projection = {
userWechatPublicTag?: UserWechatPublicTag.Projection;
wechatLogin?: WechatLogin.Projection;
wechatMenu?: WechatMenu.Projection;
wechatMpJump?: WechatMpJump.Projection;
wechatPublicAutoReply?: WechatPublicAutoReply.Projection;
wechatPublicTag?: WechatPublicTag.Projection;
wechatPublicTemplate?: WechatPublicTemplate.Projection;
@ -111,6 +115,9 @@ type WechatLoginIdProjection = OneOf<{
type WechatMenuIdProjection = OneOf<{
entityId: number;
}>;
type WechatMpJumpIdProjection = OneOf<{
entityId: number;
}>;
type WechatPublicAutoReplyIdProjection = OneOf<{
entityId: number;
}>;
@ -154,6 +161,8 @@ export type SortAttr = {
wechatLogin: WechatLogin.SortAttr;
} | {
wechatMenu: WechatMenu.SortAttr;
} | {
wechatMpJump: WechatMpJump.SortAttr;
} | {
wechatPublicAutoReply: WechatPublicAutoReply.SortAttr;
} | {
@ -256,6 +265,18 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
entity: "wechatMenu";
entityId: ForeignKey<"WechatMenu">;
wechatMenu?: never;
} | {
entity?: never;
entityId?: never;
wechatMpJump: WechatMpJump.CreateSingleOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: WechatMpJump.UpdateOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: never;
} | {
entity?: never;
entityId?: never;
@ -360,6 +381,10 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
wechatMenu?: WechatMenu.CreateSingleOperation | WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatMpJump?: WechatMpJump.CreateSingleOperation | WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.CreateSingleOperation | WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
entityId?: never;
@ -381,14 +406,15 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
entityId?: never;
entity?: never;
} | {
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatMpJump" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
user?: never;
userEntityGrant?: never;
userSystem?: never;
userWechatPublicTag?: never;
wechatLogin?: never;
wechatMenu?: never;
wechatMpJump?: never;
wechatPublicAutoReply?: never;
wechatPublicTag?: never;
wechatPublicTemplate?: never;
@ -412,6 +438,8 @@ export type RemoveOperationData = {} & (({
wechatLogin?: WechatLogin.UpdateOperation | WechatLogin.RemoveOperation;
} | {
wechatMenu?: WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
} | {
wechatMpJump?: WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
} | {
@ -434,6 +462,7 @@ export type UserSystemIdSubQuery = Selection<UserSystemIdProjection>;
export type UserWechatPublicTagIdSubQuery = Selection<UserWechatPublicTagIdProjection>;
export type WechatLoginIdSubQuery = Selection<WechatLoginIdProjection>;
export type WechatMenuIdSubQuery = Selection<WechatMenuIdProjection>;
export type WechatMpJumpIdSubQuery = Selection<WechatMpJumpIdProjection>;
export type WechatPublicAutoReplyIdSubQuery = Selection<WechatPublicAutoReplyIdProjection>;
export type WechatPublicTagIdSubQuery = Selection<WechatPublicTagIdProjection>;
export type WechatPublicTemplateIdSubQuery = Selection<WechatPublicTemplateIdProjection>;

View File

@ -12,7 +12,7 @@ export const desc = {
params: {
length: 32
},
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatMpJump", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
},
entityId: {
notNull: true,

View File

@ -12,6 +12,7 @@ import * as UserSystem from "../UserSystem/Schema";
import * as UserWechatPublicTag from "../UserWechatPublicTag/Schema";
import * as WechatLogin from "../WechatLogin/Schema";
import * as WechatMenu from "../WechatMenu/Schema";
import * as WechatMpJump from "../WechatMpJump/Schema";
import * as WechatPublicAutoReply from "../WechatPublicAutoReply/Schema";
import * as WechatPublicTag from "../WechatPublicTag/Schema";
import * as WechatPublicTemplate from "../WechatPublicTemplate/Schema";
@ -19,13 +20,13 @@ import * as WechatQrCode from "../WechatQrCode/Schema";
import * as WechatUser from "../WechatUser/Schema";
export type OpSchema = EntityShape & {
operId: ForeignKey<"oper">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
operId: ForeignKey<"oper">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
oper: Oper.Schema;
user?: User.Schema;
@ -34,6 +35,7 @@ export type Schema = EntityShape & {
userWechatPublicTag?: UserWechatPublicTag.Schema;
wechatLogin?: WechatLogin.Schema;
wechatMenu?: WechatMenu.Schema;
wechatMpJump?: WechatMpJump.Schema;
wechatPublicAutoReply?: WechatPublicAutoReply.Schema;
wechatPublicTag?: WechatPublicTag.Schema;
wechatPublicTemplate?: WechatPublicTemplate.Schema;
@ -49,7 +51,7 @@ type AttrFilter = {
$$updateAt$$: Q_DateValue;
operId: Q_StringValue;
oper: Oper.Filter;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entityId: Q_StringValue;
user: User.Filter;
userEntityGrant: UserEntityGrant.Filter;
@ -57,6 +59,7 @@ type AttrFilter = {
userWechatPublicTag: UserWechatPublicTag.Filter;
wechatLogin: WechatLogin.Filter;
wechatMenu: WechatMenu.Filter;
wechatMpJump: WechatMpJump.Filter;
wechatPublicAutoReply: WechatPublicAutoReply.Filter;
wechatPublicTag: WechatPublicTag.Filter;
wechatPublicTemplate: WechatPublicTemplate.Filter;
@ -81,6 +84,7 @@ export type Projection = {
userWechatPublicTag?: UserWechatPublicTag.Projection;
wechatLogin?: WechatLogin.Projection;
wechatMenu?: WechatMenu.Projection;
wechatMpJump?: WechatMpJump.Projection;
wechatPublicAutoReply?: WechatPublicAutoReply.Projection;
wechatPublicTag?: WechatPublicTag.Projection;
wechatPublicTemplate?: WechatPublicTemplate.Projection;
@ -111,6 +115,9 @@ type WechatLoginIdProjection = OneOf<{
type WechatMenuIdProjection = OneOf<{
entityId: number;
}>;
type WechatMpJumpIdProjection = OneOf<{
entityId: number;
}>;
type WechatPublicAutoReplyIdProjection = OneOf<{
entityId: number;
}>;
@ -154,6 +161,8 @@ export type SortAttr = {
wechatLogin: WechatLogin.SortAttr;
} | {
wechatMenu: WechatMenu.SortAttr;
} | {
wechatMpJump: WechatMpJump.SortAttr;
} | {
wechatPublicAutoReply: WechatPublicAutoReply.SortAttr;
} | {
@ -253,6 +262,18 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
entity: "wechatMenu";
entityId: ForeignKey<"WechatMenu">;
wechatMenu?: never;
} | {
entity?: never;
entityId?: never;
wechatMpJump: WechatMpJump.CreateSingleOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: WechatMpJump.UpdateOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: never;
} | {
entity?: never;
entityId?: never;
@ -351,6 +372,10 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
wechatMenu?: WechatMenu.CreateSingleOperation | WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatMpJump?: WechatMpJump.CreateSingleOperation | WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.CreateSingleOperation | WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
entityId?: never;
@ -372,14 +397,15 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
entityId?: never;
entity?: never;
} | {
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatMpJump" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
user?: never;
userEntityGrant?: never;
userSystem?: never;
userWechatPublicTag?: never;
wechatLogin?: never;
wechatMenu?: never;
wechatMpJump?: never;
wechatPublicAutoReply?: never;
wechatPublicTag?: never;
wechatPublicTemplate?: never;
@ -401,6 +427,8 @@ export type RemoveOperationData = {} & ({
wechatLogin?: WechatLogin.UpdateOperation | WechatLogin.RemoveOperation;
} | {
wechatMenu?: WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
} | {
wechatMpJump?: WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
} | {
@ -423,6 +451,7 @@ export type UserSystemIdSubQuery = Selection<UserSystemIdProjection>;
export type UserWechatPublicTagIdSubQuery = Selection<UserWechatPublicTagIdProjection>;
export type WechatLoginIdSubQuery = Selection<WechatLoginIdProjection>;
export type WechatMenuIdSubQuery = Selection<WechatMenuIdProjection>;
export type WechatMpJumpIdSubQuery = Selection<WechatMpJumpIdProjection>;
export type WechatPublicAutoReplyIdSubQuery = Selection<WechatPublicAutoReplyIdProjection>;
export type WechatPublicTagIdSubQuery = Selection<WechatPublicTagIdProjection>;
export type WechatPublicTemplateIdSubQuery = Selection<WechatPublicTemplateIdProjection>;

View File

@ -12,7 +12,7 @@ export const desc = {
params: {
length: 32
},
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatMpJump", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
},
entityId: {
notNull: true,

View File

@ -47,6 +47,7 @@ import { desc as userSystemDesc } from "./UserSystem/Storage";
import { desc as userWechatPublicTagDesc } from "./UserWechatPublicTag/Storage";
import { desc as wechatLoginDesc } from "./WechatLogin/Storage";
import { desc as wechatMenuDesc } from "./WechatMenu/Storage";
import { desc as wechatMpJumpDesc } from "./WechatMpJump/Storage";
import { desc as wechatPublicAutoReplyDesc } from "./WechatPublicAutoReply/Storage";
import { desc as wechatPublicTagDesc } from "./WechatPublicTag/Storage";
import { desc as wechatPublicTemplateDesc } from "./WechatPublicTemplate/Storage";
@ -102,6 +103,7 @@ export const storageSchema = {
userWechatPublicTag: userWechatPublicTagDesc,
wechatLogin: wechatLoginDesc,
wechatMenu: wechatMenuDesc,
wechatMpJump: wechatMpJumpDesc,
wechatPublicAutoReply: wechatPublicAutoReplyDesc,
wechatPublicTag: wechatPublicTagDesc,
wechatPublicTemplate: wechatPublicTemplateDesc,

View File

@ -0,0 +1,182 @@
import { ForeignKey, JsonProjection } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, NodeId, MakeFilter, ExprOp, ExpressionKey, JsonFilter, SubQueryPredicateMetadata } from "oak-domain/lib/types/Demand";
import { OneOf } from "oak-domain/lib/types/Polyfill";
import { FormCreateData, FormUpdateData, DeduceAggregation, Operation as OakOperation, Selection as OakSelection, MakeAction as OakMakeAction, AggregationResult } from "oak-domain/lib/types/Entity";
import { GenericAction } from "oak-domain/lib/actions/action";
import { Boolean, Datetime, Int, String } from "oak-domain/lib/types/DataType";
import { EntityShape } from "oak-domain/lib/types/Entity";
import * as Message from "../Message/Schema";
import * as ModiEntity from "../ModiEntity/Schema";
import * as OperEntity from "../OperEntity/Schema";
type Jump_wxa = {
path?: string;
query?: string;
env_version?: string;
};
export type OpSchema = EntityShape & {
messageId?: ForeignKey<"message"> | null;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;
expireInterval?: Int<2> | null;
expiresAt?: Datetime | null;
expired: Boolean;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
messageId?: ForeignKey<"message"> | null;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;
expireInterval?: Int<2> | null;
expiresAt?: Datetime | null;
expired: Boolean;
message?: Message.Schema | null;
modiEntity$entity?: Array<ModiEntity.Schema>;
modiEntity$entity$$aggr?: AggregationResult<ModiEntity.Schema>;
operEntity$entity?: Array<OperEntity.Schema>;
operEntity$entity$$aggr?: AggregationResult<OperEntity.Schema>;
} & {
[A in ExpressionKey]?: any;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_StringValue;
$$updateAt$$: Q_DateValue;
messageId: Q_StringValue;
message: Message.Filter;
jump_wxa: JsonFilter<Jump_wxa>;
openlink: Q_StringValue;
expireType: Q_NumberValue;
expireInterval: Q_NumberValue;
expiresAt: Q_DateValue;
expired: Q_BooleanValue;
modiEntity$entity: ModiEntity.Filter & SubQueryPredicateMetadata;
operEntity$entity: OperEntity.Filter & SubQueryPredicateMetadata;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
"#id"?: NodeId;
[k: string]: any;
id?: number;
$$createAt$$?: number;
$$updateAt$$?: number;
$$seq$$?: number;
messageId?: number;
message?: Message.Projection;
jump_wxa?: number | JsonProjection<Jump_wxa>;
openlink?: number;
expireType?: number;
expireInterval?: number;
expiresAt?: number;
expired?: number;
modiEntity$entity?: ModiEntity.Selection & {
$entity: "modiEntity";
};
modiEntity$entity$$aggr?: ModiEntity.Aggregation & {
$entity: "modiEntity";
};
operEntity$entity?: OperEntity.Selection & {
$entity: "operEntity";
};
operEntity$entity$$aggr?: OperEntity.Aggregation & {
$entity: "operEntity";
};
} & Partial<ExprOp<OpAttr | string>>;
type WechatMpJumpIdProjection = OneOf<{
id: number;
}>;
type MessageIdProjection = OneOf<{
messageId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
messageId: number;
} | {
message: Message.SortAttr;
} | {
jump_wxa: number;
} | {
openlink: number;
} | {
expireType: number;
} | {
expireInterval: number;
} | {
expiresAt: number;
} | {
expired: number;
} | {
[k: string]: any;
} | OneOf<ExprOp<OpAttr | string>>;
export type SortNode = {
$attr: SortAttr;
$direction?: "asc" | "desc";
};
export type Sorter = SortNode[];
export type SelectOperation<P extends Object = Projection> = OakSelection<"select", P, Filter, Sorter>;
export type Selection<P extends Object = Projection> = SelectOperation<P>;
export type Aggregation = DeduceAggregation<Projection, Filter, Sorter>;
export type CreateOperationData = FormCreateData<Omit<OpSchema, "messageId">> & (({
messageId?: never;
message?: Message.CreateSingleOperation;
} | {
messageId: ForeignKey<"message">;
message?: Message.UpdateOperation;
} | {
message?: never;
messageId?: ForeignKey<"message">;
})) & {
modiEntity$entity?: OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">>>;
operEntity$entity?: OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "messageId">> & (({
message?: Message.CreateSingleOperation;
messageId?: never;
} | {
message?: Message.UpdateOperation;
messageId?: never;
} | {
message?: Message.RemoveOperation;
messageId?: never;
} | {
message?: never;
messageId?: ForeignKey<"message"> | null;
})) & {
[k: string]: any;
modiEntity$entity?: OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">>>;
operEntity$entity?: OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">>>;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({
message?: Message.UpdateOperation | Message.RemoveOperation;
}));
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type MessageIdSubQuery = Selection<MessageIdProjection>;
export type WechatMpJumpIdSubQuery = Selection<WechatMpJumpIdProjection>;
export type EntityDef = {
Schema: Schema;
OpSchema: OpSchema;
Action: OakMakeAction<GenericAction> | string;
Selection: Selection;
Aggregation: Aggregation;
Operation: Operation;
Create: CreateOperation;
Update: UpdateOperation;
Remove: RemoveOperation;
CreateSingle: CreateSingleOperation;
CreateMulti: CreateMultipleOperation;
};
export {};

View File

@ -0,0 +1 @@
export {};

View File

@ -0,0 +1,3 @@
import { StorageDesc } from "oak-domain/lib/types/Storage";
import { OpSchema } from "./Schema";
export declare const desc: StorageDesc<OpSchema>;

View File

@ -0,0 +1,57 @@
import { genericActions as actions } from "oak-domain/lib/actions/action";
export const desc = {
attributes: {
messageId: {
type: "ref",
ref: "message"
},
jump_wxa: {
notNull: true,
type: "object"
},
openlink: {
notNull: true,
type: "varchar",
params: {
length: 256
}
},
expireType: {
notNull: true,
type: "int",
params: {
width: 1,
signed: true
}
},
expireInterval: {
type: "int",
params: {
width: 2,
signed: true
}
},
expiresAt: {
type: "datetime"
},
expired: {
notNull: true,
type: "boolean"
}
},
actionType: "crud",
actions,
indexes: [
{
name: 'index_uuid',
attributes: [
{
name: 'expired',
},
{
name: 'expiresAt',
},
],
}
]
};

View File

@ -0,0 +1 @@
{ "name": "短信跳小程序", "attr": { "message": "消息", "expired": "是否过期", "jump_wxa": "目标小程序信息", "openlink": "目标链接及参数", "expireType": "失效类型", "expireInterval": "到期失效的间隔", "expiresAt": "过期时间" } }

View File

@ -47,6 +47,7 @@ import * as UserSystem from "./UserSystem/Schema";
import * as UserWechatPublicTag from "./UserWechatPublicTag/Schema";
import * as WechatLogin from "./WechatLogin/Schema";
import * as WechatMenu from "./WechatMenu/Schema";
import * as WechatMpJump from "./WechatMpJump/Schema";
import * as WechatPublicAutoReply from "./WechatPublicAutoReply/Schema";
import * as WechatPublicTag from "./WechatPublicTag/Schema";
import * as WechatPublicTemplate from "./WechatPublicTemplate/Schema";
@ -296,6 +297,8 @@ export type LivestreamIdSubQuery = {
export type MessageIdSubQuery = {
[K in "$in" | "$nin"]?: (MessageSystem.MessageIdSubQuery & {
entity: "messageSystem";
}) | (WechatMpJump.MessageIdSubQuery & {
entity: "wechatMpJump";
}) | (Message.MessageIdSubQuery & {
entity: "message";
}) | any;
@ -473,6 +476,15 @@ export type WechatMenuIdSubQuery = {
entity: "wechatMenu";
}) | any;
};
export type WechatMpJumpIdSubQuery = {
[K in "$in" | "$nin"]?: (ModiEntity.WechatMpJumpIdSubQuery & {
entity: "modiEntity";
}) | (OperEntity.WechatMpJumpIdSubQuery & {
entity: "operEntity";
}) | (WechatMpJump.WechatMpJumpIdSubQuery & {
entity: "wechatMpJump";
}) | any;
};
export type WechatPublicAutoReplyIdSubQuery = {
[K in "$in" | "$nin"]?: (ModiEntity.WechatPublicAutoReplyIdSubQuery & {
entity: "modiEntity";

5
es/triggers/wechatMpJump.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
import { Trigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { BRC } from '../types/RuntimeCxt';
declare const triggers: Trigger<EntityDict, 'wechatMpJump', BRC>[];
export default triggers;

View File

@ -0,0 +1,25 @@
import { assert } from 'oak-domain/lib/utils/assert';
// import { wechatMpJump } from '@project/aspects/wechatMpJump';
const triggers = [
{
name: '当创建WechatMpJump时尝试为之创建一个wechatQrCode',
entity: 'wechatMpJump',
action: 'create',
when: 'before',
fn: async ({ operation }, context, params) => {
const { data, filter } = operation;
const fn = async (wechatMpJumpData) => {
const { jump_wxa, expiresAt, expireType, expireInterval } = wechatMpJumpData;
Object.assign(wechatMpJumpData, {});
};
if (data instanceof Array) {
assert('授权不存在一对多的情况');
}
else {
await fn(data);
}
return 0;
},
},
];
export default triggers;

View File

@ -12,6 +12,7 @@ import { createSession } from './session';
import { getCurrentMenu, getMenu, createMenu, createConditionalMenu, deleteConditionalMenu, deleteMenu } from './wechatMenu';
import { createTag, getTags, editTag, deleteTag, syncTag, oneKeySync } from './wechatPublicTag';
import { getTagUsers, batchtagging, batchuntagging, getUserTags, getUsers, tagging, syncToLocale, syncToWechat } from './userWechatPublicTag';
import { wechatMpJump } from './wechatMpJump';
declare const aspectDict: {
mergeUser: typeof mergeUser;
switchTo: typeof switchTo;
@ -65,5 +66,6 @@ declare const aspectDict: {
tagging: typeof tagging;
syncToLocale: typeof syncToLocale;
syncToWechat: typeof syncToWechat;
wechatMpJump: typeof wechatMpJump;
};
export default aspectDict;

View File

@ -14,6 +14,7 @@ const session_1 = require("./session");
const wechatMenu_1 = require("./wechatMenu");
const wechatPublicTag_1 = require("./wechatPublicTag");
const userWechatPublicTag_1 = require("./userWechatPublicTag");
const wechatMpJump_1 = require("./wechatMpJump");
const aspectDict = {
mergeUser: user_1.mergeUser,
switchTo: token_1.switchTo,
@ -67,5 +68,6 @@ const aspectDict = {
tagging: userWechatPublicTag_1.tagging,
syncToLocale: userWechatPublicTag_1.syncToLocale,
syncToWechat: userWechatPublicTag_1.syncToWechat,
wechatMpJump: wechatMpJump_1.wechatMpJump,
};
exports.default = aspectDict;

13
lib/aspects/wechatMpJump.d.ts vendored Normal file
View File

@ -0,0 +1,13 @@
import { EntityDict } from "../oak-app-domain";
import { BackendRuntimeContext } from "../context/BackendRuntimeContext";
export declare function wechatMpJump<ED extends EntityDict, Cxt extends BackendRuntimeContext<ED>>(params: {
applicationId: string;
jump_wxa: {
path: string;
query: string;
env_version: string;
};
expireType: number;
expiresAt: number;
expireInterval: number;
}, context: Cxt): Promise<any>;

View File

@ -0,0 +1,28 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.wechatMpJump = void 0;
const lodash_1 = require("oak-domain/lib/utils/lodash");
const Projection_1 = require("../types/Projection");
const assert_1 = require("oak-domain/lib/utils/assert");
const oak_external_sdk_1 = require("oak-external-sdk");
async function wechatMpJump(params, context) {
const { applicationId, jump_wxa, expireType, expiresAt, expireInterval } = params;
(0, assert_1.assert)(applicationId);
const [application] = await context.select('application', {
data: (0, lodash_1.cloneDeep)(Projection_1.applicationProjection),
filter: {
id: applicationId,
},
}, {
dontCollect: true,
});
(0, assert_1.assert)(application);
const { type, config } = application;
(0, assert_1.assert)(type === 'wechatMp');
const config2 = config;
const { appId, appSecret } = config2;
const wechatInstance = oak_external_sdk_1.WechatSDK.getInstance(appId, 'wechatMp', appSecret);
const result = await wechatInstance.getURLScheme({ jump_wxa, expireType, expiresAt, expireInterval });
return result;
}
exports.wechatMpJump = wechatMpJump;

18
lib/entities/WechatMpJump.d.ts vendored Normal file
View File

@ -0,0 +1,18 @@
import { Boolean, Datetime, Int, String } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { Schema as Message } from './Message';
type Jump_wxa = {
path?: string;
query?: string;
env_version?: string;
};
export interface Schema extends EntityShape {
message?: Message;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;
expireInterval?: Int<2>;
expiresAt?: Datetime;
expired: Boolean;
}
export {};

View File

@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const entityDesc = {
locales: {
zh_CN: {
name: '短信跳小程序',
attr: {
message: '消息',
expired: '是否过期',
jump_wxa: '目标小程序信息',
openlink: "目标链接及参数",
expireType: '失效类型',
expireInterval: '到期失效的间隔',
expiresAt: '过期时间',
},
},
},
indexes: [
{
name: 'index_uuid',
attributes: [
{
name: 'expired',
},
{
name: 'expiresAt',
},
],
},
],
};

View File

@ -47,6 +47,7 @@ import { EntityDef as UserSystem } from "./UserSystem/Schema";
import { EntityDef as UserWechatPublicTag } from "./UserWechatPublicTag/Schema";
import { EntityDef as WechatLogin } from "./WechatLogin/Schema";
import { EntityDef as WechatMenu } from "./WechatMenu/Schema";
import { EntityDef as WechatMpJump } from "./WechatMpJump/Schema";
import { EntityDef as WechatPublicAutoReply } from "./WechatPublicAutoReply/Schema";
import { EntityDef as WechatPublicTag } from "./WechatPublicTag/Schema";
import { EntityDef as WechatPublicTemplate } from "./WechatPublicTemplate/Schema";
@ -102,6 +103,7 @@ export type EntityDict = {
userWechatPublicTag: UserWechatPublicTag;
wechatLogin: WechatLogin;
wechatMenu: WechatMenu;
wechatMpJump: WechatMpJump;
wechatPublicAutoReply: WechatPublicAutoReply;
wechatPublicTag: WechatPublicTag;
wechatPublicTemplate: WechatPublicTemplate;

View File

@ -9,6 +9,7 @@ import { Channel, Weight } from "../../types/Message";
import * as User from "../User/Schema";
import * as Platform from "../Platform/Schema";
import * as MessageSystem from "../MessageSystem/Schema";
import * as WechatMpJump from "../WechatMpJump/Schema";
type Router = {
pathname: string;
props?: Record<string, any>;
@ -56,6 +57,8 @@ export type Schema = EntityShape & {
platform?: Platform.Schema | null;
messageSystem$message?: Array<MessageSystem.Schema>;
messageSystem$message$$aggr?: AggregationResult<MessageSystem.Schema>;
wechatMpJump$message?: Array<WechatMpJump.Schema>;
wechatMpJump$message$$aggr?: AggregationResult<WechatMpJump.Schema>;
} & {
[A in ExpressionKey]?: any;
};
@ -81,6 +84,7 @@ type AttrFilter = {
iState: Q_EnumValue<IState>;
visitState: Q_EnumValue<VisitState>;
messageSystem$message: MessageSystem.Filter & SubQueryPredicateMetadata;
wechatMpJump$message: WechatMpJump.Filter & SubQueryPredicateMetadata;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
@ -112,6 +116,12 @@ export type Projection = {
messageSystem$message$$aggr?: MessageSystem.Aggregation & {
$entity: "messageSystem";
};
wechatMpJump$message?: WechatMpJump.Selection & {
$entity: "wechatMpJump";
};
wechatMpJump$message$$aggr?: WechatMpJump.Aggregation & {
$entity: "wechatMpJump";
};
} & Partial<ExprOp<OpAttr | string>>;
type MessageIdProjection = OneOf<{
id: number;
@ -195,6 +205,7 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
[K: string]: any;
}) & {
messageSystem$message?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">>>;
wechatMpJump$message?: OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">> | OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
@ -226,6 +237,7 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "userId" | "plat
})) & {
[k: string]: any;
messageSystem$message?: OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<MessageSystem.CreateOperationData, "message" | "messageId">> | OakOperation<MessageSystem.UpdateOperation["action"], Omit<MessageSystem.UpdateOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">> | OakOperation<MessageSystem.RemoveOperation["action"], Omit<MessageSystem.RemoveOperationData, "message" | "messageId">, Omit<MessageSystem.Filter, "message" | "messageId">>>;
wechatMpJump$message?: OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<WechatMpJump.RemoveOperation["action"], Omit<WechatMpJump.RemoveOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">[]> | Array<OakOperation<"create", Omit<WechatMpJump.CreateOperationData, "message" | "messageId">> | OakOperation<WechatMpJump.UpdateOperation["action"], Omit<WechatMpJump.UpdateOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">> | OakOperation<WechatMpJump.RemoveOperation["action"], Omit<WechatMpJump.RemoveOperationData, "message" | "messageId">, Omit<WechatMpJump.Filter, "message" | "messageId">>>;
};
export type UpdateOperation = OakOperation<"update" | ParticularAction | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({

View File

@ -12,6 +12,7 @@ import * as UserSystem from "../UserSystem/Schema";
import * as UserWechatPublicTag from "../UserWechatPublicTag/Schema";
import * as WechatLogin from "../WechatLogin/Schema";
import * as WechatMenu from "../WechatMenu/Schema";
import * as WechatMpJump from "../WechatMpJump/Schema";
import * as WechatPublicAutoReply from "../WechatPublicAutoReply/Schema";
import * as WechatPublicTag from "../WechatPublicTag/Schema";
import * as WechatPublicTemplate from "../WechatPublicTemplate/Schema";
@ -19,13 +20,13 @@ import * as WechatQrCode from "../WechatQrCode/Schema";
import * as WechatUser from "../WechatUser/Schema";
export type OpSchema = EntityShape & {
modiId: ForeignKey<"modi">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
modiId: ForeignKey<"modi">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
modi: Modi.Schema;
user?: User.Schema;
@ -34,6 +35,7 @@ export type Schema = EntityShape & {
userWechatPublicTag?: UserWechatPublicTag.Schema;
wechatLogin?: WechatLogin.Schema;
wechatMenu?: WechatMenu.Schema;
wechatMpJump?: WechatMpJump.Schema;
wechatPublicAutoReply?: WechatPublicAutoReply.Schema;
wechatPublicTag?: WechatPublicTag.Schema;
wechatPublicTemplate?: WechatPublicTemplate.Schema;
@ -49,7 +51,7 @@ type AttrFilter = {
$$updateAt$$: Q_DateValue;
modiId: Q_StringValue;
modi: Modi.Filter;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entityId: Q_StringValue;
user: User.Filter;
userEntityGrant: UserEntityGrant.Filter;
@ -57,6 +59,7 @@ type AttrFilter = {
userWechatPublicTag: UserWechatPublicTag.Filter;
wechatLogin: WechatLogin.Filter;
wechatMenu: WechatMenu.Filter;
wechatMpJump: WechatMpJump.Filter;
wechatPublicAutoReply: WechatPublicAutoReply.Filter;
wechatPublicTag: WechatPublicTag.Filter;
wechatPublicTemplate: WechatPublicTemplate.Filter;
@ -81,6 +84,7 @@ export type Projection = {
userWechatPublicTag?: UserWechatPublicTag.Projection;
wechatLogin?: WechatLogin.Projection;
wechatMenu?: WechatMenu.Projection;
wechatMpJump?: WechatMpJump.Projection;
wechatPublicAutoReply?: WechatPublicAutoReply.Projection;
wechatPublicTag?: WechatPublicTag.Projection;
wechatPublicTemplate?: WechatPublicTemplate.Projection;
@ -111,6 +115,9 @@ type WechatLoginIdProjection = OneOf<{
type WechatMenuIdProjection = OneOf<{
entityId: number;
}>;
type WechatMpJumpIdProjection = OneOf<{
entityId: number;
}>;
type WechatPublicAutoReplyIdProjection = OneOf<{
entityId: number;
}>;
@ -154,6 +161,8 @@ export type SortAttr = {
wechatLogin: WechatLogin.SortAttr;
} | {
wechatMenu: WechatMenu.SortAttr;
} | {
wechatMpJump: WechatMpJump.SortAttr;
} | {
wechatPublicAutoReply: WechatPublicAutoReply.SortAttr;
} | {
@ -256,6 +265,18 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
entity: "wechatMenu";
entityId: ForeignKey<"WechatMenu">;
wechatMenu?: never;
} | {
entity?: never;
entityId?: never;
wechatMpJump: WechatMpJump.CreateSingleOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: WechatMpJump.UpdateOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: never;
} | {
entity?: never;
entityId?: never;
@ -360,6 +381,10 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
wechatMenu?: WechatMenu.CreateSingleOperation | WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatMpJump?: WechatMpJump.CreateSingleOperation | WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.CreateSingleOperation | WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
entityId?: never;
@ -381,14 +406,15 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
entityId?: never;
entity?: never;
} | {
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatMpJump" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
user?: never;
userEntityGrant?: never;
userSystem?: never;
userWechatPublicTag?: never;
wechatLogin?: never;
wechatMenu?: never;
wechatMpJump?: never;
wechatPublicAutoReply?: never;
wechatPublicTag?: never;
wechatPublicTemplate?: never;
@ -412,6 +438,8 @@ export type RemoveOperationData = {} & (({
wechatLogin?: WechatLogin.UpdateOperation | WechatLogin.RemoveOperation;
} | {
wechatMenu?: WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
} | {
wechatMpJump?: WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
} | {
@ -434,6 +462,7 @@ export type UserSystemIdSubQuery = Selection<UserSystemIdProjection>;
export type UserWechatPublicTagIdSubQuery = Selection<UserWechatPublicTagIdProjection>;
export type WechatLoginIdSubQuery = Selection<WechatLoginIdProjection>;
export type WechatMenuIdSubQuery = Selection<WechatMenuIdProjection>;
export type WechatMpJumpIdSubQuery = Selection<WechatMpJumpIdProjection>;
export type WechatPublicAutoReplyIdSubQuery = Selection<WechatPublicAutoReplyIdProjection>;
export type WechatPublicTagIdSubQuery = Selection<WechatPublicTagIdProjection>;
export type WechatPublicTemplateIdSubQuery = Selection<WechatPublicTemplateIdProjection>;

View File

@ -15,7 +15,7 @@ exports.desc = {
params: {
length: 32
},
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatMpJump", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
},
entityId: {
notNull: true,

View File

@ -12,6 +12,7 @@ import * as UserSystem from "../UserSystem/Schema";
import * as UserWechatPublicTag from "../UserWechatPublicTag/Schema";
import * as WechatLogin from "../WechatLogin/Schema";
import * as WechatMenu from "../WechatMenu/Schema";
import * as WechatMpJump from "../WechatMpJump/Schema";
import * as WechatPublicAutoReply from "../WechatPublicAutoReply/Schema";
import * as WechatPublicTag from "../WechatPublicTag/Schema";
import * as WechatPublicTemplate from "../WechatPublicTemplate/Schema";
@ -19,13 +20,13 @@ import * as WechatQrCode from "../WechatQrCode/Schema";
import * as WechatUser from "../WechatUser/Schema";
export type OpSchema = EntityShape & {
operId: ForeignKey<"oper">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
operId: ForeignKey<"oper">;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entity: "user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string;
entityId: String<64>;
oper: Oper.Schema;
user?: User.Schema;
@ -34,6 +35,7 @@ export type Schema = EntityShape & {
userWechatPublicTag?: UserWechatPublicTag.Schema;
wechatLogin?: WechatLogin.Schema;
wechatMenu?: WechatMenu.Schema;
wechatMpJump?: WechatMpJump.Schema;
wechatPublicAutoReply?: WechatPublicAutoReply.Schema;
wechatPublicTag?: WechatPublicTag.Schema;
wechatPublicTemplate?: WechatPublicTemplate.Schema;
@ -49,7 +51,7 @@ type AttrFilter = {
$$updateAt$$: Q_DateValue;
operId: Q_StringValue;
oper: Oper.Filter;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entity: Q_EnumValue<"user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string>;
entityId: Q_StringValue;
user: User.Filter;
userEntityGrant: UserEntityGrant.Filter;
@ -57,6 +59,7 @@ type AttrFilter = {
userWechatPublicTag: UserWechatPublicTag.Filter;
wechatLogin: WechatLogin.Filter;
wechatMenu: WechatMenu.Filter;
wechatMpJump: WechatMpJump.Filter;
wechatPublicAutoReply: WechatPublicAutoReply.Filter;
wechatPublicTag: WechatPublicTag.Filter;
wechatPublicTemplate: WechatPublicTemplate.Filter;
@ -81,6 +84,7 @@ export type Projection = {
userWechatPublicTag?: UserWechatPublicTag.Projection;
wechatLogin?: WechatLogin.Projection;
wechatMenu?: WechatMenu.Projection;
wechatMpJump?: WechatMpJump.Projection;
wechatPublicAutoReply?: WechatPublicAutoReply.Projection;
wechatPublicTag?: WechatPublicTag.Projection;
wechatPublicTemplate?: WechatPublicTemplate.Projection;
@ -111,6 +115,9 @@ type WechatLoginIdProjection = OneOf<{
type WechatMenuIdProjection = OneOf<{
entityId: number;
}>;
type WechatMpJumpIdProjection = OneOf<{
entityId: number;
}>;
type WechatPublicAutoReplyIdProjection = OneOf<{
entityId: number;
}>;
@ -154,6 +161,8 @@ export type SortAttr = {
wechatLogin: WechatLogin.SortAttr;
} | {
wechatMenu: WechatMenu.SortAttr;
} | {
wechatMpJump: WechatMpJump.SortAttr;
} | {
wechatPublicAutoReply: WechatPublicAutoReply.SortAttr;
} | {
@ -253,6 +262,18 @@ export type CreateOperationData = FormCreateData<Omit<OpSchema, "entity" | "enti
entity: "wechatMenu";
entityId: ForeignKey<"WechatMenu">;
wechatMenu?: never;
} | {
entity?: never;
entityId?: never;
wechatMpJump: WechatMpJump.CreateSingleOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: WechatMpJump.UpdateOperation;
} | {
entity: "wechatMpJump";
entityId: ForeignKey<"WechatMpJump">;
wechatMpJump?: never;
} | {
entity?: never;
entityId?: never;
@ -351,6 +372,10 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
wechatMenu?: WechatMenu.CreateSingleOperation | WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatMpJump?: WechatMpJump.CreateSingleOperation | WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
entityId?: never;
entity?: never;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.CreateSingleOperation | WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
entityId?: never;
@ -372,14 +397,15 @@ export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "entity" | "enti
entityId?: never;
entity?: never;
} | {
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
entity?: ("user" | "userEntityGrant" | "userSystem" | "userWechatPublicTag" | "wechatLogin" | "wechatMenu" | "wechatMpJump" | "wechatPublicAutoReply" | "wechatPublicTag" | "wechatPublicTemplate" | "wechatQrCode" | "wechatUser" | string) | null;
entityId?: ForeignKey<"User" | "UserEntityGrant" | "UserSystem" | "UserWechatPublicTag" | "WechatLogin" | "WechatMenu" | "WechatMpJump" | "WechatPublicAutoReply" | "WechatPublicTag" | "WechatPublicTemplate" | "WechatQrCode" | "WechatUser"> | null;
user?: never;
userEntityGrant?: never;
userSystem?: never;
userWechatPublicTag?: never;
wechatLogin?: never;
wechatMenu?: never;
wechatMpJump?: never;
wechatPublicAutoReply?: never;
wechatPublicTag?: never;
wechatPublicTemplate?: never;
@ -401,6 +427,8 @@ export type RemoveOperationData = {} & ({
wechatLogin?: WechatLogin.UpdateOperation | WechatLogin.RemoveOperation;
} | {
wechatMenu?: WechatMenu.UpdateOperation | WechatMenu.RemoveOperation;
} | {
wechatMpJump?: WechatMpJump.UpdateOperation | WechatMpJump.RemoveOperation;
} | {
wechatPublicAutoReply?: WechatPublicAutoReply.UpdateOperation | WechatPublicAutoReply.RemoveOperation;
} | {
@ -423,6 +451,7 @@ export type UserSystemIdSubQuery = Selection<UserSystemIdProjection>;
export type UserWechatPublicTagIdSubQuery = Selection<UserWechatPublicTagIdProjection>;
export type WechatLoginIdSubQuery = Selection<WechatLoginIdProjection>;
export type WechatMenuIdSubQuery = Selection<WechatMenuIdProjection>;
export type WechatMpJumpIdSubQuery = Selection<WechatMpJumpIdProjection>;
export type WechatPublicAutoReplyIdSubQuery = Selection<WechatPublicAutoReplyIdProjection>;
export type WechatPublicTagIdSubQuery = Selection<WechatPublicTagIdProjection>;
export type WechatPublicTemplateIdSubQuery = Selection<WechatPublicTemplateIdProjection>;

View File

@ -15,7 +15,7 @@ exports.desc = {
params: {
length: 32
},
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
ref: ["user", "userEntityGrant", "userSystem", "userWechatPublicTag", "wechatLogin", "wechatMenu", "wechatMpJump", "wechatPublicAutoReply", "wechatPublicTag", "wechatPublicTemplate", "wechatQrCode", "wechatUser"]
},
entityId: {
notNull: true,

View File

@ -50,11 +50,12 @@ const Storage_46 = require("./UserSystem/Storage");
const Storage_47 = require("./UserWechatPublicTag/Storage");
const Storage_48 = require("./WechatLogin/Storage");
const Storage_49 = require("./WechatMenu/Storage");
const Storage_50 = require("./WechatPublicAutoReply/Storage");
const Storage_51 = require("./WechatPublicTag/Storage");
const Storage_52 = require("./WechatPublicTemplate/Storage");
const Storage_53 = require("./WechatQrCode/Storage");
const Storage_54 = require("./WechatUser/Storage");
const Storage_50 = require("./WechatMpJump/Storage");
const Storage_51 = require("./WechatPublicAutoReply/Storage");
const Storage_52 = require("./WechatPublicTag/Storage");
const Storage_53 = require("./WechatPublicTemplate/Storage");
const Storage_54 = require("./WechatQrCode/Storage");
const Storage_55 = require("./WechatUser/Storage");
exports.storageSchema = {
actionAuth: Storage_1.desc,
i18n: Storage_2.desc,
@ -105,9 +106,10 @@ exports.storageSchema = {
userWechatPublicTag: Storage_47.desc,
wechatLogin: Storage_48.desc,
wechatMenu: Storage_49.desc,
wechatPublicAutoReply: Storage_50.desc,
wechatPublicTag: Storage_51.desc,
wechatPublicTemplate: Storage_52.desc,
wechatQrCode: Storage_53.desc,
wechatUser: Storage_54.desc
wechatMpJump: Storage_50.desc,
wechatPublicAutoReply: Storage_51.desc,
wechatPublicTag: Storage_52.desc,
wechatPublicTemplate: Storage_53.desc,
wechatQrCode: Storage_54.desc,
wechatUser: Storage_55.desc
};

View File

@ -0,0 +1,182 @@
import { ForeignKey, JsonProjection } from "oak-domain/lib/types/DataType";
import { Q_DateValue, Q_BooleanValue, Q_NumberValue, Q_StringValue, NodeId, MakeFilter, ExprOp, ExpressionKey, JsonFilter, SubQueryPredicateMetadata } from "oak-domain/lib/types/Demand";
import { OneOf } from "oak-domain/lib/types/Polyfill";
import { FormCreateData, FormUpdateData, DeduceAggregation, Operation as OakOperation, Selection as OakSelection, MakeAction as OakMakeAction, AggregationResult } from "oak-domain/lib/types/Entity";
import { GenericAction } from "oak-domain/lib/actions/action";
import { Boolean, Datetime, Int, String } from "oak-domain/lib/types/DataType";
import { EntityShape } from "oak-domain/lib/types/Entity";
import * as Message from "../Message/Schema";
import * as ModiEntity from "../ModiEntity/Schema";
import * as OperEntity from "../OperEntity/Schema";
type Jump_wxa = {
path?: string;
query?: string;
env_version?: string;
};
export type OpSchema = EntityShape & {
messageId?: ForeignKey<"message"> | null;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;
expireInterval?: Int<2> | null;
expiresAt?: Datetime | null;
expired: Boolean;
};
export type OpAttr = keyof OpSchema;
export type Schema = EntityShape & {
messageId?: ForeignKey<"message"> | null;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;
expireInterval?: Int<2> | null;
expiresAt?: Datetime | null;
expired: Boolean;
message?: Message.Schema | null;
modiEntity$entity?: Array<ModiEntity.Schema>;
modiEntity$entity$$aggr?: AggregationResult<ModiEntity.Schema>;
operEntity$entity?: Array<OperEntity.Schema>;
operEntity$entity$$aggr?: AggregationResult<OperEntity.Schema>;
} & {
[A in ExpressionKey]?: any;
};
type AttrFilter = {
id: Q_StringValue;
$$createAt$$: Q_DateValue;
$$seq$$: Q_StringValue;
$$updateAt$$: Q_DateValue;
messageId: Q_StringValue;
message: Message.Filter;
jump_wxa: JsonFilter<Jump_wxa>;
openlink: Q_StringValue;
expireType: Q_NumberValue;
expireInterval: Q_NumberValue;
expiresAt: Q_DateValue;
expired: Q_BooleanValue;
modiEntity$entity: ModiEntity.Filter & SubQueryPredicateMetadata;
operEntity$entity: OperEntity.Filter & SubQueryPredicateMetadata;
};
export type Filter = MakeFilter<AttrFilter & ExprOp<OpAttr | string>>;
export type Projection = {
"#id"?: NodeId;
[k: string]: any;
id?: number;
$$createAt$$?: number;
$$updateAt$$?: number;
$$seq$$?: number;
messageId?: number;
message?: Message.Projection;
jump_wxa?: number | JsonProjection<Jump_wxa>;
openlink?: number;
expireType?: number;
expireInterval?: number;
expiresAt?: number;
expired?: number;
modiEntity$entity?: ModiEntity.Selection & {
$entity: "modiEntity";
};
modiEntity$entity$$aggr?: ModiEntity.Aggregation & {
$entity: "modiEntity";
};
operEntity$entity?: OperEntity.Selection & {
$entity: "operEntity";
};
operEntity$entity$$aggr?: OperEntity.Aggregation & {
$entity: "operEntity";
};
} & Partial<ExprOp<OpAttr | string>>;
type WechatMpJumpIdProjection = OneOf<{
id: number;
}>;
type MessageIdProjection = OneOf<{
messageId: number;
}>;
export type SortAttr = {
id: number;
} | {
$$createAt$$: number;
} | {
$$seq$$: number;
} | {
$$updateAt$$: number;
} | {
messageId: number;
} | {
message: Message.SortAttr;
} | {
jump_wxa: number;
} | {
openlink: number;
} | {
expireType: number;
} | {
expireInterval: number;
} | {
expiresAt: number;
} | {
expired: number;
} | {
[k: string]: any;
} | OneOf<ExprOp<OpAttr | string>>;
export type SortNode = {
$attr: SortAttr;
$direction?: "asc" | "desc";
};
export type Sorter = SortNode[];
export type SelectOperation<P extends Object = Projection> = OakSelection<"select", P, Filter, Sorter>;
export type Selection<P extends Object = Projection> = SelectOperation<P>;
export type Aggregation = DeduceAggregation<Projection, Filter, Sorter>;
export type CreateOperationData = FormCreateData<Omit<OpSchema, "messageId">> & (({
messageId?: never;
message?: Message.CreateSingleOperation;
} | {
messageId: ForeignKey<"message">;
message?: Message.UpdateOperation;
} | {
message?: never;
messageId?: ForeignKey<"message">;
})) & {
modiEntity$entity?: OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">>>;
operEntity$entity?: OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">>>;
};
export type CreateSingleOperation = OakOperation<"create", CreateOperationData>;
export type CreateMultipleOperation = OakOperation<"create", Array<CreateOperationData>>;
export type CreateOperation = CreateSingleOperation | CreateMultipleOperation;
export type UpdateOperationData = FormUpdateData<Omit<OpSchema, "messageId">> & (({
message?: Message.CreateSingleOperation;
messageId?: never;
} | {
message?: Message.UpdateOperation;
messageId?: never;
} | {
message?: Message.RemoveOperation;
messageId?: never;
} | {
message?: never;
messageId?: ForeignKey<"message"> | null;
})) & {
[k: string]: any;
modiEntity$entity?: OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<ModiEntity.CreateOperationData, "entity" | "entityId">>>;
operEntity$entity?: OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">[]> | Array<OakOperation<"create", Omit<OperEntity.CreateOperationData, "entity" | "entityId">>>;
};
export type UpdateOperation = OakOperation<"update" | string, UpdateOperationData, Filter, Sorter>;
export type RemoveOperationData = {} & (({
message?: Message.UpdateOperation | Message.RemoveOperation;
}));
export type RemoveOperation = OakOperation<"remove", RemoveOperationData, Filter, Sorter>;
export type Operation = CreateOperation | UpdateOperation | RemoveOperation;
export type MessageIdSubQuery = Selection<MessageIdProjection>;
export type WechatMpJumpIdSubQuery = Selection<WechatMpJumpIdProjection>;
export type EntityDef = {
Schema: Schema;
OpSchema: OpSchema;
Action: OakMakeAction<GenericAction> | string;
Selection: Selection;
Aggregation: Aggregation;
Operation: Operation;
Create: CreateOperation;
Update: UpdateOperation;
Remove: RemoveOperation;
CreateSingle: CreateSingleOperation;
CreateMulti: CreateMultipleOperation;
};
export {};

View File

@ -0,0 +1,2 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

View File

@ -0,0 +1,3 @@
import { StorageDesc } from "oak-domain/lib/types/Storage";
import { OpSchema } from "./Schema";
export declare const desc: StorageDesc<OpSchema>;

View File

@ -0,0 +1,60 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.desc = void 0;
const action_1 = require("oak-domain/lib/actions/action");
exports.desc = {
attributes: {
messageId: {
type: "ref",
ref: "message"
},
jump_wxa: {
notNull: true,
type: "object"
},
openlink: {
notNull: true,
type: "varchar",
params: {
length: 256
}
},
expireType: {
notNull: true,
type: "int",
params: {
width: 1,
signed: true
}
},
expireInterval: {
type: "int",
params: {
width: 2,
signed: true
}
},
expiresAt: {
type: "datetime"
},
expired: {
notNull: true,
type: "boolean"
}
},
actionType: "crud",
actions: action_1.genericActions,
indexes: [
{
name: 'index_uuid',
attributes: [
{
name: 'expired',
},
{
name: 'expiresAt',
},
],
}
]
};

View File

@ -0,0 +1 @@
{ "name": "短信跳小程序", "attr": { "message": "消息", "expired": "是否过期", "jump_wxa": "目标小程序信息", "openlink": "目标链接及参数", "expireType": "失效类型", "expireInterval": "到期失效的间隔", "expiresAt": "过期时间" } }

View File

@ -47,6 +47,7 @@ import * as UserSystem from "./UserSystem/Schema";
import * as UserWechatPublicTag from "./UserWechatPublicTag/Schema";
import * as WechatLogin from "./WechatLogin/Schema";
import * as WechatMenu from "./WechatMenu/Schema";
import * as WechatMpJump from "./WechatMpJump/Schema";
import * as WechatPublicAutoReply from "./WechatPublicAutoReply/Schema";
import * as WechatPublicTag from "./WechatPublicTag/Schema";
import * as WechatPublicTemplate from "./WechatPublicTemplate/Schema";
@ -296,6 +297,8 @@ export type LivestreamIdSubQuery = {
export type MessageIdSubQuery = {
[K in "$in" | "$nin"]?: (MessageSystem.MessageIdSubQuery & {
entity: "messageSystem";
}) | (WechatMpJump.MessageIdSubQuery & {
entity: "wechatMpJump";
}) | (Message.MessageIdSubQuery & {
entity: "message";
}) | any;
@ -473,6 +476,15 @@ export type WechatMenuIdSubQuery = {
entity: "wechatMenu";
}) | any;
};
export type WechatMpJumpIdSubQuery = {
[K in "$in" | "$nin"]?: (ModiEntity.WechatMpJumpIdSubQuery & {
entity: "modiEntity";
}) | (OperEntity.WechatMpJumpIdSubQuery & {
entity: "operEntity";
}) | (WechatMpJump.WechatMpJumpIdSubQuery & {
entity: "wechatMpJump";
}) | any;
};
export type WechatPublicAutoReplyIdSubQuery = {
[K in "$in" | "$nin"]?: (ModiEntity.WechatPublicAutoReplyIdSubQuery & {
entity: "modiEntity";

5
lib/triggers/wechatMpJump.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
import { Trigger } from 'oak-domain/lib/types/Trigger';
import { EntityDict } from '../oak-app-domain/EntityDict';
import { BRC } from '../types/RuntimeCxt';
declare const triggers: Trigger<EntityDict, 'wechatMpJump', BRC>[];
export default triggers;

View File

@ -0,0 +1,27 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = require("oak-domain/lib/utils/assert");
// import { wechatMpJump } from '@project/aspects/wechatMpJump';
const triggers = [
{
name: '当创建WechatMpJump时尝试为之创建一个wechatQrCode',
entity: 'wechatMpJump',
action: 'create',
when: 'before',
fn: async ({ operation }, context, params) => {
const { data, filter } = operation;
const fn = async (wechatMpJumpData) => {
const { jump_wxa, expiresAt, expireType, expireInterval } = wechatMpJumpData;
Object.assign(wechatMpJumpData, {});
};
if (data instanceof Array) {
(0, assert_1.assert)('授权不存在一对多的情况');
}
else {
await fn(data);
}
return 0;
},
},
];
exports.default = triggers;

View File

@ -56,6 +56,9 @@ import {
syncToLocale,
syncToWechat,
} from './userWechatPublicTag';
import {
wechatMpJump,
} from './wechatMpJump';
const aspectDict = {
mergeUser,
@ -110,6 +113,7 @@ const aspectDict = {
tagging,
syncToLocale,
syncToWechat,
wechatMpJump,
};
export default aspectDict;

View File

@ -0,0 +1,61 @@
import { EntityDict } from "../oak-app-domain";
import { BackendRuntimeContext } from "../context/BackendRuntimeContext";
import { OakUserException } from 'oak-domain/lib/types';
import { cloneDeep } from 'oak-domain/lib/utils/lodash';
import { applicationProjection } from '../types/Projection';
import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid';
import { assert } from 'oak-domain/lib/utils/assert';
import {
AppType,
WechatPublicConfig,
WechatMpConfig,
} from '../oak-app-domain/Application/Schema';
import {
WechatPublicInstance,
WechatMpInstance,
WechatSDK,
} from 'oak-external-sdk';
export async function wechatMpJump<
ED extends EntityDict,
Cxt extends BackendRuntimeContext<ED>
>(
params: {
applicationId: string;
jump_wxa: { path: string, query: string, env_version: string };
expireType: number;
expiresAt: number;
expireInterval: number;
},
context: Cxt
): Promise<any> {
const { applicationId, jump_wxa, expireType, expiresAt, expireInterval } = params;
assert(applicationId);
const [application] = await context.select(
'application',
{
data: cloneDeep(applicationProjection),
filter: {
id: applicationId,
},
},
{
dontCollect: true,
}
);
assert(application);
const { type, config } = application!;
assert(type === 'wechatMp');
const config2 = config as WechatMpConfig;
const { appId, appSecret } = config2;
const wechatInstance = WechatSDK.getInstance(
appId,
'wechatMp',
appSecret
) as WechatMpInstance;
const result = await wechatInstance.getURLScheme({ jump_wxa, expireType, expiresAt, expireInterval });
return result;
}

View File

@ -21,16 +21,16 @@ export default OakComponent({
},
listeners: {
'visitState,userId'(prev, next) {
const userId2 = this.features.token.getUserId(true);
if (next.userId === userId2) {
if (next.visitState === 'unvisited') {
this.execute('visit', false);
}
}
const userId2 = this.features.token.getUserId(true);
if (next.userId === userId2) {
if (next.visitState === 'unvisited') {
this.execute('visit', false);
}
}
},
},
methods: {
goPage() {
async goPage() {
const { router } = this.state;
const pathname = router?.pathname;
const props = router?.props || {};
@ -38,15 +38,29 @@ export default OakComponent({
if (!pathname) {
return;
}
try {
await this.redirectTo(
{
url: pathname,
...props,
this.redirectTo(
{
url: pathname,
...props,
},
state,
true
);
},
state,
true
);
}
catch (err: any) {
if (process.env.OAK_PLATFORM === 'wechatMp') {
if (err?.errMsg?.includes('navigateTo:fail')) {
this.features.message.setMessage({
type: 'warning',
content: '该功能请去电脑端操作网址https://www.gecomebox.com/console/',
});
return
}
}
throw err;
}
},
},
});

View File

@ -0,0 +1,60 @@
import { Boolean, Text, Datetime, Int, String } from 'oak-domain/lib/types/DataType';
import { EntityShape } from 'oak-domain/lib/types/Entity';
import { LocaleDef } from 'oak-domain/lib/types/Locale';
import { Index } from 'oak-domain/lib/types/Storage';
import { Schema as Message } from './Message';
import { EntityDesc } from 'oak-domain/lib/types/EntityDesc';
type Jump_wxa = {
path?: string;
query?: string;
env_version?: string;
};
export interface Schema extends EntityShape {
message?: Message;
jump_wxa: Jump_wxa;
openlink: String<256>;
expireType: Int<1>;//到期失效的 scheme 码失效类型失效时间0失效间隔天数1 ,默认0
expireInterval?: Int<2>;//expire_type 为 1 时必填,失效的间隔天数
expiresAt?: Datetime;//expire_type 为 0 时必填,失效的时间
expired: Boolean;
}
const entityDesc: EntityDesc<
Schema,
'',
'',
{
}
> = {
locales: {
zh_CN: {
name: '短信跳小程序',
attr: {
message: '消息',
expired: '是否过期',
jump_wxa: '目标小程序信息',
openlink: "目标链接及参数",
expireType: '失效类型',
expireInterval: '到期失效的间隔',
expiresAt: '过期时间',
},
},
},
indexes: [
{
name: 'index_uuid',
attributes: [
{
name: 'expired',
},
{
name: 'expiresAt',
},
],
},
],
};