midway-fatcms 0.0.1-beta.56 → 0.0.1-beta.57

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 (46) hide show
  1. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +1 -1
  2. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.d.ts +1 -1
  3. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +1 -1
  4. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +1 -1
  5. package/dist/libs/utils/base64.d.ts +5 -5
  6. package/dist/libs/utils/base64.js +5 -5
  7. package/dist/libs/utils/render-utils.js +12 -14
  8. package/dist/schedule/runSchedule.js +1 -1
  9. package/dist/schedule/scheduleNames.js +2 -2
  10. package/dist/service/UserSessionService.js +1 -1
  11. package/dist/service/asyncTask/AsyncTaskRunnerService.js +3 -3
  12. package/dist/service/crudstd/CrudStdService.d.ts +1 -0
  13. package/dist/service/crudstd/CrudStdService.js +34 -1
  14. package/dist/service/curd/CurdProService.js +2 -2
  15. package/package.json +1 -1
  16. package/src/controller/gateway/AnyApiGatewayController.ts +33 -1
  17. package/src/controller/gateway/PublicApiController.ts +1 -1
  18. package/src/controller/gateway/StaticController.ts +2 -2
  19. package/src/libs/crud-pro/models/Transaction.ts +3 -5
  20. package/src/libs/crud-pro/services/CrudProServiceBase.ts +0 -1
  21. package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +3 -8
  22. package/src/libs/crud-pro/utils/sqlConvert/convertMix.ts +17 -19
  23. package/src/libs/crud-pro/utils/sqlConvert/convertMsSql.ts +4 -6
  24. package/src/libs/crud-pro/utils/sqlConvert/convertPgSql.ts +4 -6
  25. package/src/libs/crud-pro/utils/sqlConvert/convertPgType.ts +1 -3
  26. package/src/libs/global-config/global-config.ts +5 -6
  27. package/src/libs/utils/base64.ts +32 -39
  28. package/src/libs/utils/render-utils.ts +25 -34
  29. package/src/models/SystemEntities.ts +1 -3
  30. package/src/models/SystemPerm.ts +10 -11
  31. package/src/models/SystemTables.ts +0 -1
  32. package/src/models/bizmodels.ts +2 -4
  33. package/src/schedule/index.ts +4 -11
  34. package/src/schedule/runSchedule.ts +4 -12
  35. package/src/schedule/scheduleNames.ts +5 -11
  36. package/src/service/AuthService.ts +2 -3
  37. package/src/service/UserSessionService.ts +20 -24
  38. package/src/service/asyncTask/AsyncTaskRunnerService.ts +3 -9
  39. package/src/service/asyncTask/handler/ExportExcelByStdCrudHandler.ts +0 -1
  40. package/src/service/base/BaseService.ts +4 -9
  41. package/src/service/base/RedisCacheService.ts +7 -10
  42. package/src/service/crudstd/CrudStdService.ts +52 -10
  43. package/src/service/curd/CrudProQuick.ts +12 -14
  44. package/src/service/curd/CurdMixUtils.ts +0 -2
  45. package/src/service/curd/CurdProService.ts +2 -2
  46. package/src/service/proxyapi/ProxyApiLoadService.ts +1 -5
@@ -1,16 +1,15 @@
1
1
  import * as _ from 'lodash';
2
2
  import * as moment from 'moment';
3
- import {Context} from '@midwayjs/koa';
4
- import {parseJsonObject} from "./functions";
5
- import {getExtLocalLoaderPort} from "./fatcms-request";
6
- import {TypeUtils} from "../crud-pro/utils/TypeUtils";
3
+ import { Context } from '@midwayjs/koa';
4
+ import { parseJsonObject } from './functions';
5
+ import { getExtLocalLoaderPort } from './fatcms-request';
6
+ import { TypeUtils } from '../crud-pro/utils/TypeUtils';
7
7
 
8
8
  // const demo = {"schema":[
9
9
  // {"title":"资源配置","name":"fileList","type":"array","properties":{"fileUrl":{"label":"文件URL","component":"Input","xProps":{"hasClear":true},"width":500}}}],
