midway-fatcms 0.0.16 → 0.0.18

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 (146) hide show
  1. package/dist/config/config.default.js +5 -3
  2. package/dist/configuration.d.ts +0 -3
  3. package/dist/configuration.js +0 -19
  4. package/dist/controller/gateway/ProxyApiGatewayController.d.ts +0 -2
  5. package/dist/controller/gateway/ProxyApiGatewayController.js +0 -18
  6. package/dist/controller/helpers.controller.d.ts +4 -5
  7. package/dist/controller/helpers.controller.js +56 -14
  8. package/dist/controller/manage/AccountRoleManageApi.js +3 -5
  9. package/dist/controller/manage/AnyApiMangeApi.js +4 -3
  10. package/dist/controller/manage/AppMangeApi.js +3 -4
  11. package/dist/controller/manage/AppPageMangeApi.js +4 -3
  12. package/dist/controller/manage/CrudMethodsMangeApi.js +3 -4
  13. package/dist/controller/manage/DataDictManageApi.js +6 -7
  14. package/dist/controller/manage/DeployManageApi.js +4 -5
  15. package/dist/controller/manage/FlowConfigManageApi.js +3 -5
  16. package/dist/controller/manage/MenuManageApi.js +3 -4
  17. package/dist/controller/manage/ProxyApiMangeApi.js +3 -4
  18. package/dist/controller/manage/SysConfigMangeApi.js +3 -3
  19. package/dist/controller/manage/SystemInfoManageApi.js +3 -1
  20. package/dist/controller/manage/WorkbenchMangeApi.js +3 -4
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.js +3 -0
  23. package/dist/libs/crud-pro/models/TransactionSqlServer.js +27 -4
  24. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +5 -8
  25. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +25 -42
  26. package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.d.ts +2 -37
  27. package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.js +137 -213
  28. package/dist/libs/crud-pro/utils/CrudMonitor.d.ts +0 -9
  29. package/dist/libs/crud-pro/utils/CrudMonitor.js +0 -21
  30. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +2 -17
  31. package/dist/libs/crud-pro/utils/MixinUtils.js +4 -84
  32. package/dist/libs/crud-pro/utils/idgene/generateSnowflakeId.d.ts +12 -0
  33. package/dist/libs/crud-pro/utils/idgene/generateSnowflakeId.js +61 -0
  34. package/dist/libs/crud-pro/utils/idgene/generateSnowflakeIdExt.d.ts +19 -0
  35. package/dist/libs/crud-pro/utils/idgene/generateSnowflakeIdExt.js +89 -0
  36. package/dist/libs/crud-pro/utils/idgene/index.d.ts +3 -0
  37. package/dist/libs/crud-pro/utils/idgene/index.js +10 -0
  38. package/dist/libs/crud-pro/utils/idgene/uuid.d.ts +7 -0
  39. package/dist/libs/crud-pro/utils/idgene/uuid.js +28 -0
  40. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +26 -0
  41. package/dist/libs/crud-pro-quick/fixSoftDelete.d.ts +0 -17
  42. package/dist/libs/crud-pro-quick/fixSoftDelete.js +55 -5
  43. package/dist/libs/crud-pro-quick/models.d.ts +11 -1
  44. package/dist/middleware/cacherefresh.middleware.d.ts +3 -46
  45. package/dist/middleware/cacherefresh.middleware.js +9 -67
  46. package/dist/models/CacheRefreshCategory.d.ts +1 -18
  47. package/dist/models/CacheRefreshCategory.js +0 -17
  48. package/dist/models/SystemEntities.d.ts +2 -0
  49. package/dist/models/bizmodels.d.ts +0 -8
  50. package/dist/models/bizmodels.js +0 -8
  51. package/dist/schedule/scheduleNames.d.ts +2 -0
  52. package/dist/schedule/scheduleNames.js +3 -1
  53. package/dist/service/SysAppService.d.ts +0 -6
  54. package/dist/service/SysAppService.js +10 -79
  55. package/dist/service/SysConfigService.d.ts +0 -6
  56. package/dist/service/SysConfigService.js +6 -51
  57. package/dist/service/SysDictDataService.d.ts +0 -5
  58. package/dist/service/SysDictDataService.js +7 -65
  59. package/dist/service/SysMenuService.d.ts +0 -4
  60. package/dist/service/SysMenuService.js +5 -44
  61. package/dist/service/WorkbenchService.d.ts +1 -6
  62. package/dist/service/WorkbenchService.js +9 -63
  63. package/dist/service/anyapi/AnyApiService.d.ts +1 -1
  64. package/dist/service/anyapi/AnyApiService.js +6 -16
  65. package/dist/service/base/bizmemcache/BizMemCacheService.d.ts +16 -0
  66. package/dist/service/base/bizmemcache/BizMemCacheService.js +241 -0
  67. package/dist/service/base/bizmemcache/BizMemCacheStore.d.ts +34 -0
  68. package/dist/service/base/bizmemcache/BizMemCacheStore.js +119 -0
  69. package/dist/service/base/bizmemcache/BizMemCacheTypes.d.ts +60 -0
  70. package/dist/service/base/bizmemcache/BizMemCacheTypes.js +18 -0
  71. package/dist/service/base/cache-refresh/CacheRefreshHub.d.ts +0 -22
  72. package/dist/service/base/cache-refresh/CacheRefreshHub.js +0 -22
  73. package/dist/service/base/cache-refresh/CacheRefreshHubScheduleService.d.ts +0 -6
  74. package/dist/service/base/cache-refresh/CacheRefreshHubScheduleService.js +0 -6
  75. package/dist/service/crudstd/CrudStdService.js +1 -1
  76. package/dist/service/curd/CurdMixByDictService.d.ts +0 -4
  77. package/dist/service/curd/CurdMixByDictService.js +9 -55
  78. package/dist/service/curd/CurdMixBySysConfigService.d.ts +0 -5
  79. package/dist/service/curd/CurdMixBySysConfigService.js +9 -54
  80. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +0 -1
  81. package/dist/service/curd/CurdMixByWorkbenchService.js +9 -36
  82. package/dist/service/curd/CurdProService.d.ts +0 -1
  83. package/dist/service/curd/CurdProService.js +0 -4
  84. package/dist/service/curd/fixCfgModel.js +21 -1
  85. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +3 -8
  86. package/dist/service/proxyapi/ProxyApiLoadService.js +40 -68
  87. package/dist/service/proxyapi/ProxyApiService.d.ts +2 -0
  88. package/dist/service/proxyapi/ProxyApiService.js +32 -9
  89. package/dist/service/proxyapi/RouteTrie.d.ts +1 -7
  90. package/dist/service/proxyapi/RouteTrie.js +1 -17
  91. package/package.json +1 -1
  92. package/src/config/config.default.ts +4 -2
  93. package/src/configuration.ts +0 -23
  94. package/src/controller/gateway/ProxyApiGatewayController.ts +1 -9
  95. package/src/controller/helpers.controller.ts +66 -15
  96. package/src/controller/manage/AccountRoleManageApi.ts +3 -5
  97. package/src/controller/manage/AnyApiMangeApi.ts +4 -3
  98. package/src/controller/manage/AppMangeApi.ts +4 -5
  99. package/src/controller/manage/AppPageMangeApi.ts +4 -3
  100. package/src/controller/manage/CrudMethodsMangeApi.ts +4 -5
  101. package/src/controller/manage/DataDictManageApi.ts +7 -8
  102. package/src/controller/manage/DeployManageApi.ts +2 -3
  103. package/src/controller/manage/FlowConfigManageApi.ts +3 -5
  104. package/src/controller/manage/MenuManageApi.ts +4 -5
  105. package/src/controller/manage/ProxyApiMangeApi.ts +4 -5
  106. package/src/controller/manage/SysConfigMangeApi.ts +5 -5
  107. package/src/controller/manage/SystemInfoManageApi.ts +3 -1
  108. package/src/controller/manage/WorkbenchMangeApi.ts +4 -5
  109. package/src/index.ts +3 -0
  110. package/src/libs/crud-pro/models/TransactionSqlServer.ts +26 -4
  111. package/src/libs/crud-pro/services/CrudProCachedCfgService.ts +25 -43
  112. package/src/libs/crud-pro/services/CrudProDataTypeConvertService.ts +149 -219
  113. package/src/libs/crud-pro/utils/CrudMonitor.ts +0 -23
  114. package/src/libs/crud-pro/utils/MixinUtils.ts +309 -400
  115. package/src/libs/crud-pro/utils/idgene/generateSnowflakeId.ts +65 -0
  116. package/src/libs/crud-pro/utils/idgene/generateSnowflakeIdExt.ts +99 -0
  117. package/src/libs/crud-pro/utils/idgene/index.ts +3 -0
  118. package/src/libs/crud-pro/utils/idgene/uuid.ts +26 -0
  119. package/src/libs/crud-pro/utils/pool/SqlServerUtils.ts +31 -0
  120. package/src/libs/crud-pro-quick/fixSoftDelete.ts +84 -18
  121. package/src/libs/crud-pro-quick/models.ts +15 -3
  122. package/src/middleware/cacherefresh.middleware.ts +10 -71
  123. package/src/models/CacheRefreshCategory.ts +0 -17
  124. package/src/models/SystemEntities.ts +2 -0
  125. package/src/models/bizmodels.ts +0 -8
  126. package/src/schedule/scheduleNames.ts +5 -3
  127. package/src/service/SysAppService.ts +7 -78
  128. package/src/service/SysConfigService.ts +4 -45
  129. package/src/service/SysDictDataService.ts +5 -64
  130. package/src/service/SysMenuService.ts +3 -40
  131. package/src/service/WorkbenchService.ts +9 -72
  132. package/src/service/anyapi/AnyApiService.ts +5 -17
  133. package/src/service/base/bizmemcache/BizMemCacheService.ts +290 -0
  134. package/src/service/base/bizmemcache/BizMemCacheStore.ts +159 -0
  135. package/src/service/base/bizmemcache/BizMemCacheTypes.ts +76 -0
  136. package/src/service/base/cache-refresh/CacheRefreshHub.ts +0 -22
  137. package/src/service/base/cache-refresh/CacheRefreshHubScheduleService.ts +0 -6
  138. package/src/service/crudstd/CrudStdService.ts +3 -2
  139. package/src/service/curd/CurdMixByDictService.ts +10 -61
  140. package/src/service/curd/CurdMixBySysConfigService.ts +9 -62
  141. package/src/service/curd/CurdMixByWorkbenchService.ts +7 -32
  142. package/src/service/curd/CurdProService.ts +0 -6
  143. package/src/service/curd/fixCfgModel.ts +145 -125
  144. package/src/service/proxyapi/ProxyApiLoadService.ts +39 -77
  145. package/src/service/proxyapi/ProxyApiService.ts +45 -9
  146. package/src/service/proxyapi/RouteTrie.ts +1 -18
