midway-fatcms 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.qoder/skills/midway-fatcms/01-quick-start.md +231 -0
- package/.qoder/skills/midway-fatcms/02-crud-quick.md +337 -0
- package/.qoder/skills/midway-fatcms/03-crud-sharding.md +488 -0
- package/.qoder/skills/midway-fatcms/04-condition-operators.md +93 -0
- package/.qoder/skills/midway-fatcms/05-configuration.md +290 -0
- package/.qoder/skills/midway-fatcms/06-builtin-functions.md +241 -0
- package/.qoder/skills/midway-fatcms/07-examples.md +500 -0
- package/.qoder/skills/midway-fatcms/SKILL.md +96 -0
- package/README.md +9 -9
- package/dist/controller/base/BaseApiController.d.ts +1 -2
- package/dist/controller/base/BaseApiController.js +0 -4
- package/dist/controller/gateway/DocGatewayController.js +1 -1
- package/dist/controller/manage/FlowConfigManageApi.js +4 -2
- package/dist/controller/manage/SysConfigMangeApi.js +6 -1
- package/dist/controller/manage/UserAccountManageApi.js +7 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/libs/crud-pro/CrudPro.d.ts +23 -2
- package/dist/libs/crud-pro/CrudPro.js +53 -2
- package/dist/libs/crud-pro/interfaces.d.ts +82 -12
- package/dist/libs/crud-pro/models/CrudResult.d.ts +115 -0
- package/dist/libs/crud-pro/models/CrudResult.js +126 -0
- package/dist/libs/crud-pro/models/RequestModel.d.ts +2 -38
- package/dist/libs/crud-pro/models/RequestModel.js +2 -99
- package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +36 -2
- package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +8 -4
- package/dist/libs/crud-pro/services/CrudProTableMetaService.js +1 -2
- package/dist/libs/crud-pro/utils/OrderByUtils.d.ts +70 -0
- package/dist/libs/crud-pro/utils/OrderByUtils.js +158 -0
- package/dist/libs/crud-pro-quick/CrudProQuick.d.ts +295 -0
- package/dist/libs/crud-pro-quick/CrudProQuick.js +529 -0
- package/dist/libs/crud-pro-quick/fixSoftDelete.d.ts +30 -0
- package/dist/{service/curd → libs/crud-pro-quick}/fixSoftDelete.js +3 -6
- package/dist/libs/crud-pro-quick/index.d.ts +36 -0
- package/dist/libs/crud-pro-quick/index.js +49 -0
- package/dist/libs/crud-pro-quick/models.d.ts +33 -0
- package/dist/libs/crud-pro-quick/models.js +2 -0
- package/dist/libs/crud-sharding/ShardingConfig.d.ts +15 -2
- package/dist/libs/crud-sharding/ShardingConfig.js +2 -2
- package/dist/libs/crud-sharding/ShardingCrudPro.d.ts +119 -274
- package/dist/libs/crud-sharding/ShardingCrudPro.js +559 -379
- package/dist/libs/crud-sharding/ShardingMerger.d.ts +12 -20
- package/dist/libs/crud-sharding/ShardingMerger.js +36 -51
- package/dist/libs/crud-sharding/ShardingResult.d.ts +33 -0
- package/dist/libs/crud-sharding/ShardingResult.js +16 -0
- package/dist/libs/crud-sharding/ShardingRouter.d.ts +1 -0
- package/dist/libs/crud-sharding/ShardingRouter.js +25 -6
- package/dist/libs/crud-sharding/ShardingTableCreator.d.ts +21 -4
- package/dist/libs/crud-sharding/ShardingTableCreator.js +193 -59
- package/dist/libs/crud-sharding/ShardingUtils.d.ts +48 -0
- package/dist/libs/crud-sharding/ShardingUtils.js +122 -1
- package/dist/libs/crud-sharding/TIME_COLUMN_CLEAN_SPEC.md +488 -0
- package/dist/libs/crud-sharding/index.d.ts +4 -3
- package/dist/libs/crud-sharding/index.js +14 -2
- package/dist/models/bizmodels.d.ts +2 -6
- package/dist/service/SysAppService.d.ts +2 -2
- package/dist/service/SysAppService.js +16 -5
- package/dist/service/SysConfigService.d.ts +1 -1
- package/dist/service/SysConfigService.js +7 -2
- package/dist/service/SysDictDataService.js +14 -4
- package/dist/service/SysMenuService.js +7 -2
- package/dist/service/curd/CurdMixService.d.ts +6 -4
- package/dist/service/curd/CurdMixService.js +16 -2
- package/dist/service/curd/CurdProService.d.ts +43 -27
- package/dist/service/curd/CurdProService.js +32 -33
- package/dist/service/flow/FlowConfigService.js +7 -2
- package/dist/service/flow/FlowInstanceCrudService.js +22 -19
- package/package.json +2 -1
- package/src/controller/base/BaseApiController.ts +0 -5
- package/src/controller/gateway/DocGatewayController.ts +1 -1
- package/src/controller/manage/CrudStandardDesignApi.ts +4 -3
- package/src/controller/manage/FlowConfigManageApi.ts +4 -2
- package/src/controller/manage/SysConfigMangeApi.ts +6 -1
- package/src/controller/manage/UserAccountManageApi.ts +7 -2
- package/src/index.ts +2 -2
- package/src/libs/crud-pro/CrudPro.ts +62 -4
- package/src/libs/crud-pro/interfaces.ts +110 -15
- package/src/libs/crud-pro/models/CrudResult.ts +178 -0
- package/src/libs/crud-pro/models/RequestModel.ts +4 -110
- package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +41 -2
- package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +11 -7
- package/src/libs/crud-pro/services/CrudProTableMetaService.ts +1 -2
- package/src/libs/crud-pro/utils/OrderByUtils.ts +169 -0
- package/src/libs/crud-pro-quick/CrudProQuick.ts +594 -0
- package/src/{service/curd → libs/crud-pro-quick}/fixSoftDelete.ts +23 -13
- package/src/libs/crud-pro-quick/index.ts +52 -0
- package/src/libs/crud-pro-quick/models.ts +35 -0
- package/src/libs/crud-sharding/ShardingConfig.ts +18 -2
- package/src/libs/crud-sharding/ShardingCrudPro.ts +689 -440
- package/src/libs/crud-sharding/ShardingMerger.ts +47 -73
- package/src/libs/crud-sharding/ShardingResult.ts +29 -0
- package/src/libs/crud-sharding/ShardingRouter.ts +27 -6
- package/src/libs/crud-sharding/ShardingTableCreator.ts +214 -71
- package/src/libs/crud-sharding/ShardingUtils.ts +137 -0
- package/src/libs/crud-sharding/TIME_COLUMN_CLEAN_SPEC.md +488 -0
- package/src/libs/crud-sharding/index.ts +14 -3
- package/src/models/bizmodels.ts +4 -7
- package/src/service/SysAppService.ts +18 -7
- package/src/service/SysConfigService.ts +8 -3
- package/src/service/SysDictDataService.ts +14 -4
- package/src/service/SysMenuService.ts +7 -2
- package/src/service/crudstd/CrudStdService.ts +2 -2
- package/src/service/curd/CurdMixService.ts +26 -5
- package/src/service/curd/CurdProService.ts +58 -39
- package/src/service/flow/FlowConfigService.ts +7 -2
- package/src/service/flow/FlowInstanceCrudService.ts +23 -20
- package/dist/libs/crud-pro/README.md +0 -809
- package/dist/libs/crud-pro/README_FUNC.md +0 -193
- package/dist/libs/crud-sharding/ROUTING_LOGIC.md +0 -944
- package/dist/models/StandardColumns.d.ts +0 -71
- package/dist/models/StandardColumns.js +0 -28
- package/dist/service/curd/CrudProQuick.d.ts +0 -190
- package/dist/service/curd/CrudProQuick.js +0 -319
- package/dist/service/curd/README.md +0 -1001
- package/dist/service/curd/fixSoftDelete.d.ts +0 -20
- package/src/libs/crud-pro/README.md +0 -809
- package/src/libs/crud-pro/README_FUNC.md +0 -193
- package/src/libs/crud-sharding/ROUTING_LOGIC.md +0 -944
- package/src/models/StandardColumns.ts +0 -76
- package/src/service/curd/CrudProQuick.ts +0 -360
- package/src/service/curd/README.md +0 -1001
|
@@ -20,11 +20,19 @@ const bizmodels_1 = require("../models/bizmodels");
|
|
|
20
20
|
let SysDictDataService = class SysDictDataService extends BaseService_1.BaseService {
|
|
21
21
|
get sys_data_dict_item() {
|
|
22
22
|
const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
|
|
23
|
-
return this.curdProService.getQuickCrud(
|
|
23
|
+
return this.curdProService.getQuickCrud({
|
|
24
|
+
sqlDatabase: SystemDbName,
|
|
25
|
+
sqlDbType: SystemDbType,
|
|
26
|
+
sqlTable: SystemTables_1.SystemTables.sys_data_dict_item,
|
|
27
|
+
});
|
|
24
28
|
}
|
|
25
29
|
// private get sys_data_dict(){
|
|
26
30
|
// const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
27
|
-
// return this.curdProService.getQuickCrud(
|
|
31
|
+
// return this.curdProService.getQuickCrud({
|
|
32
|
+
// sqlDatabase: SystemDbName,
|
|
33
|
+
// sqlDbType: SystemDbType,
|
|
34
|
+
// sqlTable: SystemTables.sys_data_dict,
|
|
35
|
+
// })
|
|
28
36
|
// }
|
|
29
37
|
async getDataDictItemsByDictCode(dict_code) {
|
|
30
38
|
if (!dict_code || typeof dict_code !== 'string') {
|
|
@@ -34,14 +42,16 @@ let SysDictDataService = class SysDictDataService extends BaseService_1.BaseServ
|
|
|
34
42
|
cacheKey: dict_code,
|
|
35
43
|
cacheName: bizmodels_1.CacheNameEnum.GetDataDictItemsByDictCode,
|
|
36
44
|
getter: async () => {
|
|
37
|
-
|
|
45
|
+
const res = await this.sys_data_dict_item.findList({
|
|
38
46
|
condition: { dict_code, status: 1, deleted_at: 0 }
|
|
39
47
|
});
|
|
48
|
+
return res.rows;
|
|
40
49
|
},
|
|
41
50
|
});
|
|
42
51
|
}
|
|
43
52
|
async removeCacheByDictItemId(dict_item_id) {
|
|
44
|
-
const
|
|
53
|
+
const res = await this.sys_data_dict_item.findOne({ condition: { id: dict_item_id } });
|
|
54
|
+
const dictItemObj = res.row;
|
|
45
55
|
return this.removeCacheByDictCode(dictItemObj['dict_code']);
|
|
46
56
|
}
|
|
47
57
|
// public async removeCacheByDictId(dict_id: string) {
|
|
@@ -20,7 +20,11 @@ const bizmodels_1 = require("../models/bizmodels");
|
|
|
20
20
|
let SysMenuService = class SysMenuService extends BaseService_1.BaseService {
|
|
21
21
|
get sys_menus_table() {
|
|
22
22
|
const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
|
|
23
|
-
return this.curdProService.getQuickCrud(
|
|
23
|
+
return this.curdProService.getQuickCrud({
|
|
24
|
+
sqlDatabase: SystemDbName,
|
|
25
|
+
sqlDbType: SystemDbType,
|
|
26
|
+
sqlTable: SystemTables_1.SystemTables.sys_menus,
|
|
27
|
+
});
|
|
24
28
|
}
|
|
25
29
|
/**
|
|
26
30
|
* 获取所有菜单列表
|
|
@@ -31,9 +35,10 @@ let SysMenuService = class SysMenuService extends BaseService_1.BaseService {
|
|
|
31
35
|
cacheKey: bizmodels_1.CacheNameEnum.GetSysMenusList,
|
|
32
36
|
cacheName: bizmodels_1.CacheNameEnum.GetSysMenusList,
|
|
33
37
|
getter: async () => {
|
|
34
|
-
|
|
38
|
+
const res = await this.sys_menus_table.findList({
|
|
35
39
|
condition: {}
|
|
36
40
|
});
|
|
41
|
+
return res.rows;
|
|
37
42
|
},
|
|
38
43
|
});
|
|
39
44
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ColumnRelation, IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery } from '../../libs/crud-pro/interfaces';
|
|
1
|
+
import { ColumnRelation, IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery, ExecuteSQLResult } from '../../libs/crud-pro/interfaces';
|
|
2
2
|
import { IRequestCfgModel2 } from '../../models/bizmodels';
|
|
3
|
-
import { SqlDbType } from '../../libs/crud-pro/models/keys';
|
|
4
3
|
import { ExecuteContext } from '../../libs/crud-pro/models/ExecuteContext';
|
|
4
|
+
import { ShardingCrudPro } from "../../libs/crud-sharding";
|
|
5
|
+
import { IGetQuickCrudParam, IGetShardingCrudParam } from './CurdProService';
|
|
5
6
|
export interface ILinkColumnRelationParam {
|
|
6
7
|
columnsRelations: ColumnRelation[];
|
|
7
8
|
}
|
|
@@ -14,8 +15,9 @@ export declare class CurdMixService {
|
|
|
14
15
|
private curdMixByLinkToCustomService;
|
|
15
16
|
private prepare;
|
|
16
17
|
executeCrudByCfg(reqJson: IRequestModel, cfgModel: IRequestCfgModel2): Promise<ExecuteContext>;
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
getQuickCrud(param: IGetQuickCrudParam): import("../..").CrudProQuick;
|
|
19
|
+
getShardingCrud(param: IGetShardingCrudParam): ShardingCrudPro;
|
|
20
|
+
executeSQL(sqlCfgModel: ISqlCfgModel): Promise<ExecuteSQLResult>;
|
|
19
21
|
executeCrud(reqJson: IRequestModel): Promise<ExecuteContext>;
|
|
20
22
|
getCachedCfgByMethod(method: string): Promise<IRequestCfgModel>;
|
|
21
23
|
/**
|
|
@@ -30,9 +30,23 @@ let CurdMixService = class CurdMixService {
|
|
|
30
30
|
this.prepare();
|
|
31
31
|
return this.curdProService.executeCrudByCfg(reqJson, cfgModel);
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
// /**
|
|
34
|
+
// * @deprecated 请使用 getQuickCrud 替代
|
|
35
|
+
// * @param sqlDatabase
|
|
36
|
+
// * @param sqlDbType
|
|
37
|
+
// * @param sqlTable
|
|
38
|
+
// */
|
|
39
|
+
// getBbUtil(sqlDatabase: string, sqlDbType: SqlDbType, sqlTable?: string) {
|
|
40
|
+
// this.prepare();
|
|
41
|
+
// return this.curdProService.getQuickCrud({ sqlDatabase, sqlDbType, sqlTable });
|
|
42
|
+
// }
|
|
43
|
+
getQuickCrud(param) {
|
|
34
44
|
this.prepare();
|
|
35
|
-
return this.curdProService.getQuickCrud(
|
|
45
|
+
return this.curdProService.getQuickCrud(param);
|
|
46
|
+
}
|
|
47
|
+
getShardingCrud(param) {
|
|
48
|
+
this.prepare();
|
|
49
|
+
return this.curdProService.getShardingCrud(param);
|
|
36
50
|
}
|
|
37
51
|
async executeSQL(sqlCfgModel) {
|
|
38
52
|
this.prepare();
|
|
@@ -1,12 +1,34 @@
|
|
|
1
1
|
import { Context } from '@midwayjs/koa';
|
|
2
|
-
import { IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery } from '../../libs/crud-pro/interfaces';
|
|
2
|
+
import { IRequestCfgModel, IRequestModel, ISqlCfgModel, ITableListResult, ITableNamesOptions, ITableNamesQuery, ExecuteSQLResult } from '../../libs/crud-pro/interfaces';
|
|
3
3
|
import { SqlDbType } from '../../libs/crud-pro/models/keys';
|
|
4
4
|
import { ExecuteContext, IExecuteContextHandler } from '../../libs/crud-pro/models/ExecuteContext';
|
|
5
5
|
import { RelatedType } from './CurdMixUtils';
|
|
6
6
|
import { BaseService } from '../base/BaseService';
|
|
7
7
|
import { IRequestCfgModel2 } from '../../models/bizmodels';
|
|
8
|
-
import { CrudProQuick } from '
|
|
8
|
+
import { CrudProQuick } from '../../libs/crud-pro-quick';
|
|
9
9
|
import { ShardingCrudPro, IShardingConfig } from '../../libs/crud-sharding';
|
|
10
|
+
/**
|
|
11
|
+
* getQuickCrud 参数接口
|
|
12
|
+
*/
|
|
13
|
+
export interface IGetQuickCrudParam {
|
|
14
|
+
/** 数据库名 */
|
|
15
|
+
sqlDatabase: string;
|
|
16
|
+
/** 数据库类型 */
|
|
17
|
+
sqlDbType: SqlDbType;
|
|
18
|
+
/** 表名(可选) */
|
|
19
|
+
sqlTable?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* getShardingCrud 参数接口
|
|
23
|
+
*/
|
|
24
|
+
export interface IGetShardingCrudParam {
|
|
25
|
+
/** 数据库名 */
|
|
26
|
+
sqlDatabase: string;
|
|
27
|
+
/** 数据库类型 */
|
|
28
|
+
sqlDbType: SqlDbType;
|
|
29
|
+
/** 分表配置 */
|
|
30
|
+
shardingConfig: IShardingConfig;
|
|
31
|
+
}
|
|
10
32
|
export declare class CurdProService extends BaseService {
|
|
11
33
|
protected ctx: Context;
|
|
12
34
|
private mysql2Config;
|
|
@@ -26,49 +48,43 @@ export declare class CurdProService extends BaseService {
|
|
|
26
48
|
* @param reqJson
|
|
27
49
|
*/
|
|
28
50
|
executeCrud(reqJson: IRequestModel): Promise<ExecuteContext>;
|
|
29
|
-
executeSQL(sqlCfgModel: ISqlCfgModel): Promise<
|
|
51
|
+
executeSQL(sqlCfgModel: ISqlCfgModel): Promise<ExecuteSQLResult>;
|
|
30
52
|
executeCrudByCfg(reqJson: IRequestModel, cfgModel: IRequestCfgModel2): Promise<ExecuteContext>;
|
|
31
|
-
/**
|
|
32
|
-
* 获取 CrudProQuick 工具类(已废弃)
|
|
33
|
-
*
|
|
34
|
-
* @deprecated 请使用 getQuickCrud 替代
|
|
35
|
-
* @param sqlDatabase 数据库名
|
|
36
|
-
* @param sqlDbType 数据库类型
|
|
37
|
-
* @param sqlTable 表名(可选)
|
|
38
|
-
* @returns CrudProQuick 实例
|
|
39
|
-
*/
|
|
40
|
-
getBbUtil(sqlDatabase: string, sqlDbType: SqlDbType, sqlTable?: string): CrudProQuick;
|
|
41
53
|
/**
|
|
42
54
|
* 获取 CrudProQuick 工具类
|
|
43
55
|
*
|
|
44
56
|
* 提供快速 CRUD 操作的便捷方法,封装了常用的数据库操作。
|
|
45
57
|
*
|
|
46
|
-
* @param
|
|
47
|
-
* @param sqlDbType 数据库类型
|
|
48
|
-
* @param sqlTable 表名(可选)
|
|
58
|
+
* @param param 参数对象
|
|
49
59
|
* @returns CrudProQuick 实例
|
|
50
60
|
*
|
|
51
61
|
* @example
|
|
52
|
-
* const quick = curdProService.getQuickCrud(
|
|
53
|
-
*
|
|
62
|
+
* const quick = curdProService.getQuickCrud({
|
|
63
|
+
* sqlDatabase: 'mydb',
|
|
64
|
+
* sqlDbType: SqlDbType.mysql,
|
|
65
|
+
* sqlTable: 't_user',
|
|
66
|
+
* });
|
|
67
|
+
* const users = await quick.find({ status: 'active' });
|
|
54
68
|
*/
|
|
55
|
-
getQuickCrud(
|
|
69
|
+
getQuickCrud(param: IGetQuickCrudParam): CrudProQuick;
|
|
56
70
|
/**
|
|
57
71
|
* 获取分表 CRUD 操作器
|
|
58
72
|
*
|
|
59
|
-
* @param
|
|
60
|
-
* @param sqlDbType 数据库类型
|
|
61
|
-
* @param shardingConfig 分表配置
|
|
73
|
+
* @param param 参数对象
|
|
62
74
|
* @returns ShardingCrudPro 实例
|
|
63
75
|
*
|
|
64
76
|
* @example
|
|
65
|
-
* const sharding = curdProService.getShardingCrud(
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
77
|
+
* const sharding = curdProService.getShardingCrud({
|
|
78
|
+
* sqlDatabase: 'mydb',
|
|
79
|
+
* sqlDbType: SqlDbType.mysql,
|
|
80
|
+
* shardingConfig: {
|
|
81
|
+
* type: ShardingType.MONTH,
|
|
82
|
+
* baseTable: 't_order',
|
|
83
|
+
* timeColumn: 'created_at',
|
|
84
|
+
* },
|
|
69
85
|
* });
|
|
70
86
|
*/
|
|
71
|
-
getShardingCrud(
|
|
87
|
+
getShardingCrud(param: IGetShardingCrudParam): ShardingCrudPro;
|
|
72
88
|
getCachedCfgByMethod(method: string): Promise<IRequestCfgModel>;
|
|
73
89
|
getAllTableInfos(query: ITableNamesQuery, options?: ITableNamesOptions): Promise<ITableListResult>;
|
|
74
90
|
}
|
|
@@ -20,11 +20,11 @@ const keys_1 = require("../../libs/crud-pro/models/keys");
|
|
|
20
20
|
const exceptions_1 = require("../../libs/crud-pro/exceptions");
|
|
21
21
|
const ExecuteContextFunc_1 = require("../../libs/crud-pro/models/ExecuteContextFunc");
|
|
22
22
|
const BaseService_1 = require("../base/BaseService");
|
|
23
|
-
const
|
|
23
|
+
const crud_pro_quick_1 = require("../../libs/crud-pro-quick");
|
|
24
24
|
const crud_sharding_1 = require("../../libs/crud-sharding");
|
|
25
25
|
const fixCfgModel_1 = require("./fixCfgModel");
|
|
26
26
|
const global_config_1 = require("../../libs/global-config/global-config");
|
|
27
|
-
const fixSoftDelete_1 = require("../../
|
|
27
|
+
const fixSoftDelete_1 = require("../../libs/crud-pro-quick/fixSoftDelete");
|
|
28
28
|
function toVisitor(ctx) {
|
|
29
29
|
const workbenchInfo = ctx.workbenchInfo;
|
|
30
30
|
const userSession = ctx.userSession;
|
|
@@ -177,57 +177,56 @@ let CurdProService = class CurdProService extends BaseService_1.BaseService {
|
|
|
177
177
|
// 应用标准的updateCfg。
|
|
178
178
|
(0, fixCfgModel_1.fixCfgModel)(cfgModel);
|
|
179
179
|
// 应用软删除动作。
|
|
180
|
-
(0, fixSoftDelete_1.fixSoftDelete)(cfgModel.sqlSimpleName, cfgModel, reqJson,
|
|
180
|
+
(0, fixSoftDelete_1.fixSoftDelete)(cfgModel.sqlSimpleName, cfgModel, reqJson, curdPro.getVisitor());
|
|
181
181
|
return await curdPro.executeCrudByCfg(reqJson, cfgModel);
|
|
182
182
|
}
|
|
183
|
-
/**
|
|
184
|
-
* 获取 CrudProQuick 工具类(已废弃)
|
|
185
|
-
*
|
|
186
|
-
* @deprecated 请使用 getQuickCrud 替代
|
|
187
|
-
* @param sqlDatabase 数据库名
|
|
188
|
-
* @param sqlDbType 数据库类型
|
|
189
|
-
* @param sqlTable 表名(可选)
|
|
190
|
-
* @returns CrudProQuick 实例
|
|
191
|
-
*/
|
|
192
|
-
getBbUtil(sqlDatabase, sqlDbType, sqlTable) {
|
|
193
|
-
return this.getQuickCrud(sqlDatabase, sqlDbType, sqlTable);
|
|
194
|
-
}
|
|
195
183
|
/**
|
|
196
184
|
* 获取 CrudProQuick 工具类
|
|
197
185
|
*
|
|
198
186
|
* 提供快速 CRUD 操作的便捷方法,封装了常用的数据库操作。
|
|
199
187
|
*
|
|
200
|
-
* @param
|
|
201
|
-
* @param sqlDbType 数据库类型
|
|
202
|
-
* @param sqlTable 表名(可选)
|
|
188
|
+
* @param param 参数对象
|
|
203
189
|
* @returns CrudProQuick 实例
|
|
204
190
|
*
|
|
205
191
|
* @example
|
|
206
|
-
* const quick = curdProService.getQuickCrud(
|
|
207
|
-
*
|
|
192
|
+
* const quick = curdProService.getQuickCrud({
|
|
193
|
+
* sqlDatabase: 'mydb',
|
|
194
|
+
* sqlDbType: SqlDbType.mysql,
|
|
195
|
+
* sqlTable: 't_user',
|
|
196
|
+
* });
|
|
197
|
+
* const users = await quick.find({ status: 'active' });
|
|
208
198
|
*/
|
|
209
|
-
getQuickCrud(
|
|
210
|
-
const
|
|
211
|
-
|
|
199
|
+
getQuickCrud(param) {
|
|
200
|
+
const { sqlDatabase, sqlDbType, sqlTable } = param;
|
|
201
|
+
// 传入工厂函数,每次需要时创建新的 CrudPro 实例
|
|
202
|
+
return new crud_pro_quick_1.CrudProQuick({
|
|
203
|
+
crudProFactory: () => this.getCrudPro(),
|
|
204
|
+
sqlDatabase,
|
|
205
|
+
sqlDbType,
|
|
206
|
+
sqlTable,
|
|
207
|
+
});
|
|
212
208
|
}
|
|
213
209
|
/**
|
|
214
210
|
* 获取分表 CRUD 操作器
|
|
215
211
|
*
|
|
216
|
-
* @param
|
|
217
|
-
* @param sqlDbType 数据库类型
|
|
218
|
-
* @param shardingConfig 分表配置
|
|
212
|
+
* @param param 参数对象
|
|
219
213
|
* @returns ShardingCrudPro 实例
|
|
220
214
|
*
|
|
221
215
|
* @example
|
|
222
|
-
* const sharding = curdProService.getShardingCrud(
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
216
|
+
* const sharding = curdProService.getShardingCrud({
|
|
217
|
+
* sqlDatabase: 'mydb',
|
|
218
|
+
* sqlDbType: SqlDbType.mysql,
|
|
219
|
+
* shardingConfig: {
|
|
220
|
+
* type: ShardingType.MONTH,
|
|
221
|
+
* baseTable: 't_order',
|
|
222
|
+
* timeColumn: 'created_at',
|
|
223
|
+
* },
|
|
226
224
|
* });
|
|
227
225
|
*/
|
|
228
|
-
getShardingCrud(
|
|
229
|
-
const
|
|
230
|
-
|
|
226
|
+
getShardingCrud(param) {
|
|
227
|
+
const { sqlDatabase, sqlDbType, shardingConfig } = param;
|
|
228
|
+
// 传入工厂函数,每次需要时创建新的 CrudPro 实例
|
|
229
|
+
const sharding = new crud_sharding_1.ShardingCrudPro(() => this.getCrudPro(), shardingConfig);
|
|
231
230
|
sharding.setBaseCfg({ sqlDatabase, sqlDbType });
|
|
232
231
|
return sharding;
|
|
233
232
|
}
|
|
@@ -47,7 +47,11 @@ exports.ParsedFlowConfig = ParsedFlowConfig;
|
|
|
47
47
|
let FlowConfigService = class FlowConfigService extends BaseService_1.BaseService {
|
|
48
48
|
get flow_config() {
|
|
49
49
|
const { SystemDbName, SystemDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
|
|
50
|
-
return this.curdProService.getQuickCrud(
|
|
50
|
+
return this.curdProService.getQuickCrud({
|
|
51
|
+
sqlDatabase: SystemDbName,
|
|
52
|
+
sqlDbType: SystemDbType,
|
|
53
|
+
sqlTable: FlowModel_1.FLOW_TABLES.flow_config,
|
|
54
|
+
});
|
|
51
55
|
}
|
|
52
56
|
toCacheKey(flow_code, flow_version) {
|
|
53
57
|
if (!flow_code || typeof flow_code !== 'string') {
|
|
@@ -64,9 +68,10 @@ let FlowConfigService = class FlowConfigService extends BaseService_1.BaseServic
|
|
|
64
68
|
cacheKey: cacheKey,
|
|
65
69
|
cacheName: bizmodels_1.CacheNameEnum.GetFlowConfigOne,
|
|
66
70
|
getter: async () => {
|
|
67
|
-
|
|
71
|
+
const res = await this.flow_config.findUniqueOne({
|
|
68
72
|
condition: { flow_code, flow_version, deleted_at: 0 }
|
|
69
73
|
});
|
|
74
|
+
return res.row;
|
|
70
75
|
},
|
|
71
76
|
});
|
|
72
77
|
}
|
|
@@ -23,7 +23,10 @@ exports.getCurrentDateTime = getCurrentDateTime;
|
|
|
23
23
|
let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_1.BaseService {
|
|
24
24
|
get flowDB() {
|
|
25
25
|
const { FlowDbName, FlowDbType } = global_config_1.GLOBAL_STATIC_CONFIG.getConfig();
|
|
26
|
-
const util = this.curdProService.getQuickCrud(
|
|
26
|
+
const util = this.curdProService.getQuickCrud({
|
|
27
|
+
sqlDatabase: FlowDbName,
|
|
28
|
+
sqlDbType: FlowDbType,
|
|
29
|
+
});
|
|
27
30
|
util.setBaseCfgModel({ maxLimit: 100000 });
|
|
28
31
|
return util;
|
|
29
32
|
}
|
|
@@ -67,7 +70,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
67
70
|
modified_at: getCurrentDateTime(),
|
|
68
71
|
deleted_at: 0,
|
|
69
72
|
};
|
|
70
|
-
const nodeInstanceId = await this.flowDB.
|
|
73
|
+
const nodeInstanceId = await this.flowDB.insert({
|
|
71
74
|
data: nodeInstance,
|
|
72
75
|
}, FlowModel_1.FLOW_TABLES.flow_instance_node);
|
|
73
76
|
nodeInstance.id = nodeInstanceId.insertId;
|
|
@@ -89,7 +92,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
89
92
|
modified_at: getCurrentDateTime(),
|
|
90
93
|
deleted_at: 0,
|
|
91
94
|
};
|
|
92
|
-
const taskInstanceId = await this.flowDB.
|
|
95
|
+
const taskInstanceId = await this.flowDB.insert({
|
|
93
96
|
data: taskInstance,
|
|
94
97
|
}, FlowModel_1.FLOW_TABLES.flow_instance_task);
|
|
95
98
|
taskInstance.id = taskInstanceId.insertId;
|
|
@@ -99,7 +102,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
99
102
|
if (updateNodeInstance.id) {
|
|
100
103
|
updateNodeInstance.modified_by = this.getCurrentUserAccountId();
|
|
101
104
|
updateNodeInstance.modified_at = getCurrentDateTime();
|
|
102
|
-
await this.flowDB.
|
|
105
|
+
await this.flowDB.update({
|
|
103
106
|
condition: {
|
|
104
107
|
id: updateNodeInstance.id,
|
|
105
108
|
},
|
|
@@ -110,7 +113,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
110
113
|
else {
|
|
111
114
|
updateNodeInstance.created_by = this.getCurrentUserAccountId();
|
|
112
115
|
updateNodeInstance.created_at = getCurrentDateTime();
|
|
113
|
-
const res = await this.flowDB.
|
|
116
|
+
const res = await this.flowDB.insert({
|
|
114
117
|
data: updateNodeInstance,
|
|
115
118
|
}, FlowModel_1.FLOW_TABLES.flow_instance_node);
|
|
116
119
|
return res.insertId || '';
|
|
@@ -124,7 +127,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
124
127
|
if (taskInstance.id) {
|
|
125
128
|
taskInstance.modified_by = this.getCurrentUserAccountId();
|
|
126
129
|
taskInstance.modified_at = getCurrentDateTime();
|
|
127
|
-
await this.flowDB.
|
|
130
|
+
await this.flowDB.update({
|
|
128
131
|
condition: {
|
|
129
132
|
id: taskInstance.id,
|
|
130
133
|
},
|
|
@@ -135,7 +138,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
135
138
|
else {
|
|
136
139
|
taskInstance.created_by = this.getCurrentUserAccountId();
|
|
137
140
|
taskInstance.created_at = getCurrentDateTime();
|
|
138
|
-
const res = await this.flowDB.
|
|
141
|
+
const res = await this.flowDB.insert({
|
|
139
142
|
data: taskInstance,
|
|
140
143
|
}, FlowModel_1.FLOW_TABLES.flow_instance_task);
|
|
141
144
|
return res.insertId || '';
|
|
@@ -155,7 +158,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
155
158
|
if (flowInstance.id) {
|
|
156
159
|
flowInstance.modified_by = this.getCurrentUserAccountId();
|
|
157
160
|
flowInstance.modified_at = getCurrentDateTime();
|
|
158
|
-
await this.flowDB.
|
|
161
|
+
await this.flowDB.update({
|
|
159
162
|
condition: {
|
|
160
163
|
id: flowInstance.id,
|
|
161
164
|
},
|
|
@@ -166,7 +169,7 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
166
169
|
else {
|
|
167
170
|
flowInstance.created_by = this.getCurrentUserAccountId();
|
|
168
171
|
flowInstance.created_at = getCurrentDateTime();
|
|
169
|
-
const res = await this.flowDB.
|
|
172
|
+
const res = await this.flowDB.insert({
|
|
170
173
|
data: flowInstance,
|
|
171
174
|
}, FlowModel_1.FLOW_TABLES.flow_instance);
|
|
172
175
|
return res.insertId || '';
|
|
@@ -186,10 +189,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
186
189
|
else {
|
|
187
190
|
throw new Error('flow_instance_id is required');
|
|
188
191
|
}
|
|
189
|
-
const res = await this.flowDB.
|
|
192
|
+
const res = await this.flowDB.findUniqueOne({
|
|
190
193
|
condition: condition,
|
|
191
194
|
}, FlowModel_1.FLOW_TABLES.flow_instance_node);
|
|
192
|
-
return res;
|
|
195
|
+
return res.row;
|
|
193
196
|
}
|
|
194
197
|
async getFlowInstance(flow_instance_id, ticket_no) {
|
|
195
198
|
const condition = {};
|
|
@@ -202,10 +205,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
202
205
|
if (Object.keys(condition).length === 0) {
|
|
203
206
|
throw new Error('flow_instance_id or ticket_no is required');
|
|
204
207
|
}
|
|
205
|
-
const res = await this.flowDB.
|
|
208
|
+
const res = await this.flowDB.findUniqueOne({
|
|
206
209
|
condition: condition,
|
|
207
210
|
}, FlowModel_1.FLOW_TABLES.flow_instance);
|
|
208
|
-
return res;
|
|
211
|
+
return res.row;
|
|
209
212
|
}
|
|
210
213
|
async getTaskInstance(task_instance_id) {
|
|
211
214
|
const condition = {};
|
|
@@ -215,10 +218,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
215
218
|
if (Object.keys(condition).length === 0) {
|
|
216
219
|
throw new Error('task_instance_id is required');
|
|
217
220
|
}
|
|
218
|
-
const res = await this.flowDB.
|
|
221
|
+
const res = await this.flowDB.findUniqueOne({
|
|
219
222
|
condition: condition,
|
|
220
223
|
}, FlowModel_1.FLOW_TABLES.flow_instance_task);
|
|
221
|
-
return res;
|
|
224
|
+
return res.row;
|
|
222
225
|
}
|
|
223
226
|
async getTaskInstanceListByFlowInstanceId(flow_instance_id) {
|
|
224
227
|
const condition = {};
|
|
@@ -228,10 +231,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
228
231
|
if (Object.keys(condition).length === 0) {
|
|
229
232
|
throw new Error('flow_instance_id is required');
|
|
230
233
|
}
|
|
231
|
-
const res = await this.flowDB.
|
|
234
|
+
const res = await this.flowDB.findList({
|
|
232
235
|
condition: condition,
|
|
233
236
|
}, FlowModel_1.FLOW_TABLES.flow_instance_task);
|
|
234
|
-
return res;
|
|
237
|
+
return res.rows;
|
|
235
238
|
}
|
|
236
239
|
async getNodeInstanceListByFlowInstanceId(flowInstanceId) {
|
|
237
240
|
const condition = {};
|
|
@@ -241,10 +244,10 @@ let FlowInstanceCrudService = class FlowInstanceCrudService extends BaseService_
|
|
|
241
244
|
if (Object.keys(condition).length === 0) {
|
|
242
245
|
throw new Error('flowInstanceId is required');
|
|
243
246
|
}
|
|
244
|
-
const res = await this.flowDB.
|
|
247
|
+
const res = await this.flowDB.findList({
|
|
245
248
|
condition: condition,
|
|
246
249
|
}, FlowModel_1.FLOW_TABLES.flow_instance_node);
|
|
247
|
-
return res;
|
|
250
|
+
return res.rows;
|
|
248
251
|
}
|
|
249
252
|
};
|
|
250
253
|
__decorate([
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "midway-fatcms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.8",
|
|
4
4
|
"description": "This is a midway component sample",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "index.d.ts",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"src/**/*.html",
|
|
31
31
|
"src/**/*.ico",
|
|
32
32
|
"src/**/*.md",
|
|
33
|
+
".qoder/**/*.md",
|
|
33
34
|
"index.d.ts",
|
|
34
35
|
"tsconfig.json",
|
|
35
36
|
".prettierrc.js",
|
|
@@ -122,11 +122,6 @@ export class BaseApiController extends BaseService {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
|
|
125
|
-
protected get sysDBUtil() {
|
|
126
|
-
const { SystemDbName, SystemDbType } = GLOBAL_STATIC_CONFIG.getConfig();
|
|
127
|
-
return this.curdMixService.getBbUtil(SystemDbName, SystemDbType);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
125
|
private addAccountBasicInfoCfgModel(cfgModel: IRequestCfgModel) {
|
|
131
126
|
let columnsRelation = cfgModel.columnsRelation;
|
|
132
127
|
if (!columnsRelation) {
|
|
@@ -4,6 +4,7 @@ import { parseCreateSqlToTitleMap, parseTableFieldTitleFromComment } from '@/lib
|
|
|
4
4
|
import { checkPermission } from '@/middleware/permission.middleware';
|
|
5
5
|
import { SystemFuncCode } from '@/models/SystemPerm';
|
|
6
6
|
import { KeyOfCrudTypes, KeysOfSimpleSQL, SqlDbType } from '@/libs/crud-pro/models/keys';
|
|
7
|
+
import { ExecuteSQLRowsResult } from '@/libs/crud-pro/interfaces';
|
|
7
8
|
import { SystemTables } from '@/models/SystemTables';
|
|
8
9
|
import { CommonException } from '@/libs/crud-pro/exceptions';
|
|
9
10
|
import { parseDatabaseName, toDatabaseNameStr } from '@/libs/crud-pro/utils/DatabaseName';
|
|
@@ -192,7 +193,7 @@ export class CrudStandardDesignApi extends BaseApiController {
|
|
|
192
193
|
sqlDbType: dbType,
|
|
193
194
|
crudType: KeyOfCrudTypes.SYS_QUERY,
|
|
194
195
|
executeSqlArgs: [],
|
|
195
|
-
});
|
|
196
|
+
}) as ExecuteSQLRowsResult;
|
|
196
197
|
|
|
197
198
|
const fields = columnArray.map(columnObj => {
|
|
198
199
|
const { column_name, is_nullable, column_default, data_type, is_identity, column_description, ...others } = columnObj;
|
|
@@ -242,7 +243,7 @@ export class CrudStandardDesignApi extends BaseApiController {
|
|
|
242
243
|
sqlDbType: dbType,
|
|
243
244
|
crudType: KeyOfCrudTypes.SYS_QUERY,
|
|
244
245
|
executeSqlArgs: [schemaname, tableName],
|
|
245
|
-
});
|
|
246
|
+
}) as ExecuteSQLRowsResult;
|
|
246
247
|
|
|
247
248
|
const commentMap = await this.getTableFieldsCommentsMapOfPostgreSQL(dbName, schemaname, tableName);
|
|
248
249
|
|
|
@@ -309,7 +310,7 @@ export class CrudStandardDesignApi extends BaseApiController {
|
|
|
309
310
|
sqlDbType: dbType,
|
|
310
311
|
crudType: KeyOfCrudTypes.SYS_QUERY,
|
|
311
312
|
executeSqlArgs: [schemaname, tableName],
|
|
312
|
-
});
|
|
313
|
+
}) as ExecuteSQLRowsResult;
|
|
313
314
|
|
|
314
315
|
const map: any = {};
|
|
315
316
|
commentArray.forEach(commentObj => {
|
|
@@ -46,7 +46,8 @@ export class FlowConfigManageApi extends BaseApiController {
|
|
|
46
46
|
@Post('/updateFlowConfig')
|
|
47
47
|
async updateFlowConfig() {
|
|
48
48
|
const body: IRequestModel = this.ctx.request.body as any;
|
|
49
|
-
const
|
|
49
|
+
const flow_code = String(body.condition.flow_code);
|
|
50
|
+
const flow_version = Number(body.condition.flow_version);
|
|
50
51
|
|
|
51
52
|
await this.flowConfigService.remove_cache_flow_config_one(flow_code, flow_version);
|
|
52
53
|
|
|
@@ -63,7 +64,8 @@ export class FlowConfigManageApi extends BaseApiController {
|
|
|
63
64
|
@Post('/deleteFlowConfig')
|
|
64
65
|
async deleteFlowConfig() {
|
|
65
66
|
const body: IRequestModel = this.ctx.request.body as any;
|
|
66
|
-
const
|
|
67
|
+
const flow_code = String(body.condition.flow_code);
|
|
68
|
+
const flow_version = Number(body.condition.flow_version);
|
|
67
69
|
await this.flowConfigService.remove_cache_flow_config_one(flow_code, flow_version);
|
|
68
70
|
|
|
69
71
|
return this.executeSysSimpleSQL(FLOW_TABLES.flow_config, KeysOfSimpleSQL.SIMPLE_DELETE, {
|
|
@@ -61,7 +61,12 @@ export class SysConfigMangeApi extends BaseApiController {
|
|
|
61
61
|
return CommonResult.errorRes('id不能为空');
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
const
|
|
64
|
+
const sysConfigRes = await this.curdMixService.getQuickCrud({
|
|
65
|
+
sqlDatabase: SystemDbName,
|
|
66
|
+
sqlDbType: SystemDbType,
|
|
67
|
+
sqlTable: SystemTables.sys_configs,
|
|
68
|
+
}).findOne({ condition: body.condition });
|
|
69
|
+
const sysConfig = sysConfigRes.row;
|
|
65
70
|
if (!sysConfig) {
|
|
66
71
|
return CommonResult.errorRes('配置项不存在');
|
|
67
72
|
}
|
|
@@ -55,9 +55,14 @@ export class UserAccountManageApi extends BaseApiController {
|
|
|
55
55
|
return CommonResult.errorRes('id不能为空');
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
const
|
|
58
|
+
const userAccountInfoRes = await this.curdMixService.getQuickCrud({
|
|
59
|
+
sqlDatabase: SystemDbName,
|
|
60
|
+
sqlDbType: SystemDbType,
|
|
61
|
+
sqlTable: SystemTables.sys_user_account,
|
|
62
|
+
}).findUniqueOne({
|
|
59
63
|
condition: body.condition
|
|
60
|
-
}
|
|
64
|
+
});
|
|
65
|
+
const userAccountInfo = userAccountInfoRes.row;
|
|
61
66
|
|
|
62
67
|
if (!userAccountInfo) {
|
|
63
68
|
return CommonResult.errorRes('用户信息不存在');
|
package/src/index.ts
CHANGED
|
@@ -70,7 +70,7 @@ export * from './service/curd/CurdMixByWorkbenchService';
|
|
|
70
70
|
export * from './service/curd/CurdMixService';
|
|
71
71
|
export * from './service/curd/CurdMixUtils';
|
|
72
72
|
export * from './service/curd/CurdProService';
|
|
73
|
-
export * from './
|
|
73
|
+
export * from './libs/crud-pro-quick';
|
|
74
74
|
export * from './service/flow/FlowConfigService';
|
|
75
75
|
export * from './service/flow/FlowInstanceService';
|
|
76
76
|
export * from './service/flow/FlowInstanceCrudService';
|
|
@@ -87,7 +87,6 @@ export * from './models/contextLogger';
|
|
|
87
87
|
export * from './models/devops';
|
|
88
88
|
export * from './models/SystemTables';
|
|
89
89
|
export * from './models/AsyncTaskModel';
|
|
90
|
-
export * from './models/StandardColumns';
|
|
91
90
|
|
|
92
91
|
export * from './schedule/index';
|
|
93
92
|
|
|
@@ -114,5 +113,6 @@ export * from './libs/crud-pro/models/RequestCfgModel';
|
|
|
114
113
|
export * from './libs/crud-pro/models/SqlSegArg';
|
|
115
114
|
export * from './libs/crud-pro/models/ResModel';
|
|
116
115
|
export * from './libs/crud-sharding/index';
|
|
116
|
+
export * from './libs/crud-pro-quick/index';
|
|
117
117
|
|
|
118
118
|
export * from './libs/global-config/global-config';
|