10
10
  // "data":{"fileList":[{"settingKey":"n1iqmu8qnc_1","fileUrl":"aa"},{"settingKey":"n1iqmu8rml_2","fileUrl":"aa"}]
11
11
  // }}
12
12
 
13
-
14
13
  interface IFileElement {
15
14
  fileUrl: string;
16
15
  fileType?: string;
@@ -26,7 +25,7 @@ interface IRenderUtilsProps {
26
25
  fatcmscsrftoken: string;
27
26
  }
28
27
 
29
- function parseCookie(cookieStr:string) : any {
28
+ function parseCookie(cookieStr: string): any {
30
29
  const cookies = {};
31
30
 
32
31
  if (!cookieStr) {
@@ -64,7 +63,6 @@ function parseCookie(cookieStr:string) : any {
64
63
  return cookies;
65
64
  }
66
65
 
67
-
68
66
  class RenderUtils {
69
67
  private readonly ctx: Context;
70
68
  private readonly fileList: IFileElement[];
@@ -82,16 +80,20 @@ class RenderUtils {
82
80
  const packageAssets = parseJsonObject(props.package_assets) || {};
83
81
  const fileList = _.get(packageAssets, 'data.fileList');
84
82
  if (Array.isArray(fileList)) {
85
- this.fileList = fileList.filter((f)=> {
83
+ this.fileList = fileList.filter(f => {
86
84
  return f && f.fileUrl && typeof f.fileUrl === 'string' && f.fileUrl.length > 5; // 至少五个字符。
87
85
  });
88
86
  } else {
89
87
  this.fileList = [];
90
88
  const time = moment().format('YYYY-MM-DD HH:mm:ss.SSS');
91
- console.info(time + ' 解析fileList为空==>' + JSON.stringify({
92
- workbench_code: this.workbenchInfo?.workbench_code,
93
- app_code: this.appInfo?.app_code,
94
- }))
89
+ console.info(
90
+ time +
91
+ ' 解析fileList为空==>' +
92
+ JSON.stringify({
93
+ workbench_code: this.workbenchInfo?.workbench_code,
94
+ app_code: this.appInfo?.app_code,
95
+ })
96
+ );
95
97
  }
96
98
  }
97
99
 
@@ -104,22 +106,18 @@ class RenderUtils {
104
106
  }
105
107
 
106
108
  renderWorkbenchInfo() {
107
- const infoPick = _.pick(this.workbenchInfo, [
108
- 'id', 'workbench_code', 'workbench_name', 'workbench_domain', 'workbench_desc', 'config_type', 'config_content'
109
- ]);
109
+ const infoPick = _.pick(this.workbenchInfo, ['id', 'workbench_code', 'workbench_name', 'workbench_domain', 'workbench_desc', 'config_type', 'config_content']);
110
110
  return `<script>window.__workbench_info = ${JSON.stringify(infoPick)}</script>`;
111
111
  }
112
112
 
113
113
  renderAppInfo() {
114
- const infoPick = _.pick(this.appInfo, [
115
- 'id', 'app_code', 'app_name', 'app_type', 'app_desc', 'config_type', 'config_content'
116
- ]);
114
+ const infoPick = _.pick(this.appInfo, ['id', 'app_code', 'app_name', 'app_type', 'app_desc', 'config_type', 'config_content']);
117
115
  return `<script>window.__app_info = ${JSON.stringify(infoPick)}</script>`;
118
116
  }
119
117
 
120
118
  renderCookieInfo(keys: string) {
121
119
  try {
122
- const cookies = parseCookie(this.ctx.headers?.cookie)
120
+ const cookies = parseCookie(this.ctx.headers?.cookie);
123
121
  const cookieObj = {};
124
122
  if (typeof keys === 'string') {
125
123
  const keyArr = keys.split(',');
@@ -132,53 +130,46 @@ class RenderUtils {
132
130
  } catch (e) {
133
131
  return `<script>window.__cookie_info_error = ${e}; </script>`;
134
132
  }
135
-
136
133
  }
137
134
 
138
-
139
135
  renderJsAssets() {
140
- const fileList = this.fileList.filter((s) => {
136
+ const fileList = this.fileList.filter(s => {
141
137
  return s.fileType === 'js' || s.fileUrl.endsWith('.js');
142
138
  });
143
139
  const arr = fileList.map(f => {
144
140
  if (f.isModule) {
145
- return `<script type="module" crossorigin src="${f.fileUrl}" ></script>`
141
+ return `<script type="module" crossorigin src="${f.fileUrl}" ></script>`;
146
142
  }
147
- return `<script src="${f.fileUrl}" ></script>`
143
+ return `<script src="${f.fileUrl}" ></script>`;
148
144
  });
149
145
  return arr.join('\n');
150
146
  }
151
147
 
152
148
  renderCssAssets() {
153
- const fileList = this.fileList.filter((s) => {
149
+ const fileList = this.fileList.filter(s => {
154
150
  return s.fileType === 'css' || s.fileUrl.endsWith('.css');
155
151
  });
156
152
  const fileUrlList = fileList.map(f => {
157
153
  return f.fileUrl;
158
154
  });
159
155
 
160
- const arr = fileUrlList.map((url) => {
156
+ const arr = fileUrlList.map(url => {
161
157
  return `<link href="${url}" rel="stylesheet" />`;
162
158
  });
163
159
  return arr.join('\n');
164
160
  }
165
161
 
166
-
167
-
168
- renderExtLocalLoaderPortByDevHeader(){
162
+ renderExtLocalLoaderPortByDevHeader() {
169
163
  const loaderPort = getExtLocalLoaderPort(this.ctx);
170
164
  if (loaderPort && TypeUtils.isNumeric(loaderPort)) {
171
165
  return `<script>window.__local_loader_port_from_dev_header = ${loaderPort}</script>`;
172
166
  }
173
167
  return '';
174
168
  }
175
-
176
169
  }
177
170
 
178
171
  function createRenderUtils(props: IRenderUtilsProps) {
179
- return new RenderUtils(props)
172
+ return new RenderUtils(props);
180
173
  }
181
174
 
182
- export {
183
- createRenderUtils
184
- }
175
+ export { createRenderUtils };
@@ -75,14 +75,12 @@ export interface IUpstreamInfo {
75
75
  balanceStrategy: string;
76
76
  }
77
77
 
78
-
79
78
  export enum ProxyUserContextEnum {
80
- NO_PASS = 0 ,
79
+ NO_PASS = 0,
81
80
  BASIC_INFO = 1,
82
81
  SESSION_INFO = 2,
83
82
  }
84
83
 
85
-
86
84
  export interface IProxyApiEntity extends IApiBaseEntity {
87
85
  proxy_name: string; // 配置编码。2025-09-09 新增
88
86
  proxy_code: string; // 配置编码。2025-09-09 新增
@@ -1,4 +1,3 @@
1
-
2
1
  /**
3
2
  * 系统内置功能点
4
3
  */
@@ -73,17 +72,17 @@ export const SystemFuncCodeNameMap = {
73
72
  WorkbenchMangeWrite: '【devops】工作台配置_编辑',
74
73
  SystemInfoManageApiWrite: '【devops】系统信息_编辑',
75
74
 
76
- RoleManageRead : '【devops】角色管理_查看', // role
77
- RoleManageWrite : '【devops】角色管理_编辑',
78
- FuncManageRead : '【devops】功能点管理_查看', // func
79
- FuncManageWrite : '【devops】功能点管理_编辑',
80
- RoleFuncManageRead : '【devops】角色功能点关联_查看', //role-func
81
- RoleFuncManageWrite : '【devops】角色功能点关联_编辑',
82
- AccountRoleManageRead : '【devops】账户角色关联_查看', // account-role
83
- AccountRoleManageWrite : '【devops】账户角色关联_编辑',
75
+ RoleManageRead: '【devops】角色管理_查看', // role
76
+ RoleManageWrite: '【devops】角色管理_编辑',
77
+ FuncManageRead: '【devops】功能点管理_查看', // func
78
+ FuncManageWrite: '【devops】功能点管理_编辑',
79
+ RoleFuncManageRead: '【devops】角色功能点关联_查看', //role-func
80
+ RoleFuncManageWrite: '【devops】角色功能点关联_编辑',
81
+ AccountRoleManageRead: '【devops】账户角色关联_查看', // account-role
82
+ AccountRoleManageWrite: '【devops】账户角色关联_编辑',
84
83
 
85
- MenuMangeRead : '【devops】菜单管理_查看',
86
- MenuMangeWrite : '【devops】菜单管理_查看',
84
+ MenuMangeRead: '【devops】菜单管理_查看',
85
+ MenuMangeWrite: '【devops】菜单管理_查看',
87
86
  };
88
87
 
89
88
  /**
@@ -23,5 +23,4 @@ export const SystemTables = {
23
23
  sys_async_tasks: 'sys_async_tasks',
24
24
  };
25
25
 
26
-
27
26
  export const SystemDevOpsWorkbench = 'devops';
@@ -90,7 +90,6 @@ export interface IVisitorExt extends IVisitor {
90
90
 
91
91
  export const FILE_GET_TYPES = ['thumbnail', 'preview', 'download'];
92
92
 
93
-
94
93
  /**
95
94
  * fat-design中的TablePro组件的查询参数
96
95
  */
@@ -101,7 +100,6 @@ export interface ITableProQueryParams {
101
100
  orderBy: string | any;
102
101
  }
103
102
 
104
-
105
103
  export enum StdCrudExportInputParamsAppType {
106
104
  STD_CRUD = 'STD_CRUD',
107
105
  INNER_HTTP = 'INNER_HTTP',
@@ -116,8 +114,8 @@ export interface IStdCrudExportInputParams {
116
114
  innerHttpUrl?: string; // INNER_HTTP导出需要。
117
115
  columns?: any[]; // INNER_HTTP导出需要。
118
116
  lastQueryParams: ITableProQueryParams; // 公共
119
- selectedRowKeys: string[] | number []; // 公共
117
+ selectedRowKeys: string[] | number[]; // 公共
120
118
  headers: any; // 公共
121
119
  primaryKey: any; // 公共
122
120
  pageSize: number; // 公共
123
- }
121
+ }
@@ -1,12 +1,5 @@
1
- import {SCHEDULE_QUEUE, runScheduleTaskOnce} from './runSchedule'
2
- import {ANONYMOUS_CONTEXT} from './anonymousContext'
3
- import {
4
- INNER_SCHEDULE_INTERVAL
5
- } from './scheduleNames'
1
+ import { SCHEDULE_QUEUE, runScheduleTaskOnce } from './runSchedule';
2
+ import { ANONYMOUS_CONTEXT } from './anonymousContext';
3
+ import { INNER_SCHEDULE_INTERVAL } from './scheduleNames';
6
4
 
7
- export {
8
- INNER_SCHEDULE_INTERVAL,
9
- ANONYMOUS_CONTEXT,
10
- SCHEDULE_QUEUE,
11
- runScheduleTaskOnce
12
- }
5
+ export { INNER_SCHEDULE_INTERVAL, ANONYMOUS_CONTEXT, SCHEDULE_QUEUE, runScheduleTaskOnce };
@@ -1,14 +1,12 @@
1
1
  import * as koa from '@midwayjs/koa';
2
- import {IScheduleService} from '@/interface';
3
- import {ANONYMOUS_CONTEXT} from "./anonymousContext";
4
-
2
+ import { IScheduleService } from '@/interface';
3
+ import { ANONYMOUS_CONTEXT } from './anonymousContext';
5
4
 
6
5
  // 上次执行时间
7
6
  const lastExecuteTimeMap = {};
8
7
 
9
8
  const DEFAULT_SCHEDULE_INTERVAL = 2 * 60 * 1000;
10
9
 
11
-
12
10
  async function runScheduleTaskOnce(serviceName: string) {
13
11
  return await ANONYMOUS_CONTEXT.runServiceAtAnonymousContext(async (ctx: koa.IMidwayKoaContext) => {
14
12
  const serviceObject: IScheduleService = await ctx.requestContext.getAsync(serviceName);
@@ -20,7 +18,6 @@ async function runScheduleTaskOnce(serviceName: string) {
20
18
  });
21
19
  }
22
20
 
23
-
24
21
  class ScheduleQueue {
25
22
  private scheduleIntervalMap: Map<string, number> = new Map();
26
23
 
@@ -39,10 +36,9 @@ class ScheduleQueue {
39
36
  const intervalTime1 = this.scheduleIntervalMap.get(serviceName);
40
37
  const intervalTime = intervalTime1 || DEFAULT_SCHEDULE_INTERVAL; // 时间间隔
41
38
  const lastExecuteTime = lastExecuteTimeMap[serviceName];
42
- return (Date.now() - lastExecuteTime) >= intervalTime;
39
+ return Date.now() - lastExecuteTime >= intervalTime;
43
40
  }
44
41
 
45
-
46
42
  private async runScheduleTaskOnceCheckTime(serviceName: string) {
47
43
  // 还没有到可以执行时间
48
44
  if (!this.isAlreadyTimeToExecute(serviceName)) {
@@ -65,18 +61,14 @@ class ScheduleQueue {
65
61
  }
66
62
  }
67
63
 
68
-
69
64
  public async startScheduleLoop() {
70
65
  await this.runScheduleServiceList();
71
66
  setInterval(() => {
72
67
  this.runScheduleServiceList();
73
68
  }, 1000); // 最少1秒执行一次
74
69
  }
75
-
76
-
77
70
  }
78
71
 
79
-
80
72
  const SCHEDULE_QUEUE = new ScheduleQueue();
81
73
 
82
- export {SCHEDULE_QUEUE, runScheduleTaskOnce};
74
+ export { SCHEDULE_QUEUE, runScheduleTaskOnce };
@@ -1,21 +1,15 @@
1
-
2
1
  const INNER_SCHEDULE_INTERVAL = {
3
2
  proxyApiLoadService: 2 * 60 * 1000, // 2分钟重新加载一次,
4
3
  workbenchService: 60 * 1000, // 1分钟重新加载一次,
5
4
  visitStatService: 10 * 60 * 1000, // 10分钟重新加载一次,
6
5
  asyncTaskRunnerService: 1000, // 1s可以执行
7
- }
6
+ };
8
7
 
9
8
  const INNER_SCHEDULE_NAMES = {
10
9
  proxyApiLoadService: 'proxyApiLoadService',
11
10
  workbenchService: 'workbenchService',
12
- visitStatService: "visitStatService",
13
- asyncTaskRunnerService: "asyncTaskRunnerService",
14
- }
15
-
16
-
11
+ visitStatService: 'visitStatService',
12
+ asyncTaskRunnerService: 'asyncTaskRunnerService',
13
+ };
17
14
 
18
- export {
19
- INNER_SCHEDULE_INTERVAL,
20
- INNER_SCHEDULE_NAMES
21
- }
15
+ export { INNER_SCHEDULE_INTERVAL, INNER_SCHEDULE_NAMES };
@@ -87,7 +87,7 @@ export class AuthService {
87
87
  * @param consumerUserInfo
88
88
  * @param loadRoleCodes
89
89
  */
90
- public async createUserSessionForConsumer(consumerUserInfo: IConsumerUserInfo, loadRoleCodes?: boolean ) {
90
+ public async createUserSessionForConsumer(consumerUserInfo: IConsumerUserInfo, loadRoleCodes?: boolean) {
91
91
  const sessionId = createUniqueId();
92
92
 
93
93
  const accountId = consumerUserInfo.accountId;
@@ -95,12 +95,11 @@ export class AuthService {
95
95
  let roleCodes = [];
96
96
  let functionCodes = [];
97
97
 
98
- if(loadRoleCodes === true) {
98
+ if (loadRoleCodes === true) {
99
99
  roleCodes = await this.queryUserRoleCodeList(accountId);
100
100
  functionCodes = await this.queryFunctionCodeList(roleCodes);
101
101
  }
102
102
 
103
-
104
103
  const sessionInfo: ISessionInfo = {
105
104
  nickName: consumerUserInfo.nickName,
106
105
  avatar: consumerUserInfo.avatar,
@@ -57,13 +57,12 @@ export class UserSessionService {
57
57
  @Config('fatcmsUserSessionKeepTimeSecond')
58
58
  private fatcmsUserSessionKeepTimeSecond: number;
59
59
 
60
-
61
60
  /**
62
61
  * 获取用户会话保持时间: 单位秒
63
- * @returns
62
+ * @returns
64
63
  */
65
64
  private getSessionKeepTimeSecond(): number {
66
- if(typeof this.fatcmsUserSessionKeepTimeSecond === 'number' && this.fatcmsUserSessionKeepTimeSecond > 0) {
65
+ if (typeof this.fatcmsUserSessionKeepTimeSecond === 'number' && this.fatcmsUserSessionKeepTimeSecond > 0) {
67
66
  return this.fatcmsUserSessionKeepTimeSecond;
68
67
  }
69
68
  return SESSION_KEEP_TIME_SECOND;
@@ -72,7 +71,7 @@ export class UserSessionService {
72
71
  /**
73
72
  * 保存用户会话信息。
74
73
  * 用户登录后,在业务的项目中,可以调用此函数,更新bizExt字段
75
- * @param sessionInfo
74
+ * @param sessionInfo
76
75
  */
77
76
  public async saveUserSession(sessionInfo: ISessionInfo) {
78
77
  sessionInfo.avatar = pickUserAvatar(sessionInfo.avatar);
@@ -89,11 +88,10 @@ export class UserSessionService {
89
88
  return await this.redisCacheService.removeItem(toCacheKey(sessionId));
90
89
  }
91
90
 
92
-
93
91
  /**
94
92
  * 获取用户会话信息
95
- * @param sessionId
96
- * @returns
93
+ * @param sessionId
94
+ * @returns
97
95
  */
98
96
  private async getCurrentUserSessionForMiddleware1(sessionId: string): Promise<ISessionInfo> {
99
97
  if (!sessionId) {
@@ -102,10 +100,9 @@ export class UserSessionService {
102
100
  return await this.redisCacheService.getJsonObject(toCacheKey(sessionId));
103
101
  }
104
102
 
105
-
106
103
  /**
107
104
  * 从异步任务队列中获取当时用户的Session信息
108
- * @param asyncTaskId
105
+ * @param asyncTaskId
109
106
  */
110
107
  private async getCurrentUserSessionByAsyncTaskId(asyncTaskId: string): Promise<ISessionInfo> {
111
108
  const taskSessionCacheKey = `${RedisKeys.USER_SESSION_ASYNC_TASK_ID_PREFIX}${asyncTaskId}`;
@@ -113,24 +110,27 @@ export class UserSessionService {
113
110
  const loadSessionInfo = async (): Promise<ISessionInfo> => {
114
111
  const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
115
112
 
116
- const asyncTaskRes = await this.curdProService.executeCrudByCfg({
117
- columns: ['id', 'created_user_session'],
118
- condition: {
119
- id: asyncTaskId,
113
+ const asyncTaskRes = await this.curdProService.executeCrudByCfg(
114
+ {
115
+ columns: ['id', 'created_user_session'],
116
+ condition: {
117
+ id: asyncTaskId,
118
+ },
119
+ },
120
+ {
121
+ sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY_ONE,
122
+ sqlTable: SystemTables.sys_async_tasks,
123
+ sqlDatabase: SystemDbName,
124
+ sqlDbType: SystemDbType,
120
125
  }
121
- }, {
122
- sqlSimpleName: KeysOfSimpleSQL.SIMPLE_QUERY_ONE,
123
- sqlTable: SystemTables.sys_async_tasks,
124
- sqlDatabase: SystemDbName,
125
- sqlDbType: SystemDbType,
126
- });
126
+ );
127
127
 
128
128
  const asyncTaskObj = asyncTaskRes.getOneObj();
129
129
  if (!asyncTaskObj) {
130
130
  return null;
131
131
  }
132
132
  return parseJsonObject(asyncTaskObj.created_user_session);
133
- }
133
+ };
134
134
 
135
135
  let sessionInfo1 = await this.redisCacheService.getJsonObject(taskSessionCacheKey);
136
136
  if (!sessionInfo1) {
@@ -140,12 +140,10 @@ export class UserSessionService {
140
140
  return sessionInfo1;
141
141
  }
142
142
 
143
-
144
143
  /**
145
144
  * 专门给中间件点调用的
146
145
  */
147
146
  public async getCurrentUserSessionForMiddleware(): Promise<ISessionInfo> {
148
-
149
147
  // 先从Header中获取:异步任务队列的任务ID
150
148
  const asyncTaskId = this.ctx.headers[HEADER_KEY_RUN_BY_ASYNC_TASK_ID];
151
149
  if (asyncTaskId && typeof asyncTaskId === 'string') {
@@ -156,6 +154,4 @@ export class UserSessionService {
156
154
  const sessionId = cookies.get(SESSION_ID_KEY, sessionCookieCfg);
157
155
  return this.getCurrentUserSessionForMiddleware1(sessionId);
158
156
  }
159
-
160
-
161
157
  }
@@ -152,7 +152,6 @@ export class AsyncTaskRunnerService extends BaseService implements IScheduleServ
152
152
  @Inject()
153
153
  private curdProService: CurdProService;
154
154
 
155
-
156
155
  /**
157
156
  * 定时任务执行
158
157
  */
@@ -161,7 +160,6 @@ export class AsyncTaskRunnerService extends BaseService implements IScheduleServ
161
160
  await this.runByScheduleForTimeoutTasks();
162
161
  }
163
162
 
164
-
165
163
  /**
166
164
  * 更新超时的任务状态
167
165
  * @returns
@@ -175,19 +173,19 @@ export class AsyncTaskRunnerService extends BaseService implements IScheduleServ
175
173
  return Promise.resolve();
176
174
  }
177
175
 
178
- const timeoutTime = moment().subtract(24, 'hours').format("YYYY-MM-DD HH:mm:ss.SSS");
176
+ const timeoutTime = moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss.SSS');
179
177
  await this.curdProService.executeCrudByCfg(
180
178
  {
181
179
  condition: {
182
180
  task_status: SysAsyncTaskStatus.RUNNING, // 虽然状态是RUNNING,但是已经超过24小时没有进展了。
183
181
  updated_at: {
184
182
  $lt: timeoutTime,
185
- }
183
+ },
186
184
  },
187
185
  data: {
188
186
  task_status: SysAsyncTaskStatus.FAILED,
189
187
  error_message: '任务超时',
190
- }
188
+ },
191
189
  },
192
190
  {
193
191
  sqlTable: SystemTables.sys_async_tasks,
@@ -198,14 +196,11 @@ export class AsyncTaskRunnerService extends BaseService implements IScheduleServ
198
196
  );
199
197
  }
200
198
 
201
-
202
-
203
199
  /**
204
200
  * 检查是否有新任务。如果有,就从数据库中获取一批任务,放到自己的任务队列里。
205
201
  * @returns
206
202
  */
207
203
  private async runByScheduleForPendingTasks() {
208
-
209
204
  // 1. 当前很忙
210
205
  if (ASYNC_TASK_RUNNER.isBusy) {
211
206
  return Promise.resolve();
@@ -295,7 +290,6 @@ export class AsyncTaskRunnerService extends BaseService implements IScheduleServ
295
290
  await ASYNC_TASK_RUNNER.executeTaskList(taskList).then(() => {
296
291
  console.log('[AsyncTaskRunnerService] ASYNC_TASK_RUNNER finished taskIds ==> ' + JSON.stringify(taskIds));
297
292
  });
298
-
299
293
  }
300
294
 
301
295
  /**
@@ -8,7 +8,6 @@ import { KeysOfSimpleSQL } from '@/libs/crud-pro/models/keys';
8
8
  import { ExecuteContext } from '@/libs/crud-pro/models/ExecuteContext';
9
9
  import { GLOBAL_STATIC_CONFIG } from '@/libs/global-config/global-config';
10
10
 
11
-
12
11
  function pickData(a: any, key: string) {
13
12
  if (a && typeof a.getResModel === 'function') {
14
13
  const s = a.getResModel();
@@ -6,7 +6,6 @@ import * as koa from '@midwayjs/koa';
6
6
  import { consoleLogger, ContextLogger, ILoggerContext } from '@/models/contextLogger';
7
7
  import { isEnableDebug, isLocalEnv } from '@/libs/utils/fatcms-request';
8
8
 
9
-
10
9
  @Provide()
11
10
  export class BaseService {
12
11
  @Inject()
@@ -21,11 +20,10 @@ export class BaseService {
21
20
  @Inject()
22
21
  protected ossServiceFactory: OSSServiceFactory;
23
22
 
24
-
25
23
  /**
26
24
  * 请求级别的内存缓存
27
- * @param key
28
- * @returns
25
+ * @param key
26
+ * @returns
29
27
  */
30
28
  protected getFromCtxCache(key: string): any {
31
29
  if (!this.ctx.ctxCacheMap) {
@@ -34,11 +32,10 @@ export class BaseService {
34
32
  return this.ctx.ctxCacheMap[key];
35
33
  }
36
34
 
37
-
38
35
  /**
39
36
  * 请求级别的内存缓存
40
- * @param key
41
- * @param obj
37
+ * @param key
38
+ * @param obj
42
39
  */
43
40
  protected setToCtxCache(key: string, obj: any): void {
44
41
  if (!this.ctx.ctxCacheMap) {
@@ -47,7 +44,6 @@ export class BaseService {
47
44
  this.ctx.ctxCacheMap[key] = obj;
48
45
  }
49
46
 
50
-
51
47
  /**
52
48
  * 用户自己上传的文件,使用私有的bucket。
53
49
  * @protected
@@ -64,7 +60,6 @@ export class BaseService {
64
60
  return this.ossServiceFactory.get<OSSService>('publicBucket');
65
61
  }
66
62
 
67
-
68
63
  protected getContextLogger(): ILoggerContext {
69
64
  return this.ctx.contextLogger || consoleLogger;
70
65
  }
@@ -3,8 +3,7 @@ import { Context } from '@midwayjs/koa';
3
3
  import { RedisService } from '@midwayjs/redis';
4
4
  import { OSSServiceFactory } from '@midwayjs/oss';
5
5
  import * as koa from '@midwayjs/koa';
6
- import {parseJsonObject} from "../../libs/utils/functions";
7
-
6
+ import { parseJsonObject } from '../../libs/utils/functions';
8
7
 
9
8
  @Provide()
10
9
  export class RedisCacheService {
@@ -20,26 +19,24 @@ export class RedisCacheService {
20
19
  @Inject()
21
20
  protected ossServiceFactory: OSSServiceFactory;
22
21
 
23
-
24
- async getJsonObject(key: string): Promise<any> {
22
+ async getJsonObject(key: string): Promise<any> {
25
23
  const str = await this.redisService.get(key);
26
- return parseJsonObject(str)
24
+ return parseJsonObject(str);
27
25
  }
28
26
 
29
27
  /**
30
28
  * 设置缓存对象
31
- * @param key
32
- * @param obj
29
+ * @param key
30
+ * @param obj
33
31
  * @param expireSecond 过期时间,单位秒
34
- * @returns
32
+ * @returns
35
33
  */
36
34
  async setJsonObject(key: string, obj: any, expireSecond: number): Promise<any> {
37
35
  const str = JSON.stringify(obj);
38
36
  return this.redisService.set(key, str, 'EX', expireSecond);
39
37
  }
40
38
 
41
- async removeItem(key: string): Promise<any> {
39
+ async removeItem(key: string): Promise<any> {
42
40
  return await this.redisService.del(key);
43
41
  }
44
-
45
42
  }