midway-fatcms 0.0.16 → 0.0.17

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 (119) 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/utils/CrudMonitor.d.ts +0 -9
  27. package/dist/libs/crud-pro/utils/CrudMonitor.js +0 -21
  28. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +26 -0
  29. package/dist/middleware/cacherefresh.middleware.d.ts +3 -46
  30. package/dist/middleware/cacherefresh.middleware.js +9 -67
  31. package/dist/models/CacheRefreshCategory.d.ts +1 -18
  32. package/dist/models/CacheRefreshCategory.js +0 -17
  33. package/dist/models/SystemEntities.d.ts +2 -0
  34. package/dist/models/bizmodels.d.ts +0 -8
  35. package/dist/models/bizmodels.js +0 -8
  36. package/dist/schedule/scheduleNames.d.ts +2 -0
  37. package/dist/schedule/scheduleNames.js +3 -1
  38. package/dist/service/SysAppService.d.ts +2 -5
  39. package/dist/service/SysAppService.js +15 -69
  40. package/dist/service/SysConfigService.d.ts +1 -6
  41. package/dist/service/SysConfigService.js +7 -46
  42. package/dist/service/SysDictDataService.d.ts +2 -5
  43. package/dist/service/SysDictDataService.js +13 -59
  44. package/dist/service/SysMenuService.d.ts +1 -4
  45. package/dist/service/SysMenuService.js +6 -42
  46. package/dist/service/WorkbenchService.d.ts +1 -5
  47. package/dist/service/WorkbenchService.js +10 -61
  48. package/dist/service/anyapi/AnyApiService.d.ts +1 -1
  49. package/dist/service/anyapi/AnyApiService.js +6 -16
  50. package/dist/service/base/bizmemcache/BizMemCacheService.d.ts +16 -0
  51. package/dist/service/base/bizmemcache/BizMemCacheService.js +239 -0
  52. package/dist/service/base/bizmemcache/BizMemCacheStore.d.ts +34 -0
  53. package/dist/service/base/bizmemcache/BizMemCacheStore.js +118 -0
  54. package/dist/service/base/bizmemcache/BizMemCacheTypes.d.ts +60 -0
  55. package/dist/service/base/bizmemcache/BizMemCacheTypes.js +18 -0
  56. package/dist/service/base/cache-refresh/CacheRefreshHub.d.ts +0 -22
  57. package/dist/service/base/cache-refresh/CacheRefreshHub.js +0 -22
  58. package/dist/service/base/cache-refresh/CacheRefreshHubScheduleService.d.ts +0 -6
  59. package/dist/service/base/cache-refresh/CacheRefreshHubScheduleService.js +0 -6
  60. package/dist/service/curd/CurdMixByDictService.d.ts +0 -4
  61. package/dist/service/curd/CurdMixByDictService.js +9 -55
  62. package/dist/service/curd/CurdMixBySysConfigService.d.ts +0 -5
  63. package/dist/service/curd/CurdMixBySysConfigService.js +9 -54
  64. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +0 -1
  65. package/dist/service/curd/CurdMixByWorkbenchService.js +9 -36
  66. package/dist/service/curd/CurdProService.d.ts +0 -1
  67. package/dist/service/curd/CurdProService.js +0 -4
  68. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +3 -8
  69. package/dist/service/proxyapi/ProxyApiLoadService.js +40 -68
  70. package/dist/service/proxyapi/ProxyApiService.d.ts +2 -0
  71. package/dist/service/proxyapi/ProxyApiService.js +32 -9
  72. package/dist/service/proxyapi/RouteTrie.d.ts +1 -7
  73. package/dist/service/proxyapi/RouteTrie.js +1 -17
  74. package/package.json +1 -1
  75. package/src/config/config.default.ts +4 -2
  76. package/src/configuration.ts +0 -23
  77. package/src/controller/gateway/ProxyApiGatewayController.ts +1 -9
  78. package/src/controller/helpers.controller.ts +66 -15
  79. package/src/controller/manage/AccountRoleManageApi.ts +3 -5
  80. package/src/controller/manage/AnyApiMangeApi.ts +4 -3
  81. package/src/controller/manage/AppMangeApi.ts +4 -5
  82. package/src/controller/manage/AppPageMangeApi.ts +4 -3
  83. package/src/controller/manage/CrudMethodsMangeApi.ts +4 -5
  84. package/src/controller/manage/DataDictManageApi.ts +7 -8
  85. package/src/controller/manage/DeployManageApi.ts +2 -3
  86. package/src/controller/manage/FlowConfigManageApi.ts +3 -5
  87. package/src/controller/manage/MenuManageApi.ts +4 -5
  88. package/src/controller/manage/ProxyApiMangeApi.ts +4 -5
  89. package/src/controller/manage/SysConfigMangeApi.ts +5 -5
  90. package/src/controller/manage/SystemInfoManageApi.ts +3 -1
  91. package/src/controller/manage/WorkbenchMangeApi.ts +4 -5
  92. package/src/index.ts +3 -0
  93. package/src/libs/crud-pro/models/TransactionSqlServer.ts +26 -4
  94. package/src/libs/crud-pro/services/CrudProCachedCfgService.ts +25 -43
  95. package/src/libs/crud-pro/utils/CrudMonitor.ts +0 -23
  96. package/src/libs/crud-pro/utils/pool/SqlServerUtils.ts +31 -0
  97. package/src/middleware/cacherefresh.middleware.ts +10 -71
  98. package/src/models/CacheRefreshCategory.ts +0 -17
  99. package/src/models/SystemEntities.ts +2 -0
  100. package/src/models/bizmodels.ts +0 -8
  101. package/src/schedule/scheduleNames.ts +5 -3
  102. package/src/service/SysAppService.ts +13 -66
  103. package/src/service/SysConfigService.ts +6 -39
  104. package/src/service/SysDictDataService.ts +11 -56
  105. package/src/service/SysMenuService.ts +4 -37
  106. package/src/service/WorkbenchService.ts +10 -68
  107. package/src/service/anyapi/AnyApiService.ts +5 -17
  108. package/src/service/base/bizmemcache/BizMemCacheService.ts +288 -0
  109. package/src/service/base/bizmemcache/BizMemCacheStore.ts +158 -0
  110. package/src/service/base/bizmemcache/BizMemCacheTypes.ts +76 -0
  111. package/src/service/base/cache-refresh/CacheRefreshHub.ts +0 -22
  112. package/src/service/base/cache-refresh/CacheRefreshHubScheduleService.ts +0 -6
  113. package/src/service/curd/CurdMixByDictService.ts +10 -61
  114. package/src/service/curd/CurdMixBySysConfigService.ts +9 -62
  115. package/src/service/curd/CurdMixByWorkbenchService.ts +7 -32
  116. package/src/service/curd/CurdProService.ts +0 -6
  117. package/src/service/proxyapi/ProxyApiLoadService.ts +39 -77
  118. package/src/service/proxyapi/ProxyApiService.ts +45 -9
  119. package/src/service/proxyapi/RouteTrie.ts +1 -18