@@ -8,81 +8,35 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var WorkbenchService_1;
12
11
  Object.defineProperty(exports, "__esModule", { value: true });
13
12
  exports.WorkbenchService = void 0;
14
13
  const core_1 = require("@midwayjs/core");
15
- const keys_1 = require("../libs/crud-pro/models/keys");
16
- const SystemTables_1 = require("../models/SystemTables");
17
14
  const BaseService_1 = require("./base/BaseService");
18
- const CurdProService_1 = require("./curd/CurdProService");
19
15
  const exceptions_1 = require("../libs/crud-pro/exceptions");
20
16
  const functions_1 = require("../libs/utils/functions");
21
17
  const fatcms_request_1 = require("../libs/utils/fatcms-request");
22
- const MixinUtils_1 = require("../libs/crud-pro/utils/MixinUtils");
23
- const global_config_1 = require("../libs/global-config/global-config");
24
18
  const AsyncTaskModel_1 = require("../models/AsyncTaskModel");
25
19
  const format_url_1 = require("../libs/utils/format-url");
26
- const CacheServiceFactory_1 = require("../service/base/cache/CacheServiceFactory");
27
- const bizmodels_1 = require("../models/bizmodels");
28
- let WorkbenchService = WorkbenchService_1 = class WorkbenchService extends BaseService_1.BaseService {
29
- async clearCache() {
30
- await this.cacheServiceFactory.removeItemCache({
31
- cacheKey: bizmodels_1.CacheNameEnum.CurdMixByWorkbench,
32
- cacheName: bizmodels_1.CacheNameEnum.CurdMixByWorkbench,
33
- });
34
- await this.cacheServiceFactory.removeItemCache({
35
- cacheKey: bizmodels_1.CacheNameEnum.GetWorkbenchCachedObj,
36
- cacheName: bizmodels_1.CacheNameEnum.GetWorkbenchCachedObj,
37
- });
38
- await this.getWorkbenchCachedObj(true);
39
- }
40
- async runBySchedule() {
41
- await this.getWorkbenchCachedObj(true);
42
- }
43
- async getWorkbenchCachedObj(isForceRefresh) {
44
- return this.cacheServiceFactory.getJsonObjectCache({
45
- cacheKey: bizmodels_1.CacheNameEnum.GetWorkbenchCachedObj,
46
- cacheName: bizmodels_1.CacheNameEnum.GetWorkbenchCachedObj,
47
- refreshCache: isForceRefresh,
48
- getter: async (ctx) => {
49
- const service = await ctx.requestContext.getAsync(WorkbenchService_1);
50
- const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
51
- const reqJson = { condition: { deleted_at: 0 }, pageSize: 1000, limit: 1000 };
52
- const res = await service.curdProService.executeCrudByCfg(reqJson, {
53
- sqlTable: SystemTables_1.SystemTables.sys_workbench,
54
- sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
55
- sqlDatabase: SystemDbName,
56
- sqlDbType: SystemDbType,
57
- });
58
- const listData = res.getResRows();
59
- const domainMap1 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain); // 主域名。其他两个域名。
60
- const domainMap2 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain2);
61
- const domainMap3 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain3);
62
- const domainMap = { ...domainMap1, ...domainMap2, ...domainMap3 };
63
- const cacheObj = {
64
- workbenchList: listData,
65
- workbenchDomainMap: domainMap
66
- };
67
- return cacheObj;
68
- },
69
- });
20
+ const BizMemCacheStore_1 = require("../service/base/bizmemcache/BizMemCacheStore");
21
+ let WorkbenchService = class WorkbenchService extends BaseService_1.BaseService {
22
+ getWorkbenchCachedObj() {
23
+ return BizMemCacheStore_1.bizMemCacheStore.getWorkbench();
70
24
  }
71
25
  /**
72
26
  * 获取所有站点列表
73
27
  * @returns
74
28
  */
75
29
  async getAllWorkbenchInfoList() {
76
- const cachedObj = await this.getWorkbenchCachedObj();
77
- return cachedObj.workbenchList;
30
+ const cachedObj = this.getWorkbenchCachedObj();
31
+ return (cachedObj === null || cachedObj === void 0 ? void 0 : cachedObj.workbenchList) || [];
78
32
  }
79
33
  /**
80
34
  * 获取所有站点列表,以map的形式返回。其中key为站点域名,value为站点信息
81
35
  * @returns
82
36
  */
83
37
  async getAllWorkbenchInfoMap() {
84
- const cachedObj = await this.getWorkbenchCachedObj();
85
- return cachedObj.workbenchDomainMap;
38
+ const cachedObj = this.getWorkbenchCachedObj();
39
+ return (cachedObj === null || cachedObj === void 0 ? void 0 : cachedObj.workbenchDomainMap) || {};
86
40
  }
87
41
  /**
88
42
  * 检查站点编码是否匹配
@@ -233,19 +187,11 @@ __decorate([
233
187
  (0, core_1.Inject)(),
234
188
  __metadata("design:type", Object)
235
189
  ], WorkbenchService.prototype, "ctx", void 0);
236
- __decorate([
237
- (0, core_1.Inject)(),
238
- __metadata("design:type", CurdProService_1.CurdProService)
239
- ], WorkbenchService.prototype, "curdProService", void 0);
240
- __decorate([
241
- (0, core_1.Inject)(),
242
- __metadata("design:type", CacheServiceFactory_1.CacheServiceFactory)
243
- ], WorkbenchService.prototype, "cacheServiceFactory", void 0);
244
190
  __decorate([
245
191
  (0, core_1.Config)('fatcmsTargetWorkbenchCode'),
246
192
  __metadata("design:type", String)
247
193
  ], WorkbenchService.prototype, "fatcmsTargetWorkbenchCode", void 0);
248
- WorkbenchService = WorkbenchService_1 = __decorate([
194
+ WorkbenchService = __decorate([
249
195
  (0, core_1.Provide)()
250
196
  ], WorkbenchService);
251
197
  exports.WorkbenchService = WorkbenchService;
@@ -8,7 +8,7 @@ export declare class AnyApiService extends ApiBaseService {
8
8
  protected workbenchService: WorkbenchService;
9
9
  executeAnyApiMethod(methodCode: string, headers: any, body: any, query: any): Promise<any>;
10
10
  private getAnyApiMethod;
11
- private _getAnyApiMethod;
11
+ private loadAnyApiMethodFromDb;
12
12
  /**
13
13
  * 构造参数
14
14
  * @param anyApi
@@ -13,7 +13,6 @@ exports.AnyApiService = void 0;
13
13
  const core_1 = require("@midwayjs/core");
14
14
  const keys_1 = require("../../libs/crud-pro/models/keys");
15
15
  const SystemTables_1 = require("../../models/SystemTables");
16
- const lru_cache_1 = require("lru-cache");
17
16
  const devops_1 = require("../../models/devops");
18
17
  const CurdMixService_1 = require("../curd/CurdMixService");
19
18
  const AnyApiSandboxService_1 = require("./AnyApiSandboxService");
@@ -24,11 +23,7 @@ const WorkbenchService_1 = require("../WorkbenchService");
24
23
  const ValidateUtils_1 = require("../../libs/crud-pro/utils/ValidateUtils");
25
24
  const ApiBaseService_1 = require("../base/ApiBaseService");
26
25
  const global_config_1 = require("../../libs/global-config/global-config");
27
- const lruCache = new lru_cache_1.LRUCache({
28
- max: 500,
29
- ttl: 1000 * 60,
30
- ttlAutopurge: true,
31
- });
26
+ const BizMemCacheStore_1 = require("../../service/base/bizmemcache/BizMemCacheStore");
32
27
  let AnyApiService = class AnyApiService extends ApiBaseService_1.ApiBaseService {
33
28
  async executeAnyApiMethod(methodCode, headers, body, query) {
34
29
  const anyApi = await this.getAnyApiMethod(methodCode);
@@ -53,19 +48,14 @@ let AnyApiService = class AnyApiService extends ApiBaseService_1.ApiBaseService
53
48
  return funcRes;
54
49
  }
55
50
  async getAnyApiMethod(methodCode) {
56
- // 开发环境,不使用缓存
51
+ var _a;
57
52
  if (this.isEnableDebug()) {
58
- return this._getAnyApiMethod(methodCode);
59
- }
60
- // 线上环境可以使用缓存
61
- let anyApi = lruCache.get(methodCode);
62
- if (!anyApi) {
63
- anyApi = await this._getAnyApiMethod(methodCode);
64
- lruCache.set(methodCode, anyApi);
53
+ return this.loadAnyApiMethodFromDb(methodCode);
65
54
  }
66
- return anyApi;
55
+ const sysAnyApiMethodMap = ((_a = BizMemCacheStore_1.bizMemCacheStore.getSysAnyApi()) === null || _a === void 0 ? void 0 : _a.sysAnyApiMethodMap) || {};
56
+ return sysAnyApiMethodMap[methodCode] || null;
67
57
  }
68
- async _getAnyApiMethod(methodCode) {
58
+ async loadAnyApiMethodFromDb(methodCode) {
69
59
  const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
70
60
  const res = await this.curdMixService.executeCrudByCfg({ condition: { method: methodCode, deleted_at: 0 } }, {
71
61
  sqlTable: SystemTables_1.SystemTables.sys_anyapi,
@@ -0,0 +1,16 @@
1
+ import { IScheduleService } from '../../../interface';
2
+ import { BaseService } from "../../../service/base/BaseService";
3
+ export declare class BizMemCacheService extends BaseService implements IScheduleService {
4
+ private curdProService;
5
+ runBySchedule(): Promise<void>;
6
+ private reloadIfRedisChanged;
7
+ private loadSysMenuCacheObj;
8
+ private loadDataDictItemCacheObj;
9
+ private loadSysConfigObj;
10
+ private loadWorkbenchCachedObj;
11
+ private loadSysAppCacheObj;
12
+ private loadSysAppPageCacheObj;
13
+ private loadSysAnyApiCacheObj;
14
+ private loadSysProxyApiCacheObj;
15
+ private loadCrudMethodCacheObj;
16
+ }
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BizMemCacheService = void 0;
13
+ const _ = require("lodash");
14
+ const core_1 = require("@midwayjs/core");
15
+ const SystemTables_1 = require("../../../models/SystemTables");
16
+ const global_config_1 = require("../../../libs/global-config/global-config");
17
+ const BaseService_1 = require("../../../service/base/BaseService");
18
+ const CurdProService_1 = require("../../curd/CurdProService");
19
+ const keys_1 = require("../../../libs/crud-pro/models/keys");
20
+ const MixinUtils_1 = require("../../../libs/crud-pro/utils/MixinUtils");
21
+ const BizMemCacheStore_1 = require("./BizMemCacheStore");
22
+ const BizMemCacheTypes_1 = require("./BizMemCacheTypes");
23
+ const functions_1 = require("../../../libs/utils/functions");
24
+ const CrudProCachedCfgService_1 = require("../../../libs/crud-pro/services/CrudProCachedCfgService");
25
+ let BizMemCacheService = class BizMemCacheService extends BaseService_1.BaseService {
26
+ async runBySchedule() {
27
+ await this.reloadIfRedisChanged('workbenchCachedObj', () => this.loadWorkbenchCachedObj());
28
+ await this.reloadIfRedisChanged('sysConfgCacheObj', () => this.loadSysConfigObj());
29
+ await this.reloadIfRedisChanged('dataDictItemCacheObj', () => this.loadDataDictItemCacheObj());
30
+ await this.reloadIfRedisChanged('sysMenuCacheObj', () => this.loadSysMenuCacheObj());
31
+ await this.reloadIfRedisChanged('sysAppCacheObj', () => this.loadSysAppCacheObj());
32
+ await this.reloadIfRedisChanged('sysAppPageCacheObj', () => this.loadSysAppPageCacheObj());
33
+ await this.reloadIfRedisChanged('sysAnyApiCacheObj', () => this.loadSysAnyApiCacheObj());
34
+ await this.reloadIfRedisChanged('sysProxyApiCacheObj', () => this.loadSysProxyApiCacheObj());
35
+ await this.reloadIfRedisChanged('crudMethodCacheObj', () => this.loadCrudMethodCacheObj());
36
+ }
37
+ async reloadIfRedisChanged(key, loader) {
38
+ const redisTimeStr = await this.redisService.get(BizMemCacheStore_1.bizMemCacheStore.getRedisKey(key));
39
+ const redisTime = Number(redisTimeStr) || 0;
40
+ const memTime = BizMemCacheStore_1.bizMemCacheStore.getLastTime(key);
41
+ if (redisTime !== memTime) {
42
+ await loader();
43
+ BizMemCacheStore_1.bizMemCacheStore.setLastTime(key, redisTime);
44
+ }
45
+ }
46
+ async loadSysMenuCacheObj() {
47
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
48
+ const res1 = await this.curdProService.executeCrudByCfg({
49
+ condition: { deleted_at: 0, status: 1 },
50
+ }, {
51
+ sqlTable: SystemTables_1.SystemTables.sys_menus,
52
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
53
+ sqlDatabase: SystemDbName,
54
+ sqlDbType: SystemDbType,
55
+ maxLimit: 10 * 10000
56
+ });
57
+ const rows = res1.getResRows();
58
+ const cacheObj = {
59
+ sysMenuList: rows,
60
+ sysMenuCodeMap: _.keyBy(rows, 'menu_code')
61
+ };
62
+ BizMemCacheStore_1.bizMemCacheStore.setSysMenu(cacheObj);
63
+ }
64
+ async loadDataDictItemCacheObj() {
65
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
66
+ const res1 = await this.curdProService.executeCrudByCfg({
67
+ columns: ['dict_code', 'label', 'value', 'style', 'code'],
68
+ condition: { deleted_at: 0, status: 1 },
69
+ }, {
70
+ sqlTable: SystemTables_1.SystemTables.sys_data_dict_item,
71
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
72
+ sqlDatabase: SystemDbName,
73
+ sqlDbType: SystemDbType,
74
+ maxLimit: 10 * 10000
75
+ });
76
+ const rows = res1.getResRows();
77
+ const dictCodeMap = _.groupBy(rows, 'dict_code');
78
+ const cacheObj = {
79
+ dictCodeMap: dictCodeMap
80
+ };
81
+ BizMemCacheStore_1.bizMemCacheStore.setDataDictItem(cacheObj);
82
+ }
83
+ async loadSysConfigObj() {
84
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
85
+ const res1 = await this.curdProService.executeCrudByCfg({
86
+ condition: { deleted_at: 0, status: 1 },
87
+ }, {
88
+ sqlTable: SystemTables_1.SystemTables.sys_configs,
89
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
90
+ sqlDatabase: SystemDbName,
91
+ sqlDbType: SystemDbType,
92
+ });
93
+ const sysConfigCodeMap = {};
94
+ const rows = res1.getResRows();
95
+ if (Array.isArray(rows) && rows.length > 0) {
96
+ for (let i = 0; i < rows.length; i++) {
97
+ const row = rows[i];
98
+ const { config_code } = row;
99
+ sysConfigCodeMap[config_code] = row;
100
+ }
101
+ }
102
+ const cacheObj = {
103
+ sysConfigList: rows,
104
+ sysConfigCodeMap: sysConfigCodeMap
105
+ };
106
+ BizMemCacheStore_1.bizMemCacheStore.setSysConfig(cacheObj);
107
+ }
108
+ async loadWorkbenchCachedObj() {
109
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
110
+ const reqJson = { condition: { deleted_at: 0 }, pageSize: 1000, limit: 1000 };
111
+ const res = await this.curdProService.executeCrudByCfg(reqJson, {
112
+ sqlTable: SystemTables_1.SystemTables.sys_workbench,
113
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
114
+ sqlDatabase: SystemDbName,
115
+ sqlDbType: SystemDbType,
116
+ });
117
+ const listData = res.getResRows();
118
+ const domainMap1 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain); // 主域名。其他两个域名。
119
+ const domainMap2 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain2);
120
+ const domainMap3 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain3);
121
+ const domainMap = { ...domainMap1, ...domainMap2, ...domainMap3 };
122
+ const cacheObj = {
123
+ workbenchList: listData,
124
+ workbenchDomainMap: domainMap
125
+ };
126
+ BizMemCacheStore_1.bizMemCacheStore.setWorkbench(cacheObj);
127
+ }
128
+ async loadSysAppCacheObj() {
129
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
130
+ const res = await this.curdProService.executeCrudByCfg({
131
+ condition: { deleted_at: 0 },
132
+ }, {
133
+ sqlTable: SystemTables_1.SystemTables.sys_app,
134
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
135
+ sqlDatabase: SystemDbName,
136
+ sqlDbType: SystemDbType,
137
+ maxLimit: 10 * 10000,
138
+ });
139
+ const rows = res.getResRows();
140
+ const cacheObj = {
141
+ sysAppList: rows,
142
+ sysAppCodeMap: _.keyBy(rows, 'app_code'),
143
+ };
144
+ BizMemCacheStore_1.bizMemCacheStore.setSysApp(cacheObj);
145
+ }
146
+ async loadSysAppPageCacheObj() {
147
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
148
+ const res = await this.curdProService.executeCrudByCfg({
149
+ condition: { deleted_at: 0 },
150
+ }, {
151
+ sqlTable: SystemTables_1.SystemTables.sys_app_page,
152
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
153
+ sqlDatabase: SystemDbName,
154
+ sqlDbType: SystemDbType,
155
+ maxLimit: 10 * 10000,
156
+ });
157
+ const rows = res.getResRows();
158
+ const sysAppPageMap = {};
159
+ for (let i = 0; i < rows.length; i++) {
160
+ const row = rows[i];
161
+ const cacheKey = (0, BizMemCacheTypes_1.buildSysAppPageCacheKey)(row.workbench_code, row.page_path);
162
+ sysAppPageMap[cacheKey] = row;
163
+ }
164
+ const cacheObj = {
165
+ sysAppPageList: rows,
166
+ sysAppPageMap,
167
+ };
168
+ BizMemCacheStore_1.bizMemCacheStore.setSysAppPage(cacheObj);
169
+ }
170
+ async loadSysAnyApiCacheObj() {
171
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
172
+ const res = await this.curdProService.executeCrudByCfg({
173
+ condition: { deleted_at: 0 },
174
+ }, {
175
+ sqlTable: SystemTables_1.SystemTables.sys_anyapi,
176
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
177
+ sqlDatabase: SystemDbName,
178
+ sqlDbType: SystemDbType,
179
+ maxLimit: 10 * 10000,
180
+ });
181
+ const rows = res.getResRows();
182
+ const sysAnyApiMethodMap = {};
183
+ for (let i = 0; i < rows.length; i++) {
184
+ const row = rows[i];
185
+ const obj = { ...row };
186
+ obj.parsedOthers = (0, functions_1.parseJsonObject)(obj.others);
187
+ sysAnyApiMethodMap[row.method] = obj;
188
+ }
189
+ const cacheObj = {
190
+ sysAnyApiList: rows,
191
+ sysAnyApiMethodMap,
192
+ };
193
+ BizMemCacheStore_1.bizMemCacheStore.setSysAnyApi(cacheObj);
194
+ }
195
+ async loadSysProxyApiCacheObj() {
196
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
197
+ const res = await this.curdProService.executeCrudByCfg({
198
+ condition: { deleted_at: 0 },
199
+ }, {
200
+ sqlTable: SystemTables_1.SystemTables.sys_proxyapi,
201
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
202
+ sqlDatabase: SystemDbName,
203
+ sqlDbType: SystemDbType,
204
+ maxLimit: 10 * 10000,
205
+ });
206
+ const rows = res.getResRows();
207
+ const cacheObj = {
208
+ sysProxyApiList: rows,
209
+ routeTrieMap: null,
210
+ };
211
+ BizMemCacheStore_1.bizMemCacheStore.setSysProxyApi(cacheObj);
212
+ }
213
+ async loadCrudMethodCacheObj() {
214
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
215
+ const res = await this.curdProService.executeCrudByCfg({
216
+ condition: { deleted_at: 0 },
217
+ }, {
218
+ sqlTable: SystemTables_1.SystemTables.sys_crud_methods,
219
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
220
+ sqlDatabase: SystemDbName,
221
+ sqlDbType: SystemDbType,
222
+ maxLimit: 10 * 10000,
223
+ });
224
+ const rows = res.getResRows();
225
+ const crudMethodList = rows.map(row => (0, CrudProCachedCfgService_1.parseCrudMethodInfo)(row));
226
+ const cacheObj = {
227
+ crudMethodList,
228
+ crudMethodMap: _.keyBy(crudMethodList, 'method'),
229
+ };
230
+ BizMemCacheStore_1.bizMemCacheStore.setCrudMethod(cacheObj);
231
+ (0, CrudProCachedCfgService_1.setMethodCache)(crudMethodList);
232
+ }
233
+ };
234
+ __decorate([
235
+ (0, core_1.Inject)(),
236
+ __metadata("design:type", CurdProService_1.CurdProService)
237
+ ], BizMemCacheService.prototype, "curdProService", void 0);
238
+ BizMemCacheService = __decorate([
239
+ (0, core_1.Provide)()
240
+ ], BizMemCacheService);
241
+ exports.BizMemCacheService = BizMemCacheService;
@@ -0,0 +1,34 @@
1
+ import { RedisService } from '@midwayjs/redis';
2
+ import { BizMemCacheKey, ICrudMethodCacheObj, IDataDictItemCacheObj, ISysAnyApiCacheObj, ISysAppCacheObj, ISysAppPageCacheObj, ISysConfgCacheObj, ISysMenuCacheObj, ISysProxyApiCacheObj, IWorkbenchCachedObj } from './BizMemCacheTypes';
3
+ declare class BizMemCacheStoreInner {
4
+ private data;
5
+ private lastTime;
6
+ getWorkbench(): IWorkbenchCachedObj | null;
7
+ setWorkbench(obj: IWorkbenchCachedObj): void;
8
+ getSysConfig(): ISysConfgCacheObj | null;
9
+ setSysConfig(obj: ISysConfgCacheObj): void;
10
+ getSysMenu(): ISysMenuCacheObj | null;
11
+ setSysMenu(obj: ISysMenuCacheObj): void;
12
+ getDataDictItem(): IDataDictItemCacheObj | null;
13
+ setDataDictItem(obj: IDataDictItemCacheObj): void;
14
+ getSysApp(): ISysAppCacheObj | null;
15
+ setSysApp(obj: ISysAppCacheObj): void;
16
+ getSysAppPage(): ISysAppPageCacheObj | null;
17
+ setSysAppPage(obj: ISysAppPageCacheObj): void;
18
+ getSysAnyApi(): ISysAnyApiCacheObj | null;
19
+ setSysAnyApi(obj: ISysAnyApiCacheObj): void;
20
+ getSysProxyApi(): ISysProxyApiCacheObj | null;
21
+ setSysProxyApi(obj: ISysProxyApiCacheObj): void;
22
+ getCrudMethod(): ICrudMethodCacheObj | null;
23
+ setCrudMethod(obj: ICrudMethodCacheObj): void;
24
+ getRedisKey(key: BizMemCacheKey): string;
25
+ getAllKeys(): BizMemCacheKey[];
26
+ isKeyValid(key: string): key is BizMemCacheKey;
27
+ getLastTime(key: BizMemCacheKey): number;
28
+ setLastTime(key: BizMemCacheKey, time: number): void;
29
+ getLastTimeSnapshot(): Readonly<Record<BizMemCacheKey, number>>;
30
+ markDirty(key: BizMemCacheKey, redis: RedisService): Promise<void>;
31
+ markAllDirty(redis: RedisService): Promise<void>;
32
+ }
33
+ export declare const bizMemCacheStore: BizMemCacheStoreInner;
34
+ export {};
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bizMemCacheStore = void 0;
4
+ const BizMemCacheTypes_1 = require("./BizMemCacheTypes");
5
+ function createEmptyData() {
6
+ return {
7
+ workbenchCachedObj: null,
8
+ sysConfgCacheObj: null,
9
+ sysMenuCacheObj: null,
10
+ dataDictItemCacheObj: null,
11
+ sysAppCacheObj: null,
12
+ sysAppPageCacheObj: null,
13
+ sysAnyApiCacheObj: null,
14
+ sysProxyApiCacheObj: null,
15
+ crudMethodCacheObj: null,
16
+ };
17
+ }
18
+ function createEmptyLastTime() {
19
+ const defaultLastTime = -9999;
20
+ return {
21
+ workbenchCachedObj: defaultLastTime,
22
+ sysConfgCacheObj: defaultLastTime,
23
+ sysMenuCacheObj: defaultLastTime,
24
+ dataDictItemCacheObj: defaultLastTime,
25
+ sysAppCacheObj: defaultLastTime,
26
+ sysAppPageCacheObj: defaultLastTime,
27
+ sysAnyApiCacheObj: defaultLastTime,
28
+ sysProxyApiCacheObj: defaultLastTime,
29
+ crudMethodCacheObj: defaultLastTime,
30
+ };
31
+ }
32
+ class BizMemCacheStoreInner {
33
+ constructor() {
34
+ this.data = createEmptyData();
35
+ this.lastTime = createEmptyLastTime();
36
+ }
37
+ getWorkbench() {
38
+ return this.data.workbenchCachedObj;
39
+ }
40
+ setWorkbench(obj) {
41
+ this.data.workbenchCachedObj = obj;
42
+ }
43
+ getSysConfig() {
44
+ return this.data.sysConfgCacheObj;
45
+ }
46
+ setSysConfig(obj) {
47
+ this.data.sysConfgCacheObj = obj;
48
+ }
49
+ getSysMenu() {
50
+ return this.data.sysMenuCacheObj;
51
+ }
52
+ setSysMenu(obj) {
53
+ this.data.sysMenuCacheObj = obj;
54
+ }
55
+ getDataDictItem() {
56
+ return this.data.dataDictItemCacheObj;
57
+ }
58
+ setDataDictItem(obj) {
59
+ this.data.dataDictItemCacheObj = obj;
60
+ }
61
+ getSysApp() {
62
+ return this.data.sysAppCacheObj;
63
+ }
64
+ setSysApp(obj) {
65
+ this.data.sysAppCacheObj = obj;
66
+ }
67
+ getSysAppPage() {
68
+ return this.data.sysAppPageCacheObj;
69
+ }
70
+ setSysAppPage(obj) {
71
+ this.data.sysAppPageCacheObj = obj;
72
+ }
73
+ getSysAnyApi() {
74
+ return this.data.sysAnyApiCacheObj;
75
+ }
76
+ setSysAnyApi(obj) {
77
+ this.data.sysAnyApiCacheObj = obj;
78
+ }
79
+ getSysProxyApi() {
80
+ return this.data.sysProxyApiCacheObj;
81
+ }
82
+ setSysProxyApi(obj) {
83
+ this.data.sysProxyApiCacheObj = obj;
84
+ }
85
+ getCrudMethod() {
86
+ return this.data.crudMethodCacheObj;
87
+ }
88
+ setCrudMethod(obj) {
89
+ this.data.crudMethodCacheObj = obj;
90
+ }
91
+ getRedisKey(key) {
92
+ return BizMemCacheTypes_1.BIZ_MEM_CACHE_REDIS_KEYS[key];
93
+ }
94
+ getAllKeys() {
95
+ return Object.keys(BizMemCacheTypes_1.BIZ_MEM_CACHE_REDIS_KEYS);
96
+ }
97
+ isKeyValid(key) {
98
+ return Object.prototype.hasOwnProperty.call(BizMemCacheTypes_1.BIZ_MEM_CACHE_REDIS_KEYS, key);
99
+ }
100
+ getLastTime(key) {
101
+ return this.lastTime[key];
102
+ }
103
+ setLastTime(key, time) {
104
+ this.lastTime[key] = time;
105
+ }
106
+ getLastTimeSnapshot() {
107
+ return { ...this.lastTime };
108
+ }
109
+ async markDirty(key, redis) {
110
+ await redis.set(this.getRedisKey(key), Date.now());
111
+ }
112
+ async markAllDirty(redis) {
113
+ const now = Date.now();
114
+ for (const key of this.getAllKeys()) {
115
+ await redis.set(this.getRedisKey(key), now);
116
+ }
117
+ }
118
+ }
119
+ exports.bizMemCacheStore = new BizMemCacheStoreInner();
@@ -0,0 +1,60 @@
1
+ import { IWorkbenchEntity } from '../../../models/SystemEntities';
2
+ export interface IWorkbenchCachedObj {
3
+ workbenchList: IWorkbenchEntity[];
4
+ workbenchDomainMap: Record<string, IWorkbenchEntity>;
5
+ }
6
+ export interface ISysMenuCacheObj {
7
+ sysMenuList: any[];
8
+ sysMenuCodeMap: Record<string, any>;
9
+ }
10
+ export interface ISysConfgCacheObj {
11
+ sysConfigList: any[];
12
+ sysConfigCodeMap: Record<string, any>;
13
+ }
14
+ export interface IDataDictItemCacheObj {
15
+ dictCodeMap: Record<string, any[]>;
16
+ }
17
+ export interface ISysAppCacheObj {
18
+ sysAppList: any[];
19
+ sysAppCodeMap: Record<string, any>;
20
+ }
21
+ export interface ISysAppPageCacheObj {
22
+ sysAppPageList: any[];
23
+ sysAppPageMap: Record<string, any>;
24
+ }
25
+ export declare function buildSysAppPageCacheKey(workbench_code: string, page_path: string): string;
26
+ export interface ISysAnyApiCacheObj {
27
+ sysAnyApiList: any[];
28
+ sysAnyApiMethodMap: Record<string, any>;
29
+ }
30
+ export interface ISysProxyApiCacheObj {
31
+ sysProxyApiList: any[];
32
+ routeTrieMap: Record<string, any> | null;
33
+ }
34
+ export interface ICrudMethodCacheObj {
35
+ crudMethodList: any[];
36
+ crudMethodMap: Record<string, any>;
37
+ }
38
+ export interface IBizMemCacheData {
39
+ workbenchCachedObj: IWorkbenchCachedObj;
40
+ sysConfgCacheObj: ISysConfgCacheObj;
41
+ sysMenuCacheObj: ISysMenuCacheObj;
42
+ dataDictItemCacheObj: IDataDictItemCacheObj;
43
+ sysAppCacheObj: ISysAppCacheObj;
44
+ sysAppPageCacheObj: ISysAppPageCacheObj;
45
+ sysAnyApiCacheObj: ISysAnyApiCacheObj;
46
+ sysProxyApiCacheObj: ISysProxyApiCacheObj;
47
+ crudMethodCacheObj: ICrudMethodCacheObj;
48
+ }
49
+ export declare const BIZ_MEM_CACHE_REDIS_KEYS: {
50
+ readonly workbenchCachedObj: "BIZ_MEM_CACHE_KEY:workbenchCachedObj";
51
+ readonly sysConfgCacheObj: "BIZ_MEM_CACHE_KEY:sysConfgCacheObj";
52
+ readonly sysMenuCacheObj: "BIZ_MEM_CACHE_KEY:sysMenuCacheObj";
53
+ readonly dataDictItemCacheObj: "BIZ_MEM_CACHE_KEY:dataDictItemCacheObj";
54
+ readonly sysAppCacheObj: "BIZ_MEM_CACHE_KEY:sysAppCacheObj";
55
+ readonly sysAppPageCacheObj: "BIZ_MEM_CACHE_KEY:sysAppPageCacheObj";
56
+ readonly sysAnyApiCacheObj: "BIZ_MEM_CACHE_KEY:sysAnyApiCacheObj";
57
+ readonly sysProxyApiCacheObj: "BIZ_MEM_CACHE_KEY:sysProxyApiCacheObj";
58
+ readonly crudMethodCacheObj: "BIZ_MEM_CACHE_KEY:crudMethodCacheObj";
59
+ };
60
+ export declare type BizMemCacheKey = keyof typeof BIZ_MEM_CACHE_REDIS_KEYS;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BIZ_MEM_CACHE_REDIS_KEYS = exports.buildSysAppPageCacheKey = void 0;
4
+ function buildSysAppPageCacheKey(workbench_code, page_path) {
5
+ return `${workbench_code}#${page_path}`;
6
+ }
7
+ exports.buildSysAppPageCacheKey = buildSysAppPageCacheKey;
8
+ exports.BIZ_MEM_CACHE_REDIS_KEYS = {
9
+ workbenchCachedObj: 'BIZ_MEM_CACHE_KEY:workbenchCachedObj',
10
+ sysConfgCacheObj: 'BIZ_MEM_CACHE_KEY:sysConfgCacheObj',
11
+ sysMenuCacheObj: 'BIZ_MEM_CACHE_KEY:sysMenuCacheObj',
12
+ dataDictItemCacheObj: 'BIZ_MEM_CACHE_KEY:dataDictItemCacheObj',
13
+ sysAppCacheObj: 'BIZ_MEM_CACHE_KEY:sysAppCacheObj',
14
+ sysAppPageCacheObj: 'BIZ_MEM_CACHE_KEY:sysAppPageCacheObj',
15
+ sysAnyApiCacheObj: 'BIZ_MEM_CACHE_KEY:sysAnyApiCacheObj',
16
+ sysProxyApiCacheObj: 'BIZ_MEM_CACHE_KEY:sysProxyApiCacheObj',
17
+ crudMethodCacheObj: 'BIZ_MEM_CACHE_KEY:crudMethodCacheObj',
18
+ };