midway-fatcms 0.0.1-beta.2 → 0.0.1-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +12 -0
- package/.prettierrc.js +4 -0
- package/README.md +7 -0
- package/dist/config/config.default.js +52 -15
- package/dist/configuration.d.ts +1 -0
- package/dist/configuration.js +33 -8
- package/dist/controller/base/BaseApiController.d.ts +1 -1
- package/dist/controller/base/BaseApiController.js +9 -6
- package/dist/controller/gateway/AsyncTaskController.d.ts +14 -0
- package/dist/controller/gateway/AsyncTaskController.js +108 -0
- package/dist/controller/gateway/CrudMtdGatewayController.d.ts +3 -3
- package/dist/controller/gateway/CrudMtdGatewayController.js +9 -6
- package/dist/controller/gateway/DocGatewayController.js +14 -9
- package/dist/controller/gateway/PublicApiController.js +4 -6
- package/dist/controller/gateway/StaticController.d.ts +2 -0
- package/dist/controller/gateway/StaticController.js +59 -40
- package/dist/controller/helpers.controller.d.ts +1 -1
- package/dist/controller/home.controller.js +2 -2
- package/dist/controller/manage/CrudStandardDesignApi.d.ts +1 -1
- package/dist/controller/manage/CrudStandardDesignApi.js +78 -75
- package/dist/controller/manage/DataDictManageApi.d.ts +1 -1
- package/dist/controller/manage/DeployManageApi.d.ts +1 -1
- package/dist/controller/manage/DeployManageApi.js +38 -34
- package/dist/controller/manage/MenuManageApi.js +1 -1
- package/dist/controller/manage/SuperAdminManageApi.d.ts +2 -2
- package/dist/controller/manage/SuperAdminManageApi.js +12 -8
- package/dist/controller/manage/SysConfigMangeApi.d.ts +1 -1
- package/dist/controller/manage/SysConfigMangeApi.js +6 -4
- package/dist/controller/manage/SystemInfoManageApi.d.ts +1 -1
- package/dist/controller/manage/SystemInfoManageApi.js +7 -1
- package/dist/controller/manage/UserAccountManageApi.d.ts +2 -2
- package/dist/controller/manage/UserAccountManageApi.js +5 -0
- package/dist/controller/manage/WorkbenchMangeApi.js +1 -1
- package/dist/controller/myinfo/AuthController.d.ts +0 -4
- package/dist/controller/myinfo/AuthController.js +1 -54
- package/dist/controller/render/AppRenderController.js +10 -4
- package/dist/controller/test.controller.d.ts +1 -1
- package/dist/controller/test.controller.js +5 -5
- package/dist/index.d.ts +34 -4
- package/dist/index.js +34 -4
- package/dist/libs/crud-pro/CrudPro.d.ts +1 -0
- package/dist/libs/crud-pro/CrudPro.js +5 -0
- package/dist/libs/crud-pro/defaultConfigs.js +2 -0
- package/dist/libs/crud-pro/interfaces.d.ts +7 -1
- package/dist/libs/crud-pro/models/ExecuteContext.d.ts +2 -1
- package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +8 -1
- package/dist/libs/crud-pro/models/ExecuteContextFunc.js +8 -0
- package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +1 -1
- package/dist/libs/crud-pro/models/ResModel.d.ts +16 -0
- package/dist/libs/crud-pro/models/ResModel.js +2 -0
- package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +1 -1
- package/dist/libs/crud-pro/models/TransactionSqlServer.js +1 -1
- package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +1 -0
- package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +22 -11
- package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +10 -9
- package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +1 -1
- package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +10 -12
- package/dist/libs/crud-pro/services/CrudProGenSqlService.js +14 -23
- package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +7 -6
- package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +2 -6
- package/dist/libs/crud-pro/services/CrudProServiceBase.js +3 -2
- package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +1 -0
- package/dist/libs/crud-pro/services/CrudProTableMetaService.js +31 -7
- package/dist/libs/crud-pro/utils/DatabaseName.js +24 -3
- package/dist/libs/crud-pro/utils/MixinUtils.js +1 -1
- package/dist/libs/crud-pro/utils/ValidateUtils.js +1 -1
- package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +2 -2
- package/dist/libs/global-config/global-config.d.ts +45 -0
- package/dist/libs/global-config/global-config.js +33 -0
- package/dist/libs/utils/errorToString.d.ts +2 -0
- package/dist/libs/utils/errorToString.js +57 -0
- package/dist/libs/utils/fatcms-request.js +2 -2
- package/dist/middleware/forbidden.middleware.js +4 -20
- package/dist/middleware/global.middleware.js +8 -1
- package/dist/models/AsyncTaskModel.d.ts +69 -0
- package/dist/models/AsyncTaskModel.js +26 -0
- package/dist/models/RedisKeys.d.ts +8 -0
- package/dist/models/RedisKeys.js +11 -0
- package/dist/models/SystemTables.d.ts +1 -3
- package/dist/models/SystemTables.js +2 -4
- package/dist/schedule/anonymousContext.d.ts +13 -0
- package/dist/schedule/anonymousContext.js +59 -0
- package/dist/schedule/index.d.ts +4 -3
- package/dist/schedule/index.js +8 -67
- package/dist/schedule/runSchedule.d.ts +15 -0
- package/dist/schedule/runSchedule.js +68 -0
- package/dist/schedule/scheduleNames.d.ts +13 -0
- package/dist/schedule/scheduleNames.js +17 -0
- package/dist/service/AuthService.js +8 -5
- package/dist/service/EnumInfoService.js +7 -4
- package/dist/service/FileCenterService.js +13 -9
- package/dist/service/SysConfigService.js +4 -2
- package/dist/service/UserAccountService.js +10 -6
- package/dist/service/UserSessionService.js +2 -1
- package/dist/service/VisitStatService.d.ts +1 -1
- package/dist/service/VisitStatService.js +20 -27
- package/dist/service/WorkbenchService.js +4 -2
- package/dist/service/anyapi/AnyApiService.js +4 -2
- package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +37 -0
- package/dist/service/asyncTask/AsyncTaskRunnerService.js +226 -0
- package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -0
- package/dist/service/asyncTask/AsyncTaskService.js +34 -0
- package/dist/service/crudstd/CrudStdService.d.ts +1 -0
- package/dist/service/crudstd/CrudStdService.js +34 -3
- package/dist/service/curd/CrudProQuick.d.ts +24 -0
- package/dist/service/curd/CrudProQuick.js +105 -0
- package/dist/service/curd/CurdMixByAccountService.js +12 -6
- package/dist/service/curd/CurdMixByDictService.js +4 -2
- package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +10 -1
- package/dist/service/curd/CurdMixByLinkToCustomService.js +72 -24
- package/dist/service/curd/CurdMixBySysConfigService.js +4 -2
- package/dist/service/curd/CurdMixByWorkbenchService.js +4 -2
- package/dist/service/curd/CurdMixService.d.ts +1 -1
- package/dist/service/curd/CurdMixService.js +2 -2
- package/dist/service/curd/CurdMixUtils.d.ts +7 -0
- package/dist/service/curd/CurdMixUtils.js +65 -28
- package/dist/service/curd/CurdProService.d.ts +2 -10
- package/dist/service/curd/CurdProService.js +31 -146
- package/dist/service/curd/fixCfgModel.d.ts +3 -0
- package/dist/service/curd/fixCfgModel.js +107 -0
- package/dist/service/proxyapi/ProxyApiLoadService.js +7 -4
- package/dist/views/404_app.html +31 -0
- package/dist/views/404_workbench.html +34 -0
- package/dist/views/static/favicon.ico +0 -0
- package/package.json +9 -2
- package/src/config/config.default.ts +58 -27
- package/src/configuration.ts +42 -9
- package/src/controller/base/BaseApiController.ts +19 -19
- package/src/controller/gateway/AnyApiGatewayController.ts +1 -1
- package/src/controller/gateway/AsyncTaskController.ts +83 -0
- package/src/controller/gateway/CrudMtdGatewayController.ts +17 -13
- package/src/controller/gateway/CrudStdGatewayController.ts +4 -4
- package/src/controller/gateway/DocGatewayController.ts +25 -17
- package/src/controller/gateway/FileController.ts +8 -9
- package/src/controller/gateway/ProxyApiGatewayController.ts +4 -4
- package/src/controller/gateway/PublicApiController.ts +19 -22
- package/src/controller/gateway/StaticController.ts +234 -242
- package/src/controller/helpers.controller.ts +1 -1
- package/src/controller/home.controller.ts +8 -15
- package/src/controller/manage/AnyApiMangeApi.ts +9 -9
- package/src/controller/manage/AppLogMangeApi.ts +3 -3
- package/src/controller/manage/AppMangeApi.ts +5 -5
- package/src/controller/manage/AppPageMangeApi.ts +3 -3
- package/src/controller/manage/AppSchemaHistoryApi.ts +1 -1
- package/src/controller/manage/CrudMethodsMangeApi.ts +3 -3
- package/src/controller/manage/CrudStandardDesignApi.ts +106 -113
- package/src/controller/manage/DataDictManageApi.ts +4 -4
- package/src/controller/manage/DeployManageApi.ts +85 -89
- package/src/controller/manage/DocLibManageApi.ts +3 -3
- package/src/controller/manage/DocManageApi.ts +8 -8
- package/src/controller/manage/MenuManageApi.ts +9 -14
- package/src/controller/manage/SuperAdminManageApi.ts +14 -13
- package/src/controller/manage/SysConfigMangeApi.ts +9 -9
- package/src/controller/manage/SystemInfoManageApi.ts +11 -6
- package/src/controller/manage/UserAccountManageApi.ts +8 -2
- package/src/controller/manage/WorkbenchMangeApi.ts +6 -6
- package/src/controller/myinfo/AuthController.ts +6 -72
- package/src/controller/render/AppRenderController.ts +24 -21
- package/src/controller/test.controller.ts +18 -18
- package/src/index.ts +38 -4
- package/src/libs/crud-pro/CrudPro.ts +7 -0
- package/src/libs/crud-pro/defaultConfigs.ts +2 -0
- package/src/libs/crud-pro/interfaces.ts +10 -3
- package/src/libs/crud-pro/models/ExecuteContext.ts +3 -3
- package/src/libs/crud-pro/models/ExecuteContextFunc.ts +11 -1
- package/src/libs/crud-pro/models/RequestCfgModel.ts +1 -1
- package/src/libs/crud-pro/models/RequestModel.ts +1 -1
- package/src/libs/crud-pro/models/ResModel.ts +19 -0
- package/src/libs/crud-pro/models/SqlCfgModel.ts +2 -2
- package/src/libs/crud-pro/models/Transaction.ts +8 -9
- package/src/libs/crud-pro/models/TransactionPostgres.ts +1 -1
- package/src/libs/crud-pro/models/TransactionSqlServer.ts +8 -13
- package/src/libs/crud-pro/services/CrudProCachedCfgService.ts +26 -19
- package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +38 -50
- package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +26 -45
- package/src/libs/crud-pro/services/CrudProGenSqlService.ts +23 -40
- package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +25 -29
- package/src/libs/crud-pro/services/CrudProServiceBase.ts +5 -9
- package/src/libs/crud-pro/services/CrudProTableMetaService.ts +35 -9
- package/src/libs/crud-pro/utils/DatabaseName.ts +35 -15
- package/src/libs/crud-pro/utils/DateTimeUtils.ts +2 -2
- package/src/libs/crud-pro/utils/MixinUtils.ts +1 -1
- package/src/libs/crud-pro/utils/ValidateUtils.ts +1 -3
- package/src/libs/crud-pro/utils/pool/MySQLUtils.ts +1 -1
- package/src/libs/crud-pro/utils/pool/PostgresUtils.ts +3 -3
- package/src/libs/crud-pro/utils/pool/SqlServerUtils.ts +3 -3
- package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +2 -2
- package/src/libs/global-config/global-config.ts +78 -0
- package/src/libs/utils/crypto-utils.ts +2 -4
- package/src/libs/utils/errorToString.ts +61 -0
- package/src/libs/utils/fatcms-request.ts +9 -21
- package/src/libs/utils/ordernum-utils.ts +2 -6
- package/src/libs/utils/parseConfig.ts +7 -15
- package/src/middleware/forbidden.middleware.ts +6 -25
- package/src/middleware/global.middleware.ts +18 -16
- package/src/models/AsyncTaskModel.ts +79 -0
- package/src/models/RedisKeys.ts +13 -0
- package/src/models/SystemTables.ts +1 -4
- package/src/models/bizmodels.ts +1 -2
- package/src/schedule/anonymousContext.ts +79 -0
- package/src/schedule/index.ts +11 -72
- package/src/schedule/runSchedule.ts +83 -0
- package/src/schedule/scheduleNames.ts +21 -0
- package/src/service/AuthService.ts +13 -8
- package/src/service/EnumInfoService.ts +8 -3
- package/src/service/FileCenterService.ts +12 -6
- package/src/service/SysConfigService.ts +10 -6
- package/src/service/UserAccountService.ts +14 -4
- package/src/service/UserSessionService.ts +5 -4
- package/src/service/VisitStatService.ts +57 -70
- package/src/service/WorkbenchService.ts +7 -2
- package/src/service/anyapi/AnyApiService.ts +11 -8
- package/src/service/asyncTask/AsyncTaskRunnerService.ts +249 -0
- package/src/service/asyncTask/AsyncTaskService.ts +21 -0
- package/src/service/base/BaseService.ts +2 -2
- package/src/service/crudstd/CrudStdService.ts +43 -5
- package/src/service/curd/CrudProQuick.ts +137 -0
- package/src/service/curd/CurdMixByAccountService.ts +14 -6
- package/src/service/curd/CurdMixByDictService.ts +8 -2
- package/src/service/curd/CurdMixByLinkToCustomService.ts +101 -50
- package/src/service/curd/CurdMixBySysConfigService.ts +7 -2
- package/src/service/curd/CurdMixByWorkbenchService.ts +6 -2
- package/src/service/curd/CurdMixService.ts +3 -3
- package/src/service/curd/CurdMixUtils.ts +82 -39
- package/src/service/curd/CurdProService.ts +45 -189
- package/src/service/curd/fixCfgModel.ts +139 -0
- package/src/service/proxyapi/ProxyApiLoadService.ts +12 -3
- package/src/views/404_app.html +31 -0
- package/src/views/404_workbench.html +34 -0
- package/src/views/static/favicon.ico +0 -0
- package/tsconfig.json +32 -0
- package/dist/controller/medstatistic/MedAdminController.d.ts +0 -35
- package/dist/controller/medstatistic/MedAdminController.js +0 -205
- package/dist/controller/medstatistic/MedClientController.d.ts +0 -28
- package/dist/controller/medstatistic/MedClientController.js +0 -188
- package/dist/controller/medstatistic/MedMessageService.d.ts +0 -19
- package/dist/controller/medstatistic/MedMessageService.js +0 -95
- package/dist/controller/medstatistic/MedScoreService.d.ts +0 -21
- package/dist/controller/medstatistic/MedScoreService.js +0 -107
- package/dist/controller/medstatistic/constants.d.ts +0 -32
- package/dist/controller/medstatistic/constants.js +0 -43
- package/src/controller/medstatistic/MedAdminController.ts +0 -221
- package/src/controller/medstatistic/MedClientController.ts +0 -188
- package/src/controller/medstatistic/MedMessageService.ts +0 -89
- package/src/controller/medstatistic/MedScoreService.ts +0 -108
- package/src/controller/medstatistic/constants.ts +0 -63
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { Middleware, IMiddleware } from '@midwayjs/core';
|
|
2
2
|
import { NextFunction, Context } from '@midwayjs/koa';
|
|
3
3
|
import * as _ from 'lodash';
|
|
4
|
-
import { Transaction } from '
|
|
5
|
-
import { UserSessionService } from '
|
|
6
|
-
import { WorkbenchService } from '
|
|
7
|
-
import { ISessionInfo, UserSessionInfo } from '
|
|
8
|
-
import { ICommonResult, CommonResult } from '
|
|
9
|
-
import {isEnableDebug, isEnableSuperAdmin} from '
|
|
10
|
-
import { ContextLogger } from '
|
|
4
|
+
import { Transaction } from '@/libs/crud-pro/models/Transaction';
|
|
5
|
+
import { UserSessionService } from '@/service/UserSessionService';
|
|
6
|
+
import { WorkbenchService } from '@/service/WorkbenchService';
|
|
7
|
+
import { ISessionInfo, UserSessionInfo } from '@/models/userSession';
|
|
8
|
+
import { ICommonResult, CommonResult } from '@/libs/utils/common-dto';
|
|
9
|
+
import { isEnableDebug, isEnableSuperAdmin } from '@/libs/utils/fatcms-request';
|
|
10
|
+
import { ContextLogger } from '@/models/contextLogger';
|
|
11
11
|
import { Stream } from 'node:stream';
|
|
12
|
-
import {VisitStatService} from
|
|
12
|
+
import { VisitStatService } from '@/service/VisitStatService';
|
|
13
13
|
|
|
14
14
|
function isFunction(fun: any): boolean {
|
|
15
15
|
return typeof fun === 'function';
|
|
@@ -141,8 +141,6 @@ async function getVisitStatService(ctx: Context): Promise<VisitStatService> {
|
|
|
141
141
|
return ctx.requestContext.getAsync(VisitStatService);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
|
|
145
|
-
|
|
146
144
|
/**
|
|
147
145
|
* 检查是否是超级管理员
|
|
148
146
|
* @param ctx
|
|
@@ -199,7 +197,6 @@ function handleDebugError(e: any, ctx: Context): ICommonResult {
|
|
|
199
197
|
return res;
|
|
200
198
|
}
|
|
201
199
|
|
|
202
|
-
|
|
203
200
|
async function trackRequest(ctx: Context) {
|
|
204
201
|
try {
|
|
205
202
|
const visitStatService = await getVisitStatService(ctx);
|
|
@@ -209,15 +206,22 @@ async function trackRequest(ctx: Context) {
|
|
|
209
206
|
}
|
|
210
207
|
}
|
|
211
208
|
|
|
209
|
+
const excludePathPrefix = ['/ns/static/', '/ns/api/helpers'];
|
|
210
|
+
|
|
212
211
|
/**
|
|
213
212
|
* 全局中间件
|
|
214
213
|
*/
|
|
215
214
|
@Middleware()
|
|
216
215
|
export class GlobalMiddleware implements IMiddleware<Context, NextFunction> {
|
|
217
|
-
|
|
218
216
|
match(ctx: Context): boolean {
|
|
219
217
|
const path: string = ctx.path;
|
|
220
|
-
|
|
218
|
+
for (let i = 0; i < excludePathPrefix.length; i++) {
|
|
219
|
+
const excludePathPrefix1 = excludePathPrefix[i];
|
|
220
|
+
if (path.startsWith(excludePathPrefix1)) {
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return true;
|
|
221
225
|
}
|
|
222
226
|
|
|
223
227
|
resolve() {
|
|
@@ -226,7 +230,6 @@ export class GlobalMiddleware implements IMiddleware<Context, NextFunction> {
|
|
|
226
230
|
ctx.transaction = new Transaction();
|
|
227
231
|
|
|
228
232
|
try {
|
|
229
|
-
|
|
230
233
|
// 支持的站点
|
|
231
234
|
const workbenchService = await getWorkbenchService(ctx);
|
|
232
235
|
const isSupportTheHost = await workbenchService.isSupportCurrentHostForForMiddleware();
|
|
@@ -242,7 +245,7 @@ export class GlobalMiddleware implements IMiddleware<Context, NextFunction> {
|
|
|
242
245
|
ctx.workbenchInfo = await workbenchService.getCurrentHostWorkbenchInfo();
|
|
243
246
|
|
|
244
247
|
// 数据埋点
|
|
245
|
-
await trackRequest(ctx)
|
|
248
|
+
await trackRequest(ctx);
|
|
246
249
|
|
|
247
250
|
const res0 = await next();
|
|
248
251
|
|
|
@@ -256,7 +259,6 @@ export class GlobalMiddleware implements IMiddleware<Context, NextFunction> {
|
|
|
256
259
|
return res0;
|
|
257
260
|
}
|
|
258
261
|
|
|
259
|
-
|
|
260
262
|
// 其他:普通的JSON数据
|
|
261
263
|
let res = handleExecuteSqlContext(res0);
|
|
262
264
|
res = handleNullRes(res);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface SysAsyncTaskEntity {
|
|
2
|
+
id: number;
|
|
3
|
+
task_uuid: string;
|
|
4
|
+
task_name: string;
|
|
5
|
+
task_description: string | null;
|
|
6
|
+
task_type: string;
|
|
7
|
+
task_status: SysAsyncTaskStatus;
|
|
8
|
+
input_params: any;
|
|
9
|
+
output_result: any | null;
|
|
10
|
+
|
|
11
|
+
input_file_path: string | null;
|
|
12
|
+
input_file_format: SysAsyncFileFormat | null;
|
|
13
|
+
input_file_size: number | null;
|
|
14
|
+
|
|
15
|
+
output_file_path: string | null;
|
|
16
|
+
output_file_format: SysAsyncFileFormat | null;
|
|
17
|
+
output_file_size: number | null;
|
|
18
|
+
|
|
19
|
+
input_total_records: number | null;
|
|
20
|
+
output_total_records: number | null;
|
|
21
|
+
processed_records: number;
|
|
22
|
+
progress: number;
|
|
23
|
+
error_message: string | null;
|
|
24
|
+
error_records: any | null;
|
|
25
|
+
created_by: string | null;
|
|
26
|
+
priority: number;
|
|
27
|
+
retry_count: number;
|
|
28
|
+
max_retries: number;
|
|
29
|
+
|
|
30
|
+
parent_task_id: number | null;
|
|
31
|
+
created_at: Date;
|
|
32
|
+
started_at: Date | null;
|
|
33
|
+
updated_at: Date;
|
|
34
|
+
expired_at: Date | null;
|
|
35
|
+
completed_at: Date | null;
|
|
36
|
+
created_user_session: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type SysAsyncTaskPartial = Partial<SysAsyncTaskEntity>;
|
|
40
|
+
|
|
41
|
+
export enum SysAsyncTaskStatus {
|
|
42
|
+
PENDING = 'PENDING', // 等待中,还未进入排队
|
|
43
|
+
RUNNING = 'RUNNING', // 运行中
|
|
44
|
+
SUCCEEDED = 'SUCCEEDED', // 终止状态:全部成功
|
|
45
|
+
PART_SUCCEEDED = 'PART_SUCCEEDED',// 终止状态:部分成功
|
|
46
|
+
FAILED = 'FAILED', // 终止状态:失败
|
|
47
|
+
CANCELLED = 'CANCELLED', // 取消
|
|
48
|
+
PAUSED = 'PAUSED', // 暂停
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export enum SysAsyncFileFormat {
|
|
52
|
+
XLSX = 'xlsx',
|
|
53
|
+
CSV = 'csv',
|
|
54
|
+
JSON = 'json',
|
|
55
|
+
PDF = 'pdf',
|
|
56
|
+
TXT = 'txt',
|
|
57
|
+
XML = 'xml',
|
|
58
|
+
ZIP = 'zip',
|
|
59
|
+
HTML = 'html',
|
|
60
|
+
PNG = 'png',
|
|
61
|
+
JPG = 'jpg',
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface ISysAsyncTaskHandler {
|
|
65
|
+
execute(asyncTaskContext: SysAsyncTaskContext): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface SysAsyncTaskContext {
|
|
69
|
+
task: SysAsyncTaskEntity;
|
|
70
|
+
updateTaskStatus: (sysAsyncTaskPartial: SysAsyncTaskPartial) => any;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export interface SysAsyncTaskHandlerConfig {
|
|
74
|
+
taskType: string;
|
|
75
|
+
handler: ISysAsyncTaskHandler;
|
|
76
|
+
maxRetries?: number;
|
|
77
|
+
priority?: number;
|
|
78
|
+
expireSeconds?: number;
|
|
79
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const RedisKeys = {
|
|
4
|
+
ASYNC_TASK_LOCK : "FatAsyncTaskLock",
|
|
5
|
+
ASYNC_TASK_UPDATE_TIME : "FatAsyncTaskUpdateTime",
|
|
6
|
+
USER_SESSION_PREFIX : "FatUserSession_",
|
|
7
|
+
VISIT_STAT_LOCK_PREFIX : "FatVsLock_",
|
|
8
|
+
VISIT_STAT_DATE_PREFIX : "FatVsDate_",
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
RedisKeys
|
|
13
|
+
}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import {SqlDbType} from "../libs/crud-pro/models/keys";
|
|
2
|
-
|
|
3
1
|
export const SystemTables = {
|
|
4
2
|
sys_workbench: 'sys_workbench',
|
|
5
3
|
sys_user_account: 'sys_user_account',
|
|
@@ -22,9 +20,8 @@ export const SystemTables = {
|
|
|
22
20
|
sys_anyapi: 'sys_anyapi',
|
|
23
21
|
sys_proxyapi: 'sys_proxyapi',
|
|
24
22
|
sys_visit_stats: 'sys_visit_stats',
|
|
23
|
+
sys_async_tasks: 'sys_async_tasks',
|
|
25
24
|
};
|
|
26
25
|
|
|
27
|
-
export const SystemDbName = 'fatcms';
|
|
28
|
-
export const SystemDbType = SqlDbType.mysql;
|
|
29
26
|
|
|
30
27
|
export const SystemDevOpsWorkbench = 'devops';
|
package/src/models/bizmodels.ts
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import * as koa from '@midwayjs/koa';
|
|
2
|
+
import {ContextLogger} from "@/models/contextLogger";
|
|
3
|
+
import {Transaction} from "@/libs/crud-pro/models/Transaction";
|
|
4
|
+
import {ISessionInfo, SYS_ACCOUNT_TYPE, UserSessionInfo} from "@/models/userSession";
|
|
5
|
+
import {IWorkbenchEntity} from "@/models/SystemEntities";
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const anonymousUserInfo:ISessionInfo = {
|
|
9
|
+
nickName: 'anonymous_user',
|
|
10
|
+
avatar: '',
|
|
11
|
+
roleCodes: [],
|
|
12
|
+
functionCodes: [],
|
|
13
|
+
loginName: 'anonymous_user',
|
|
14
|
+
sessionId: '',
|
|
15
|
+
accountId: '',
|
|
16
|
+
workbenchCode: '',
|
|
17
|
+
accountType: SYS_ACCOUNT_TYPE,
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const anonymousWorkbenchInfo: IWorkbenchEntity = {
|
|
21
|
+
id: 0,
|
|
22
|
+
workbench_code: 'anonymous_workbench',
|
|
23
|
+
workbench_name: 'anonymous_workbench',
|
|
24
|
+
workbench_domain: 'anonymous_workbench',
|
|
25
|
+
workbench_desc: 'anonymous_workbench',
|
|
26
|
+
html_content: 'anonymous_workbench',
|
|
27
|
+
status: 1,
|
|
28
|
+
workbench_type: 0,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
export type RunServiceAtAnonymousContextRunner = (ctx: koa.IMidwayKoaContext)=>any;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class AnonymousContext {
|
|
36
|
+
private app: koa.Application;
|
|
37
|
+
|
|
38
|
+
setApp(app: koa.Application){
|
|
39
|
+
this.app = app;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
getApp(){
|
|
43
|
+
return this.app;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
async runServiceAtAnonymousContext( runner: RunServiceAtAnonymousContextRunner) {
|
|
48
|
+
const app = this.app;
|
|
49
|
+
const ctx: koa.IMidwayKoaContext = app.createAnonymousContext();
|
|
50
|
+
|
|
51
|
+
ctx.app = app;
|
|
52
|
+
ctx.contextLogger = new ContextLogger(ctx as any);
|
|
53
|
+
ctx.transaction = new Transaction();
|
|
54
|
+
ctx.userSession = new UserSessionInfo(anonymousUserInfo, true);
|
|
55
|
+
ctx.workbenchInfo = anonymousWorkbenchInfo;
|
|
56
|
+
|
|
57
|
+
let result: any = null;
|
|
58
|
+
let error: any = null;
|
|
59
|
+
try {
|
|
60
|
+
result = await runner(ctx);
|
|
61
|
+
} catch (e) {
|
|
62
|
+
error = e;
|
|
63
|
+
ctx.logger.error(`runServiceAtAnonymousContext error `, e);
|
|
64
|
+
} finally {
|
|
65
|
+
await ctx.transaction.releaseTx();
|
|
66
|
+
}
|
|
67
|
+
return {result: result, error: error};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
const ANONYMOUS_CONTEXT = new AnonymousContext()
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
export {
|
|
78
|
+
ANONYMOUS_CONTEXT
|
|
79
|
+
}
|
package/src/schedule/index.ts
CHANGED
|
@@ -1,73 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
functionCodes: [],
|
|
13
|
-
loginName: 'schedule_user',
|
|
14
|
-
sessionId: '',
|
|
15
|
-
accountId: '',
|
|
16
|
-
workbenchCode: '',
|
|
17
|
-
accountType: SYS_ACCOUNT_TYPE,
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const scheduleWorkbenchInfo: IWorkbenchEntity = {
|
|
21
|
-
id: 0,
|
|
22
|
-
workbench_code: 'schedule_workbench',
|
|
23
|
-
workbench_name: 'schedule_workbench',
|
|
24
|
-
workbench_domain: 'schedule_workbench',
|
|
25
|
-
workbench_desc: 'schedule_workbench',
|
|
26
|
-
html_content: 'schedule_workbench',
|
|
27
|
-
status: 1,
|
|
28
|
-
workbench_type: 0,
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
async function runScheduleService(app: koa.Application, serviceName: string) {
|
|
32
|
-
const ctx = app.createAnonymousContext();
|
|
33
|
-
|
|
34
|
-
ctx.app = app;
|
|
35
|
-
ctx.contextLogger = new ContextLogger(ctx as any);
|
|
36
|
-
ctx.transaction = new Transaction();
|
|
37
|
-
ctx.userSession = new UserSessionInfo(scheduleUserInfo, true);
|
|
38
|
-
ctx.workbenchInfo = scheduleWorkbenchInfo;
|
|
39
|
-
|
|
40
|
-
try {
|
|
41
|
-
const serviceObject: IScheduleService = await ctx.requestContext.getAsync(serviceName);
|
|
42
|
-
if (serviceObject && serviceObject.runBySchedule) {
|
|
43
|
-
await serviceObject.runBySchedule();
|
|
44
|
-
} else {
|
|
45
|
-
ctx.logger.error(`runSchedule error , serviceName = ${serviceName}, 没有找到服务`);
|
|
46
|
-
}
|
|
47
|
-
} catch (e) {
|
|
48
|
-
ctx.logger.error(`runSchedule error , serviceName = ${serviceName}`, e);
|
|
49
|
-
} finally {
|
|
50
|
-
await ctx.transaction.releaseTx();
|
|
51
|
-
}
|
|
1
|
+
import {SCHEDULE_QUEUE, runScheduleTaskOnce} from './runSchedule'
|
|
2
|
+
import {ANONYMOUS_CONTEXT} from './anonymousContext'
|
|
3
|
+
import {
|
|
4
|
+
INNER_SCHEDULE_INTERVAL
|
|
5
|
+
} from './scheduleNames'
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
INNER_SCHEDULE_INTERVAL,
|
|
9
|
+
ANONYMOUS_CONTEXT,
|
|
10
|
+
SCHEDULE_QUEUE,
|
|
11
|
+
runScheduleTaskOnce
|
|
52
12
|
}
|
|
53
|
-
|
|
54
|
-
async function runSchedule(app: koa.Application, serviceList: string[]) {
|
|
55
|
-
for (let i = 0; i < serviceList.length; i++) {
|
|
56
|
-
const serviceName = serviceList[i];
|
|
57
|
-
try {
|
|
58
|
-
await runScheduleService(app, serviceName);
|
|
59
|
-
} catch (e) {
|
|
60
|
-
const ctx = app.createAnonymousContext();
|
|
61
|
-
ctx.logger.error(`runSchedule error , serviceName = ${serviceName}`, e);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async function startSchedule(app: koa.Application, serviceList: string[]) {
|
|
67
|
-
await runSchedule(app, serviceList);
|
|
68
|
-
setInterval(() => {
|
|
69
|
-
runSchedule(app, serviceList);
|
|
70
|
-
}, 2 * 60 * 1000);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export { startSchedule };
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import * as koa from '@midwayjs/koa';
|
|
2
|
+
import {IScheduleService} from '@/interface';
|
|
3
|
+
import {ANONYMOUS_CONTEXT} from "./anonymousContext";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
// 上次执行时间
|
|
7
|
+
const lastExecuteTimeMap = {};
|
|
8
|
+
|
|
9
|
+
const DEFAULT_SCHEDULE_INTERVAL = 2 * 60 * 1000;
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
async function runScheduleTaskOnce(serviceName: string) {
|
|
13
|
+
|
|
14
|
+
return await ANONYMOUS_CONTEXT.runServiceAtAnonymousContext(async (ctx: koa.IMidwayKoaContext) => {
|
|
15
|
+
const serviceObject: IScheduleService = await ctx.requestContext.getAsync(serviceName);
|
|
16
|
+
if (serviceObject && serviceObject.runBySchedule) {
|
|
17
|
+
await serviceObject.runBySchedule();
|
|
18
|
+
} else {
|
|
19
|
+
ctx.logger.error(`runSchedule error , serviceName = ${serviceName}, 没有找到服务`);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class ScheduleQueue {
|
|
26
|
+
private scheduleIntervalMap: Map<string, number> = new Map();
|
|
27
|
+
|
|
28
|
+
public setScheduleTask(serviceName: string, intervalTime: number) {
|
|
29
|
+
this.scheduleIntervalMap.set(serviceName, intervalTime);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public removeScheduleTask(serviceName: string) {
|
|
33
|
+
this.scheduleIntervalMap.delete(serviceName);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private isAlreadyTimeToExecute(serviceName: string): boolean {
|
|
37
|
+
if (!lastExecuteTimeMap[serviceName]) {
|
|
38
|
+
return true; // 可以执行
|
|
39
|
+
}
|
|
40
|
+
const intervalTime1 = this.scheduleIntervalMap.get(serviceName);
|
|
41
|
+
const intervalTime = intervalTime1 || DEFAULT_SCHEDULE_INTERVAL; // 时间间隔
|
|
42
|
+
const lastExecuteTime = lastExecuteTimeMap[serviceName];
|
|
43
|
+
return (Date.now() - lastExecuteTime) >= intervalTime;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
private async runScheduleTaskOnceCheckTime(serviceName: string) {
|
|
48
|
+
// 还没有到可以执行时间
|
|
49
|
+
if (!this.isAlreadyTimeToExecute(serviceName)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
lastExecuteTimeMap[serviceName] = Date.now();
|
|
53
|
+
await runScheduleTaskOnce(serviceName);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private async runScheduleServiceList() {
|
|
57
|
+
const serviceListKeys = this.scheduleIntervalMap.keys();
|
|
58
|
+
const serviceList = [...serviceListKeys];
|
|
59
|
+
for (let i = 0; i < serviceList.length; i++) {
|
|
60
|
+
const serviceName = serviceList[i];
|
|
61
|
+
try {
|
|
62
|
+
await this.runScheduleTaskOnceCheckTime(serviceName);
|
|
63
|
+
} catch (e) {
|
|
64
|
+
ANONYMOUS_CONTEXT.getApp().getCoreLogger().error(`runSchedule error , serviceName = ${serviceName}`, e);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
public async startScheduleLoop() {
|
|
71
|
+
await this.runScheduleServiceList();
|
|
72
|
+
setInterval(() => {
|
|
73
|
+
this.runScheduleServiceList();
|
|
74
|
+
}, 1000); // 最少1秒执行一次
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
const SCHEDULE_QUEUE = new ScheduleQueue();
|
|
82
|
+
|
|
83
|
+
export {SCHEDULE_QUEUE, runScheduleTaskOnce};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
const INNER_SCHEDULE_INTERVAL = {
|
|
3
|
+
proxyApiLoadService: 2 * 60 * 1000, // 2分钟重新加载一次,
|
|
4
|
+
workbenchService: 60 * 1000, // 1分钟重新加载一次,
|
|
5
|
+
visitStatService: 10 * 60 * 1000, // 10分钟重新加载一次,
|
|
6
|
+
asyncTaskRunnerService: 1000, // 1s可以执行
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const INNER_SCHEDULE_NAMES = {
|
|
10
|
+
proxyApiLoadService: 'proxyApiLoadService',
|
|
11
|
+
workbenchService: 'workbenchService',
|
|
12
|
+
visitStatService: "visitStatService",
|
|
13
|
+
asyncTaskRunnerService: "asyncTaskRunnerService",
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
INNER_SCHEDULE_INTERVAL,
|
|
20
|
+
INNER_SCHEDULE_NAMES
|
|
21
|
+
}
|
|
@@ -5,12 +5,13 @@ import { CurdMixService } from './curd/CurdMixService';
|
|
|
5
5
|
import * as md5 from 'md5';
|
|
6
6
|
import { UserAccountService } from './UserAccountService';
|
|
7
7
|
import { createUniqueId } from '../libs/utils/functions';
|
|
8
|
-
import {IConsumerUserInfo, ISessionInfo, SYS_ACCOUNT_TYPE} from '../models/userSession';
|
|
9
|
-
import {
|
|
8
|
+
import { IConsumerUserInfo, ISessionInfo, SYS_ACCOUNT_TYPE } from '../models/userSession';
|
|
9
|
+
import { SystemTables } from '../models/SystemTables';
|
|
10
10
|
import { UserSessionService } from './UserSessionService';
|
|
11
11
|
import { CommonResult } from '../libs/utils/common-dto';
|
|
12
12
|
import { isEnableSuperAdmin } from "../libs/utils/fatcms-request";
|
|
13
|
-
import {CommonException} from "../libs/crud-pro/exceptions";
|
|
13
|
+
import { CommonException } from "../libs/crud-pro/exceptions";
|
|
14
|
+
import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
|
|
14
15
|
|
|
15
16
|
@Provide()
|
|
16
17
|
export class AuthService {
|
|
@@ -94,7 +95,7 @@ export class AuthService {
|
|
|
94
95
|
nickName: consumerUserInfo.nickName,
|
|
95
96
|
avatar: consumerUserInfo.avatar,
|
|
96
97
|
roleCodes: [],
|
|
97
|
-
functionCodes:[],
|
|
98
|
+
functionCodes: [],
|
|
98
99
|
loginName: consumerUserInfo.loginName,
|
|
99
100
|
sessionId,
|
|
100
101
|
accountId: consumerUserInfo.accountId,
|
|
@@ -141,7 +142,7 @@ export class AuthService {
|
|
|
141
142
|
sessionId,
|
|
142
143
|
accountId,
|
|
143
144
|
workbenchCode,
|
|
144
|
-
accountType: SYS_ACCOUNT_TYPE
|
|
145
|
+
accountType: SYS_ACCOUNT_TYPE,
|
|
145
146
|
};
|
|
146
147
|
|
|
147
148
|
await this.userSessionService.saveUserSession(sessionInfo);
|
|
@@ -203,6 +204,8 @@ export class AuthService {
|
|
|
203
204
|
* @private
|
|
204
205
|
*/
|
|
205
206
|
private async queryUserRoleCodeList(accountId: string): Promise<string[]> {
|
|
207
|
+
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
208
|
+
|
|
206
209
|
const res = await this.curdMixService.executeCrudByCfg(
|
|
207
210
|
{
|
|
208
211
|
condition: { account_id: accountId },
|
|
@@ -212,7 +215,7 @@ export class AuthService {
|
|
|
212
215
|
sqlTable: SystemTables.sys_perm_user_role,
|
|
213
216
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY,
|
|
214
217
|
sqlDatabase: SystemDbName,
|
|
215
|
-
|
|
218
|
+
sqlDbType: SystemDbType,
|
|
216
219
|
}
|
|
217
220
|
);
|
|
218
221
|
const rows = res.getResModel().rows || [];
|
|
@@ -232,6 +235,8 @@ export class AuthService {
|
|
|
232
235
|
return [];
|
|
233
236
|
}
|
|
234
237
|
|
|
238
|
+
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
239
|
+
|
|
235
240
|
const res = await this.curdMixService.executeCrudByCfg(
|
|
236
241
|
{
|
|
237
242
|
condition: { role_code: { $in: roleCodeList } },
|
|
@@ -241,7 +246,7 @@ export class AuthService {
|
|
|
241
246
|
sqlTable: SystemTables.sys_perm_role_func,
|
|
242
247
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY,
|
|
243
248
|
sqlDatabase: SystemDbName,
|
|
244
|
-
|
|
249
|
+
sqlDbType: SystemDbType,
|
|
245
250
|
}
|
|
246
251
|
);
|
|
247
252
|
const rows = res.getResModel().rows || [];
|
|
@@ -259,7 +264,7 @@ export class AuthService {
|
|
|
259
264
|
const oldSessionId = sessionInfo.sessionId;
|
|
260
265
|
|
|
261
266
|
const sessionId = createUniqueId();
|
|
262
|
-
const newSessionInfo: ISessionInfo = {...sessionInfo, sessionId};
|
|
267
|
+
const newSessionInfo: ISessionInfo = { ...sessionInfo, sessionId };
|
|
263
268
|
|
|
264
269
|
await this.userSessionService.saveUserSession(newSessionInfo);
|
|
265
270
|
|
|
@@ -3,10 +3,11 @@ import {Context} from '@midwayjs/koa';
|
|
|
3
3
|
import {KeysOfSimpleSQL} from '../libs/crud-pro/models/keys';
|
|
4
4
|
import {CurdProService} from './curd/CurdProService';
|
|
5
5
|
import {RelatedType} from './curd/CurdMixUtils';
|
|
6
|
-
import {
|
|
6
|
+
import {SystemTables} from '../models/SystemTables';
|
|
7
7
|
import {parseConfigContentToEnumInfo, IEnumInfo} from '../libs/utils/parseConfig';
|
|
8
8
|
import {RedisCacheService} from "./base/RedisCacheService";
|
|
9
9
|
import {CurdMixByLinkToCustomService} from "./curd/CurdMixByLinkToCustomService";
|
|
10
|
+
import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
interface IQueryEnumInfo {
|
|
@@ -88,6 +89,8 @@ export class EnumInfoService {
|
|
|
88
89
|
}
|
|
89
90
|
|
|
90
91
|
private async queryEnumInfoBySysCfgEnum(code: string): Promise<IEnumInfo[]> {
|
|
92
|
+
const {SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
93
|
+
|
|
91
94
|
const res1 = await this.curdProService.executeCrudByCfg(
|
|
92
95
|
{
|
|
93
96
|
condition: { config_code: code },
|
|
@@ -96,7 +99,7 @@ export class EnumInfoService {
|
|
|
96
99
|
sqlTable: SystemTables.sys_configs,
|
|
97
100
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY_ONE,
|
|
98
101
|
sqlDatabase: SystemDbName,
|
|
99
|
-
|
|
102
|
+
sqlDbType: SystemDbType,
|
|
100
103
|
}
|
|
101
104
|
);
|
|
102
105
|
const obj = res1.getOneObj();
|
|
@@ -109,6 +112,8 @@ export class EnumInfoService {
|
|
|
109
112
|
}
|
|
110
113
|
|
|
111
114
|
private async queryEnumInfoItemByDict(code: string): Promise<IEnumInfo[]> {
|
|
115
|
+
const {SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
116
|
+
|
|
112
117
|
const res1 = await this.curdProService.executeCrudByCfg(
|
|
113
118
|
{
|
|
114
119
|
condition: { dict_code: code },
|
|
@@ -117,7 +122,7 @@ export class EnumInfoService {
|
|
|
117
122
|
sqlTable: SystemTables.sys_data_dict_item,
|
|
118
123
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY,
|
|
119
124
|
sqlDatabase: SystemDbName,
|
|
120
|
-
|
|
125
|
+
sqlDbType: SystemDbType,
|
|
121
126
|
}
|
|
122
127
|
);
|
|
123
128
|
const obj = res1.getResRows();
|
|
@@ -10,7 +10,7 @@ import { KeysOfSimpleSQL, KeysOfValidators } from '../libs/crud-pro/models/keys'
|
|
|
10
10
|
import { AccessType, IEntityCommonInfo, UploadCategoryType } from '../models/bizmodels';
|
|
11
11
|
import { IRequestCfgModel } from '../libs/crud-pro/interfaces';
|
|
12
12
|
import { BaseService } from './base/BaseService';
|
|
13
|
-
import {
|
|
13
|
+
import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
|
|
14
14
|
|
|
15
15
|
function getSuffix(s: string): string {
|
|
16
16
|
if (s) {
|
|
@@ -107,12 +107,14 @@ class FileDB {
|
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
async getFileInfo(fileKey: string): Promise<IFileInfo> {
|
|
110
|
+
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
111
|
+
|
|
110
112
|
const condition: any = { file_key: fileKey };
|
|
111
113
|
const cfgModel: IRequestCfgModel = {
|
|
112
114
|
sqlTable: 'sys_file',
|
|
113
115
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY_ONE,
|
|
114
116
|
sqlDatabase: SystemDbName,
|
|
115
|
-
|
|
117
|
+
sqlDbType: SystemDbType,
|
|
116
118
|
validateCfg: {
|
|
117
119
|
'condition.file_key': [KeysOfValidators.REQUIRED, KeysOfValidators.STRING],
|
|
118
120
|
},
|
|
@@ -123,11 +125,13 @@ class FileDB {
|
|
|
123
125
|
}
|
|
124
126
|
|
|
125
127
|
async saveFileInfo(fileInfo: IFileInfo) {
|
|
128
|
+
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
129
|
+
|
|
126
130
|
const cfgModel = {
|
|
127
131
|
sqlTable: 'sys_file',
|
|
128
132
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_INSERT,
|
|
129
133
|
sqlDatabase: SystemDbName,
|
|
130
|
-
|
|
134
|
+
sqlDbType: SystemDbType,
|
|
131
135
|
};
|
|
132
136
|
return await this.curdMixService.executeCrudByCfg(
|
|
133
137
|
{
|
|
@@ -141,21 +145,23 @@ class FileDB {
|
|
|
141
145
|
}
|
|
142
146
|
|
|
143
147
|
async saveAssetsLog(fileInfo: IFileInfo) {
|
|
148
|
+
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
144
149
|
const cfgModel = {
|
|
145
150
|
sqlTable: 'sys_assets_log',
|
|
146
151
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_INSERT,
|
|
147
152
|
sqlDatabase: SystemDbName,
|
|
148
|
-
|
|
153
|
+
sqlDbType: SystemDbType,
|
|
149
154
|
};
|
|
150
155
|
return await this.curdMixService.executeCrudByCfg({ data: fileInfo }, cfgModel);
|
|
151
156
|
}
|
|
152
157
|
|
|
153
158
|
async deleteFileInfo(id: number) {
|
|
159
|
+
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
154
160
|
const cfgModel: IRequestCfgModel = {
|
|
155
161
|
sqlTable: 'sys_file',
|
|
156
162
|
sqlSimpleName: KeysOfSimpleSQL.SIMPLE_DELETE,
|
|
157
163
|
sqlDatabase: SystemDbName,
|
|
158
|
-
|
|
164
|
+
sqlDbType: SystemDbType,
|
|
159
165
|
validateCfg: {
|
|
160
166
|
'condition.id': [KeysOfValidators.REQUIRED, KeysOfValidators.NUMBER],
|
|
161
167
|
},
|
|
@@ -200,7 +206,7 @@ function toUploadOriginByReferer(referer: string): string {
|
|
|
200
206
|
return 'doc-editor';
|
|
201
207
|
}
|
|
202
208
|
if (pathname.startsWith('/pages/devops/file-manage')) {
|
|
203
|
-
return
|
|
209
|
+
return 'file-manage';
|
|
204
210
|
}
|
|
205
211
|
} catch (error) {
|
|
206
212
|
console.error('toUploadOriginByReferer', error);
|