midway-fatcms 0.0.1-beta.2 → 0.0.1-beta.22
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 +14 -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/CrudStdGatewayController.d.ts +5 -5
- 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/AnyApiMangeApi.js +2 -2
- package/dist/controller/manage/AppLogMangeApi.js +2 -2
- package/dist/controller/manage/AppMangeApi.js +2 -2
- package/dist/controller/manage/AppPageMangeApi.js +2 -2
- package/dist/controller/manage/AppSchemaHistoryApi.js +2 -2
- package/dist/controller/manage/CrudMethodsMangeApi.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/DataDictManageApi.js +1 -1
- package/dist/controller/manage/DeployManageApi.d.ts +1 -1
- package/dist/controller/manage/DeployManageApi.js +38 -34
- package/dist/controller/manage/DocLibManageApi.js +2 -2
- package/dist/controller/manage/DocManageApi.js +2 -2
- package/dist/controller/manage/FileManageApi.js +1 -1
- package/dist/controller/manage/LowCodeTplManageApi.js +2 -2
- package/dist/controller/manage/MenuManageApi.js +2 -2
- package/dist/controller/manage/ProxyApiMangeApi.js +2 -2
- 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 +8 -6
- 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 +7 -2
- package/dist/controller/manage/WorkbenchMangeApi.js +3 -3
- 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 +27 -15
- package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +13 -17
- 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 +32 -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/crud-pro/utils/sqlConvert/convertMix.d.ts +3 -0
- package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +22 -0
- 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 +232 -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 +2 -1
- package/dist/service/crudstd/CrudStdService.js +48 -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 +26 -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 +11 -11
- package/src/controller/manage/AppLogMangeApi.ts +5 -5
- package/src/controller/manage/AppMangeApi.ts +7 -7
- package/src/controller/manage/AppPageMangeApi.ts +5 -5
- package/src/controller/manage/AppSchemaHistoryApi.ts +3 -3
- package/src/controller/manage/CrudMethodsMangeApi.ts +5 -5
- package/src/controller/manage/CrudStandardDesignApi.ts +106 -113
- package/src/controller/manage/DataDictManageApi.ts +5 -5
- package/src/controller/manage/DeployManageApi.ts +85 -89
- package/src/controller/manage/DocLibManageApi.ts +5 -5
- package/src/controller/manage/DocManageApi.ts +10 -10
- package/src/controller/manage/FileManageApi.ts +1 -1
- package/src/controller/manage/LowCodeTplManageApi.ts +2 -2
- package/src/controller/manage/MenuManageApi.ts +10 -15
- package/src/controller/manage/ProxyApiMangeApi.ts +2 -2
- package/src/controller/manage/SuperAdminManageApi.ts +14 -13
- package/src/controller/manage/SysConfigMangeApi.ts +11 -11
- package/src/controller/manage/SystemInfoManageApi.ts +11 -6
- package/src/controller/manage/UserAccountManageApi.ts +10 -4
- package/src/controller/manage/WorkbenchMangeApi.ts +8 -8
- 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 +32 -23
- package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +38 -54
- 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 +36 -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/crud-pro/utils/sqlConvert/convertMix.ts +26 -0
- 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 +255 -0
- package/src/service/asyncTask/AsyncTaskService.ts +21 -0
- package/src/service/base/BaseService.ts +2 -2
- package/src/service/crudstd/CrudStdService.ts +60 -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
|
@@ -100,8 +100,7 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase_1.CrudProServiceBase
|
|
|
100
100
|
else if (word === keys_1.KeysOfCustomSQL.SQL_ORDER_BYS) {
|
|
101
101
|
return this.generateOrderBys(reqModel, sqlCfg);
|
|
102
102
|
}
|
|
103
|
-
else if ((word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_DATA_ATTR_START) ||
|
|
104
|
-
word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_CONDITION_ATTR_START)) && word.indexOf('.') > 0) {
|
|
103
|
+
else if ((word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_DATA_ATTR_START) || word.startsWith(keys_1.KeysOfCustomSQL.SQL_GET_CONDITION_ATTR_START)) && word.indexOf('.') > 0) {
|
|
105
104
|
return this.generateGetAttr(reqModel, word); //// data.xxx, condition.xxx
|
|
106
105
|
}
|
|
107
106
|
else if (word.startsWith(keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_NUMBER) || word.startsWith(keys_1.KeysOfCustomSQL.SQL_PICK_RES_AS_STRING)) {
|
|
@@ -198,10 +197,10 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase_1.CrudProServiceBase
|
|
|
198
197
|
const maxLimit = ModelUtils_1.ModelUtils.getMaxLimit(sqlCfg, requestCfg);
|
|
199
198
|
const reqLimit = req.limit;
|
|
200
199
|
const limit = Math.min(maxLimit, reqLimit);
|
|
201
|
-
if (sqlCfg.
|
|
200
|
+
if (sqlCfg.sqlDbType === keys_1.SqlDbType.postgres) {
|
|
202
201
|
return new SqlSegArg_1.SqlSegArg(' LIMIT ? OFFSET ? ', [limit, req.offset]);
|
|
203
202
|
}
|
|
204
|
-
if (sqlCfg.
|
|
203
|
+
if (sqlCfg.sqlDbType === keys_1.SqlDbType.sqlserver) {
|
|
205
204
|
return new SqlSegArg_1.SqlSegArg(' OFFSET ? ROWS FETCH NEXT ? ROWS ONLY ', [req.offset, limit]);
|
|
206
205
|
}
|
|
207
206
|
return new SqlSegArg_1.SqlSegArg(' limit ?,? ', [req.offset, limit]);
|
|
@@ -219,9 +218,11 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase_1.CrudProServiceBase
|
|
|
219
218
|
return new SqlSegArg_1.SqlSegArg(sql);
|
|
220
219
|
}
|
|
221
220
|
generatePickResAs(req, world) {
|
|
222
|
-
return new SqlSegArg_1.SqlSegArg(' ? ', [
|
|
221
|
+
return new SqlSegArg_1.SqlSegArg(' ? ', [
|
|
222
|
+
{
|
|
223
223
|
___GENERATE_GET_RES_ATTR___: world,
|
|
224
|
-
}
|
|
224
|
+
},
|
|
225
|
+
]);
|
|
225
226
|
}
|
|
226
227
|
generateGetAttr(req, word) {
|
|
227
228
|
const attrName = MixinUtils_1.MixinUtils.removeStringPrefix(word, '@@');
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { ICurdProServiceHub } from '../models/ServiceHub';
|
|
2
|
-
import { ICrudProCfg, ILogger, IPoolConnectionClient } from '../interfaces';
|
|
2
|
+
import { ICrudProCfg, IExecuteUnsafeQueryCtx, ILogger, IPoolConnectionClient } from '../interfaces';
|
|
3
3
|
import { SqlCfgModel } from '../models/SqlCfgModel';
|
|
4
4
|
import { ExecuteContext } from '../models/ExecuteContext';
|
|
5
5
|
import { IExecuteContextFunc } from '../models/ExecuteContextFunc';
|
|
6
|
-
interface ExecuteUnsafeQueryCtx {
|
|
7
|
-
tableName: string;
|
|
8
|
-
dbName: string;
|
|
9
|
-
}
|
|
10
6
|
declare class CrudProServiceBase {
|
|
11
7
|
protected serviceHub: ICurdProServiceHub;
|
|
12
8
|
constructor(serviceHub: ICurdProServiceHub);
|
|
@@ -21,7 +17,7 @@ declare class CrudProServiceBase {
|
|
|
21
17
|
* @param values
|
|
22
18
|
* @protected
|
|
23
19
|
*/
|
|
24
|
-
protected executeUnsafeQuery(obj:
|
|
20
|
+
protected executeUnsafeQuery(obj: IExecuteUnsafeQueryCtx, sql: string, values?: any): Promise<any[]>;
|
|
25
21
|
protected getContextCfg(): ICrudProCfg;
|
|
26
22
|
protected getExecuteFunction(funcName: string): any;
|
|
27
23
|
}
|
|
@@ -45,8 +45,9 @@ class CrudProServiceBase {
|
|
|
45
45
|
*/
|
|
46
46
|
async executeUnsafeQuery(obj, sql, values) {
|
|
47
47
|
const sqlCfgModel = {
|
|
48
|
-
sqlTable: obj.
|
|
49
|
-
sqlDatabase: obj.
|
|
48
|
+
sqlTable: obj.sqlTable,
|
|
49
|
+
sqlDatabase: obj.sqlDatabase,
|
|
50
|
+
sqlDbType: obj.sqlDbType,
|
|
50
51
|
columns: [],
|
|
51
52
|
columnsRelation: [],
|
|
52
53
|
maxLimit: defaultConfigs_1.DEFAULT_MAX_LIMIT,
|
|
@@ -4,5 +4,6 @@ import { ITableMeta } from '../interfaces';
|
|
|
4
4
|
declare class CrudProTableMetaService extends CrudProServiceBase {
|
|
5
5
|
getTableMeta(sqlCfgModel: SqlCfgModel): Promise<ITableMeta>;
|
|
6
6
|
private loadTableMeta;
|
|
7
|
+
private loadTableColumnInfo;
|
|
7
8
|
}
|
|
8
9
|
export { CrudProTableMetaService };
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CrudProTableMetaService = void 0;
|
|
4
4
|
const CrudProServiceBase_1 = require("./CrudProServiceBase");
|
|
5
|
+
const keys_1 = require("../models/keys");
|
|
6
|
+
const convertMix_1 = require("../utils/sqlConvert/convertMix");
|
|
5
7
|
class CrudProTableMetaCache {
|
|
6
8
|
constructor() {
|
|
7
9
|
this.cacheMap = {};
|
|
@@ -39,15 +41,38 @@ class CrudProTableMetaService extends CrudProServiceBase_1.CrudProServiceBase {
|
|
|
39
41
|
tableColumns: [],
|
|
40
42
|
};
|
|
41
43
|
const baseInfo = {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
sqlTable: sqlCfgModel.sqlTable,
|
|
45
|
+
sqlDatabase: sqlCfgModel.sqlDatabase,
|
|
46
|
+
sqlDbType: sqlCfgModel.sqlDbType,
|
|
44
47
|
};
|
|
45
|
-
|
|
46
|
-
const tableDescribe2 = JSON.parse(JSON.stringify(tableDescribe));
|
|
47
|
-
obj.tableColumns = tableDescribe2.map(fieldObj => {
|
|
48
|
-
return fieldObj['Field'];
|
|
49
|
-
});
|
|
48
|
+
obj.tableColumns = await this.loadTableColumnInfo(baseInfo);
|
|
50
49
|
return obj;
|
|
51
50
|
}
|
|
51
|
+
async loadTableColumnInfo(baseInfo) {
|
|
52
|
+
if (baseInfo.sqlDbType === keys_1.SqlDbType.mysql) {
|
|
53
|
+
const queryRes = await this.executeUnsafeQuery(baseInfo, 'describe ' + baseInfo.sqlTable);
|
|
54
|
+
const tableDescribe = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, baseInfo.sqlDbType);
|
|
55
|
+
const tableDescribe2 = JSON.parse(JSON.stringify(tableDescribe));
|
|
56
|
+
return tableDescribe2.map(fieldObj => {
|
|
57
|
+
return fieldObj['Field'];
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else if (baseInfo.sqlDbType === keys_1.SqlDbType.postgres) {
|
|
61
|
+
const schemaname = 'public';
|
|
62
|
+
const columnArraySql = `
|
|
63
|
+
SELECT
|
|
64
|
+
*
|
|
65
|
+
FROM information_schema.columns
|
|
66
|
+
WHERE table_schema = '${schemaname}' and table_name = '${baseInfo.sqlTable}'
|
|
67
|
+
ORDER BY ordinal_position;
|
|
68
|
+
`.trim();
|
|
69
|
+
const queryRes = await this.executeUnsafeQuery(baseInfo, columnArraySql);
|
|
70
|
+
const tableDescribe = (0, convertMix_1.pickAndConvertRowsByMix)(queryRes, baseInfo.sqlDbType);
|
|
71
|
+
return tableDescribe.map(fieldObj => {
|
|
72
|
+
return fieldObj['column_name'];
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
throw new Error('暂不支持的数据库类型:' + baseInfo.sqlDbType);
|
|
76
|
+
}
|
|
52
77
|
}
|
|
53
78
|
exports.CrudProTableMetaService = CrudProTableMetaService;
|
|
@@ -2,14 +2,35 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toDatabaseNameStr = exports.parseDatabaseName = exports.SPLIT_CONST = void 0;
|
|
4
4
|
const keys_1 = require("../models/keys");
|
|
5
|
-
const SPLIT_CONST =
|
|
5
|
+
const SPLIT_CONST = '_________';
|
|
6
6
|
exports.SPLIT_CONST = SPLIT_CONST;
|
|
7
|
+
const PREFIX_MYSQL = `${keys_1.SqlDbType.mysql}${SPLIT_CONST}`;
|
|
8
|
+
const PREFIX_POSTGRES = `${keys_1.SqlDbType.postgres}${SPLIT_CONST}`;
|
|
9
|
+
const PREFIX_SQLSERVER = `${keys_1.SqlDbType.sqlserver}${SPLIT_CONST}`;
|
|
7
10
|
function parseDatabaseName(databaseName) {
|
|
8
11
|
const dbNameArr = databaseName.split(SPLIT_CONST);
|
|
12
|
+
if (databaseName.startsWith(PREFIX_MYSQL)) {
|
|
13
|
+
return {
|
|
14
|
+
dbType: keys_1.SqlDbType.mysql,
|
|
15
|
+
dbName: dbNameArr[1],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (databaseName.startsWith(PREFIX_POSTGRES)) {
|
|
19
|
+
return {
|
|
20
|
+
dbType: keys_1.SqlDbType.postgres,
|
|
21
|
+
dbName: dbNameArr[1],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
if (databaseName.startsWith(PREFIX_SQLSERVER)) {
|
|
25
|
+
return {
|
|
26
|
+
dbType: keys_1.SqlDbType.sqlserver,
|
|
27
|
+
dbName: dbNameArr[1],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
9
30
|
if (dbNameArr.length === 1) {
|
|
10
31
|
return {
|
|
11
32
|
dbType: keys_1.SqlDbType.mysql,
|
|
12
|
-
dbName: dbNameArr[0]
|
|
33
|
+
dbName: dbNameArr[0],
|
|
13
34
|
};
|
|
14
35
|
}
|
|
15
36
|
if (dbNameArr.length > 1) {
|
|
@@ -17,7 +38,7 @@ function parseDatabaseName(databaseName) {
|
|
|
17
38
|
const dbType = dbType0;
|
|
18
39
|
return {
|
|
19
40
|
dbType,
|
|
20
|
-
dbName
|
|
41
|
+
dbName,
|
|
21
42
|
};
|
|
22
43
|
}
|
|
23
44
|
return null;
|
|
@@ -43,7 +43,7 @@ const MixinUtils = {
|
|
|
43
43
|
return !str1 && !str2;
|
|
44
44
|
},
|
|
45
45
|
startsWith(str1, str2) {
|
|
46
|
-
if (typeof str1 ===
|
|
46
|
+
if (typeof str1 === 'string' && typeof str2 === 'string') {
|
|
47
47
|
return str1.startsWith(str2);
|
|
48
48
|
}
|
|
49
49
|
return false;
|
|
@@ -147,7 +147,7 @@ function validateByCfgString(validateCfg, itemValue, errPath) {
|
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
149
|
// 必填
|
|
150
|
-
if (
|
|
150
|
+
if ('required' === validateCfg) {
|
|
151
151
|
if (isEmpty(itemValue)) {
|
|
152
152
|
throw new exceptions_1.CommonException(exceptions_1.Exceptions.VALIDATE_ERR, "'参数校验错误,字段 " + errPath + ' 不满足校验配置:' + validateCfg);
|
|
153
153
|
}
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.toSqlColumnNamesJoin = exports.toSqlColumnName = void 0;
|
|
4
4
|
const keys_1 = require("../../models/keys");
|
|
5
5
|
function toSqlColumnName(columnName, sqlCfgModel) {
|
|
6
|
-
if (sqlCfgModel.
|
|
6
|
+
if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.postgres) {
|
|
7
7
|
return '"' + columnName + '"';
|
|
8
8
|
}
|
|
9
|
-
if (sqlCfgModel.
|
|
9
|
+
if (sqlCfgModel.sqlDbType === keys_1.SqlDbType.sqlserver) {
|
|
10
10
|
return '[' + columnName + ']';
|
|
11
11
|
}
|
|
12
12
|
return '`' + columnName + '`';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pickAndConvertRowsByMix = void 0;
|
|
4
|
+
const keys_1 = require("../../models/keys");
|
|
5
|
+
const convertPgType_1 = require("./convertPgType");
|
|
6
|
+
const _ = require("lodash");
|
|
7
|
+
function pickAndConvertRowsByMix(connectionQueryRes, sqlDbType) {
|
|
8
|
+
if (!connectionQueryRes) {
|
|
9
|
+
throw new Error('[pickAndConvertRowsByMix] error, connectionQueryRes is null ');
|
|
10
|
+
}
|
|
11
|
+
if (sqlDbType === keys_1.SqlDbType.postgres) {
|
|
12
|
+
return (0, convertPgType_1.pickAndConvertPgRows)(connectionQueryRes);
|
|
13
|
+
}
|
|
14
|
+
if (sqlDbType === keys_1.SqlDbType.mysql) {
|
|
15
|
+
return connectionQueryRes[0];
|
|
16
|
+
}
|
|
17
|
+
if (sqlDbType === keys_1.SqlDbType.sqlserver) {
|
|
18
|
+
return _.get(connectionQueryRes, 'recordsets[0]') || [];
|
|
19
|
+
}
|
|
20
|
+
throw new Error('[pickAndConvertRowsByMix] error sqlDbType, sqlDbType = ' + sqlDbType);
|
|
21
|
+
}
|
|
22
|
+
exports.pickAndConvertRowsByMix = pickAndConvertRowsByMix;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SqlDbType } from '../crud-pro/models/keys';
|
|
2
|
+
interface IGlobalStaticConfig {
|
|
3
|
+
/**
|
|
4
|
+
* CrudStd: 业务系统自定义的修改cfgModel
|
|
5
|
+
* @param reqJson
|
|
6
|
+
* @param cfgModel
|
|
7
|
+
* @param appInfo
|
|
8
|
+
* @param ctx
|
|
9
|
+
*/
|
|
10
|
+
bizUpdateCfgModelForCrudStd(reqJson: any, cfgModel: any, appInfo: any, ctx: any): Promise<any>;
|
|
11
|
+
/**
|
|
12
|
+
* CrudMtd: 业务系统自定义的修改cfgModel
|
|
13
|
+
* @param reqJson
|
|
14
|
+
* @param cfgModel
|
|
15
|
+
* @param methodInfo
|
|
16
|
+
* @param ctx
|
|
17
|
+
*/
|
|
18
|
+
bizUpdateCfgModelForCrudMtd(reqJson: any, cfgModel: any, methodInfo: any, ctx: any): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* CrudPro: 业务系统自定义的修改cfgModel。这是最底层的!!全局的!!全局的!!全局的!!!
|
|
21
|
+
* @param reqJson
|
|
22
|
+
* @param cfgModel
|
|
23
|
+
*/
|
|
24
|
+
bizUpdateCfgModelForCrudPro(reqJson: any, cfgModel: any): Promise<any>;
|
|
25
|
+
/**
|
|
26
|
+
* 生成用户的账号ID,业务系统可以生成类似工号的ID
|
|
27
|
+
* @param userSubmitData
|
|
28
|
+
*/
|
|
29
|
+
generateUserAccountId(userSubmitData: any): Promise<string>;
|
|
30
|
+
/**
|
|
31
|
+
* 将业务系统表中的userId映射为fatcms的UserAccountId
|
|
32
|
+
* @param bizTableUserId 业余系统表中的UserId
|
|
33
|
+
*/
|
|
34
|
+
toFatcmsUserAccountId(bizTableUserId: any): string;
|
|
35
|
+
SystemDbName: string;
|
|
36
|
+
SystemDbType: SqlDbType;
|
|
37
|
+
}
|
|
38
|
+
declare class GlobalStaticConfig {
|
|
39
|
+
private configObject;
|
|
40
|
+
constructor();
|
|
41
|
+
getConfig(): IGlobalStaticConfig;
|
|
42
|
+
setConfig(configObject: any): void;
|
|
43
|
+
}
|
|
44
|
+
declare const GLOBAL_STATIC_CONFIG: GlobalStaticConfig;
|
|
45
|
+
export { GLOBAL_STATIC_CONFIG };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GLOBAL_STATIC_CONFIG = void 0;
|
|
4
|
+
const keys_1 = require("../crud-pro/models/keys");
|
|
5
|
+
const noop = () => {
|
|
6
|
+
return Promise.resolve();
|
|
7
|
+
};
|
|
8
|
+
class GlobalStaticConfig {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.configObject = {
|
|
11
|
+
bizUpdateCfgModelForCrudStd: noop,
|
|
12
|
+
bizUpdateCfgModelForCrudMtd: noop,
|
|
13
|
+
bizUpdateCfgModelForCrudPro: noop,
|
|
14
|
+
generateUserAccountId: null,
|
|
15
|
+
toFatcmsUserAccountId: (bizTableUserId) => {
|
|
16
|
+
return bizTableUserId;
|
|
17
|
+
},
|
|
18
|
+
SystemDbName: 'fatcms',
|
|
19
|
+
SystemDbType: keys_1.SqlDbType.mysql,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
getConfig() {
|
|
23
|
+
return this.configObject;
|
|
24
|
+
}
|
|
25
|
+
setConfig(configObject) {
|
|
26
|
+
if (!configObject || typeof configObject !== 'object') {
|
|
27
|
+
throw new Error('参数configObject不能为空');
|
|
28
|
+
}
|
|
29
|
+
Object.assign(this.configObject, configObject);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const GLOBAL_STATIC_CONFIG = new GlobalStaticConfig();
|
|
33
|
+
exports.GLOBAL_STATIC_CONFIG = GLOBAL_STATIC_CONFIG;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.errorToString = void 0;
|
|
4
|
+
function errorToString(error) {
|
|
5
|
+
var _a;
|
|
6
|
+
// 处理非错误对象的情况
|
|
7
|
+
if (typeof error === 'undefined') {
|
|
8
|
+
return 'Error: undefined was thrown';
|
|
9
|
+
}
|
|
10
|
+
if (error === null) {
|
|
11
|
+
return 'Error: null was thrown';
|
|
12
|
+
}
|
|
13
|
+
// 处理原始值类型
|
|
14
|
+
const primitiveTypes = ['string', 'number', 'boolean', 'symbol'];
|
|
15
|
+
if (primitiveTypes.includes(typeof error)) {
|
|
16
|
+
return `Error: A primitive value was thrown\nValue: ${String(error)}`;
|
|
17
|
+
}
|
|
18
|
+
// 处理 Error 对象
|
|
19
|
+
if (error instanceof Error) {
|
|
20
|
+
const errorDetails = [];
|
|
21
|
+
errorDetails.push(`Error: ${error.name || 'Error'}`);
|
|
22
|
+
errorDetails.push(`Message: ${error.message || 'No error message'}`);
|
|
23
|
+
if (error.stack) {
|
|
24
|
+
errorDetails.push('Stack Trace:');
|
|
25
|
+
errorDetails.push(error.stack);
|
|
26
|
+
}
|
|
27
|
+
const extraProperties = ['code', 'fileName', 'lineNumber', 'columnNumber'];
|
|
28
|
+
extraProperties.forEach(prop => {
|
|
29
|
+
if (error[prop] !== undefined) {
|
|
30
|
+
errorDetails.push(`${prop}: ${error[prop]}`);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
const customProps = Object.keys(error).filter(key => !['name', 'message', 'stack', ...extraProperties].includes(key));
|
|
34
|
+
if (customProps.length > 0) {
|
|
35
|
+
errorDetails.push('Custom Properties:');
|
|
36
|
+
customProps.forEach(prop => {
|
|
37
|
+
try {
|
|
38
|
+
const value = JSON.stringify(error[prop], null, 2) || String(error[prop]);
|
|
39
|
+
errorDetails.push(` ${prop}: ${value}`);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
errorDetails.push(` ${prop}: [Object cannot be serialized]`);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return errorDetails.join('\n');
|
|
47
|
+
}
|
|
48
|
+
// 处理普通对象
|
|
49
|
+
try {
|
|
50
|
+
const objectDetails = JSON.stringify(error, null, 2);
|
|
51
|
+
return `Error: A plain object was thrown\nObject: ${objectDetails}`;
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
return `Error: An object was thrown but could not be serialized\nType: ${((_a = error.constructor) === null || _a === void 0 ? void 0 : _a.name) || 'Unknown'}`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.errorToString = errorToString;
|
|
@@ -84,7 +84,7 @@ async function isCsrfTokenValid(ctx) {
|
|
|
84
84
|
const depryptToken = await crypto_utils_1.privateAES.time_decrypt_base64_utf8(fatcmscsrftoken);
|
|
85
85
|
if (depryptToken) {
|
|
86
86
|
const num = Number(depryptToken);
|
|
87
|
-
if (num &&
|
|
87
|
+
if (num && num + 6 * 3600 * 1000 > Date.now()) {
|
|
88
88
|
return true;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -98,7 +98,7 @@ exports.isCsrfTokenValid = isCsrfTokenValid;
|
|
|
98
98
|
async function assertCsrfToken(ctx) {
|
|
99
99
|
const isOK = await isCsrfTokenValid(ctx);
|
|
100
100
|
if (!isOK) {
|
|
101
|
-
throw new exceptions_1.CommonException(
|
|
101
|
+
throw new exceptions_1.CommonException('ASSERT_CSRF_TOKEN_ERROR', 'CSRF_TOKEN 验证失败');
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
exports.assertCsrfToken = assertCsrfToken;
|
|
@@ -9,24 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.ForbiddenMiddleware = void 0;
|
|
10
10
|
const core_1 = require("@midwayjs/core");
|
|
11
11
|
// 一些爬虫/漏洞分析工具会来请求这玩意。
|
|
12
|
-
const blackEqualList = [
|
|
13
|
-
|
|
14
|
-
'/backend/.env',
|
|
15
|
-
'/application.yml',
|
|
16
|
-
'/db.ini',
|
|
17
|
-
'/.well-known/security.txt',
|
|
18
|
-
];
|
|
19
|
-
const blackPrefixList = [
|
|
20
|
-
'/.aws/',
|
|
21
|
-
'/.git/',
|
|
22
|
-
'/.svn/',
|
|
23
|
-
'/.env/',
|
|
24
|
-
'/src/',
|
|
25
|
-
'/var/logs/',
|
|
26
|
-
'/var/log/',
|
|
27
|
-
'/cgi-bin/',
|
|
28
|
-
'/php-cgi/',
|
|
29
|
-
];
|
|
12
|
+
const blackEqualList = ['/config.json', '/backend/.env', '/application.yml', '/db.ini', '/.well-known/security.txt'];
|
|
13
|
+
const blackPrefixList = ['/.aws/', '/.git/', '/.svn/', '/.env/', '/src/', '/var/logs/', '/var/log/', '/cgi-bin/', '/php-cgi/'];
|
|
30
14
|
/**
|
|
31
15
|
* 针对一些路径禁止访问。避免一些爬虫抓取网站内容,实际上这里枚举的路径,本身就是不存在的。只是为了提前拦截,为了服务器性能考虑。
|
|
32
16
|
*/
|
|
@@ -55,9 +39,9 @@ let ForbiddenMiddleware = class ForbiddenMiddleware {
|
|
|
55
39
|
}
|
|
56
40
|
resolve() {
|
|
57
41
|
return async (ctx, next) => {
|
|
58
|
-
ctx.set({
|
|
42
|
+
ctx.set({ 'content-type': 'text/html; charset=utf-8' });
|
|
59
43
|
ctx.status = 404;
|
|
60
|
-
ctx.body =
|
|
44
|
+
ctx.body = '404!404!404!重要的事情说三遍!';
|
|
61
45
|
};
|
|
62
46
|
}
|
|
63
47
|
static getName() {
|
|
@@ -186,13 +186,20 @@ async function trackRequest(ctx) {
|
|
|
186
186
|
console.error('trackRequestError', e);
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
+
const excludePathPrefix = ['/ns/static/', '/ns/api/helpers'];
|
|
189
190
|
/**
|
|
190
191
|
* 全局中间件
|
|
191
192
|
*/
|
|
192
193
|
let GlobalMiddleware = class GlobalMiddleware {
|
|
193
194
|
match(ctx) {
|
|
194
195
|
const path = ctx.path;
|
|
195
|
-
|
|
196
|
+
for (let i = 0; i < excludePathPrefix.length; i++) {
|
|
197
|
+
const excludePathPrefix1 = excludePathPrefix[i];
|
|
198
|
+
if (path.startsWith(excludePathPrefix1)) {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return true;
|
|
196
203
|
}
|
|
197
204
|
resolve() {
|
|
198
205
|
return async (ctx, next) => {
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
input_file_path: string | null;
|
|
11
|
+
input_file_format: SysAsyncFileFormat | null;
|
|
12
|
+
input_file_size: number | null;
|
|
13
|
+
output_file_path: string | null;
|
|
14
|
+
output_file_format: SysAsyncFileFormat | null;
|
|
15
|
+
output_file_size: number | null;
|
|
16
|
+
input_total_records: number | null;
|
|
17
|
+
output_total_records: number | null;
|
|
18
|
+
processed_records: number;
|
|
19
|
+
progress: number;
|
|
20
|
+
error_message: string | null;
|
|
21
|
+
error_records: any | null;
|
|
22
|
+
created_by: string | null;
|
|
23
|
+
priority: number;
|
|
24
|
+
retry_count: number;
|
|
25
|
+
max_retries: number;
|
|
26
|
+
parent_task_id: number | null;
|
|
27
|
+
created_at: Date;
|
|
28
|
+
started_at: Date | null;
|
|
29
|
+
updated_at: Date;
|
|
30
|
+
expired_at: Date | null;
|
|
31
|
+
completed_at: Date | null;
|
|
32
|
+
created_user_session: string;
|
|
33
|
+
}
|
|
34
|
+
export declare type SysAsyncTaskPartial = Partial<SysAsyncTaskEntity>;
|
|
35
|
+
export declare enum SysAsyncTaskStatus {
|
|
36
|
+
PENDING = "PENDING",
|
|
37
|
+
RUNNING = "RUNNING",
|
|
38
|
+
SUCCEEDED = "SUCCEEDED",
|
|
39
|
+
PART_SUCCEEDED = "PART_SUCCEEDED",
|
|
40
|
+
FAILED = "FAILED",
|
|
41
|
+
CANCELLED = "CANCELLED",
|
|
42
|
+
PAUSED = "PAUSED"
|
|
43
|
+
}
|
|
44
|
+
export declare enum SysAsyncFileFormat {
|
|
45
|
+
XLSX = "xlsx",
|
|
46
|
+
CSV = "csv",
|
|
47
|
+
JSON = "json",
|
|
48
|
+
PDF = "pdf",
|
|
49
|
+
TXT = "txt",
|
|
50
|
+
XML = "xml",
|
|
51
|
+
ZIP = "zip",
|
|
52
|
+
HTML = "html",
|
|
53
|
+
PNG = "png",
|
|
54
|
+
JPG = "jpg"
|
|
55
|
+
}
|
|
56
|
+
export interface ISysAsyncTaskHandler {
|
|
57
|
+
execute(asyncTaskContext: SysAsyncTaskContext): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
export interface SysAsyncTaskContext {
|
|
60
|
+
task: SysAsyncTaskEntity;
|
|
61
|
+
updateTaskStatus: (sysAsyncTaskPartial: SysAsyncTaskPartial) => any;
|
|
62
|
+
}
|
|
63
|
+
export interface SysAsyncTaskHandlerConfig {
|
|
64
|
+
taskType: string;
|
|
65
|
+
handler: ISysAsyncTaskHandler;
|
|
66
|
+
maxRetries?: number;
|
|
67
|
+
priority?: number;
|
|
68
|
+
expireSeconds?: number;
|
|
69
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SysAsyncFileFormat = exports.SysAsyncTaskStatus = void 0;
|
|
4
|
+
var SysAsyncTaskStatus;
|
|
5
|
+
(function (SysAsyncTaskStatus) {
|
|
6
|
+
SysAsyncTaskStatus["PENDING"] = "PENDING";
|
|
7
|
+
SysAsyncTaskStatus["RUNNING"] = "RUNNING";
|
|
8
|
+
SysAsyncTaskStatus["SUCCEEDED"] = "SUCCEEDED";
|
|
9
|
+
SysAsyncTaskStatus["PART_SUCCEEDED"] = "PART_SUCCEEDED";
|
|
10
|
+
SysAsyncTaskStatus["FAILED"] = "FAILED";
|
|
11
|
+
SysAsyncTaskStatus["CANCELLED"] = "CANCELLED";
|
|
12
|
+
SysAsyncTaskStatus["PAUSED"] = "PAUSED";
|
|
13
|
+
})(SysAsyncTaskStatus = exports.SysAsyncTaskStatus || (exports.SysAsyncTaskStatus = {}));
|
|
14
|
+
var SysAsyncFileFormat;
|
|
15
|
+
(function (SysAsyncFileFormat) {
|
|
16
|
+
SysAsyncFileFormat["XLSX"] = "xlsx";
|
|
17
|
+
SysAsyncFileFormat["CSV"] = "csv";
|
|
18
|
+
SysAsyncFileFormat["JSON"] = "json";
|
|
19
|
+
SysAsyncFileFormat["PDF"] = "pdf";
|
|
20
|
+
SysAsyncFileFormat["TXT"] = "txt";
|
|
21
|
+
SysAsyncFileFormat["XML"] = "xml";
|
|
22
|
+
SysAsyncFileFormat["ZIP"] = "zip";
|
|
23
|
+
SysAsyncFileFormat["HTML"] = "html";
|
|
24
|
+
SysAsyncFileFormat["PNG"] = "png";
|
|
25
|
+
SysAsyncFileFormat["JPG"] = "jpg";
|
|
26
|
+
})(SysAsyncFileFormat = exports.SysAsyncFileFormat || (exports.SysAsyncFileFormat = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedisKeys = void 0;
|
|
4
|
+
const RedisKeys = {
|
|
5
|
+
ASYNC_TASK_LOCK: "FatAsyncTaskLock",
|
|
6
|
+
ASYNC_TASK_UPDATE_TIME: "FatAsyncTaskUpdateTime",
|
|
7
|
+
USER_SESSION_PREFIX: "FatUserSession_",
|
|
8
|
+
VISIT_STAT_LOCK_PREFIX: "FatVsLock_",
|
|
9
|
+
VISIT_STAT_DATE_PREFIX: "FatVsDate_",
|
|
10
|
+
};
|
|
11
|
+
exports.RedisKeys = RedisKeys;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SqlDbType } from "../libs/crud-pro/models/keys";
|
|
2
1
|
export declare const SystemTables: {
|
|
3
2
|
sys_workbench: string;
|
|
4
3
|
sys_user_account: string;
|
|
@@ -21,7 +20,6 @@ export declare const SystemTables: {
|
|
|
21
20
|
sys_anyapi: string;
|
|
22
21
|
sys_proxyapi: string;
|
|
23
22
|
sys_visit_stats: string;
|
|
23
|
+
sys_async_tasks: string;
|
|
24
24
|
};
|
|
25
|
-
export declare const SystemDbName = "fatcms";
|
|
26
|
-
export declare const SystemDbType = SqlDbType.mysql;
|
|
27
25
|
export declare const SystemDevOpsWorkbench = "devops";
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SystemDevOpsWorkbench = exports.
|
|
4
|
-
const keys_1 = require("../libs/crud-pro/models/keys");
|
|
3
|
+
exports.SystemDevOpsWorkbench = exports.SystemTables = void 0;
|
|
5
4
|
exports.SystemTables = {
|
|
6
5
|
sys_workbench: 'sys_workbench',
|
|
7
6
|
sys_user_account: 'sys_user_account',
|
|
@@ -24,7 +23,6 @@ exports.SystemTables = {
|
|
|
24
23
|
sys_anyapi: 'sys_anyapi',
|
|
25
24
|
sys_proxyapi: 'sys_proxyapi',
|
|
26
25
|
sys_visit_stats: 'sys_visit_stats',
|
|
26
|
+
sys_async_tasks: 'sys_async_tasks',
|
|
27
27
|
};
|
|
28
|
-
exports.SystemDbName = 'fatcms';
|
|
29
|
-
exports.SystemDbType = keys_1.SqlDbType.mysql;
|
|
30
28
|
exports.SystemDevOpsWorkbench = 'devops';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as koa from '@midwayjs/koa';
|
|
2
|
+
export declare type RunServiceAtAnonymousContextRunner = (ctx: koa.IMidwayKoaContext) => any;
|
|
3
|
+
declare class AnonymousContext {
|
|
4
|
+
private app;
|
|
5
|
+
setApp(app: koa.Application): void;
|
|
6
|
+
getApp(): koa.IMidwayKoaApplication;
|
|
7
|
+
runServiceAtAnonymousContext(runner: RunServiceAtAnonymousContextRunner): Promise<{
|
|
8
|
+
result: any;
|
|
9
|
+
error: any;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
declare const ANONYMOUS_CONTEXT: AnonymousContext;
|
|
13
|
+
export { ANONYMOUS_CONTEXT };
|