@@ -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,239 @@
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 redisTime = Number(await this.redisService.get(BizMemCacheStore_1.bizMemCacheStore.getRedisKey(key))) || 0;
39
+ if (redisTime !== BizMemCacheStore_1.bizMemCacheStore.getLastTime(key)) {
40
+ await loader();
41
+ BizMemCacheStore_1.bizMemCacheStore.setLastTime(key, redisTime);
42
+ }
43
+ }
44
+ async loadSysMenuCacheObj() {
45
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
46
+ const res1 = await this.curdProService.executeCrudByCfg({
47
+ condition: { deleted_at: 0, status: 1 },
48
+ }, {
49
+ sqlTable: SystemTables_1.SystemTables.sys_menus,
50
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
51
+ sqlDatabase: SystemDbName,
52
+ sqlDbType: SystemDbType,
53
+ maxLimit: 10 * 10000
54
+ });
55
+ const rows = res1.getResRows();
56
+ const cacheObj = {
57
+ sysMenuList: rows,
58
+ sysMenuCodeMap: _.keyBy(rows, 'menu_code')
59
+ };
60
+ BizMemCacheStore_1.bizMemCacheStore.setSysMenu(cacheObj);
61
+ }
62
+ async loadDataDictItemCacheObj() {
63
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
64
+ const res1 = await this.curdProService.executeCrudByCfg({
65
+ columns: ['dict_code', 'label', 'value', 'style', 'code'],
66
+ condition: { deleted_at: 0, status: 1 },
67
+ }, {
68
+ sqlTable: SystemTables_1.SystemTables.sys_data_dict_item,
69
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
70
+ sqlDatabase: SystemDbName,
71
+ sqlDbType: SystemDbType,
72
+ maxLimit: 10 * 10000
73
+ });
74
+ const rows = res1.getResRows();
75
+ const dictCodeMap = _.groupBy(rows, 'dict_code');
76
+ const cacheObj = {
77
+ dictCodeMap: dictCodeMap
78
+ };
79
+ BizMemCacheStore_1.bizMemCacheStore.setDataDictItem(cacheObj);
80
+ }
81
+ async loadSysConfigObj() {
82
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
83
+ const res1 = await this.curdProService.executeCrudByCfg({
84
+ condition: { deleted_at: 0, status: 1 },
85
+ }, {
86
+ sqlTable: SystemTables_1.SystemTables.sys_configs,
87
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
88
+ sqlDatabase: SystemDbName,
89
+ sqlDbType: SystemDbType,
90
+ });
91
+ const sysConfigCodeMap = {};
92
+ const rows = res1.getResRows();
93
+ if (Array.isArray(rows) && rows.length > 0) {
94
+ for (let i = 0; i < rows.length; i++) {
95
+ const row = rows[i];
96
+ const { config_code } = row;
97
+ sysConfigCodeMap[config_code] = row;
98
+ }
99
+ }
100
+ const cacheObj = {
101
+ sysConfigList: rows,
102
+ sysConfigCodeMap: sysConfigCodeMap
103
+ };
104
+ BizMemCacheStore_1.bizMemCacheStore.setSysConfig(cacheObj);
105
+ }
106
+ async loadWorkbenchCachedObj() {
107
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
108
+ const reqJson = { condition: { deleted_at: 0 }, pageSize: 1000, limit: 1000 };
109
+ const res = await this.curdProService.executeCrudByCfg(reqJson, {
110
+ sqlTable: SystemTables_1.SystemTables.sys_workbench,
111
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
112
+ sqlDatabase: SystemDbName,
113
+ sqlDbType: SystemDbType,
114
+ });
115
+ const listData = res.getResRows();
116
+ const domainMap1 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain); // 主域名。其他两个域名。
117
+ const domainMap2 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain2);
118
+ const domainMap3 = MixinUtils_1.MixinUtils.toMap(listData, (e) => e.workbench_domain3);
119
+ const domainMap = { ...domainMap1, ...domainMap2, ...domainMap3 };
120
+ const cacheObj = {
121
+ workbenchList: listData,
122
+ workbenchDomainMap: domainMap
123
+ };
124
+ BizMemCacheStore_1.bizMemCacheStore.setWorkbench(cacheObj);
125
+ }
126
+ async loadSysAppCacheObj() {
127
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
128
+ const res = await this.curdProService.executeCrudByCfg({
129
+ condition: { deleted_at: 0 },
130
+ }, {
131
+ sqlTable: SystemTables_1.SystemTables.sys_app,
132
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
133
+ sqlDatabase: SystemDbName,
134
+ sqlDbType: SystemDbType,
135
+ maxLimit: 10 * 10000,
136
+ });
137
+ const rows = res.getResRows();
138
+ const cacheObj = {
139
+ sysAppList: rows,
140
+ sysAppCodeMap: _.keyBy(rows, 'app_code'),
141
+ };
142
+ BizMemCacheStore_1.bizMemCacheStore.setSysApp(cacheObj);
143
+ }
144
+ async loadSysAppPageCacheObj() {
145
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
146
+ const res = await this.curdProService.executeCrudByCfg({
147
+ condition: { deleted_at: 0 },
148
+ }, {
149
+ sqlTable: SystemTables_1.SystemTables.sys_app_page,
150
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
151
+ sqlDatabase: SystemDbName,
152
+ sqlDbType: SystemDbType,
153
+ maxLimit: 10 * 10000,
154
+ });
155
+ const rows = res.getResRows();
156
+ const sysAppPageMap = {};
157
+ for (let i = 0; i < rows.length; i++) {
158
+ const row = rows[i];
159
+ const cacheKey = (0, BizMemCacheTypes_1.buildSysAppPageCacheKey)(row.workbench_code, row.page_path);
160
+ sysAppPageMap[cacheKey] = row;
161
+ }
162
+ const cacheObj = {
163
+ sysAppPageList: rows,
164
+ sysAppPageMap,
165
+ };
166
+ BizMemCacheStore_1.bizMemCacheStore.setSysAppPage(cacheObj);
167
+ }
168
+ async loadSysAnyApiCacheObj() {
169
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
170
+ const res = await this.curdProService.executeCrudByCfg({
171
+ condition: { deleted_at: 0 },
172
+ }, {
173
+ sqlTable: SystemTables_1.SystemTables.sys_anyapi,
174
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
175
+ sqlDatabase: SystemDbName,
176
+ sqlDbType: SystemDbType,
177
+ maxLimit: 10 * 10000,
178
+ });
179
+ const rows = res.getResRows();
180
+ const sysAnyApiMethodMap = {};
181
+ for (let i = 0; i < rows.length; i++) {
182
+ const row = rows[i];
183
+ const obj = { ...row };
184
+ obj.parsedOthers = (0, functions_1.parseJsonObject)(obj.others);
185
+ sysAnyApiMethodMap[row.method] = obj;
186
+ }
187
+ const cacheObj = {
188
+ sysAnyApiList: rows,
189
+ sysAnyApiMethodMap,
190
+ };
191
+ BizMemCacheStore_1.bizMemCacheStore.setSysAnyApi(cacheObj);
192
+ }
193
+ async loadSysProxyApiCacheObj() {
194
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
195
+ const res = await this.curdProService.executeCrudByCfg({
196
+ condition: { deleted_at: 0 },
197
+ }, {
198
+ sqlTable: SystemTables_1.SystemTables.sys_proxyapi,
199
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
200
+ sqlDatabase: SystemDbName,
201
+ sqlDbType: SystemDbType,
202
+ maxLimit: 10 * 10000,
203
+ });
204
+ const rows = res.getResRows();
205
+ const cacheObj = {
206
+ sysProxyApiList: rows,
207
+ routeTrieMap: null,
208
+ };
209
+ BizMemCacheStore_1.bizMemCacheStore.setSysProxyApi(cacheObj);
210
+ }
211
+ async loadCrudMethodCacheObj() {
212
+ const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
213
+ const res = await this.curdProService.executeCrudByCfg({
214
+ condition: { deleted_at: 0 },
215
+ }, {
216
+ sqlTable: SystemTables_1.SystemTables.sys_crud_methods,
217
+ sqlSimpleName: keys_1.KeysOfSimpleSQL.SIMPLE_QUERY,
218
+ sqlDatabase: SystemDbName,
219
+ sqlDbType: SystemDbType,
220
+ maxLimit: 10 * 10000,
221
+ });
222
+ const rows = res.getResRows();
223
+ const crudMethodList = rows.map(row => (0, CrudProCachedCfgService_1.parseCrudMethodInfo)(row));
224
+ const cacheObj = {
225
+ crudMethodList,
226
+ crudMethodMap: _.keyBy(crudMethodList, 'method'),
227
+ };
228
+ BizMemCacheStore_1.bizMemCacheStore.setCrudMethod(cacheObj);
229
+ (0, CrudProCachedCfgService_1.setMethodCache)(crudMethodList);
230
+ }
231
+ };
232
+ __decorate([
233
+ (0, core_1.Inject)(),
234
+ __metadata("design:type", CurdProService_1.CurdProService)
235
+ ], BizMemCacheService.prototype, "curdProService", void 0);
236
+ BizMemCacheService = __decorate([
237
+ (0, core_1.Provide)()
238
+ ], BizMemCacheService);
239
+ 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,118 @@
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
+ return {
20
+ workbenchCachedObj: 0,
21
+ sysConfgCacheObj: 0,
22
+ sysMenuCacheObj: 0,
23
+ dataDictItemCacheObj: 0,
24
+ sysAppCacheObj: 0,
25
+ sysAppPageCacheObj: 0,
26
+ sysAnyApiCacheObj: 0,
27
+ sysProxyApiCacheObj: 0,
28
+ crudMethodCacheObj: 0,
29
+ };
30
+ }
31
+ class BizMemCacheStoreInner {
32
+ constructor() {
33
+ this.data = createEmptyData();
34
+ this.lastTime = createEmptyLastTime();
35
+ }
36
+ getWorkbench() {
37
+ return this.data.workbenchCachedObj;
38
+ }
39
+ setWorkbench(obj) {
40
+ this.data.workbenchCachedObj = obj;
41
+ }
42
+ getSysConfig() {
43
+ return this.data.sysConfgCacheObj;
44
+ }
45
+ setSysConfig(obj) {
46
+ this.data.sysConfgCacheObj = obj;
47
+ }
48
+ getSysMenu() {
49
+ return this.data.sysMenuCacheObj;
50
+ }
51
+ setSysMenu(obj) {
52
+ this.data.sysMenuCacheObj = obj;
53
+ }
54
+ getDataDictItem() {
55
+ return this.data.dataDictItemCacheObj;
56
+ }
57
+ setDataDictItem(obj) {
58
+ this.data.dataDictItemCacheObj = obj;
59
+ }
60
+ getSysApp() {
61
+ return this.data.sysAppCacheObj;
62
+ }
63
+ setSysApp(obj) {
64
+ this.data.sysAppCacheObj = obj;
65
+ }
66
+ getSysAppPage() {
67
+ return this.data.sysAppPageCacheObj;
68
+ }
69
+ setSysAppPage(obj) {
70
+ this.data.sysAppPageCacheObj = obj;
71
+ }
72
+ getSysAnyApi() {
73
+ return this.data.sysAnyApiCacheObj;
74
+ }
75
+ setSysAnyApi(obj) {
76
+ this.data.sysAnyApiCacheObj = obj;
77
+ }
78
+ getSysProxyApi() {
79
+ return this.data.sysProxyApiCacheObj;
80
+ }
81
+ setSysProxyApi(obj) {
82
+ this.data.sysProxyApiCacheObj = obj;
83
+ }
84
+ getCrudMethod() {
85
+ return this.data.crudMethodCacheObj;
86
+ }
87
+ setCrudMethod(obj) {
88
+ this.data.crudMethodCacheObj = obj;
89
+ }
90
+ getRedisKey(key) {
91
+ return BizMemCacheTypes_1.BIZ_MEM_CACHE_REDIS_KEYS[key];
92
+ }
93
+ getAllKeys() {
94
+ return Object.keys(BizMemCacheTypes_1.BIZ_MEM_CACHE_REDIS_KEYS);
95
+ }
96
+ isKeyValid(key) {
97
+ return Object.prototype.hasOwnProperty.call(BizMemCacheTypes_1.BIZ_MEM_CACHE_REDIS_KEYS, key);
98
+ }
99
+ getLastTime(key) {
100
+ return this.lastTime[key];
101
+ }
102
+ setLastTime(key, time) {
103
+ this.lastTime[key] = time;
104
+ }
105
+ getLastTimeSnapshot() {
106
+ return { ...this.lastTime };
107
+ }
108
+ async markDirty(key, redis) {
109
+ await redis.set(this.getRedisKey(key), Date.now());
110
+ }
111
+ async markAllDirty(redis) {
112
+ const now = Date.now();
113
+ for (const key of this.getAllKeys()) {
114
+ await redis.set(this.getRedisKey(key), now);
115
+ }
116
+ }
117
+ }
118
+ 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
+ };
@@ -1,33 +1,11 @@
1
1
  import { CacheRefreshCategory } from '../../../models/CacheRefreshCategory';
