midway-fatcms 0.0.1-beta.65 → 0.0.1-beta.66
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 +14 -14
- package/.prettierrc.js +4 -4
- package/README.md +8 -8
- package/dist/config/config.default.d.ts +3 -3
- package/dist/config/config.default.js +167 -160
- package/dist/config/utils.d.ts +1 -1
- package/dist/config/utils.js +23 -23
- package/dist/configuration.d.ts +7 -7
- package/dist/configuration.js +113 -113
- package/dist/controller/base/BaseApiController.d.ts +42 -37
- package/dist/controller/base/BaseApiController.js +189 -164
- package/dist/controller/gateway/AnyApiGatewayController.d.ts +13 -13
- package/dist/controller/gateway/AnyApiGatewayController.js +55 -55
- package/dist/controller/gateway/AsyncTaskController.d.ts +20 -20
- package/dist/controller/gateway/AsyncTaskController.js +181 -181
- package/dist/controller/gateway/CrudMtdGatewayController.d.ts +21 -21
- package/dist/controller/gateway/CrudMtdGatewayController.js +122 -122
- package/dist/controller/gateway/CrudStdGatewayController.d.ts +38 -38
- package/dist/controller/gateway/CrudStdGatewayController.js +155 -129
- package/dist/controller/gateway/DocGatewayController.d.ts +27 -27
- package/dist/controller/gateway/DocGatewayController.js +179 -179
- package/dist/controller/gateway/FileController.d.ts +28 -28
- package/dist/controller/gateway/FileController.js +145 -144
- package/dist/controller/gateway/ProxyApiGatewayController.d.ts +18 -18
- package/dist/controller/gateway/ProxyApiGatewayController.js +78 -78
- package/dist/controller/gateway/PublicApiController.d.ts +32 -31
- package/dist/controller/gateway/PublicApiController.js +215 -179
- package/dist/controller/gateway/StaticController.d.ts +23 -23
- package/dist/controller/gateway/StaticController.js +286 -286
- package/dist/controller/helpers.controller.d.ts +39 -39
- package/dist/controller/helpers.controller.js +188 -188
- package/dist/controller/home.controller.d.ts +9 -9
- package/dist/controller/home.controller.js +72 -72
- package/dist/controller/manage/AnyApiMangeApi.d.ts +10 -10
- package/dist/controller/manage/AnyApiMangeApi.js +98 -98
- package/dist/controller/manage/AppLogMangeApi.d.ts +10 -10
- package/dist/controller/manage/AppLogMangeApi.js +88 -88
- package/dist/controller/manage/AppMangeApi.d.ts +10 -10
- package/dist/controller/manage/AppMangeApi.js +88 -88
- package/dist/controller/manage/AppPageMangeApi.d.ts +10 -10
- package/dist/controller/manage/AppPageMangeApi.js +87 -87
- package/dist/controller/manage/AppSchemaHistoryApi.d.ts +10 -10
- package/dist/controller/manage/AppSchemaHistoryApi.js +83 -83
- package/dist/controller/manage/CrudMethodsMangeApi.d.ts +10 -10
- package/dist/controller/manage/CrudMethodsMangeApi.js +84 -84
- package/dist/controller/manage/CrudStandardDesignApi.d.ts +46 -46
- package/dist/controller/manage/CrudStandardDesignApi.js +367 -367
- package/dist/controller/manage/DataDictManageApi.d.ts +15 -15
- package/dist/controller/manage/DataDictManageApi.js +133 -133
- package/dist/controller/manage/DeployManageApi.d.ts +19 -19
- package/dist/controller/manage/DeployManageApi.js +180 -180
- package/dist/controller/manage/DocLibManageApi.d.ts +10 -10
- package/dist/controller/manage/DocLibManageApi.js +104 -104
- package/dist/controller/manage/DocManageApi.d.ts +11 -11
- package/dist/controller/manage/DocManageApi.js +130 -130
- package/dist/controller/manage/FileManageApi.d.ts +13 -13
- package/dist/controller/manage/FileManageApi.js +77 -77
- package/dist/controller/manage/LowCodeTplManageApi.d.ts +13 -13
- package/dist/controller/manage/LowCodeTplManageApi.js +86 -86
- package/dist/controller/manage/MenuManageApi.d.ts +10 -10
- package/dist/controller/manage/MenuManageApi.js +93 -93
- package/dist/controller/manage/ProxyApiMangeApi.d.ts +10 -10
- package/dist/controller/manage/ProxyApiMangeApi.js +87 -87
- package/dist/controller/manage/SuperAdminManageApi.d.ts +24 -24
- package/dist/controller/manage/SuperAdminManageApi.js +153 -153
- package/dist/controller/manage/SysConfigMangeApi.d.ts +11 -11
- package/dist/controller/manage/SysConfigMangeApi.js +126 -126
- package/dist/controller/manage/SystemInfoManageApi.d.ts +12 -12
- package/dist/controller/manage/SystemInfoManageApi.js +72 -72
- package/dist/controller/manage/UserAccountManageApi.d.ts +14 -14
- package/dist/controller/manage/UserAccountManageApi.js +129 -129
- package/dist/controller/manage/WorkbenchMangeApi.d.ts +11 -11
- package/dist/controller/manage/WorkbenchMangeApi.js +103 -103
- package/dist/controller/myinfo/AuthController.d.ts +33 -33
- package/dist/controller/myinfo/AuthController.js +136 -136
- package/dist/controller/myinfo/MyInfoController.d.ts +13 -13
- package/dist/controller/myinfo/MyInfoController.js +51 -51
- package/dist/controller/render/AppRenderController.d.ts +11 -11
- package/dist/controller/render/AppRenderController.js +92 -92
- package/dist/controller/test.controller.d.ts +8 -8
- package/dist/controller/test.controller.js +51 -51
- package/dist/filter/default.filter.d.ts +7 -7
- package/dist/filter/default.filter.js +23 -23
- package/dist/filter/notfound.filter.d.ts +5 -5
- package/dist/filter/notfound.filter.js +20 -20
- package/dist/index.d.ts +103 -103
- package/dist/index.js +121 -121
- package/dist/interface.d.ts +29 -27
- package/dist/interface.js +3 -3
- package/dist/libs/crud-pro/CrudPro.d.ts +37 -37
- package/dist/libs/crud-pro/CrudPro.js +136 -136
- package/dist/libs/crud-pro/defaultConfigs.d.ts +4 -4
- package/dist/libs/crud-pro/defaultConfigs.js +15 -15
- package/dist/libs/crud-pro/exceptions.d.ts +106 -104
- package/dist/libs/crud-pro/exceptions.js +119 -117
- package/dist/libs/crud-pro/interfaces.d.ts +165 -165
- package/dist/libs/crud-pro/interfaces.js +12 -12
- package/dist/libs/crud-pro/models/ExecuteContext.d.ts +49 -49
- package/dist/libs/crud-pro/models/ExecuteContext.js +79 -79
- package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +38 -38
- package/dist/libs/crud-pro/models/ExecuteContextFunc.js +72 -72
- package/dist/libs/crud-pro/models/FuncContext.d.ts +18 -18
- package/dist/libs/crud-pro/models/FuncContext.js +6 -6
- package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +65 -65
- package/dist/libs/crud-pro/models/RequestCfgModel.js +81 -81
- package/dist/libs/crud-pro/models/RequestModel.d.ts +25 -25
- package/dist/libs/crud-pro/models/RequestModel.js +113 -113
- package/dist/libs/crud-pro/models/ResModel.d.ts +16 -16
- package/dist/libs/crud-pro/models/ResModel.js +2 -2
- package/dist/libs/crud-pro/models/ServiceHub.d.ts +20 -20
- package/dist/libs/crud-pro/models/ServiceHub.js +2 -2
- package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +22 -22
- package/dist/libs/crud-pro/models/SqlCfgModel.js +40 -40
- package/dist/libs/crud-pro/models/SqlSegArg.d.ts +6 -6
- package/dist/libs/crud-pro/models/SqlSegArg.js +12 -12
- package/dist/libs/crud-pro/models/Transaction.d.ts +30 -30
- package/dist/libs/crud-pro/models/Transaction.js +74 -74
- package/dist/libs/crud-pro/models/TransactionMySQL.d.ts +28 -28
- package/dist/libs/crud-pro/models/TransactionMySQL.js +76 -76
- package/dist/libs/crud-pro/models/TransactionPostgres.d.ts +28 -28
- package/dist/libs/crud-pro/models/TransactionPostgres.js +85 -85
- package/dist/libs/crud-pro/models/TransactionSqlServer.d.ts +34 -34
- package/dist/libs/crud-pro/models/TransactionSqlServer.js +92 -92
- package/dist/libs/crud-pro/models/keys.d.ts +110 -110
- package/dist/libs/crud-pro/models/keys.js +154 -154
- package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +11 -11
- package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +73 -73
- package/dist/libs/crud-pro/services/CrudProExecuteFuncService.d.ts +9 -9
- package/dist/libs/crud-pro/services/CrudProExecuteFuncService.js +125 -125
- package/dist/libs/crud-pro/services/CrudProExecuteSqlService.d.ts +17 -17
- package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +225 -225
- package/dist/libs/crud-pro/services/CrudProFieldUpdateService.d.ts +9 -9
- package/dist/libs/crud-pro/services/CrudProFieldUpdateService.js +51 -51
- package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +13 -13
- package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +148 -148
- package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +24 -24
- package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +355 -355
- package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +25 -25
- package/dist/libs/crud-pro/services/CrudProGenSqlService.js +165 -165
- package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +32 -32
- package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +339 -334
- package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +24 -24
- package/dist/libs/crud-pro/services/CrudProServiceBase.js +90 -90
- package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +9 -9
- package/dist/libs/crud-pro/services/CrudProTableMetaService.js +72 -72
- package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +32 -32
- package/dist/libs/crud-pro/services/CurdProServiceHub.js +64 -64
- package/dist/libs/crud-pro/utils/CompareUtils.d.ts +9 -9
- package/dist/libs/crud-pro/utils/CompareUtils.js +25 -25
- package/dist/libs/crud-pro/utils/DatabaseName.d.ts +9 -9
- package/dist/libs/crud-pro/utils/DatabaseName.js +50 -50
- package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +7 -7
- package/dist/libs/crud-pro/utils/DateTimeUtils.js +21 -21
- package/dist/libs/crud-pro/utils/MemoryRefreshCache.d.ts +19 -19
- package/dist/libs/crud-pro/utils/MemoryRefreshCache.js +47 -47
- package/dist/libs/crud-pro/utils/MessageParseUtils.d.ts +5 -5
- package/dist/libs/crud-pro/utils/MessageParseUtils.js +33 -33
- package/dist/libs/crud-pro/utils/MixinUtils.d.ts +39 -39
- package/dist/libs/crud-pro/utils/MixinUtils.js +255 -255
- package/dist/libs/crud-pro/utils/ModelUtils.d.ts +11 -11
- package/dist/libs/crud-pro/utils/ModelUtils.js +54 -54
- package/dist/libs/crud-pro/utils/MultiKeyMap.d.ts +11 -11
- package/dist/libs/crud-pro/utils/MultiKeyMap.js +63 -63
- package/dist/libs/crud-pro/utils/SqlFuncUtils.d.ts +5 -5
- package/dist/libs/crud-pro/utils/SqlFuncUtils.js +29 -29
- package/dist/libs/crud-pro/utils/TypeUtils.d.ts +40 -40
- package/dist/libs/crud-pro/utils/TypeUtils.js +166 -166
- package/dist/libs/crud-pro/utils/ValidateUtils.d.ts +3 -3
- package/dist/libs/crud-pro/utils/ValidateUtils.js +165 -165
- package/dist/libs/crud-pro/utils/pool/MySQLUtils.d.ts +3 -3
- package/dist/libs/crud-pro/utils/pool/MySQLUtils.js +19 -19
- package/dist/libs/crud-pro/utils/pool/PostgresUtils.d.ts +3 -3
- package/dist/libs/crud-pro/utils/pool/PostgresUtils.js +20 -20
- package/dist/libs/crud-pro/utils/pool/SqlServerUtils.d.ts +3 -3
- package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +20 -20
- package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +4 -4
- package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +35 -21
- package/dist/libs/crud-pro/utils/sqlConvert/convertMix.d.ts +3 -3
- package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +22 -22
- package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +2 -2
- package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.js +11 -11
- package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +2 -2
- package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.js +11 -11
- package/dist/libs/crud-pro/utils/sqlConvert/convertPgType.d.ts +2 -2
- package/dist/libs/crud-pro/utils/sqlConvert/convertPgType.js +128 -128
- package/dist/libs/global-config/global-config.d.ts +69 -69
- package/dist/libs/global-config/global-config.js +36 -36
- package/dist/libs/utils/AsymmetricCrypto.d.ts +76 -0
- package/dist/libs/utils/AsymmetricCrypto.js +261 -0
- package/dist/libs/utils/base64.d.ts +9 -9
- package/dist/libs/utils/base64.js +42 -42
- package/dist/libs/utils/common-dto.d.ts +18 -18
- package/dist/libs/utils/common-dto.js +40 -40
- package/dist/libs/utils/crypto-utils.d.ts +3 -3
- package/dist/libs/utils/crypto-utils.js +46 -46
- package/dist/libs/utils/errorToString.d.ts +2 -2
- package/dist/libs/utils/errorToString.js +57 -57
- package/dist/libs/utils/fatcms-request.d.ts +30 -30
- package/dist/libs/utils/fatcms-request.js +104 -104
- package/dist/libs/utils/format-url.d.ts +2 -0
- package/dist/libs/utils/format-url.js +13 -0
- package/dist/libs/utils/functions.d.ts +5 -5
- package/dist/libs/utils/functions.js +72 -72
- package/dist/libs/utils/ordernum-utils.d.ts +2 -2
- package/dist/libs/utils/ordernum-utils.js +13 -13
- package/dist/libs/utils/parseConfig.d.ts +8 -8
- package/dist/libs/utils/parseConfig.js +47 -47
- package/dist/libs/utils/parseCreateSql.d.ts +10 -10
- package/dist/libs/utils/parseCreateSql.js +87 -87
- package/dist/libs/utils/render-utils.d.ts +37 -28
- package/dist/libs/utils/render-utils.js +154 -133
- package/dist/middleware/forbidden.middleware.d.ts +10 -10
- package/dist/middleware/forbidden.middleware.js +54 -54
- package/dist/middleware/global.middleware.d.ts +10 -10
- package/dist/middleware/global.middleware.js +273 -266
- package/dist/middleware/permission.middleware.d.ts +18 -18
- package/dist/middleware/permission.middleware.js +74 -74
- package/dist/middleware/rediscache.middleware.d.ts +3 -3
- package/dist/middleware/rediscache.middleware.js +77 -77
- package/dist/middleware/redislock.middleware.d.ts +7 -7
- package/dist/middleware/redislock.middleware.js +72 -72
- package/dist/middleware/tx.middleware.d.ts +9 -9
- package/dist/middleware/tx.middleware.js +40 -40
- package/dist/models/AsyncTaskModel.d.ts +74 -74
- package/dist/models/AsyncTaskModel.js +31 -31
- package/dist/models/RedisKeys.d.ts +15 -15
- package/dist/models/RedisKeys.js +18 -18
- package/dist/models/SystemEntities.d.ts +139 -105
- package/dist/models/SystemEntities.js +30 -9
- package/dist/models/SystemPerm.d.ts +95 -95
- package/dist/models/SystemPerm.js +100 -100
- package/dist/models/SystemTables.d.ts +25 -25
- package/dist/models/SystemTables.js +28 -28
- package/dist/models/WorkbenchInfoTools.d.ts +7 -0
- package/dist/models/WorkbenchInfoTools.js +20 -0
- package/dist/models/bizmodels.d.ts +113 -104
- package/dist/models/bizmodels.js +39 -39
- package/dist/models/contextLogger.d.ts +27 -25
- package/dist/models/contextLogger.js +119 -112
- package/dist/models/devops.d.ts +12 -12
- package/dist/models/devops.js +19 -19
- package/dist/models/userSession.d.ts +64 -62
- package/dist/models/userSession.js +167 -165
- package/dist/schedule/anonymousContext.d.ts +14 -14
- package/dist/schedule/anonymousContext.js +61 -59
- package/dist/schedule/index.d.ts +4 -4
- package/dist/schedule/index.js +10 -10
- package/dist/schedule/runSchedule.d.ts +12 -12
- package/dist/schedule/runSchedule.js +68 -68
- package/dist/schedule/scheduleNames.d.ts +13 -13
- package/dist/schedule/scheduleNames.js +17 -17
- package/dist/service/AuthService.d.ts +71 -71
- package/dist/service/AuthService.js +270 -263
- package/dist/service/EnumInfoService.d.ts +30 -30
- package/dist/service/EnumInfoService.js +133 -127
- package/dist/service/FileCenterService.d.ts +43 -43
- package/dist/service/FileCenterService.js +351 -351
- package/dist/service/SysConfigService.d.ts +7 -7
- package/dist/service/SysConfigService.js +47 -47
- package/dist/service/UserAccountService.d.ts +23 -23
- package/dist/service/UserAccountService.js +107 -107
- package/dist/service/UserSessionService.d.ts +43 -38
- package/dist/service/UserSessionService.js +166 -157
- package/dist/service/VisitStatService.d.ts +14 -14
- package/dist/service/VisitStatService.js +158 -158
- package/dist/service/WorkbenchService.d.ts +54 -53
- package/dist/service/WorkbenchService.js +237 -211
- package/dist/service/anyapi/AnyApiSandboxService.d.ts +15 -15
- package/dist/service/anyapi/AnyApiSandboxService.js +110 -110
- package/dist/service/anyapi/AnyApiService.d.ts +27 -27
- package/dist/service/anyapi/AnyApiService.js +181 -181
- package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -50
- package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -287
- package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -7
- package/dist/service/asyncTask/AsyncTaskService.js +34 -34
- package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -10
- package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -2
- package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -7
- package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -216
- package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -36
- package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -141
- package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -46
- package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -135
- package/dist/service/base/ApiBaseService.d.ts +15 -15
- package/dist/service/base/ApiBaseService.js +50 -50
- package/dist/service/base/ApiRateLimiter.d.ts +10 -10
- package/dist/service/base/ApiRateLimiter.js +51 -51
- package/dist/service/base/BaseService.d.ts +41 -41
- package/dist/service/base/BaseService.js +101 -101
- package/dist/service/base/cache/CacheServiceFactory.d.ts +20 -0
- package/dist/service/base/cache/CacheServiceFactory.js +67 -0
- package/dist/service/base/cache/FatcmsBaseCtxCache.d.ts +19 -0
- package/dist/service/base/cache/FatcmsBaseCtxCache.js +38 -0
- package/dist/service/base/cache/FatcmsBaseDiskCache.d.ts +24 -0
- package/dist/service/base/cache/FatcmsBaseDiskCache.js +81 -0
- package/dist/service/base/cache/FatcmsBaseMemoryCache.d.ts +18 -0
- package/dist/service/base/cache/FatcmsBaseMemoryCache.js +66 -0
- package/dist/service/base/cache/FatcmsBaseNoneCache.d.ts +10 -0
- package/dist/service/base/cache/FatcmsBaseNoneCache.js +19 -0
- package/dist/service/base/{RedisCacheService.d.ts → cache/FatcmsBaseRedisCache.d.ts} +20 -20
- package/dist/service/base/cache/FatcmsBaseRedisCache.js +39 -0
- package/dist/service/crudstd/CrudStdActionService.d.ts +17 -17
- package/dist/service/crudstd/CrudStdActionService.js +32 -32
- package/dist/service/crudstd/CrudStdConstant.d.ts +58 -58
- package/dist/service/crudstd/CrudStdConstant.js +64 -64
- package/dist/service/crudstd/CrudStdRelationService.d.ts +10 -10
- package/dist/service/crudstd/CrudStdRelationService.js +121 -121
- package/dist/service/crudstd/CrudStdService.d.ts +72 -70
- package/dist/service/crudstd/CrudStdService.js +417 -403
- package/dist/service/curd/CrudProQuick.d.ts +44 -44
- package/dist/service/curd/CrudProQuick.js +147 -147
- package/dist/service/curd/CurdMixByAccountService.d.ts +9 -9
- package/dist/service/curd/CurdMixByAccountService.js +113 -113
- package/dist/service/curd/CurdMixByDictService.d.ts +12 -13
- package/dist/service/curd/CurdMixByDictService.js +118 -114
- package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +30 -31
- package/dist/service/curd/CurdMixByLinkToCustomService.js +207 -203
- package/dist/service/curd/CurdMixBySysConfigService.d.ts +13 -9
- package/dist/service/curd/CurdMixBySysConfigService.js +120 -80
- package/dist/service/curd/CurdMixByWorkbenchService.d.ts +11 -10
- package/dist/service/curd/CurdMixByWorkbenchService.js +86 -78
- package/dist/service/curd/CurdMixService.d.ts +28 -28
- package/dist/service/curd/CurdMixService.js +100 -100
- package/dist/service/curd/CurdMixUtils.d.ts +57 -57
- package/dist/service/curd/CurdMixUtils.js +331 -331
- package/dist/service/curd/CurdProService.d.ts +32 -32
- package/dist/service/curd/CurdProService.js +212 -212
- package/dist/service/curd/fixCfgModel.d.ts +3 -3
- package/dist/service/curd/fixCfgModel.js +104 -104
- package/dist/service/proxyapi/ProxyApiLoadService.d.ts +21 -21
- package/dist/service/proxyapi/ProxyApiLoadService.js +167 -167
- package/dist/service/proxyapi/ProxyApiService.d.ts +61 -61
- package/dist/service/proxyapi/ProxyApiService.js +294 -294
- package/dist/service/proxyapi/ProxyApiUtils.d.ts +15 -15
- package/dist/service/proxyapi/ProxyApiUtils.js +34 -34
- package/dist/service/proxyapi/RouteHandler.d.ts +5 -5
- package/dist/service/proxyapi/RouteHandler.js +9 -9
- package/dist/service/proxyapi/RouteTrie.d.ts +12 -12
- package/dist/service/proxyapi/RouteTrie.js +63 -63
- package/dist/service/proxyapi/WeightedRandom.d.ts +9 -9
- package/dist/service/proxyapi/WeightedRandom.js +31 -31
- package/dist/service/proxyapi/WeightedRoundRobin.d.ts +8 -8
- package/dist/service/proxyapi/WeightedRoundRobin.js +32 -32
- package/index.d.ts +10 -10
- package/package.json +87 -87
- package/src/config/config.default.ts +8 -0
- package/src/controller/base/BaseApiController.ts +39 -0
- package/src/controller/gateway/CrudStdGatewayController.ts +42 -10
- package/src/controller/gateway/FileController.ts +2 -2
- package/src/controller/gateway/PublicApiController.ts +72 -28
- package/src/index.ts +1 -1
- package/src/interface.ts +2 -0
- package/src/libs/crud-pro/exceptions.ts +2 -0
- package/src/libs/crud-pro/models/keys.ts +6 -6
- package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +7 -1
- package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +18 -0
- package/src/libs/utils/AsymmetricCrypto.ts +310 -0
- package/src/libs/utils/format-url.ts +16 -0
- package/src/libs/utils/render-utils.ts +56 -15
- package/src/middleware/global.middleware.ts +8 -0
- package/src/models/SystemEntities.ts +43 -0
- package/src/models/WorkbenchInfoTools.ts +18 -0
- package/src/models/bizmodels.ts +12 -0
- package/src/models/contextLogger.ts +10 -1
- package/src/models/userSession.ts +4 -0
- package/src/schedule/anonymousContext.ts +2 -0
- package/src/service/AuthService.ts +11 -0
- package/src/service/EnumInfoService.ts +35 -22
- package/src/service/UserSessionService.ts +29 -18
- package/src/service/WorkbenchService.ts +42 -2
- package/src/service/base/cache/CacheServiceFactory.ts +66 -0
- package/src/service/base/cache/FatcmsBaseCtxCache.ts +47 -0
- package/src/service/base/cache/FatcmsBaseDiskCache.ts +87 -0
- package/src/service/base/cache/FatcmsBaseMemoryCache.ts +74 -0
- package/src/service/base/cache/FatcmsBaseNoneCache.ts +24 -0
- package/src/service/base/cache/FatcmsBaseRedisCache.ts +48 -0
- package/src/service/crudstd/CrudStdService.ts +28 -12
- package/src/service/curd/CurdMixByAccountService.ts +1 -0
- package/src/service/curd/CurdMixByDictService.ts +14 -8
- package/src/service/curd/CurdMixByLinkToCustomService.ts +21 -12
- package/src/service/curd/CurdMixBySysConfigService.ts +60 -11
- package/src/service/curd/CurdMixByWorkbenchService.ts +31 -24
- package/tsconfig.json +32 -32
- package/dist/service/base/RedisCacheService.js +0 -57
- package/src/service/base/RedisCacheService.ts +0 -42
|
@@ -10,6 +10,9 @@ import { BaseService } from '@/service/base/BaseService';
|
|
|
10
10
|
import * as moment from 'moment';
|
|
11
11
|
import { CommonException } from '@/libs/crud-pro/exceptions';
|
|
12
12
|
import { RedisKeys } from '@/models/RedisKeys';
|
|
13
|
+
import { Aes128CBC } from 'aes-128-cbc';
|
|
14
|
+
import * as md5 from 'md5';
|
|
15
|
+
import { AsymmetricCrypto } from '@/libs/utils/AsymmetricCrypto';
|
|
13
16
|
|
|
14
17
|
export interface IExecuteSimpleSqlParams {
|
|
15
18
|
updateCfg?: Record<string, IFuncCfgModel>;
|
|
@@ -19,6 +22,11 @@ export interface IExecuteSimpleSqlParams {
|
|
|
19
22
|
columns?: string | string[]; // ..."columns": "id,name,age,sex,addr",
|
|
20
23
|
}
|
|
21
24
|
|
|
25
|
+
export interface ISecretBody {
|
|
26
|
+
secretPayload: string;
|
|
27
|
+
secretKey: string; // 使用RSA公钥加密的AES密钥
|
|
28
|
+
}
|
|
29
|
+
|
|
22
30
|
@Controller('/api/BaseApiController')
|
|
23
31
|
export class BaseApiController extends BaseService {
|
|
24
32
|
@Inject()
|
|
@@ -167,4 +175,35 @@ export class BaseApiController extends BaseService {
|
|
|
167
175
|
columnsRelation.push(createdByRelation2);
|
|
168
176
|
}
|
|
169
177
|
}
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
protected async decodeBodyBySession<T>(body: any): Promise<any> {
|
|
181
|
+
const sessionInfo = this.getUserSessionInfo();
|
|
182
|
+
const sessionId = sessionInfo?.sessionId;
|
|
183
|
+
if (!sessionId) {
|
|
184
|
+
throw new Error('[decodeBodyBySessionId] sessionId is null');
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const secretBody = body as ISecretBody;
|
|
188
|
+
|
|
189
|
+
if (!secretBody.secretPayload || !secretBody.secretKey) {
|
|
190
|
+
return body;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const { privateKey } = sessionInfo;
|
|
194
|
+
|
|
195
|
+
const secretPayload: string = secretBody.secretPayload;
|
|
196
|
+
const secretKey: string = secretBody.secretKey; // 使用RSA加密的AES密钥
|
|
197
|
+
const aesKey = await AsymmetricCrypto.decrypt(privateKey, secretKey); // 解密AES密钥
|
|
198
|
+
|
|
199
|
+
const createAes128 = () => {
|
|
200
|
+
const iv = md5(aesKey + sessionId);
|
|
201
|
+
return new Aes128CBC(aesKey, iv);
|
|
202
|
+
}
|
|
203
|
+
const aes128 = createAes128();
|
|
204
|
+
const decryptedPayload = await aes128.time_decrypt_base64_utf8(secretPayload);
|
|
205
|
+
return JSON.parse(decryptedPayload);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
|
|
170
209
|
}
|
|
@@ -4,13 +4,16 @@ import { BaseApiController } from '../base/BaseApiController';
|
|
|
4
4
|
import { CrudStdService, SPECIAL_SETTING_KEY, ICrudStdActionParams, IRequestModelCrudProExt } from '@/service/crudstd/CrudStdService';
|
|
5
5
|
import { KeysOfSimpleSQL } from '@/libs/crud-pro/models/keys';
|
|
6
6
|
import { CommonResult } from '@/libs/utils/common-dto';
|
|
7
|
+
import { checkLogin } from '@/middleware/permission.middleware';
|
|
7
8
|
|
|
8
9
|
type ICrudStdParams = { stdAction: ICrudStdActionParams } & IRequestModelCrudProExt;
|
|
9
10
|
|
|
11
|
+
|
|
12
|
+
|
|
10
13
|
/**
|
|
11
|
-
*
|
|
14
|
+
* 零代码配置的界面,相关的接口的执行。这里的接口都需要登录。
|
|
12
15
|
*/
|
|
13
|
-
@Controller('/ns/gw/api/crudStd')
|
|
16
|
+
@Controller('/ns/gw/api/crudStd', { middleware: [checkLogin()] })
|
|
14
17
|
export class CrudStdGatewayController extends BaseApiController {
|
|
15
18
|
@Inject()
|
|
16
19
|
protected ctx: Context;
|
|
@@ -23,18 +26,36 @@ export class CrudStdGatewayController extends BaseApiController {
|
|
|
23
26
|
*/
|
|
24
27
|
@Post('/getParsedCrudStdAppInfo')
|
|
25
28
|
async getParsedCrudStdAppInfo(): Promise<CommonResult> {
|
|
26
|
-
const
|
|
29
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
30
|
+
const body = decodeBody as ICrudStdParams;
|
|
27
31
|
const appCode = body.stdAction.appCode;
|
|
28
32
|
const parsedAppInfo = await this.crudStdService.getParsedCrudStdAppInfo(appCode);
|
|
29
|
-
|
|
33
|
+
if (parsedAppInfo) {
|
|
34
|
+
const parsedAppInfo2: any = { ...parsedAppInfo };
|
|
35
|
+
delete parsedAppInfo2.created_at;
|
|
36
|
+
delete parsedAppInfo2.created_by;
|
|
37
|
+
delete parsedAppInfo2.workbench_code_array;
|
|
38
|
+
delete parsedAppInfo2.modified_at;
|
|
39
|
+
delete parsedAppInfo2.modified_by;
|
|
40
|
+
delete parsedAppInfo2.modified_desc;
|
|
41
|
+
delete parsedAppInfo2.std_crud_db;
|
|
42
|
+
delete parsedAppInfo2.std_crud_tbl;
|
|
43
|
+
return CommonResult.successNotNull(parsedAppInfo2);
|
|
44
|
+
}
|
|
45
|
+
return CommonResult.successNotNull(null);
|
|
30
46
|
}
|
|
31
47
|
|
|
48
|
+
|
|
32
49
|
/**
|
|
33
50
|
* 列表查询: 分页查询
|
|
34
51
|
*/
|
|
35
52
|
@Post('/getObjectList')
|
|
36
53
|
async getObjectList() {
|
|
37
|
-
|
|
54
|
+
|
|
55
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
56
|
+
const body = decodeBody as ICrudStdParams;
|
|
57
|
+
|
|
58
|
+
const { stdAction, ...otherParams } = body;
|
|
38
59
|
stdAction.settingKey = SPECIAL_SETTING_KEY.QUERY_LIST;
|
|
39
60
|
return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_QUERY_PAGE);
|
|
40
61
|
}
|
|
@@ -44,7 +65,10 @@ export class CrudStdGatewayController extends BaseApiController {
|
|
|
44
65
|
*/
|
|
45
66
|
@Post('/getObjectOne')
|
|
46
67
|
async getObjectOne() {
|
|
47
|
-
const
|
|
68
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
69
|
+
const body = decodeBody as ICrudStdParams;
|
|
70
|
+
|
|
71
|
+
const { stdAction, ...otherParams } = body;
|
|
48
72
|
stdAction.settingKey = SPECIAL_SETTING_KEY.QUERY_ONE;
|
|
49
73
|
return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_QUERY_ONE);
|
|
50
74
|
}
|
|
@@ -54,7 +78,9 @@ export class CrudStdGatewayController extends BaseApiController {
|
|
|
54
78
|
*/
|
|
55
79
|
@Post('/deleteObject')
|
|
56
80
|
async deleteObject() {
|
|
57
|
-
const
|
|
81
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
82
|
+
const body = decodeBody as ICrudStdParams;
|
|
83
|
+
const { stdAction, ...otherParams } = body;
|
|
58
84
|
return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_DELETE);
|
|
59
85
|
}
|
|
60
86
|
|
|
@@ -63,7 +89,9 @@ export class CrudStdGatewayController extends BaseApiController {
|
|
|
63
89
|
*/
|
|
64
90
|
@Post('/createObject')
|
|
65
91
|
async createObject() {
|
|
66
|
-
const
|
|
92
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
93
|
+
const body = decodeBody as ICrudStdParams;
|
|
94
|
+
const { stdAction, ...otherParams } = body;
|
|
67
95
|
return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_INSERT);
|
|
68
96
|
}
|
|
69
97
|
|
|
@@ -72,7 +100,9 @@ export class CrudStdGatewayController extends BaseApiController {
|
|
|
72
100
|
*/
|
|
73
101
|
@Post('/updateObject')
|
|
74
102
|
async updateObject() {
|
|
75
|
-
const
|
|
103
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
104
|
+
const body = decodeBody as ICrudStdParams;
|
|
105
|
+
const { stdAction, ...otherParams } = body;
|
|
76
106
|
return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_UPDATE);
|
|
77
107
|
}
|
|
78
108
|
|
|
@@ -81,7 +111,9 @@ export class CrudStdGatewayController extends BaseApiController {
|
|
|
81
111
|
*/
|
|
82
112
|
@Post('/executeStdAction')
|
|
83
113
|
async executeStdAction() {
|
|
84
|
-
const
|
|
114
|
+
const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
|
|
115
|
+
const body = decodeBody as ICrudStdParams;
|
|
116
|
+
const { stdAction, ...otherParams } = body;
|
|
85
117
|
return await this.crudStdService.executeStdActionByReq(stdAction, otherParams);
|
|
86
118
|
}
|
|
87
119
|
}
|
|
@@ -8,6 +8,7 @@ import { FileCenterService, PATH_PREFIX, toDownloadPaths, isImageFile } from '@/
|
|
|
8
8
|
import { checkLogin, checkPermission } from '@/middleware/permission.middleware';
|
|
9
9
|
import { CommonResult } from '@/libs/utils/common-dto';
|
|
10
10
|
import { SystemFuncCode } from '@/models/SystemPerm';
|
|
11
|
+
import { formatHost } from '@/libs/utils/format-url';
|
|
11
12
|
|
|
12
13
|
function isTrue(obj: any) {
|
|
13
14
|
return obj === true || obj === 'true';
|
|
@@ -55,8 +56,7 @@ export class FileController extends BaseApiController {
|
|
|
55
56
|
|
|
56
57
|
const { fileKey, filename, storageUrl } = await this.fileCenterService.uploadFileToOSS(files, accessType, referer);
|
|
57
58
|
|
|
58
|
-
const origin = this.ctx.request.origin;
|
|
59
|
-
|
|
59
|
+
const origin = formatHost(this.ctx.request.origin);
|
|
60
60
|
const downloadUrls = toDownloadPaths(origin, fileKey);
|
|
61
61
|
|
|
62
62
|
const data = {
|
|
@@ -10,6 +10,14 @@ import { parseJsonObject } from '@/libs/utils/functions';
|
|
|
10
10
|
import { WorkbenchService } from '@/service/WorkbenchService';
|
|
11
11
|
import { SystemRoleCode } from '@/models/SystemPerm';
|
|
12
12
|
import { KeysOfAuthType } from '@/libs/crud-pro/models/keys';
|
|
13
|
+
import { CacheServiceFactory } from '@/service/base/cache/CacheServiceFactory';
|
|
14
|
+
import md5 = require('md5');
|
|
15
|
+
import { CacheLevelEnum, CacheNameEnum } from '@/models/SystemEntities';
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
const DEFAULT_CACHE_LEVEL = CacheLevelEnum.MEMORY;
|
|
19
|
+
const DEFAULT_CACHE_SECOND = 60 * 5;
|
|
20
|
+
|
|
13
21
|
|
|
14
22
|
/**
|
|
15
23
|
* 公开的API,无需鉴权,所有人可以直接访问
|
|
@@ -25,6 +33,9 @@ export class PublicApiController extends BaseApiController {
|
|
|
25
33
|
@Inject()
|
|
26
34
|
private workbenchService: WorkbenchService;
|
|
27
35
|
|
|
36
|
+
@Inject()
|
|
37
|
+
private cacheServiceFactory: CacheServiceFactory;
|
|
38
|
+
|
|
28
39
|
/**
|
|
29
40
|
* 获取所有站点列表
|
|
30
41
|
*/
|
|
@@ -53,39 +64,51 @@ export class PublicApiController extends BaseApiController {
|
|
|
53
64
|
return CommonResult.errorRes('param workbenchMenuCode is null');
|
|
54
65
|
}
|
|
55
66
|
|
|
56
|
-
const
|
|
57
|
-
|
|
67
|
+
const { publicApiMenuCacheLevel, publicApiMenuCacheSecond } = this.ctx.workbenchInfoTools.getWorkbenchConfig();
|
|
68
|
+
|
|
69
|
+
const mapResult = await this.cacheServiceFactory.getJsonObjectCache({
|
|
70
|
+
cacheLevel: publicApiMenuCacheLevel || DEFAULT_CACHE_LEVEL,
|
|
71
|
+
cacheKey: "" + workbenchMenuCode,
|
|
72
|
+
cacheSecond: publicApiMenuCacheSecond || DEFAULT_CACHE_SECOND,
|
|
73
|
+
cacheName: CacheNameEnum.GetWorkbenchMenu,
|
|
74
|
+
getter: async () => {
|
|
75
|
+
|
|
76
|
+
const workbenchMenuCodeStr = '' + workbenchMenuCode;
|
|
77
|
+
const workbenchMenuCodeArray = workbenchMenuCodeStr.split(',');
|
|
78
|
+
const condition = {
|
|
79
|
+
menu_code: {
|
|
80
|
+
$in: workbenchMenuCodeArray,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
58
83
|
|
|
59
|
-
|
|
60
|
-
menu_code: {
|
|
61
|
-
$in: workbenchMenuCodeArray,
|
|
62
|
-
},
|
|
63
|
-
};
|
|
84
|
+
const rows = await this.sysDBUtil.getList({ condition }, SystemTables.sys_menus);
|
|
64
85
|
|
|
65
|
-
|
|
86
|
+
const map = {};
|
|
87
|
+
for (let i = 0; i < rows.length; i++) {
|
|
88
|
+
const rowElement = rows[i];
|
|
89
|
+
const menu_code = rowElement.menu_code;
|
|
90
|
+
const view_auth_config = rowElement.view_auth_config;
|
|
91
|
+
const view_auth_type = rowElement.view_auth_type;
|
|
66
92
|
|
|
67
|
-
|
|
68
|
-
for (let i = 0; i < rows.length; i++) {
|
|
69
|
-
const rowElement = rows[i];
|
|
70
|
-
const menu_code = rowElement.menu_code;
|
|
71
|
-
const view_auth_config = rowElement.view_auth_config;
|
|
72
|
-
const view_auth_type = rowElement.view_auth_type;
|
|
93
|
+
const hasPermission = this.ctx.userSession.isAuthPass(view_auth_type, view_auth_config);
|
|
73
94
|
|
|
74
|
-
|
|
95
|
+
const menu_config_content = rowElement.menu_config_content;
|
|
96
|
+
delete rowElement.menu_config_content;
|
|
97
|
+
const menu_list = parseJsonObject(menu_config_content) || [];
|
|
98
|
+
map[menu_code] = { ...rowElement, menu_list, hasPermission };
|
|
99
|
+
}
|
|
75
100
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
101
|
+
// 特殊的devops菜单
|
|
102
|
+
map['devops'] = {
|
|
103
|
+
menu_list: [], // 这个特殊的菜单在前端写死。
|
|
104
|
+
hasPermission: this.ctx.userSession.isAuthPass(KeysOfAuthType.byRoleCode, [SystemRoleCode.DevOpsWriter, SystemRoleCode.DevOpsViewer, SystemRoleCode.SuperAdmin]),
|
|
105
|
+
};
|
|
81
106
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
hasPermission: this.ctx.userSession.isAuthPass(KeysOfAuthType.byRoleCode, [SystemRoleCode.DevOpsWriter, SystemRoleCode.DevOpsViewer, SystemRoleCode.SuperAdmin]),
|
|
86
|
-
};
|
|
107
|
+
return map;
|
|
108
|
+
}
|
|
109
|
+
})
|
|
87
110
|
|
|
88
|
-
return CommonResult.successRes(
|
|
111
|
+
return CommonResult.successRes(mapResult);
|
|
89
112
|
}
|
|
90
113
|
|
|
91
114
|
/**
|
|
@@ -96,14 +119,35 @@ export class PublicApiController extends BaseApiController {
|
|
|
96
119
|
const body = this.ctx.request.body as any;
|
|
97
120
|
const { workbenchCode, appCode, pathname } = body;
|
|
98
121
|
const resultData: any = {};
|
|
99
|
-
|
|
122
|
+
|
|
123
|
+
const getOneImpl = async (condition: any, tableName: string) => {
|
|
100
124
|
const values = Object.values(condition).filter(Boolean);
|
|
101
125
|
// 查询条件不能为空
|
|
102
126
|
if (values.length > 0) {
|
|
103
|
-
const oneData = await this.sysDBUtil.getOne({ condition },
|
|
127
|
+
const oneData = await this.sysDBUtil.getOne({ condition }, tableName);
|
|
104
128
|
if (oneData && oneData['app_schema']) {
|
|
105
129
|
oneData['app_schema'] = parseJsonObject(oneData['app_schema']);
|
|
106
130
|
}
|
|
131
|
+
return oneData;
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
const { publicApiNavPageInfoCacheLevel, publicApiNavPageInfoCacheSecond } = this.ctx.workbenchInfoTools.getWorkbenchConfig();
|
|
138
|
+
|
|
139
|
+
const getOne = async (condition: any, tableName: string, key: string) => {
|
|
140
|
+
const cacheKey = md5(tableName + ':' + JSON.stringify(condition) + ":" + key);
|
|
141
|
+
const oneData = await this.cacheServiceFactory.getJsonObjectCache({
|
|
142
|
+
cacheLevel: publicApiNavPageInfoCacheLevel || DEFAULT_CACHE_LEVEL,
|
|
143
|
+
cacheSecond: publicApiNavPageInfoCacheSecond || DEFAULT_CACHE_SECOND,
|
|
144
|
+
cacheKey,
|
|
145
|
+
cacheName: CacheNameEnum.GetNavPageInfo,
|
|
146
|
+
getter: async () => {
|
|
147
|
+
return await getOneImpl(condition, tableName);
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
if (oneData) {
|
|
107
151
|
resultData[key] = oneData;
|
|
108
152
|
}
|
|
109
153
|
};
|
package/src/index.ts
CHANGED
|
@@ -54,7 +54,7 @@ export * from './service/anyapi/AnyApiSandboxService';
|
|
|
54
54
|
export * from './service/anyapi/AnyApiService';
|
|
55
55
|
export * from './service/base/ApiBaseService';
|
|
56
56
|
export * from './service/base/BaseService';
|
|
57
|
-
export * from './service/base/
|
|
57
|
+
export * from './service/base/cache/FatcmsBaseRedisCache';
|
|
58
58
|
export * from './service/crudstd/CrudStdActionService';
|
|
59
59
|
export * from './service/crudstd/CrudStdRelationService';
|
|
60
60
|
export * from './service/crudstd/CrudStdService';
|
package/src/interface.ts
CHANGED
|
@@ -3,12 +3,14 @@ import { Transaction } from './libs/crud-pro/models/Transaction';
|
|
|
3
3
|
import { UserSessionInfo } from './models/userSession';
|
|
4
4
|
import { ContextLogger } from './models/contextLogger';
|
|
5
5
|
import { IWorkbenchEntity } from './models/SystemEntities';
|
|
6
|
+
import { WorkbenchInfoTools } from './models/WorkbenchInfoTools';
|
|
6
7
|
|
|
7
8
|
declare module '@midwayjs/core' {
|
|
8
9
|
interface Context {
|
|
9
10
|
transaction: Transaction;
|
|
10
11
|
userSession: UserSessionInfo;
|
|
11
12
|
workbenchInfo: IWorkbenchEntity;
|
|
13
|
+
workbenchInfoTools: WorkbenchInfoTools;
|
|
12
14
|
contextLogger: ContextLogger;
|
|
13
15
|
}
|
|
14
16
|
}
|
|
@@ -47,6 +47,8 @@ export enum Exceptions {
|
|
|
47
47
|
CFG_PARSE_ERROR = 'CFG_PARSE_ERROR',
|
|
48
48
|
CFG_ERROR_POSTGRES_UNIQUE_COLUMNS_NULL = 'CFG_ERROR_POSTGRES_UNIQUE_COLUMNS_NULL',
|
|
49
49
|
CFG_UNIQUE_COLUMN_COUNT_MUST_ONE = 'CFG_UNIQUE_COLUMN_COUNT_MUST_ONE',
|
|
50
|
+
CFG_ORDER_BY_TYPE_ERROR = 'CFG_ORDER_BY_TYPE_ERROR',
|
|
51
|
+
CFG_ERROR_POSTGRES_COLUMN_NAME_INVALID = 'CFG_ERROR_POSTGRES_COLUMN_NAME_INVALID',
|
|
50
52
|
|
|
51
53
|
/**
|
|
52
54
|
* 数据传错
|
|
@@ -112,19 +112,19 @@ export const KeysOfConditions = {
|
|
|
112
112
|
$NOT_NULL: '$notNull', // is not null
|
|
113
113
|
$NULL: '$null', // is null
|
|
114
114
|
$RANGE: '$range', // between 1 and 2
|
|
115
|
-
$LIKE: '$like',
|
|
116
|
-
$NOT_LIKE: '$notLike', // A% 以A开头 {age:1, name:{"$notLike":"张"} }
|
|
115
|
+
$LIKE: '$like', //前缀匹配, A% 以A开头 {age:1, name:{"$like":"张"} }
|
|
116
|
+
$NOT_LIKE: '$notLike', // 前缀匹配 A% 以A开头 {age:1, name:{"$notLike":"张"} }
|
|
117
117
|
|
|
118
118
|
$LIKE_INCLUDE: '$likeInclude', // %A% 包含A {age:1, name:{"$like":"张"} }
|
|
119
119
|
$NOT_LIKE_INCLUDE: '$notLikeInclude', // %A% 包含A {age:1, name:{"$notLike":"张"} }
|
|
120
120
|
|
|
121
|
-
$MATCH: '$match', // 全文索引 {age:1, name:{"$match":"张"} }
|
|
122
|
-
$MATCH_BOOL: '$matchBool', // 全文索引 {age:1, name:{"$matchBool":"张"} }
|
|
121
|
+
$MATCH: '$match', // MYSQL 全文索引 {age:1, name:{"$match":"张"} }
|
|
122
|
+
$MATCH_BOOL: '$matchBool', // MYSQL 全文索引 {age:1, name:{"$matchBool":"张"} }
|
|
123
123
|
|
|
124
124
|
/**
|
|
125
|
-
* SELECT * FROM
|
|
125
|
+
* SELECT * FROM table WHERE JSON_CONTAINS(`related_user1`, JSON_ARRAY('aaaaa'), '$');
|
|
126
126
|
*/
|
|
127
|
-
$JSON_ARRAY_CONTAINS: '$jsonArrayContains', // 全文索引 { related_user1:{"$jsonArrayContains":"
|
|
127
|
+
$JSON_ARRAY_CONTAINS: '$jsonArrayContains', // 全文索引 { related_user1:{"$jsonArrayContains":"aaaaa"} }
|
|
128
128
|
|
|
129
129
|
COMPARE_KEYS: new Set<string>([]),
|
|
130
130
|
ALL_KEYS: new Set<string>([]),
|
|
@@ -238,8 +238,14 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase {
|
|
|
238
238
|
if (MixinUtils.isEmpty(orderBys)) {
|
|
239
239
|
return null;
|
|
240
240
|
}
|
|
241
|
+
const ORDER_BY_TYPE_ARR = ['asc', 'desc'];
|
|
242
|
+
|
|
241
243
|
const orderByArr = orderBys.map(orderBy => {
|
|
242
|
-
|
|
244
|
+
const orderType = (orderBy.orderType || 'asc').toLowerCase();
|
|
245
|
+
if (!ORDER_BY_TYPE_ARR.includes(orderType)) {
|
|
246
|
+
throw new CommonException(Exceptions.CFG_ORDER_BY_TYPE_ERROR, 'orderType must be asc or desc : ' + orderType);
|
|
247
|
+
}
|
|
248
|
+
return toSqlColumnName(orderBy.fieldName, sqlCfgModel) + ' ' + orderType;
|
|
243
249
|
});
|
|
244
250
|
const sql = 'order by ' + orderByArr.join(',');
|
|
245
251
|
return new SqlSegArg(sql);
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
import { CommonException, Exceptions } from '../../exceptions';
|
|
1
2
|
import { SqlCfgModel } from '../../models/SqlCfgModel';
|
|
2
3
|
import { SqlDbType } from '../../models/keys';
|
|
3
4
|
|
|
5
|
+
const COLUMN_NAME_REGEX = /^[a-zA-Z0-9_]+$/;
|
|
6
|
+
function isColumnNameValid(str: string): boolean {
|
|
7
|
+
if (typeof str !== 'string') {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (str === '') {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return COLUMN_NAME_REGEX.test(str);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
|
|
4
17
|
function toSqlColumnName(columnName: string, sqlCfgModel: SqlCfgModel): string {
|
|
18
|
+
|
|
19
|
+
if (!isColumnNameValid(columnName)) {
|
|
20
|
+
throw new CommonException(Exceptions.CFG_ERROR_POSTGRES_COLUMN_NAME_INVALID, 'column name is invalid : ' + columnName);
|
|
21
|
+
}
|
|
22
|
+
|
|
5
23
|
if (sqlCfgModel.sqlDbType === SqlDbType.postgres) {
|
|
6
24
|
return '"' + columnName + '"';
|
|
7
25
|
}
|