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.
Files changed (385) hide show
  1. package/.eslintrc.json +14 -14
  2. package/.prettierrc.js +4 -4
  3. package/README.md +8 -8
  4. package/dist/config/config.default.d.ts +3 -3
  5. package/dist/config/config.default.js +167 -160
  6. package/dist/config/utils.d.ts +1 -1
  7. package/dist/config/utils.js +23 -23
  8. package/dist/configuration.d.ts +7 -7
  9. package/dist/configuration.js +113 -113
  10. package/dist/controller/base/BaseApiController.d.ts +42 -37
  11. package/dist/controller/base/BaseApiController.js +189 -164
  12. package/dist/controller/gateway/AnyApiGatewayController.d.ts +13 -13
  13. package/dist/controller/gateway/AnyApiGatewayController.js +55 -55
  14. package/dist/controller/gateway/AsyncTaskController.d.ts +20 -20
  15. package/dist/controller/gateway/AsyncTaskController.js +181 -181
  16. package/dist/controller/gateway/CrudMtdGatewayController.d.ts +21 -21
  17. package/dist/controller/gateway/CrudMtdGatewayController.js +122 -122
  18. package/dist/controller/gateway/CrudStdGatewayController.d.ts +38 -38
  19. package/dist/controller/gateway/CrudStdGatewayController.js +155 -129
  20. package/dist/controller/gateway/DocGatewayController.d.ts +27 -27
  21. package/dist/controller/gateway/DocGatewayController.js +179 -179
  22. package/dist/controller/gateway/FileController.d.ts +28 -28
  23. package/dist/controller/gateway/FileController.js +145 -144
  24. package/dist/controller/gateway/ProxyApiGatewayController.d.ts +18 -18
  25. package/dist/controller/gateway/ProxyApiGatewayController.js +78 -78
  26. package/dist/controller/gateway/PublicApiController.d.ts +32 -31
  27. package/dist/controller/gateway/PublicApiController.js +215 -179
  28. package/dist/controller/gateway/StaticController.d.ts +23 -23
  29. package/dist/controller/gateway/StaticController.js +286 -286
  30. package/dist/controller/helpers.controller.d.ts +39 -39
  31. package/dist/controller/helpers.controller.js +188 -188
  32. package/dist/controller/home.controller.d.ts +9 -9
  33. package/dist/controller/home.controller.js +72 -72
  34. package/dist/controller/manage/AnyApiMangeApi.d.ts +10 -10
  35. package/dist/controller/manage/AnyApiMangeApi.js +98 -98
  36. package/dist/controller/manage/AppLogMangeApi.d.ts +10 -10
  37. package/dist/controller/manage/AppLogMangeApi.js +88 -88
  38. package/dist/controller/manage/AppMangeApi.d.ts +10 -10
  39. package/dist/controller/manage/AppMangeApi.js +88 -88
  40. package/dist/controller/manage/AppPageMangeApi.d.ts +10 -10
  41. package/dist/controller/manage/AppPageMangeApi.js +87 -87
  42. package/dist/controller/manage/AppSchemaHistoryApi.d.ts +10 -10
  43. package/dist/controller/manage/AppSchemaHistoryApi.js +83 -83
  44. package/dist/controller/manage/CrudMethodsMangeApi.d.ts +10 -10
  45. package/dist/controller/manage/CrudMethodsMangeApi.js +84 -84
  46. package/dist/controller/manage/CrudStandardDesignApi.d.ts +46 -46
  47. package/dist/controller/manage/CrudStandardDesignApi.js +367 -367
  48. package/dist/controller/manage/DataDictManageApi.d.ts +15 -15
  49. package/dist/controller/manage/DataDictManageApi.js +133 -133
  50. package/dist/controller/manage/DeployManageApi.d.ts +19 -19
  51. package/dist/controller/manage/DeployManageApi.js +180 -180
  52. package/dist/controller/manage/DocLibManageApi.d.ts +10 -10
  53. package/dist/controller/manage/DocLibManageApi.js +104 -104
  54. package/dist/controller/manage/DocManageApi.d.ts +11 -11
  55. package/dist/controller/manage/DocManageApi.js +130 -130
  56. package/dist/controller/manage/FileManageApi.d.ts +13 -13
  57. package/dist/controller/manage/FileManageApi.js +77 -77
  58. package/dist/controller/manage/LowCodeTplManageApi.d.ts +13 -13
  59. package/dist/controller/manage/LowCodeTplManageApi.js +86 -86
  60. package/dist/controller/manage/MenuManageApi.d.ts +10 -10
  61. package/dist/controller/manage/MenuManageApi.js +93 -93
  62. package/dist/controller/manage/ProxyApiMangeApi.d.ts +10 -10
  63. package/dist/controller/manage/ProxyApiMangeApi.js +87 -87
  64. package/dist/controller/manage/SuperAdminManageApi.d.ts +24 -24
  65. package/dist/controller/manage/SuperAdminManageApi.js +153 -153
  66. package/dist/controller/manage/SysConfigMangeApi.d.ts +11 -11
  67. package/dist/controller/manage/SysConfigMangeApi.js +126 -126
  68. package/dist/controller/manage/SystemInfoManageApi.d.ts +12 -12
  69. package/dist/controller/manage/SystemInfoManageApi.js +72 -72
  70. package/dist/controller/manage/UserAccountManageApi.d.ts +14 -14
  71. package/dist/controller/manage/UserAccountManageApi.js +129 -129
  72. package/dist/controller/manage/WorkbenchMangeApi.d.ts +11 -11
  73. package/dist/controller/manage/WorkbenchMangeApi.js +103 -103
  74. package/dist/controller/myinfo/AuthController.d.ts +33 -33
  75. package/dist/controller/myinfo/AuthController.js +136 -136
  76. package/dist/controller/myinfo/MyInfoController.d.ts +13 -13
  77. package/dist/controller/myinfo/MyInfoController.js +51 -51
  78. package/dist/controller/render/AppRenderController.d.ts +11 -11
  79. package/dist/controller/render/AppRenderController.js +92 -92
  80. package/dist/controller/test.controller.d.ts +8 -8
  81. package/dist/controller/test.controller.js +51 -51
  82. package/dist/filter/default.filter.d.ts +7 -7
  83. package/dist/filter/default.filter.js +23 -23
  84. package/dist/filter/notfound.filter.d.ts +5 -5
  85. package/dist/filter/notfound.filter.js +20 -20
  86. package/dist/index.d.ts +103 -103
  87. package/dist/index.js +121 -121
  88. package/dist/interface.d.ts +29 -27
  89. package/dist/interface.js +3 -3
  90. package/dist/libs/crud-pro/CrudPro.d.ts +37 -37
  91. package/dist/libs/crud-pro/CrudPro.js +136 -136
  92. package/dist/libs/crud-pro/defaultConfigs.d.ts +4 -4
  93. package/dist/libs/crud-pro/defaultConfigs.js +15 -15
  94. package/dist/libs/crud-pro/exceptions.d.ts +106 -104
  95. package/dist/libs/crud-pro/exceptions.js +119 -117
  96. package/dist/libs/crud-pro/interfaces.d.ts +165 -165
  97. package/dist/libs/crud-pro/interfaces.js +12 -12
  98. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +49 -49
  99. package/dist/libs/crud-pro/models/ExecuteContext.js +79 -79
  100. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +38 -38
  101. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +72 -72
  102. package/dist/libs/crud-pro/models/FuncContext.d.ts +18 -18
  103. package/dist/libs/crud-pro/models/FuncContext.js +6 -6
  104. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +65 -65
  105. package/dist/libs/crud-pro/models/RequestCfgModel.js +81 -81
  106. package/dist/libs/crud-pro/models/RequestModel.d.ts +25 -25
  107. package/dist/libs/crud-pro/models/RequestModel.js +113 -113
  108. package/dist/libs/crud-pro/models/ResModel.d.ts +16 -16
  109. package/dist/libs/crud-pro/models/ResModel.js +2 -2
  110. package/dist/libs/crud-pro/models/ServiceHub.d.ts +20 -20
  111. package/dist/libs/crud-pro/models/ServiceHub.js +2 -2
  112. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +22 -22
  113. package/dist/libs/crud-pro/models/SqlCfgModel.js +40 -40
  114. package/dist/libs/crud-pro/models/SqlSegArg.d.ts +6 -6
  115. package/dist/libs/crud-pro/models/SqlSegArg.js +12 -12
  116. package/dist/libs/crud-pro/models/Transaction.d.ts +30 -30
  117. package/dist/libs/crud-pro/models/Transaction.js +74 -74
  118. package/dist/libs/crud-pro/models/TransactionMySQL.d.ts +28 -28
  119. package/dist/libs/crud-pro/models/TransactionMySQL.js +76 -76
  120. package/dist/libs/crud-pro/models/TransactionPostgres.d.ts +28 -28
  121. package/dist/libs/crud-pro/models/TransactionPostgres.js +85 -85
  122. package/dist/libs/crud-pro/models/TransactionSqlServer.d.ts +34 -34
  123. package/dist/libs/crud-pro/models/TransactionSqlServer.js +92 -92
  124. package/dist/libs/crud-pro/models/keys.d.ts +110 -110
  125. package/dist/libs/crud-pro/models/keys.js +154 -154
  126. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +11 -11
  127. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +73 -73
  128. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.d.ts +9 -9
  129. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.js +125 -125
  130. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.d.ts +17 -17
  131. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +225 -225
  132. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.d.ts +9 -9
  133. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.js +51 -51
  134. package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +13 -13
  135. package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +148 -148
  136. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +24 -24
  137. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +355 -355
  138. package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +25 -25
  139. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +165 -165
  140. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +32 -32
  141. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +339 -334
  142. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +24 -24
  143. package/dist/libs/crud-pro/services/CrudProServiceBase.js +90 -90
  144. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +9 -9
  145. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +72 -72
  146. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +32 -32
  147. package/dist/libs/crud-pro/services/CurdProServiceHub.js +64 -64
  148. package/dist/libs/crud-pro/utils/CompareUtils.d.ts +9 -9
  149. package/dist/libs/crud-pro/utils/CompareUtils.js +25 -25
  150. package/dist/libs/crud-pro/utils/DatabaseName.d.ts +9 -9
  151. package/dist/libs/crud-pro/utils/DatabaseName.js +50 -50
  152. package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +7 -7
  153. package/dist/libs/crud-pro/utils/DateTimeUtils.js +21 -21
  154. package/dist/libs/crud-pro/utils/MemoryRefreshCache.d.ts +19 -19
  155. package/dist/libs/crud-pro/utils/MemoryRefreshCache.js +47 -47
  156. package/dist/libs/crud-pro/utils/MessageParseUtils.d.ts +5 -5
  157. package/dist/libs/crud-pro/utils/MessageParseUtils.js +33 -33
  158. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +39 -39
  159. package/dist/libs/crud-pro/utils/MixinUtils.js +255 -255
  160. package/dist/libs/crud-pro/utils/ModelUtils.d.ts +11 -11
  161. package/dist/libs/crud-pro/utils/ModelUtils.js +54 -54
  162. package/dist/libs/crud-pro/utils/MultiKeyMap.d.ts +11 -11
  163. package/dist/libs/crud-pro/utils/MultiKeyMap.js +63 -63
  164. package/dist/libs/crud-pro/utils/SqlFuncUtils.d.ts +5 -5
  165. package/dist/libs/crud-pro/utils/SqlFuncUtils.js +29 -29
  166. package/dist/libs/crud-pro/utils/TypeUtils.d.ts +40 -40
  167. package/dist/libs/crud-pro/utils/TypeUtils.js +166 -166
  168. package/dist/libs/crud-pro/utils/ValidateUtils.d.ts +3 -3
  169. package/dist/libs/crud-pro/utils/ValidateUtils.js +165 -165
  170. package/dist/libs/crud-pro/utils/pool/MySQLUtils.d.ts +3 -3
  171. package/dist/libs/crud-pro/utils/pool/MySQLUtils.js +19 -19
  172. package/dist/libs/crud-pro/utils/pool/PostgresUtils.d.ts +3 -3
  173. package/dist/libs/crud-pro/utils/pool/PostgresUtils.js +20 -20
  174. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.d.ts +3 -3
  175. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +20 -20
  176. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +4 -4
  177. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +35 -21
  178. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.d.ts +3 -3
  179. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +22 -22
  180. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +2 -2
  181. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.js +11 -11
  182. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +2 -2
  183. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.js +11 -11
  184. package/dist/libs/crud-pro/utils/sqlConvert/convertPgType.d.ts +2 -2
  185. package/dist/libs/crud-pro/utils/sqlConvert/convertPgType.js +128 -128
  186. package/dist/libs/global-config/global-config.d.ts +69 -69
  187. package/dist/libs/global-config/global-config.js +36 -36
  188. package/dist/libs/utils/AsymmetricCrypto.d.ts +76 -0
  189. package/dist/libs/utils/AsymmetricCrypto.js +261 -0
  190. package/dist/libs/utils/base64.d.ts +9 -9
  191. package/dist/libs/utils/base64.js +42 -42
  192. package/dist/libs/utils/common-dto.d.ts +18 -18
  193. package/dist/libs/utils/common-dto.js +40 -40
  194. package/dist/libs/utils/crypto-utils.d.ts +3 -3
  195. package/dist/libs/utils/crypto-utils.js +46 -46
  196. package/dist/libs/utils/errorToString.d.ts +2 -2
  197. package/dist/libs/utils/errorToString.js +57 -57
  198. package/dist/libs/utils/fatcms-request.d.ts +30 -30
  199. package/dist/libs/utils/fatcms-request.js +104 -104
  200. package/dist/libs/utils/format-url.d.ts +2 -0
  201. package/dist/libs/utils/format-url.js +13 -0
  202. package/dist/libs/utils/functions.d.ts +5 -5
  203. package/dist/libs/utils/functions.js +72 -72
  204. package/dist/libs/utils/ordernum-utils.d.ts +2 -2
  205. package/dist/libs/utils/ordernum-utils.js +13 -13
  206. package/dist/libs/utils/parseConfig.d.ts +8 -8
  207. package/dist/libs/utils/parseConfig.js +47 -47
  208. package/dist/libs/utils/parseCreateSql.d.ts +10 -10
  209. package/dist/libs/utils/parseCreateSql.js +87 -87
  210. package/dist/libs/utils/render-utils.d.ts +37 -28
  211. package/dist/libs/utils/render-utils.js +154 -133
  212. package/dist/middleware/forbidden.middleware.d.ts +10 -10
  213. package/dist/middleware/forbidden.middleware.js +54 -54
  214. package/dist/middleware/global.middleware.d.ts +10 -10
  215. package/dist/middleware/global.middleware.js +273 -266
  216. package/dist/middleware/permission.middleware.d.ts +18 -18
  217. package/dist/middleware/permission.middleware.js +74 -74
  218. package/dist/middleware/rediscache.middleware.d.ts +3 -3
  219. package/dist/middleware/rediscache.middleware.js +77 -77
  220. package/dist/middleware/redislock.middleware.d.ts +7 -7
  221. package/dist/middleware/redislock.middleware.js +72 -72
  222. package/dist/middleware/tx.middleware.d.ts +9 -9
  223. package/dist/middleware/tx.middleware.js +40 -40
  224. package/dist/models/AsyncTaskModel.d.ts +74 -74
  225. package/dist/models/AsyncTaskModel.js +31 -31
  226. package/dist/models/RedisKeys.d.ts +15 -15
  227. package/dist/models/RedisKeys.js +18 -18
  228. package/dist/models/SystemEntities.d.ts +139 -105
  229. package/dist/models/SystemEntities.js +30 -9
  230. package/dist/models/SystemPerm.d.ts +95 -95
  231. package/dist/models/SystemPerm.js +100 -100
  232. package/dist/models/SystemTables.d.ts +25 -25
  233. package/dist/models/SystemTables.js +28 -28
  234. package/dist/models/WorkbenchInfoTools.d.ts +7 -0
  235. package/dist/models/WorkbenchInfoTools.js +20 -0
  236. package/dist/models/bizmodels.d.ts +113 -104
  237. package/dist/models/bizmodels.js +39 -39
  238. package/dist/models/contextLogger.d.ts +27 -25
  239. package/dist/models/contextLogger.js +119 -112
  240. package/dist/models/devops.d.ts +12 -12
  241. package/dist/models/devops.js +19 -19
  242. package/dist/models/userSession.d.ts +64 -62
  243. package/dist/models/userSession.js +167 -165
  244. package/dist/schedule/anonymousContext.d.ts +14 -14
  245. package/dist/schedule/anonymousContext.js +61 -59
  246. package/dist/schedule/index.d.ts +4 -4
  247. package/dist/schedule/index.js +10 -10
  248. package/dist/schedule/runSchedule.d.ts +12 -12
  249. package/dist/schedule/runSchedule.js +68 -68
  250. package/dist/schedule/scheduleNames.d.ts +13 -13
  251. package/dist/schedule/scheduleNames.js +17 -17
  252. package/dist/service/AuthService.d.ts +71 -71
  253. package/dist/service/AuthService.js +270 -263
  254. package/dist/service/EnumInfoService.d.ts +30 -30
  255. package/dist/service/EnumInfoService.js +133 -127
  256. package/dist/service/FileCenterService.d.ts +43 -43
  257. package/dist/service/FileCenterService.js +351 -351
  258. package/dist/service/SysConfigService.d.ts +7 -7
  259. package/dist/service/SysConfigService.js +47 -47
  260. package/dist/service/UserAccountService.d.ts +23 -23
  261. package/dist/service/UserAccountService.js +107 -107
  262. package/dist/service/UserSessionService.d.ts +43 -38
  263. package/dist/service/UserSessionService.js +166 -157
  264. package/dist/service/VisitStatService.d.ts +14 -14
  265. package/dist/service/VisitStatService.js +158 -158
  266. package/dist/service/WorkbenchService.d.ts +54 -53
  267. package/dist/service/WorkbenchService.js +237 -211
  268. package/dist/service/anyapi/AnyApiSandboxService.d.ts +15 -15
  269. package/dist/service/anyapi/AnyApiSandboxService.js +110 -110
  270. package/dist/service/anyapi/AnyApiService.d.ts +27 -27
  271. package/dist/service/anyapi/AnyApiService.js +181 -181
  272. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -50
  273. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -287
  274. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -7
  275. package/dist/service/asyncTask/AsyncTaskService.js +34 -34
  276. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -10
  277. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -2
  278. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -7
  279. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -216
  280. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -36
  281. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -141
  282. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -46
  283. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -135
  284. package/dist/service/base/ApiBaseService.d.ts +15 -15
  285. package/dist/service/base/ApiBaseService.js +50 -50
  286. package/dist/service/base/ApiRateLimiter.d.ts +10 -10
  287. package/dist/service/base/ApiRateLimiter.js +51 -51
  288. package/dist/service/base/BaseService.d.ts +41 -41
  289. package/dist/service/base/BaseService.js +101 -101
  290. package/dist/service/base/cache/CacheServiceFactory.d.ts +20 -0
  291. package/dist/service/base/cache/CacheServiceFactory.js +67 -0
  292. package/dist/service/base/cache/FatcmsBaseCtxCache.d.ts +19 -0
  293. package/dist/service/base/cache/FatcmsBaseCtxCache.js +38 -0
  294. package/dist/service/base/cache/FatcmsBaseDiskCache.d.ts +24 -0
  295. package/dist/service/base/cache/FatcmsBaseDiskCache.js +81 -0
  296. package/dist/service/base/cache/FatcmsBaseMemoryCache.d.ts +18 -0
  297. package/dist/service/base/cache/FatcmsBaseMemoryCache.js +66 -0
  298. package/dist/service/base/cache/FatcmsBaseNoneCache.d.ts +10 -0
  299. package/dist/service/base/cache/FatcmsBaseNoneCache.js +19 -0
  300. package/dist/service/base/{RedisCacheService.d.ts → cache/FatcmsBaseRedisCache.d.ts} +20 -20
  301. package/dist/service/base/cache/FatcmsBaseRedisCache.js +39 -0
  302. package/dist/service/crudstd/CrudStdActionService.d.ts +17 -17
  303. package/dist/service/crudstd/CrudStdActionService.js +32 -32
  304. package/dist/service/crudstd/CrudStdConstant.d.ts +58 -58
  305. package/dist/service/crudstd/CrudStdConstant.js +64 -64
  306. package/dist/service/crudstd/CrudStdRelationService.d.ts +10 -10
  307. package/dist/service/crudstd/CrudStdRelationService.js +121 -121
  308. package/dist/service/crudstd/CrudStdService.d.ts +72 -70
  309. package/dist/service/crudstd/CrudStdService.js +417 -403
  310. package/dist/service/curd/CrudProQuick.d.ts +44 -44
  311. package/dist/service/curd/CrudProQuick.js +147 -147
  312. package/dist/service/curd/CurdMixByAccountService.d.ts +9 -9
  313. package/dist/service/curd/CurdMixByAccountService.js +113 -113
  314. package/dist/service/curd/CurdMixByDictService.d.ts +12 -13
  315. package/dist/service/curd/CurdMixByDictService.js +118 -114
  316. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +30 -31
  317. package/dist/service/curd/CurdMixByLinkToCustomService.js +207 -203
  318. package/dist/service/curd/CurdMixBySysConfigService.d.ts +13 -9
  319. package/dist/service/curd/CurdMixBySysConfigService.js +120 -80
  320. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +11 -10
  321. package/dist/service/curd/CurdMixByWorkbenchService.js +86 -78
  322. package/dist/service/curd/CurdMixService.d.ts +28 -28
  323. package/dist/service/curd/CurdMixService.js +100 -100
  324. package/dist/service/curd/CurdMixUtils.d.ts +57 -57
  325. package/dist/service/curd/CurdMixUtils.js +331 -331
  326. package/dist/service/curd/CurdProService.d.ts +32 -32
  327. package/dist/service/curd/CurdProService.js +212 -212
  328. package/dist/service/curd/fixCfgModel.d.ts +3 -3
  329. package/dist/service/curd/fixCfgModel.js +104 -104
  330. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +21 -21
  331. package/dist/service/proxyapi/ProxyApiLoadService.js +167 -167
  332. package/dist/service/proxyapi/ProxyApiService.d.ts +61 -61
  333. package/dist/service/proxyapi/ProxyApiService.js +294 -294
  334. package/dist/service/proxyapi/ProxyApiUtils.d.ts +15 -15
  335. package/dist/service/proxyapi/ProxyApiUtils.js +34 -34
  336. package/dist/service/proxyapi/RouteHandler.d.ts +5 -5
  337. package/dist/service/proxyapi/RouteHandler.js +9 -9
  338. package/dist/service/proxyapi/RouteTrie.d.ts +12 -12
  339. package/dist/service/proxyapi/RouteTrie.js +63 -63
  340. package/dist/service/proxyapi/WeightedRandom.d.ts +9 -9
  341. package/dist/service/proxyapi/WeightedRandom.js +31 -31
  342. package/dist/service/proxyapi/WeightedRoundRobin.d.ts +8 -8
  343. package/dist/service/proxyapi/WeightedRoundRobin.js +32 -32
  344. package/index.d.ts +10 -10
  345. package/package.json +87 -87
  346. package/src/config/config.default.ts +8 -0
  347. package/src/controller/base/BaseApiController.ts +39 -0
  348. package/src/controller/gateway/CrudStdGatewayController.ts +42 -10
  349. package/src/controller/gateway/FileController.ts +2 -2
  350. package/src/controller/gateway/PublicApiController.ts +72 -28
  351. package/src/index.ts +1 -1
  352. package/src/interface.ts +2 -0
  353. package/src/libs/crud-pro/exceptions.ts +2 -0
  354. package/src/libs/crud-pro/models/keys.ts +6 -6
  355. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +7 -1
  356. package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +18 -0
  357. package/src/libs/utils/AsymmetricCrypto.ts +310 -0
  358. package/src/libs/utils/format-url.ts +16 -0
  359. package/src/libs/utils/render-utils.ts +56 -15
  360. package/src/middleware/global.middleware.ts +8 -0
  361. package/src/models/SystemEntities.ts +43 -0
  362. package/src/models/WorkbenchInfoTools.ts +18 -0
  363. package/src/models/bizmodels.ts +12 -0
  364. package/src/models/contextLogger.ts +10 -1
  365. package/src/models/userSession.ts +4 -0
  366. package/src/schedule/anonymousContext.ts +2 -0
  367. package/src/service/AuthService.ts +11 -0
  368. package/src/service/EnumInfoService.ts +35 -22
  369. package/src/service/UserSessionService.ts +29 -18
  370. package/src/service/WorkbenchService.ts +42 -2
  371. package/src/service/base/cache/CacheServiceFactory.ts +66 -0
  372. package/src/service/base/cache/FatcmsBaseCtxCache.ts +47 -0
  373. package/src/service/base/cache/FatcmsBaseDiskCache.ts +87 -0
  374. package/src/service/base/cache/FatcmsBaseMemoryCache.ts +74 -0
  375. package/src/service/base/cache/FatcmsBaseNoneCache.ts +24 -0
  376. package/src/service/base/cache/FatcmsBaseRedisCache.ts +48 -0
  377. package/src/service/crudstd/CrudStdService.ts +28 -12
  378. package/src/service/curd/CurdMixByAccountService.ts +1 -0
  379. package/src/service/curd/CurdMixByDictService.ts +14 -8
  380. package/src/service/curd/CurdMixByLinkToCustomService.ts +21 -12
  381. package/src/service/curd/CurdMixBySysConfigService.ts +60 -11
  382. package/src/service/curd/CurdMixByWorkbenchService.ts +31 -24
  383. package/tsconfig.json +32 -32
  384. package/dist/service/base/RedisCacheService.js +0 -57
  385. 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 { RedisKeys } from '@/models/RedisKeys';
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 redisCacheService: RedisCacheService;
42
+ private cacheServiceFactory: CacheServiceFactory;
39
43
 
40
44
  async queryEnumInfo(codeList: IQueryEnumInfo[], refreshCache: boolean): Promise<IQueryEnumResult[]> {
41
- const expireSecond = 2 * 60;
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 cacheKey = `${RedisKeys.QUERY_ENUM_INFO_PREFIX}${type}@@${code}`;
47
- const emums = refreshCache ? null : await this.redisCacheService.getJsonObject(cacheKey);
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 * 30;
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 redisCacheService: RedisCacheService;
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
- await this.redisCacheService.setJsonObject(toCacheKey(sessionId), sessionInfo, keepTime);
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
- return await this.redisCacheService.removeItem(toCacheKey(sessionId));
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
- return await this.redisCacheService.getJsonObject(toCacheKey(sessionId));
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 = `${RedisKeys.USER_SESSION_ASYNC_TASK_ID_PREFIX}${asyncTaskId}`;
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
- let sessionInfo1 = await this.redisCacheService.getJsonObject(taskSessionCacheKey);
136
- if (!sessionInfo1) {
137
- sessionInfo1 = await loadSessionInfo();
138
- await this.redisCacheService.setJsonObject(taskSessionCacheKey, sessionInfo1, 3600); // 只缓存一小时即可
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
- const host = this.ctx.request.host;
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
+ }