2
2
  import * as koa from '@midwayjs/koa';
3
3
  declare type CacheRefresher = (ctx: koa.IMidwayKoaContext) => Promise<any>;
4
- /**
5
- * 统一缓存刷新中心
6
- *
7
- * 负责 非 HTTP 中间件场景 的缓存刷新,包括:
8
- * 1. 定时刷新:CacheRefreshHubScheduleService 实现 IScheduleService,10分钟自动调度
9
- * 2. Redis Pub/Sub 集群广播:CacheRefreshRedisSubscriber 收到广播后调用
10
- * 3. API 主动刷新:helpers.controller /refreshCache 接口调用
11
- *
12
- * 注意:manage 增删改触发的缓存刷新由 refreshCache() 中间件直接调用 CacheServiceFactory 完成,
13
- * 不经过 CacheRefreshHub。
14
- */
15
4
  declare class CacheRefreshHubInner {
16
5
  private readonly refreshers;
17
- /**
18
- * 注册缓存刷新器
19
- */
20
6
  register(category: CacheRefreshCategory, refresher: CacheRefresher): void;
21
- /**
22
- * 刷新指定类型的缓存(主动重加载)
23
- * @param category 缓存类型,'*' 刷新全部
24
- */
25
7
  refresh(category: CacheRefreshCategory | '*', ctx: koa.IMidwayKoaContext): Promise<void>;
26
- /**
27
- * 定时任务入口,刷新全部缓存
28
- */
29
8
  runBySchedule(ctx: koa.IMidwayKoaContext): Promise<void>;
30
9
  }
