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
|
@@ -5,10 +5,10 @@ import { CurdProService } from './curd/CurdProService';
|
|
|
5
5
|
import { RelatedType } from './curd/CurdMixUtils';
|
|
6
6
|
import { SystemTables } from '@/models/SystemTables';
|
|
7
7
|
import { parseConfigContentToEnumInfo, IEnumInfo } from '@/libs/utils/parseConfig';
|
|
8
|
-
import { RedisCacheService } from './base/RedisCacheService';
|
|
9
8
|
import { CurdMixByLinkToCustomService } from './curd/CurdMixByLinkToCustomService';
|
|
10
9
|
import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
|
|
11
|
-
import {
|
|
10
|
+
import { CacheServiceFactory } from './base/cache/CacheServiceFactory';
|
|
11
|
+
import { CacheLevelEnum, CacheNameEnum } from '@/models/SystemEntities';
|
|
12
12
|
|
|
13
13
|
interface IQueryEnumInfo {
|
|
14
14
|
type: RelatedType;
|
|
@@ -24,6 +24,10 @@ function filterEmpty(e: IEnumInfo): boolean {
|
|
|
24
24
|
return e.label && typeof e.value !== 'undefined';
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
const DEFAULT_CACHE_LEVEL = CacheLevelEnum.MEMORY;
|
|
28
|
+
const DEFAULT_CACHE_SECOND = 60 * 5;
|
|
29
|
+
|
|
30
|
+
|
|
27
31
|
@Provide()
|
|
28
32
|
export class EnumInfoService {
|
|
29
33
|
@Inject()
|
|
@@ -35,33 +39,42 @@ export class EnumInfoService {
|
|
|
35
39
|
private curdMixByLinkToCustomService: CurdMixByLinkToCustomService;
|
|
36
40
|
|
|
37
41
|
@Inject()
|
|
38
|
-
private
|
|
42
|
+
private cacheServiceFactory: CacheServiceFactory;
|
|
39
43
|
|
|
40
44
|
async queryEnumInfo(codeList: IQueryEnumInfo[], refreshCache: boolean): Promise<IQueryEnumResult[]> {
|
|
41
|
-
const
|
|
45
|
+
const { queryEnumInfoCacheLevel, queryEnumInfoCacheSecond } = this.ctx.workbenchInfoTools.getWorkbenchConfig() || {};
|
|
46
|
+
|
|
47
|
+
const getEnumInfoByCode = async (type: RelatedType, code: string) => {
|
|
48
|
+
if (type === RelatedType.linkToCustom) {
|
|
49
|
+
return await this.queryEnumInfoByLinkToCustom(code);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const cacheKey = `${type}@@${code}`;
|
|
53
|
+
const emums = refreshCache ? null : await this.cacheServiceFactory.getJsonObjectCache({
|
|
54
|
+
cacheLevel: queryEnumInfoCacheLevel || DEFAULT_CACHE_LEVEL,
|
|
55
|
+
cacheSecond: queryEnumInfoCacheSecond || DEFAULT_CACHE_SECOND,
|
|
56
|
+
cacheKey,
|
|
57
|
+
refreshCache,
|
|
58
|
+
cacheName: CacheNameEnum.GetEnumInfoByCode,
|
|
59
|
+
getter: async () => {
|
|
60
|
+
if (type === RelatedType.sysCfgEnum) {
|
|
61
|
+
return await this.queryEnumInfoBySysCfgEnum(code);
|
|
62
|
+
} else if (type === RelatedType.dict) {
|
|
63
|
+
return await this.queryEnumInfoItemByDict(code);
|
|
64
|
+
}
|
|
65
|
+
return [];
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
return emums;
|
|
69
|
+
};
|
|
42
70
|
|
|
43
71
|
const result = [];
|
|
44
72
|
for (let i = 0; i < codeList.length; i++) {
|
|
45
73
|
const { code, type } = codeList[i];
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
if (!Array.isArray(emums) || emums.length === 0) {
|
|
49
|
-
let values;
|
|
50
|
-
if (type === RelatedType.sysCfgEnum) {
|
|
51
|
-
values = await this.queryEnumInfoBySysCfgEnum(code);
|
|
52
|
-
await this.redisCacheService.setJsonObject(cacheKey, values, expireSecond);
|
|
53
|
-
} else if (type === RelatedType.dict) {
|
|
54
|
-
values = await this.queryEnumInfoItemByDict(code);
|
|
55
|
-
await this.redisCacheService.setJsonObject(cacheKey, values, expireSecond);
|
|
56
|
-
} else if (type === RelatedType.linkToCustom) {
|
|
57
|
-
values = await this.queryEnumInfoByLinkToCustom(code);
|
|
58
|
-
// await this.redisCacheService.setJsonObject(cacheKey, values, expireSecond);
|
|
59
|
-
}
|
|
60
|
-
result.push({ type, code, values });
|
|
61
|
-
} else {
|
|
62
|
-
result.push({ type, code, values: emums });
|
|
63
|
-
}
|
|
74
|
+
const emums = await getEnumInfoByCode(type, code);
|
|
75
|
+
result.push({ type, code, values: emums });
|
|
64
76
|
}
|
|
77
|
+
|
|
65
78
|
return result;
|
|
66
79
|
}
|
|
67
80
|
|
|
@@ -2,13 +2,14 @@ import { Config, Inject, Provide } from '@midwayjs/core';
|
|
|
2
2
|
import { Context } from '@midwayjs/koa';
|
|
3
3
|
import { parseJsonObject } from '@/libs/utils/functions';
|
|
4
4
|
import { ISessionInfo, SESSION_ID_KEY, sessionCookieCfg } from '@/models/userSession';
|
|
5
|
-
import { RedisCacheService } from './base/RedisCacheService';
|
|
6
|
-
import { RedisKeys } from '@/models/RedisKeys';
|
|
7
5
|
import { HEADER_KEY_RUN_BY_ASYNC_TASK_ID } from '@/models/AsyncTaskModel';
|
|
8
6
|
import { CurdProService } from './curd/CurdProService';
|
|
9
7
|
import { KeysOfSimpleSQL } from '@/libs/crud-pro/models/keys';
|
|
10
8
|
import { SystemTables } from '@/models/SystemTables';
|
|
11
9
|
import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
|
|
10
|
+
import { CacheServiceFactory } from './base/cache/CacheServiceFactory';
|
|
11
|
+
import { CacheLevelEnum, CacheNameEnum } from '@/models/SystemEntities';
|
|
12
|
+
import { ICacheServiceBase } from '@/models/bizmodels';
|
|
12
13
|
|
|
13
14
|
function pickUserAvatar(avatar: any): string {
|
|
14
15
|
if (!avatar) {
|
|
@@ -37,11 +38,7 @@ function pickUserAvatar(avatar: any): string {
|
|
|
37
38
|
return null;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
const SESSION_KEEP_TIME_SECOND: number = 3600 * 24 *
|
|
41
|
-
|
|
42
|
-
const toCacheKey = (sessionId: string): string => {
|
|
43
|
-
return `${RedisKeys.USER_SESSION_PREFIX}${sessionId}`;
|
|
44
|
-
};
|
|
41
|
+
const SESSION_KEEP_TIME_SECOND: number = 3600 * 24 * 7;
|
|
45
42
|
|
|
46
43
|
@Provide()
|
|
47
44
|
export class UserSessionService {
|
|
@@ -49,7 +46,7 @@ export class UserSessionService {
|
|
|
49
46
|
private ctx: Context;
|
|
50
47
|
|
|
51
48
|
@Inject()
|
|
52
|
-
private
|
|
49
|
+
private cacheServiceFactory: CacheServiceFactory;
|
|
53
50
|
|
|
54
51
|
@Inject()
|
|
55
52
|
private curdProService: CurdProService;
|
|
@@ -68,6 +65,15 @@ export class UserSessionService {
|
|
|
68
65
|
return SESSION_KEEP_TIME_SECOND;
|
|
69
66
|
}
|
|
70
67
|
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 获取用户会话缓存服务
|
|
71
|
+
* @returns
|
|
72
|
+
*/
|
|
73
|
+
private getUserSessionCacheService(): ICacheServiceBase {
|
|
74
|
+
return this.cacheServiceFactory.getCacheService(CacheLevelEnum.REDIS, CacheNameEnum.UserSessionBySessionId);
|
|
75
|
+
}
|
|
76
|
+
|
|
71
77
|
/**
|
|
72
78
|
* 保存用户会话信息。
|
|
73
79
|
* 用户登录后,在业务的项目中,可以调用此函数,更新bizExt字段
|
|
@@ -77,7 +83,8 @@ export class UserSessionService {
|
|
|
77
83
|
sessionInfo.avatar = pickUserAvatar(sessionInfo.avatar);
|
|
78
84
|
const sessionId = sessionInfo.sessionId;
|
|
79
85
|
const keepTime = this.getSessionKeepTimeSecond();
|
|
80
|
-
|
|
86
|
+
const userSessionCache = this.getUserSessionCacheService();
|
|
87
|
+
await userSessionCache.setJsonObject(sessionId, sessionInfo, keepTime);
|
|
81
88
|
}
|
|
82
89
|
|
|
83
90
|
/**
|
|
@@ -85,7 +92,8 @@ export class UserSessionService {
|
|
|
85
92
|
* @param sessionId
|
|
86
93
|
*/
|
|
87
94
|
public async removeUserSession(sessionId: string) {
|
|
88
|
-
|
|
95
|
+
const userSessionCache = this.getUserSessionCacheService();
|
|
96
|
+
return await userSessionCache.removeItem(sessionId);
|
|
89
97
|
}
|
|
90
98
|
|
|
91
99
|
/**
|
|
@@ -97,7 +105,8 @@ export class UserSessionService {
|
|
|
97
105
|
if (!sessionId) {
|
|
98
106
|
return null;
|
|
99
107
|
}
|
|
100
|
-
|
|
108
|
+
const userSessionCache = this.getUserSessionCacheService();
|
|
109
|
+
return await userSessionCache.getJsonObject(sessionId);
|
|
101
110
|
}
|
|
102
111
|
|
|
103
112
|
/**
|
|
@@ -105,7 +114,7 @@ export class UserSessionService {
|
|
|
105
114
|
* @param asyncTaskId
|
|
106
115
|
*/
|
|
107
116
|
private async getCurrentUserSessionByAsyncTaskId(asyncTaskId: string): Promise<ISessionInfo> {
|
|
108
|
-
const taskSessionCacheKey = `${
|
|
117
|
+
const taskSessionCacheKey = `${asyncTaskId}`;
|
|
109
118
|
|
|
110
119
|
const loadSessionInfo = async (): Promise<ISessionInfo> => {
|
|
111
120
|
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
@@ -124,7 +133,6 @@ export class UserSessionService {
|
|
|
124
133
|
sqlDbType: SystemDbType,
|
|
125
134
|
}
|
|
126
135
|
);
|
|
127
|
-
|
|
128
136
|
const asyncTaskObj = asyncTaskRes.getOneObj();
|
|
129
137
|
if (!asyncTaskObj) {
|
|
130
138
|
return null;
|
|
@@ -132,11 +140,14 @@ export class UserSessionService {
|
|
|
132
140
|
return parseJsonObject(asyncTaskObj.created_user_session);
|
|
133
141
|
};
|
|
134
142
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
const sessionInfo1 = await this.cacheServiceFactory.getJsonObjectCache({
|
|
144
|
+
cacheLevel: CacheLevelEnum.REDIS,
|
|
145
|
+
cacheName: CacheNameEnum.UserSessionByAsyncTaskId,
|
|
146
|
+
cacheKey: taskSessionCacheKey,
|
|
147
|
+
cacheSecond: 3600,
|
|
148
|
+
getter: loadSessionInfo,
|
|
149
|
+
});
|
|
150
|
+
|
|
140
151
|
return sessionInfo1;
|
|
141
152
|
}
|
|
142
153
|
|
|
@@ -7,12 +7,13 @@ import { BaseService } from './base/BaseService';
|
|
|
7
7
|
import { CurdProService } from './curd/CurdProService';
|
|
8
8
|
import { CommonException } from '@/libs/crud-pro/exceptions';
|
|
9
9
|
import { parseJsonObject } from '@/libs/utils/functions';
|
|
10
|
-
import { IWorkbenchEntity } from '@/models/SystemEntities';
|
|
10
|
+
import { IWorkbenchConfig, IWorkbenchEntity } from '@/models/SystemEntities';
|
|
11
11
|
import { IScheduleService } from '@/interface';
|
|
12
12
|
import { getDebugWorkbenchCode } from '@/libs/utils/fatcms-request';
|
|
13
13
|
import { MixinUtils } from '@/libs/crud-pro/utils/MixinUtils';
|
|
14
14
|
import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
|
|
15
15
|
import { HEADER_KEY_RUN_BY_ASYNC_TASK_WORKBENCH_CODE } from '@/models/AsyncTaskModel';
|
|
16
|
+
import { formatHost } from '@/libs/utils/format-url';
|
|
16
17
|
//
|
|
17
18
|
// const lruCache = new LRUCache<string, any>({
|
|
18
19
|
// max: 500,
|
|
@@ -170,10 +171,12 @@ export class WorkbenchService extends BaseService implements IScheduleService {
|
|
|
170
171
|
* @returns
|
|
171
172
|
*/
|
|
172
173
|
private getCurrentHost(): string {
|
|
173
|
-
|
|
174
|
+
let host = this.ctx.request.host;
|
|
174
175
|
if (!host) {
|
|
175
176
|
throw new CommonException('GET_CURRENT_HOST_ERROR', '获取当前域名失败');
|
|
176
177
|
}
|
|
178
|
+
|
|
179
|
+
host = formatHost(host);
|
|
177
180
|
return host;
|
|
178
181
|
}
|
|
179
182
|
|
|
@@ -217,4 +220,41 @@ export class WorkbenchService extends BaseService implements IScheduleService {
|
|
|
217
220
|
}
|
|
218
221
|
return true;
|
|
219
222
|
}
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
public isSupportTheNodePathByWorkbenchInfo(workbenchInfo: IWorkbenchEntity, path: string): boolean {
|
|
227
|
+
|
|
228
|
+
// 非node api路径,直接返回true
|
|
229
|
+
if(!path.startsWith('/ns/')) {
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
const configObj: IWorkbenchConfig = parseJsonObject(workbenchInfo?.config_content);
|
|
234
|
+
// 为开启校验开关。开关为true时,才校验。
|
|
235
|
+
if (!configObj || !configObj.nodeApiWhiteEnable) {
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
let isOkByList = false;
|
|
239
|
+
const { nodeApiWhiteList, nodeApiWhitePrefix } = configObj;
|
|
240
|
+
if (Array.isArray(nodeApiWhiteList) && nodeApiWhiteList.length > 0) {
|
|
241
|
+
isOkByList = nodeApiWhiteList.includes(path);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (isOkByList) {
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
let isOkByPrefix = false;
|
|
249
|
+
if (Array.isArray(nodeApiWhitePrefix) && nodeApiWhitePrefix.length > 0) {
|
|
250
|
+
isOkByPrefix = nodeApiWhitePrefix.some((prefix) => path.startsWith(prefix));
|
|
251
|
+
}
|
|
252
|
+
return isOkByPrefix;
|
|
253
|
+
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
220
260
|
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Inject, Provide, Config } from '@midwayjs/core';
|
|
2
|
+
import { Context } from '@midwayjs/koa';
|
|
3
|
+
import { ICacheServiceBase, IfatcmsCacheConfig } from '@/models/bizmodels';
|
|
4
|
+
import { CacheLevelEnum, CacheNameEnum } from '@/models/SystemEntities';
|
|
5
|
+
import { RedisService } from '@midwayjs/redis';
|
|
6
|
+
import { FatcmsBaseCtxCache } from './FatcmsBaseCtxCache';
|
|
7
|
+
import { FatcmsBaseRedisCache } from './FatcmsBaseRedisCache';
|
|
8
|
+
import { FatcmsBaseDiskCache } from './FatcmsBaseDiskCache';
|
|
9
|
+
import { FatcmsBaseMemoryCache } from './FatcmsBaseMemoryCache';
|
|
10
|
+
import { FatcmsBaseNoneCache } from './FatcmsBaseNoneCache';
|
|
11
|
+
|
|
12
|
+
interface IGetJsonObjectCacheParam {
|
|
13
|
+
cacheLevel: CacheLevelEnum;
|
|
14
|
+
cacheName: CacheNameEnum;
|
|
15
|
+
cacheKey: string;
|
|
16
|
+
cacheSecond: number;
|
|
17
|
+
refreshCache?: boolean;
|
|
18
|
+
getter: () => Promise<any>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Provide()
|
|
22
|
+
export class CacheServiceFactory {
|
|
23
|
+
@Inject()
|
|
24
|
+
protected ctx: Context;
|
|
25
|
+
|
|
26
|
+
@Config('fatcmsCache')
|
|
27
|
+
private fatcmsCache: IfatcmsCacheConfig;
|
|
28
|
+
|
|
29
|
+
@Inject()
|
|
30
|
+
protected redisService: RedisService;
|
|
31
|
+
|
|
32
|
+
public getCacheService(cacheLevelEnum: CacheLevelEnum, cacheName: CacheNameEnum): ICacheServiceBase {
|
|
33
|
+
switch (cacheLevelEnum) {
|
|
34
|
+
case CacheLevelEnum.CONTEXT:
|
|
35
|
+
return new FatcmsBaseCtxCache(this.ctx, cacheName);
|
|
36
|
+
case CacheLevelEnum.REDIS:
|
|
37
|
+
return new FatcmsBaseRedisCache(this.ctx, cacheName, this.redisService);
|
|
38
|
+
case CacheLevelEnum.DISK:
|
|
39
|
+
return new FatcmsBaseDiskCache(this.ctx, cacheName, this.fatcmsCache);
|
|
40
|
+
case CacheLevelEnum.MEMORY:
|
|
41
|
+
return new FatcmsBaseMemoryCache(this.ctx, cacheName);
|
|
42
|
+
default:
|
|
43
|
+
return new FatcmsBaseNoneCache(this.ctx, cacheName);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public async getJsonObjectCache(param: IGetJsonObjectCacheParam): Promise<any> {
|
|
48
|
+
let { cacheLevel, cacheName, cacheKey, cacheSecond, refreshCache, getter } = param;
|
|
49
|
+
|
|
50
|
+
if (!cacheSecond || typeof cacheSecond !== 'number') {
|
|
51
|
+
console.error('[CacheServiceFactory#getJsonObjectCache] cacheSecond is not number, use default value 60, ' + JSON.stringify(param));
|
|
52
|
+
cacheSecond = 60;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const realCacheKey = this.fatcmsCache.keyPrefix + cacheKey;
|
|
56
|
+
|
|
57
|
+
const cacheService = this.getCacheService(cacheLevel, cacheName);
|
|
58
|
+
let obj = cacheService.getJsonObject(realCacheKey);
|
|
59
|
+
if (!obj || refreshCache === true) {
|
|
60
|
+
obj = await getter();
|
|
61
|
+
cacheService.setJsonObject(realCacheKey, obj, cacheSecond);
|
|
62
|
+
}
|
|
63
|
+
return obj;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { ICacheServiceBase } from '@/models/bizmodels';
|
|
2
|
+
import { CacheNameEnum } from '@/models/SystemEntities';
|
|
3
|
+
import { Context } from '@midwayjs/koa';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export class FatcmsBaseCtxCache implements ICacheServiceBase {
|
|
8
|
+
private ctx: Context;
|
|
9
|
+
private cacheName: CacheNameEnum;
|
|
10
|
+
|
|
11
|
+
constructor(ctx: Context, cacheName: CacheNameEnum) {
|
|
12
|
+
this.ctx = ctx;
|
|
13
|
+
this.cacheName = cacheName;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
private getCacheMap(): Map<string, any> {
|
|
17
|
+
if (!this.ctx.baseCtxCacheMap) {
|
|
18
|
+
this.ctx.baseCtxCacheMap = new Map();
|
|
19
|
+
}
|
|
20
|
+
if (!this.ctx.baseCtxCacheMap.has(this.cacheName)) {
|
|
21
|
+
this.ctx.baseCtxCacheMap.set(this.cacheName, new Map());
|
|
22
|
+
}
|
|
23
|
+
return this.ctx.baseCtxCacheMap.get(this.cacheName);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async getJsonObject(key: string): Promise<any> {
|
|
27
|
+
const cacheMap = this.getCacheMap();
|
|
28
|
+
return cacheMap.get(key);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 设置缓存对象
|
|
33
|
+
* @param key
|
|
34
|
+
* @param obj
|
|
35
|
+
* @param expireSecond 过期时间,单位秒
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
async setJsonObject(key: string, obj: any, expireSecond?: number): Promise<any> {
|
|
39
|
+
const cacheMap = this.getCacheMap();
|
|
40
|
+
cacheMap.set(key, obj);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async removeItem(key: string): Promise<any> {
|
|
44
|
+
const cacheMap = this.getCacheMap();
|
|
45
|
+
cacheMap.delete(key);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Context } from '@midwayjs/koa';
|
|
2
|
+
import * as md5 from 'md5';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as fs2 from 'fs';
|
|
5
|
+
import * as path from 'path';
|
|
6
|
+
import { parseJsonObject } from '../../../libs/utils/functions';
|
|
7
|
+
import { ICacheServiceBase, IfatcmsCacheConfig } from '@/models/bizmodels';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export class FatcmsBaseDiskCache implements ICacheServiceBase {
|
|
11
|
+
protected ctx: Context;
|
|
12
|
+
protected cacheName: string;
|
|
13
|
+
private fatcmsCache: IfatcmsCacheConfig;
|
|
14
|
+
|
|
15
|
+
constructor(ctx: Context, cacheName: string, fatcmsCache: IfatcmsCacheConfig) {
|
|
16
|
+
this.ctx = ctx;
|
|
17
|
+
this.cacheName = cacheName;
|
|
18
|
+
this.fatcmsCache = fatcmsCache;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 获取缓存文件路径
|
|
24
|
+
* @param key
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
private async getCacheFilePath(key: string, checkDirExist: boolean = true): Promise<string> {
|
|
28
|
+
const cacheDir0 = this.fatcmsCache.diskCacheDir;
|
|
29
|
+
const cacheDir = path.join(cacheDir0, this.cacheName);
|
|
30
|
+
if (checkDirExist) {
|
|
31
|
+
const isDirExist = await fs2.promises.access(cacheDir).then(() => true, () => false);
|
|
32
|
+
if (!isDirExist) {
|
|
33
|
+
await fs2.promises.mkdir(cacheDir, { recursive: true });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return path.join(cacheDir, `${md5(key)}.json`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async getJsonObject(key: string): Promise<any> {
|
|
40
|
+
const cacheFilePath = await this.getCacheFilePath(key, false);
|
|
41
|
+
try {
|
|
42
|
+
const str = await fs.readFile(cacheFilePath, 'utf8');
|
|
43
|
+
const data = parseJsonObject(str);
|
|
44
|
+
if (data && data.key === key && data.expireAt > Date.now()) {
|
|
45
|
+
return data.data;
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 设置缓存对象
|
|
55
|
+
* @param key
|
|
56
|
+
* @param obj
|
|
57
|
+
* @param expireSecond 过期时间,单位秒
|
|
58
|
+
* @returns
|
|
59
|
+
*/
|
|
60
|
+
async setJsonObject(key: string, obj: any, expireSecond?: number): Promise<any> {
|
|
61
|
+
if (!expireSecond) {
|
|
62
|
+
expireSecond = 60;
|
|
63
|
+
}
|
|
64
|
+
const str = JSON.stringify({
|
|
65
|
+
data: obj,
|
|
66
|
+
key,
|
|
67
|
+
expireAt: Date.now() + expireSecond * 1000,
|
|
68
|
+
});
|
|
69
|
+
const cacheFilePath = await this.getCacheFilePath(key);
|
|
70
|
+
try {
|
|
71
|
+
await fs.writeFile(cacheFilePath, str, 'utf8');
|
|
72
|
+
return true;
|
|
73
|
+
} catch (error) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
async removeItem(key: string): Promise<any> {
|
|
79
|
+
const cacheFilePath = await this.getCacheFilePath(key);
|
|
80
|
+
try {
|
|
81
|
+
await fs.unlink(cacheFilePath);
|
|
82
|
+
return true;
|
|
83
|
+
} catch (error) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Context } from '@midwayjs/koa';
|
|
2
|
+
import { LRUCache } from 'lru-cache';
|
|
3
|
+
import { ICacheServiceBase } from '@/models/bizmodels';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const LRU_CACHE_MAP = new Map<string, LRUCache<string, any>>();
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export class FatcmsBaseMemoryCache implements ICacheServiceBase {
|
|
11
|
+
protected ctx: Context;
|
|
12
|
+
protected cacheName: string;
|
|
13
|
+
|
|
14
|
+
constructor(ctx: Context, cacheName: string) {
|
|
15
|
+
this.ctx = ctx;
|
|
16
|
+
this.cacheName = cacheName;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
private getLruCache(): LRUCache<string, any> {
|
|
20
|
+
if (!LRU_CACHE_MAP.has(this.cacheName)) {
|
|
21
|
+
const lruCache = new LRUCache<string, any>({
|
|
22
|
+
max: 500,
|
|
23
|
+
ttl: 1000 * 60 * 60 * 24,
|
|
24
|
+
ttlAutopurge: true,
|
|
25
|
+
});
|
|
26
|
+
LRU_CACHE_MAP.set(this.cacheName, lruCache);
|
|
27
|
+
}
|
|
28
|
+
return LRU_CACHE_MAP.get(this.cacheName);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async getJsonObject(key: string): Promise<any> {
|
|
32
|
+
try {
|
|
33
|
+
const lruCache = this.getLruCache();
|
|
34
|
+
const saveObj = lruCache.get(key);
|
|
35
|
+
if (saveObj && saveObj.key === key && saveObj.expireAt > Date.now()) {
|
|
36
|
+
return saveObj.data;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
} catch (error) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 设置缓存对象
|
|
46
|
+
* @param key
|
|
47
|
+
* @param obj
|
|
48
|
+
* @param expireSecond 过期时间,单位秒
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
async setJsonObject(key: string, obj: any, expireSecond?: number): Promise<any> {
|
|
52
|
+
const lruCache = this.getLruCache();
|
|
53
|
+
if (!expireSecond) {
|
|
54
|
+
expireSecond = 60;
|
|
55
|
+
}
|
|
56
|
+
const saveObj = {
|
|
57
|
+
data: obj,
|
|
58
|
+
key,
|
|
59
|
+
expireAt: Date.now() + expireSecond * 1000,
|
|
60
|
+
};
|
|
61
|
+
lruCache.set(key, saveObj);
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async removeItem(key: string): Promise<any> {
|
|
66
|
+
try {
|
|
67
|
+
const lruCache = this.getLruCache();
|
|
68
|
+
lruCache.delete(key);
|
|
69
|
+
return true;
|
|
70
|
+
} catch (error) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ICacheServiceBase } from '@/models/bizmodels';
|
|
2
|
+
import { Context } from '@midwayjs/koa';
|
|
3
|
+
|
|
4
|
+
export class FatcmsBaseNoneCache implements ICacheServiceBase {
|
|
5
|
+
protected ctx: Context;
|
|
6
|
+
protected cacheName: string;
|
|
7
|
+
|
|
8
|
+
constructor(ctx: Context, cacheName: string) {
|
|
9
|
+
this.ctx = ctx;
|
|
10
|
+
this.cacheName = cacheName;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
async getJsonObject(key: string): Promise<any> {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async setJsonObject(key: string, obj: any, expireSecond?: number): Promise<any> {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async removeItem(key: string): Promise<any> {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Context } from '@midwayjs/koa';
|
|
2
|
+
import { RedisService } from '@midwayjs/redis';
|
|
3
|
+
import { parseJsonObject } from '../../../libs/utils/functions';
|
|
4
|
+
import { ICacheServiceBase } from '@/models/bizmodels';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export class FatcmsBaseRedisCache implements ICacheServiceBase {
|
|
8
|
+
protected ctx: Context;
|
|
9
|
+
protected cacheName: string;
|
|
10
|
+
protected redisService: RedisService;
|
|
11
|
+
|
|
12
|
+
constructor(ctx: Context, cacheName: string, redisService: RedisService) {
|
|
13
|
+
this.ctx = ctx;
|
|
14
|
+
this.cacheName = cacheName;
|
|
15
|
+
this.redisService = redisService;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
private getCacheKey(key: string): string {
|
|
19
|
+
return `${this.cacheName}${key}`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async getJsonObject(key: string): Promise<any> {
|
|
23
|
+
const cacheKey = this.getCacheKey(key);
|
|
24
|
+
const str = await this.redisService.get(cacheKey);
|
|
25
|
+
return parseJsonObject(str);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 设置缓存对象
|
|
30
|
+
* @param key
|
|
31
|
+
* @param obj
|
|
32
|
+
* @param expireSecond 过期时间,单位秒
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
async setJsonObject(key: string, obj: any, expireSecond?: number): Promise<any> {
|
|
36
|
+
const cacheKey = this.getCacheKey(key);
|
|
37
|
+
if (!expireSecond) {
|
|
38
|
+
expireSecond = 60;
|
|
39
|
+
}
|
|
40
|
+
const str = JSON.stringify(obj);
|
|
41
|
+
return this.redisService.set(cacheKey, str, 'EX', expireSecond);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async removeItem(key: string): Promise<any> {
|
|
45
|
+
const cacheKey = this.getCacheKey(key);
|
|
46
|
+
return await this.redisService.del(cacheKey);
|
|
47
|
+
}
|
|
48
|
+
}
|