midway-fatcms 0.0.7 → 0.0.9

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 (159) hide show
  1. package/.qoder/skills/midway-fatcms/01-quick-start.md +231 -0
  2. package/.qoder/skills/midway-fatcms/02-crud-quick.md +375 -0
  3. package/.qoder/skills/midway-fatcms/03-crud-sharding.md +489 -0
  4. package/.qoder/skills/midway-fatcms/04-condition-operators.md +93 -0
  5. package/.qoder/skills/midway-fatcms/05-configuration.md +290 -0
  6. package/.qoder/skills/midway-fatcms/06-builtin-functions.md +241 -0
  7. package/.qoder/skills/midway-fatcms/07-examples.md +504 -0
  8. package/.qoder/skills/midway-fatcms/SKILL.md +96 -0
  9. package/README.md +9 -9
  10. package/dist/configuration.d.ts +10 -0
  11. package/dist/configuration.js +26 -0
  12. package/dist/controller/base/BaseApiController.d.ts +1 -2
  13. package/dist/controller/base/BaseApiController.js +0 -4
  14. package/dist/controller/gateway/DocGatewayController.js +1 -1
  15. package/dist/controller/helpers.controller.d.ts +6 -0
  16. package/dist/controller/helpers.controller.js +19 -0
  17. package/dist/controller/manage/FlowConfigManageApi.js +4 -2
  18. package/dist/controller/manage/SysConfigMangeApi.js +6 -1
  19. package/dist/controller/manage/UserAccountManageApi.js +7 -2
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.js +2 -2
  22. package/dist/libs/crud-pro/CrudPro.d.ts +51 -3
  23. package/dist/libs/crud-pro/CrudPro.js +111 -4
  24. package/dist/libs/crud-pro/exceptions.d.ts +7 -0
  25. package/dist/libs/crud-pro/exceptions.js +7 -0
  26. package/dist/libs/crud-pro/interfaces.d.ts +83 -12
  27. package/dist/libs/crud-pro/models/CrudResult.d.ts +116 -0
  28. package/dist/libs/crud-pro/models/CrudResult.js +126 -0
  29. package/dist/libs/crud-pro/models/RequestModel.d.ts +2 -2
  30. package/dist/libs/crud-pro/models/ServiceHub.d.ts +2 -0
  31. package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.d.ts +70 -2
  32. package/dist/libs/crud-pro/services/CrudProDataTypeConvertService.js +205 -13
  33. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +36 -2
  34. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +8 -4
  35. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +36 -0
  36. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +97 -4
  37. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +2 -0
  38. package/dist/libs/crud-pro/services/CurdProServiceHub.js +6 -0
  39. package/dist/libs/crud-pro-quick/CrudProQuick.d.ts +382 -0
  40. package/dist/libs/crud-pro-quick/CrudProQuick.js +689 -0
  41. package/dist/libs/crud-pro-quick/fixSoftDelete.d.ts +30 -0
  42. package/dist/{service/curd → libs/crud-pro-quick}/fixSoftDelete.js +3 -6
  43. package/dist/libs/crud-pro-quick/index.d.ts +36 -0
  44. package/dist/libs/crud-pro-quick/index.js +49 -0
  45. package/dist/libs/crud-pro-quick/models.d.ts +33 -0
  46. package/dist/libs/crud-pro-quick/models.js +2 -0
  47. package/dist/libs/crud-sharding/ShardingBase.d.ts +78 -0
  48. package/dist/libs/crud-sharding/ShardingBase.js +179 -0
  49. package/dist/libs/crud-sharding/ShardingByCustomCrud.d.ts +35 -0
  50. package/dist/libs/crud-sharding/ShardingByCustomCrud.js +297 -0
  51. package/dist/libs/crud-sharding/ShardingByHashCrud.d.ts +38 -0
  52. package/dist/libs/crud-sharding/ShardingByHashCrud.js +86 -0
  53. package/dist/libs/crud-sharding/ShardingByKeyCrud.d.ts +39 -0
  54. package/dist/libs/crud-sharding/ShardingByKeyCrud.js +74 -0
  55. package/dist/libs/crud-sharding/ShardingByTimeCrud.d.ts +66 -0
  56. package/dist/libs/crud-sharding/ShardingByTimeCrud.js +524 -0
  57. package/dist/libs/crud-sharding/ShardingConfig.d.ts +25 -10
  58. package/dist/libs/crud-sharding/ShardingConfig.js +5 -5
  59. package/dist/libs/crud-sharding/ShardingMerger.d.ts +10 -18
  60. package/dist/libs/crud-sharding/ShardingMerger.js +27 -44
  61. package/dist/libs/crud-sharding/ShardingResult.d.ts +33 -0
  62. package/dist/libs/crud-sharding/ShardingResult.js +16 -0
  63. package/dist/libs/crud-sharding/ShardingTableCreator.d.ts +21 -4
  64. package/dist/libs/crud-sharding/ShardingTableCreator.js +193 -59
  65. package/dist/libs/crud-sharding/ShardingUtils.d.ts +48 -0
  66. package/dist/libs/crud-sharding/ShardingUtils.js +122 -1
  67. package/dist/libs/crud-sharding/TIME_COLUMN_CLEAN_SPEC.md +488 -0
  68. package/dist/libs/crud-sharding/index.d.ts +13 -15
  69. package/dist/libs/crud-sharding/index.js +33 -17
  70. package/dist/models/RedisKeys.d.ts +1 -0
  71. package/dist/models/RedisKeys.js +1 -0
  72. package/dist/models/bizmodels.d.ts +2 -6
  73. package/dist/service/SysAppService.d.ts +2 -2
  74. package/dist/service/SysAppService.js +16 -5
  75. package/dist/service/SysConfigService.d.ts +1 -1
  76. package/dist/service/SysConfigService.js +7 -2
  77. package/dist/service/SysDictDataService.js +14 -4
  78. package/dist/service/SysMenuService.js +7 -2
  79. package/dist/service/TableMetaCacheRedisSubscriber.d.ts +31 -0
  80. package/dist/service/TableMetaCacheRedisSubscriber.js +98 -0
  81. package/dist/service/curd/CurdMixService.d.ts +6 -4
  82. package/dist/service/curd/CurdMixService.js +16 -2
  83. package/dist/service/curd/CurdProService.d.ts +149 -29
  84. package/dist/service/curd/CurdProService.js +157 -38
  85. package/dist/service/flow/FlowConfigService.js +7 -2
  86. package/dist/service/flow/FlowInstanceCrudService.js +22 -19
  87. package/package.json +1 -1
  88. package/src/configuration.ts +27 -0
  89. package/src/controller/base/BaseApiController.ts +0 -5
  90. package/src/controller/gateway/DocGatewayController.ts +1 -1
  91. package/src/controller/helpers.controller.ts +15 -0
  92. package/src/controller/manage/CrudStandardDesignApi.ts +4 -3
  93. package/src/controller/manage/FlowConfigManageApi.ts +4 -2
  94. package/src/controller/manage/SysConfigMangeApi.ts +6 -1
  95. package/src/controller/manage/UserAccountManageApi.ts +7 -2
  96. package/src/index.ts +2 -2
  97. package/src/libs/crud-pro/CrudPro.ts +134 -7
  98. package/src/libs/crud-pro/exceptions.ts +8 -0
  99. package/src/libs/crud-pro/interfaces.ts +111 -15
  100. package/src/libs/crud-pro/models/CrudResult.ts +178 -0
  101. package/src/libs/crud-pro/models/RequestModel.ts +2 -2
  102. package/src/libs/crud-pro/models/ServiceHub.ts +4 -0
  103. package/src/libs/crud-pro/services/CrudProDataTypeConvertService.ts +238 -15
  104. package/src/libs/crud-pro/services/CrudProExecuteSqlService.ts +41 -2
  105. package/src/libs/crud-pro/services/CrudProGenSqlCondition.ts +11 -7
  106. package/src/libs/crud-pro/services/CrudProTableMetaService.ts +110 -3
  107. package/src/libs/crud-pro/services/CurdProServiceHub.ts +8 -0
  108. package/src/libs/crud-pro-quick/CrudProQuick.ts +782 -0
  109. package/src/{service/curd → libs/crud-pro-quick}/fixSoftDelete.ts +23 -13
  110. package/src/libs/crud-pro-quick/index.ts +52 -0
  111. package/src/libs/crud-pro-quick/models.ts +35 -0
  112. package/src/libs/crud-sharding/ShardingBase.ts +256 -0
  113. package/src/libs/crud-sharding/ShardingByCustomCrud.ts +329 -0
  114. package/src/libs/crud-sharding/ShardingByHashCrud.ts +111 -0
  115. package/src/libs/crud-sharding/ShardingByKeyCrud.ts +97 -0
  116. package/src/libs/crud-sharding/ShardingByTimeCrud.ts +628 -0
  117. package/src/libs/crud-sharding/ShardingConfig.ts +28 -10
  118. package/src/libs/crud-sharding/ShardingMerger.ts +35 -63
  119. package/src/libs/crud-sharding/ShardingResult.ts +29 -0
  120. package/src/libs/crud-sharding/ShardingTableCreator.ts +214 -71
  121. package/src/libs/crud-sharding/ShardingUtils.ts +137 -0
  122. package/src/libs/crud-sharding/TIME_COLUMN_CLEAN_SPEC.md +488 -0
  123. package/src/libs/crud-sharding/index.ts +30 -16
  124. package/src/models/RedisKeys.ts +1 -0
  125. package/src/models/bizmodels.ts +4 -7
  126. package/src/service/SysAppService.ts +18 -7
  127. package/src/service/SysConfigService.ts +8 -3
  128. package/src/service/SysDictDataService.ts +14 -4
  129. package/src/service/SysMenuService.ts +7 -2
  130. package/src/service/TableMetaCacheRedisSubscriber.ts +105 -0
  131. package/src/service/crudstd/CrudStdService.ts +2 -2
  132. package/src/service/curd/CurdMixService.ts +26 -5
  133. package/src/service/curd/CurdProService.ts +186 -45
  134. package/src/service/flow/FlowConfigService.ts +7 -2
  135. package/src/service/flow/FlowInstanceCrudService.ts +23 -20
  136. package/.qoder/skills/midway-fatcms-crud/SKILL.md +0 -375
  137. package/.qoder/skills/midway-fatcms-crud/examples.md +0 -990
  138. package/.qoder/skills/midway-fatcms-crud/reference.md +0 -568
  139. package/dist/libs/crud-pro/README.md +0 -809
  140. package/dist/libs/crud-pro/README_FUNC.md +0 -193
  141. package/dist/libs/crud-sharding/ROUTING_LOGIC.md +0 -944
  142. package/dist/libs/crud-sharding/ShardingCrudPro.d.ts +0 -363
  143. package/dist/libs/crud-sharding/ShardingCrudPro.js +0 -675
  144. package/dist/libs/crud-sharding/ShardingRouter.d.ts +0 -69
  145. package/dist/libs/crud-sharding/ShardingRouter.js +0 -377
  146. package/dist/models/StandardColumns.d.ts +0 -71
  147. package/dist/models/StandardColumns.js +0 -28
  148. package/dist/service/curd/CrudProQuick.d.ts +0 -190
  149. package/dist/service/curd/CrudProQuick.js +0 -319
  150. package/dist/service/curd/README.md +0 -1100
  151. package/dist/service/curd/fixSoftDelete.d.ts +0 -20
  152. package/src/libs/crud-pro/README.md +0 -809
  153. package/src/libs/crud-pro/README_FUNC.md +0 -193
  154. package/src/libs/crud-sharding/ROUTING_LOGIC.md +0 -944
  155. package/src/libs/crud-sharding/ShardingCrudPro.ts +0 -835
  156. package/src/libs/crud-sharding/ShardingRouter.ts +0 -512
  157. package/src/models/StandardColumns.ts +0 -76
  158. package/src/service/curd/CrudProQuick.ts +0 -360
  159. package/src/service/curd/README.md +0 -1100
