From 4fe3e62dc1d031e1e228710abd11a1987c58daff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=9C=9D=E4=BC=9F?= <2211960668@qq.com> Date: Tue, 24 Oct 2023 10:27:28 +0800 Subject: [PATCH] account trigger --- es/triggers/account.d.ts | 5 ++++ es/triggers/account.js | 44 ++++++++++++++++++++++++++++ lib/triggers/account.d.ts | 5 ++++ lib/triggers/account.js | 46 +++++++++++++++++++++++++++++ src/triggers/account.ts | 61 +++++++++++++++++++++++++++++++++++++++ src/triggers/index.ts | 3 ++ 6 files changed, 164 insertions(+) create mode 100644 es/triggers/account.d.ts create mode 100644 es/triggers/account.js create mode 100644 lib/triggers/account.d.ts create mode 100644 lib/triggers/account.js create mode 100644 src/triggers/account.ts diff --git a/es/triggers/account.d.ts b/es/triggers/account.d.ts new file mode 100644 index 000000000..633d784d4 --- /dev/null +++ b/es/triggers/account.d.ts @@ -0,0 +1,5 @@ +import { EntityDict } from '../oak-app-domain/EntityDict'; +import { Trigger } from 'oak-domain/lib/types'; +import { BackendRuntimeContext } from '../context/BackendRuntimeContext'; +declare const triggers: Trigger>[]; +export default triggers; diff --git a/es/triggers/account.js b/es/triggers/account.js new file mode 100644 index 000000000..50e9033e3 --- /dev/null +++ b/es/triggers/account.js @@ -0,0 +1,44 @@ +import { assert } from 'oak-domain/lib/utils/assert'; +import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid'; +const triggers = [ + // 目前先这样授予关系 + { + name: '充值的时候,将用户赋予owner关系', + entity: 'account', + action: 'create', + when: 'before', + fn: async (event, context) => { + const { operation: { data, filter }, } = event; + assert(!(data instanceof Array)); + const accountId = data.id; + const [relation] = await context.select('relation', { + data: { + id: 1, + }, + filter: { + name: 'owner', + entity: 'account', + entityId: { + $exists: false, + } + } + }, { dontCollect: true }); + assert(relation); + const closeRootMode = context.openRootMode(); + await context.operate('userRelation', { + id: await generateNewIdAsync(), + action: 'create', + data: { + id: await generateNewIdAsync(), + relationId: relation.id, + userId: context.getCurrentUserId(), + entity: 'account', + entityId: accountId, + }, + }, {}); + closeRootMode(); + return 1; + }, + }, +]; +export default triggers; diff --git a/lib/triggers/account.d.ts b/lib/triggers/account.d.ts new file mode 100644 index 000000000..633d784d4 --- /dev/null +++ b/lib/triggers/account.d.ts @@ -0,0 +1,5 @@ +import { EntityDict } from '../oak-app-domain/EntityDict'; +import { Trigger } from 'oak-domain/lib/types'; +import { BackendRuntimeContext } from '../context/BackendRuntimeContext'; +declare const triggers: Trigger>[]; +export default triggers; diff --git a/lib/triggers/account.js b/lib/triggers/account.js new file mode 100644 index 000000000..5c034d41b --- /dev/null +++ b/lib/triggers/account.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const assert_1 = require("oak-domain/lib/utils/assert"); +const uuid_1 = require("oak-domain/lib/utils/uuid"); +const triggers = [ + // 目前先这样授予关系 + { + name: '充值的时候,将用户赋予owner关系', + entity: 'account', + action: 'create', + when: 'before', + fn: async (event, context) => { + const { operation: { data, filter }, } = event; + (0, assert_1.assert)(!(data instanceof Array)); + const accountId = data.id; + const [relation] = await context.select('relation', { + data: { + id: 1, + }, + filter: { + name: 'owner', + entity: 'account', + entityId: { + $exists: false, + } + } + }, { dontCollect: true }); + (0, assert_1.assert)(relation); + const closeRootMode = context.openRootMode(); + await context.operate('userRelation', { + id: await (0, uuid_1.generateNewIdAsync)(), + action: 'create', + data: { + id: await (0, uuid_1.generateNewIdAsync)(), + relationId: relation.id, + userId: context.getCurrentUserId(), + entity: 'account', + entityId: accountId, + }, + }, {}); + closeRootMode(); + return 1; + }, + }, +]; +exports.default = triggers; diff --git a/src/triggers/account.ts b/src/triggers/account.ts new file mode 100644 index 000000000..2746b67df --- /dev/null +++ b/src/triggers/account.ts @@ -0,0 +1,61 @@ +import { EntityDict } from '../oak-app-domain/EntityDict'; +import { Trigger } from 'oak-domain/lib/types'; +import { BackendRuntimeContext } from '../context/BackendRuntimeContext'; +import { assert } from 'oak-domain/lib/utils/assert'; +import { generateNewIdAsync } from 'oak-domain/lib/utils/uuid'; +import { OakPreConditionUnsetException } from 'oak-domain/lib/types'; +import { RuntimeCxt } from '../types/RuntimeCxt'; + +const triggers: Trigger< + EntityDict, + 'account', + BackendRuntimeContext + >[] = [ + // 目前先这样授予关系 + { + name: '充值的时候,将用户赋予owner关系', + entity: 'account', + action: 'create', + when: 'before', + fn: async (event: any, context: any) => { + const { + operation: { data, filter }, + } = event; + assert(!(data instanceof Array)); + const accountId = data.id!; + const [relation] = await context.select('relation', { + data: { + id: 1, + }, + filter: { + name: 'owner', + entity: 'account', + entityId: { + $exists: false, + } + } + }, { dontCollect: true }); + + assert(relation); + const closeRootMode = context.openRootMode(); + await context.operate( + 'userRelation', + { + id: await generateNewIdAsync(), + action: 'create', + data: { + id: await generateNewIdAsync(), + relationId: relation.id, + userId: context.getCurrentUserId(), + entity: 'account', + entityId: accountId!, + } as EntityDict['userRelation']['CreateSingle']['data'], + }, + {} + ); + closeRootMode(); + return 1; + }, + }, + ]; +export default triggers; diff --git a/src/triggers/index.ts b/src/triggers/index.ts index 0bd0b673f..8002a40bb 100644 --- a/src/triggers/index.ts +++ b/src/triggers/index.ts @@ -14,8 +14,11 @@ import sessionMessageTriggers from './sessionMessage'; import wechatMenuTriggers from './wechatMenu'; import wechatPublicTag from './wechatPublicTag'; +import accountTriggers from './account'; + export default [ + ...accountTriggers, ...applicationTriggers, ...addressTriggers, ...userTriggers,