31
- /** 全局唯一实例 */
32
10
  export declare const CacheRefreshHub: CacheRefreshHubInner;
33
11
  export {};
@@ -3,31 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CacheRefreshHub = void 0;
4
4
  const CacheRefreshCategory_1 = require("../../../models/CacheRefreshCategory");
5
5
  const CrudMonitor_1 = require("../../../libs/crud-pro/utils/CrudMonitor");
6
- /**
7
- * 统一缓存刷新中心
8
- *
9
- * 负责 非 HTTP 中间件场景 的缓存刷新,包括:
10
- * 1. 定时刷新:CacheRefreshHubScheduleService 实现 IScheduleService,10分钟自动调度
11
- * 2. Redis Pub/Sub 集群广播:CacheRefreshRedisSubscriber 收到广播后调用
12
- * 3. API 主动刷新:helpers.controller /refreshCache 接口调用
13
- *
14
- * 注意:manage 增删改触发的缓存刷新由 refreshCache() 中间件直接调用 CacheServiceFactory 完成,
15
- * 不经过 CacheRefreshHub。
16
- */
17
6
  class CacheRefreshHubInner {
18
7
  constructor() {
19
8
  this.refreshers = new Map();
20
9
  }
21
- /**
22
- * 注册缓存刷新器
23
- */
24
10
  register(category, refresher) {
25
11
  this.refreshers.set(category, refresher);
26
12
  }
27
- /**
28
- * 刷新指定类型的缓存(主动重加载)
29
- * @param category 缓存类型,'*' 刷新全部
30
- */
31
13
  async refresh(category, ctx) {
32
14
  const categories = category === '*' ? CacheRefreshCategory_1.ALL_CACHE_REFRESH_CATEGORIES : [category];
33
15
  for (const cat of categories) {
@@ -43,12 +25,8 @@ class CacheRefreshHubInner {
43
25
  }
44
26
  }
45
27
  }
46
- /**
47
- * 定时任务入口,刷新全部缓存
48
- */
49
28
  async runBySchedule(ctx) {
50
29
  await this.refresh('*', ctx);
51
30
  }
52
31
  }