@@ -1,193 +0,0 @@
1
- # CrudPro 内置函数参考
2
-
3
- CrudPro 的 `IFuncCfgModel` 支持 `functionName` 方式调用内置函数。内置函数由四个工具类注册:`DateTimeUtils`、`CompareUtils`、`MixinUtils`、`TypeUtils`。
4
-
5
- > 源码位置:`src/libs/crud-pro/services/CrudProServiceBase.ts` → `createBuildInExecuteFuncMap()`
6
-
7
- ## 调用方式
8
-
9
- `functionName` 是 `IFuncCfgModel` 的属性之一,可在 `updateCfg`、`validateCfg`、`executeWhen`、`validate` 等配置中使用。
10
-
11
- ### 无参调用
12
-
13
- ```typescript
14
- 'data.created_at': { functionName: 'getCurrentTimeString' }
15
- ```
16
-
17
- ### 带参调用
18
-
19
- ```typescript
20
- 'data.order_date': { functionName: 'getCurrentDateFormat', functionParams: ['YYYYMMDD'] }
21
- ```
22
-
23
- `functionParams` 中的每个元素可以是基础类型(string / number / boolean),也可以嵌套 `IFuncCfgModel` 对象:
24
-
25
- ```typescript
26
- {
27
- functionName: 'eq',
28
- functionParams: [
29
- { contextAsBool: 'res.is_exist' },
30
- { constBool: false }
31
- ]
32
- }
33
- ```
34
-
35
- ## DateTimeUtils — 日期时间
36
-
37
- | 函数名 | 参数 | 返回值 | 说明 |
38
- |--------|------|--------|------|
39
- | `getCurrentTimeStampMs` | 无 | `number` | 当前时间戳(毫秒) |
40
- | `getCurrentTimeStampSecond` | 无 | `number` | 当前时间戳(秒) |
41
- | `getCurrentTimeString` | 无 | `string` | 当前时间,格式 `YYYY-MM-DD HH:mm:ss` |
42
- | `getCurrentDateFormat` | `format: string` | `string` | 按指定格式返回当前时间 |
43
- | `getYesterdayDateFormat` | `format: string` | `string` | 按指定格式返回昨天时间 |
44
-
45
- **示例:**
46
-
47
- ```typescript
48
- updateCfg: {
49
- 'data.created_at': { functionName: 'getCurrentTimeString' },
50
- 'data.created_ts': { functionName: 'getCurrentTimeStampMs' },
51
- 'data.order_date': { functionName: 'getCurrentDateFormat', functionParams: ['YYYYMMDD'] },
52
- 'data.yesterday': { functionName: 'getYesterdayDateFormat', functionParams: ['YYYY-MM-DD'] },
53
- }
54
- ```
55
-
56
- ## CompareUtils — 比较运算
57
-
58
- | 函数名 | 参数 | 返回值 | 说明 |
59
- |--------|------|--------|------|
60
- | `eq` | `a: any, b: any` | `boolean` | 相等比较(`==`,兼容类型转换) |
61
- | `ne` | `a: any, b: any` | `boolean` | 不相等 |
62
- | `gt` | `a: any, b: any` | `boolean` | 大于 |
63
- | `gte` | `a: any, b: any` | `boolean` | 大于等于 |
64
- | `lt` | `a: any, b: any` | `boolean` | 小于 |
65
- | `lte` | `a: any, b: any` | `boolean` | 小于等于 |
66
-
67
- **示例:**
68
-
69
- ```typescript
70
- // executeWhen:仅当 is_exist 为 false 时执行插入
71
- executeWhen: {
72
- functionName: 'eq',
73
- functionParams: [{ contextAsBool: 'res.is_exist' }, { constBool: false }]
74
- }
75
-
76
- // validate:确保数量大于 0
77
- validate: {
78
- functionName: 'gt',
79
- functionParams: [{ context: '$current' }, { constNumber: 0 }],
80
- message: '数量必须大于0'
81
- }
82
- ```
83
-
84
- ## MixinUtils — 通用工具
85
-
86
- | 函数名 | 参数 | 返回值 | 说明 |
87
- |--------|------|--------|------|
88
- | `isNil` | `obj: any` | `boolean` | 是否为 null 或 undefined |
89
- | `isNotNil` | `obj: any` | `boolean` | 不为 null 且不为 undefined |
90
- | `isEmpty` | `obj: any` | `boolean` | 是否为空(null / undefined / 空字符串 / 空数组 / 空对象) |
91
- | `isNotEmpty` | `obj: any` | `boolean` | 是否非空 |
92
- | `equals` | `obj1: any, obj2: any` | `boolean` | 严格相等(`===`) |
93
- | `equalsIgnoreCase` | `str1: string, str2: string` | `boolean` | 忽略大小写比较字符串 |
94
- | `startsWith` | `str1: string, str2: string` | `boolean` | 字符串前缀判断 |
95
- | `isValidFieldName` | `s: string` | `boolean` | 合法字段名(字母开头,仅含字母/数字/下划线) |
96
- | `selectNotEmpty` | `a: any, b: any` | `any` | 返回第一个非空值 |
97
- | `hasAny` | `a: string[], b: string[]` | `boolean` | 集合 A 是否包含集合 B 中的任意元素 |
98
- | `parseValueByType` | `value: any, targetType: string` | `any` | 按类型转换值(string / number / boolean / array / JSONObject) |
99
- | `sleepMs` | `ms: number` | `Promise` | 延时等待 |
100
- | `uuid` | 无 | `string` | 生成 UUID v4(优先 `crypto.getRandomValues`,降级 `Math.random`) |
101
- | `generateSnowflakeId` | `machineId?: number` | `string` | 生成雪花ID(64位整数字符串) |
102
-
103
- **uuid 和雪花ID 示例:**
104
-
105
- ```typescript
106
- updateCfg: {
107
- // UUID v4:适合需要标准唯一标识的场景
108
- 'data.id': { functionName: 'uuid' },
109
-
110
- // 雪花ID:适合需要趋势递增、时间有序的场景
111
- 'data.order_id': { functionName: 'generateSnowflakeId' },
112
-
113
- // 雪花ID:指定机器ID(0-1023),多实例部署时区分
114
- 'data.trace_id': { functionName: 'generateSnowflakeId', functionParams: [1] },
115
- }
116
- ```
117
-
118
- > **雪花ID machineId 获取优先级**:函数参数 > 环境变量 `SNOWFLAKE_MACHINE_ID` > `process.pid` 低10位。多实例部署时建议设置环境变量 `SNOWFLAKE_MACHINE_ID` 为 0-1023 的唯一值。
119
-
120
- ## TypeUtils — 类型判断
121
-
122
- | 函数名 | 参数 | 返回值 | 说明 |
123
- |--------|------|--------|------|
124
- | `isBasicType` | `value: any` | `boolean` | 基础类型(boolean / string / number / null) |
125
- | `isBoolean` | `value: any` | `boolean` | 布尔值 |
126
- | `isString` | `value: any` | `boolean` | 字符串 |
127
- | `isInteger` | `value: any` | `boolean` | 整数 |
128
- | `isNumber` | `value: any` | `boolean` | 数字 |
129
- | `isNumeric` | `value: any` | `boolean` | 数字或可转换数字的字符串 |
130
- | `isValidName` | `value: any` | `boolean` | 合法命名(字母开头,字母/数字/下划线) |
131
- | `isChinesePhone` | `value: string` | `boolean` | 中文手机号 |
132
- | `isEmailStrValid` | `value: string` | `boolean` | 合法邮箱地址 |
133
- | `pickNumber` | `s: string` | `number \| null` | 从字符串中提取数字部分 |
134
-
135
- ## 自定义函数扩展
136
-
137
- 除内置函数外,可通过覆写 `IExecuteContextFunc.getFunctionMap()` 注册自定义函数。
138
-
139
- 函数查找顺序:`getFunctionMap()` → `buildInExecuteFuncMap`(内置函数),自定义函数优先级更高,可覆盖内置函数。
140
-
141
- ### 注册方式
142
-
143
- 继承 `BaseExecuteContextFunc`,覆写 `getFunctionMap()` 方法返回函数映射表:
144
-
145
- ```typescript
146
- import { BaseExecuteContextFunc } from './libs/crud-pro/models/ExecuteContextFunc';
147
-
148
- class MyContextFunc extends BaseExecuteContextFunc {
149
-
150
- // 覆写此方法,返回自定义函数映射表
151
- getFunctionMap(): any {
152
- return {
153
- // 无参函数
154
- generateOrderNo: (prefix: string) => {
155
- return prefix + Date.now().toString(36).toUpperCase();
156
- },
157
-
158
- // 带参函数:参数来自 functionParams 配置
159
- formatAmount: (amount: number, currency: string) => {
160
- return currency + ' ' + amount.toFixed(2);
161
- },
162
-
163
- // 可访问 FuncContext 的函数(通过 this 关键字)
164
- getVisitorName: function(this: any) {
165
- return this.reqModel?.visitor?.nickName || 'anonymous';
166
- },
167
- };
168
- }
169
- }
170
-
171
- // 创建 CrudPro 实例时注入
172
- const crudPro = new CrudPro();
173
- crudPro.contextFunc = new MyContextFunc(/* 构造参数 */);
174
- ```
175
-
176
- ### 在配置中使用
177
-
178
- 注册后即可在 `updateCfg`、`validateCfg`、`functionCfg` 等场景中通过 `functionName` 调用:
179
-
180
- ```typescript
181
- const cfgJson: IRequestCfgModel = {
182
- method: 'order.create',
183
- sqlSimpleName: KeysOfSimpleSQL.SIMPLE_INSERT,
184
- updateCfg: {
185
- 'data.order_no': { functionName: 'generateOrderNo', functionParams: ['PRE'] },
186
- },
187
- };
188
- ```
189
-
190
- > **注意**:`functionParams` 中配置的参数会按顺序传入函数。如果函数需要访问 `FuncContext`(如 `reqModel`、`resModel`、`currentValue`),
191
- > 需使用普通 `function`(非箭头函数)并通过 `this` 访问,框架会以 `func.apply(funcContext, params)` 方式调用。
192
-
193
- > **注意**:`generateOrderNo` 等并非内置函数,需通过 `contextFunc` 扩展注册后才可使用,否则运行时抛出 `RUN_FUNCTION_NOT_FOUND` 异常。