53
- /** 全局唯一实例 */
54
32
  exports.CacheRefreshHub = new CacheRefreshHubInner();
@@ -1,11 +1,5 @@
1
1
  import * as koa from '@midwayjs/koa';
2
2
  import { IScheduleService } from '../../../interface';
3
- /**
4
- * CacheRefreshHub 的定时调度适配器
5
- *
6
- * 实现 IScheduleService 接口,使 CacheRefreshHub 能被 runSchedule.ts 调度。
7
- * 注册到 scheduleNames.ts 中的 cacheRefreshHub 定时任务。
8
- */
9
3
  export declare class CacheRefreshHubScheduleService implements IScheduleService {
10
4
  runBySchedule(ctx: koa.IMidwayKoaContext): Promise<void>;
11
5
  }
@@ -9,12 +9,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.CacheRefreshHubScheduleService = void 0;
10
10
  const core_1 = require("@midwayjs/core");
11
11
  const CacheRefreshHub_1 = require("../../../service/base/cache-refresh/CacheRefreshHub");
12
- /**
13
- * CacheRefreshHub 的定时调度适配器
14
- *
15
- * 实现 IScheduleService 接口,使 CacheRefreshHub 能被 runSchedule.ts 调度。
16
- * 注册到 scheduleNames.ts 中的 cacheRefreshHub 定时任务。
17
- */
18
12
  let CacheRefreshHubScheduleService = class CacheRefreshHubScheduleService {
19
13
  async runBySchedule(ctx) {
20
14
  await CacheRefreshHub_1.CacheRefreshHub.refresh('*', ctx);
@@ -2,10 +2,6 @@ import { Context } from '@midwayjs/koa';
2
2
  import { HandleExecuteContextType, IExecuteContextHandler } from '../../libs/crud-pro/models/ExecuteContext';
3
3
  export declare class CurdMixByDictService implements IExecuteContextHandler {
4
4
  ctx: Context;
5
- private curdProService;
6
- private cacheServiceFactory;
7
- private getFromCache;
8
- private setToCache;
9
5
  handleExecuteContextPrepare(executeContext: HandleExecuteContextType): Promise<void>;
10
6
  private getDictItemRows;
11
7
  handleExecuteContext(executeContext: HandleExecuteContextType): Promise<void>;