midway-fatcms 0.0.1-beta.65 → 0.0.1-beta.66

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 (385) hide show
  1. package/.eslintrc.json +14 -14
  2. package/.prettierrc.js +4 -4
  3. package/README.md +8 -8
  4. package/dist/config/config.default.d.ts +3 -3
  5. package/dist/config/config.default.js +167 -160
  6. package/dist/config/utils.d.ts +1 -1
  7. package/dist/config/utils.js +23 -23
  8. package/dist/configuration.d.ts +7 -7
  9. package/dist/configuration.js +113 -113
  10. package/dist/controller/base/BaseApiController.d.ts +42 -37
  11. package/dist/controller/base/BaseApiController.js +189 -164
  12. package/dist/controller/gateway/AnyApiGatewayController.d.ts +13 -13
  13. package/dist/controller/gateway/AnyApiGatewayController.js +55 -55
  14. package/dist/controller/gateway/AsyncTaskController.d.ts +20 -20
  15. package/dist/controller/gateway/AsyncTaskController.js +181 -181
  16. package/dist/controller/gateway/CrudMtdGatewayController.d.ts +21 -21
  17. package/dist/controller/gateway/CrudMtdGatewayController.js +122 -122
  18. package/dist/controller/gateway/CrudStdGatewayController.d.ts +38 -38
  19. package/dist/controller/gateway/CrudStdGatewayController.js +155 -129
  20. package/dist/controller/gateway/DocGatewayController.d.ts +27 -27
  21. package/dist/controller/gateway/DocGatewayController.js +179 -179
  22. package/dist/controller/gateway/FileController.d.ts +28 -28
  23. package/dist/controller/gateway/FileController.js +145 -144
  24. package/dist/controller/gateway/ProxyApiGatewayController.d.ts +18 -18
  25. package/dist/controller/gateway/ProxyApiGatewayController.js +78 -78
  26. package/dist/controller/gateway/PublicApiController.d.ts +32 -31
  27. package/dist/controller/gateway/PublicApiController.js +215 -179
  28. package/dist/controller/gateway/StaticController.d.ts +23 -23
  29. package/dist/controller/gateway/StaticController.js +286 -286
  30. package/dist/controller/helpers.controller.d.ts +39 -39
  31. package/dist/controller/helpers.controller.js +188 -188
  32. package/dist/controller/home.controller.d.ts +9 -9
  33. package/dist/controller/home.controller.js +72 -72
  34. package/dist/controller/manage/AnyApiMangeApi.d.ts +10 -10
  35. package/dist/controller/manage/AnyApiMangeApi.js +98 -98
  36. package/dist/controller/manage/AppLogMangeApi.d.ts +10 -10
  37. package/dist/controller/manage/AppLogMangeApi.js +88 -88
  38. package/dist/controller/manage/AppMangeApi.d.ts +10 -10
  39. package/dist/controller/manage/AppMangeApi.js +88 -88
  40. package/dist/controller/manage/AppPageMangeApi.d.ts +10 -10
  41. package/dist/controller/manage/AppPageMangeApi.js +87 -87
  42. package/dist/controller/manage/AppSchemaHistoryApi.d.ts +10 -10
  43. package/dist/controller/manage/AppSchemaHistoryApi.js +83 -83
  44. package/dist/controller/manage/CrudMethodsMangeApi.d.ts +10 -10
  45. package/dist/controller/manage/CrudMethodsMangeApi.js +84 -84
  46. package/dist/controller/manage/CrudStandardDesignApi.d.ts +46 -46
  47. package/dist/controller/manage/CrudStandardDesignApi.js +367 -367
  48. package/dist/controller/manage/DataDictManageApi.d.ts +15 -15
  49. package/dist/controller/manage/DataDictManageApi.js +133 -133
  50. package/dist/controller/manage/DeployManageApi.d.ts +19 -19
  51. package/dist/controller/manage/DeployManageApi.js +180 -180
  52. package/dist/controller/manage/DocLibManageApi.d.ts +10 -10
  53. package/dist/controller/manage/DocLibManageApi.js +104 -104
  54. package/dist/controller/manage/DocManageApi.d.ts +11 -11
  55. package/dist/controller/manage/DocManageApi.js +130 -130
  56. package/dist/controller/manage/FileManageApi.d.ts +13 -13
  57. package/dist/controller/manage/FileManageApi.js +77 -77
  58. package/dist/controller/manage/LowCodeTplManageApi.d.ts +13 -13
  59. package/dist/controller/manage/LowCodeTplManageApi.js +86 -86
  60. package/dist/controller/manage/MenuManageApi.d.ts +10 -10
  61. package/dist/controller/manage/MenuManageApi.js +93 -93
  62. package/dist/controller/manage/ProxyApiMangeApi.d.ts +10 -10
  63. package/dist/controller/manage/ProxyApiMangeApi.js +87 -87
  64. package/dist/controller/manage/SuperAdminManageApi.d.ts +24 -24
  65. package/dist/controller/manage/SuperAdminManageApi.js +153 -153
  66. package/dist/controller/manage/SysConfigMangeApi.d.ts +11 -11
  67. package/dist/controller/manage/SysConfigMangeApi.js +126 -126
  68. package/dist/controller/manage/SystemInfoManageApi.d.ts +12 -12
  69. package/dist/controller/manage/SystemInfoManageApi.js +72 -72
  70. package/dist/controller/manage/UserAccountManageApi.d.ts +14 -14
  71. package/dist/controller/manage/UserAccountManageApi.js +129 -129
  72. package/dist/controller/manage/WorkbenchMangeApi.d.ts +11 -11
  73. package/dist/controller/manage/WorkbenchMangeApi.js +103 -103
  74. package/dist/controller/myinfo/AuthController.d.ts +33 -33
  75. package/dist/controller/myinfo/AuthController.js +136 -136
  76. package/dist/controller/myinfo/MyInfoController.d.ts +13 -13
  77. package/dist/controller/myinfo/MyInfoController.js +51 -51
  78. package/dist/controller/render/AppRenderController.d.ts +11 -11
  79. package/dist/controller/render/AppRenderController.js +92 -92
  80. package/dist/controller/test.controller.d.ts +8 -8
  81. package/dist/controller/test.controller.js +51 -51
  82. package/dist/filter/default.filter.d.ts +7 -7
  83. package/dist/filter/default.filter.js +23 -23
  84. package/dist/filter/notfound.filter.d.ts +5 -5
  85. package/dist/filter/notfound.filter.js +20 -20
  86. package/dist/index.d.ts +103 -103
  87. package/dist/index.js +121 -121
  88. package/dist/interface.d.ts +29 -27
  89. package/dist/interface.js +3 -3
  90. package/dist/libs/crud-pro/CrudPro.d.ts +37 -37
  91. package/dist/libs/crud-pro/CrudPro.js +136 -136
  92. package/dist/libs/crud-pro/defaultConfigs.d.ts +4 -4
  93. package/dist/libs/crud-pro/defaultConfigs.js +15 -15
  94. package/dist/libs/crud-pro/exceptions.d.ts +106 -104
  95. package/dist/libs/crud-pro/exceptions.js +119 -117
  96. package/dist/libs/crud-pro/interfaces.d.ts +165 -165
  97. package/dist/libs/crud-pro/interfaces.js +12 -12
  98. package/dist/libs/crud-pro/models/ExecuteContext.d.ts +49 -49
  99. package/dist/libs/crud-pro/models/ExecuteContext.js +79 -79
  100. package/dist/libs/crud-pro/models/ExecuteContextFunc.d.ts +38 -38
  101. package/dist/libs/crud-pro/models/ExecuteContextFunc.js +72 -72
  102. package/dist/libs/crud-pro/models/FuncContext.d.ts +18 -18
  103. package/dist/libs/crud-pro/models/FuncContext.js +6 -6
  104. package/dist/libs/crud-pro/models/RequestCfgModel.d.ts +65 -65
  105. package/dist/libs/crud-pro/models/RequestCfgModel.js +81 -81
  106. package/dist/libs/crud-pro/models/RequestModel.d.ts +25 -25
  107. package/dist/libs/crud-pro/models/RequestModel.js +113 -113
  108. package/dist/libs/crud-pro/models/ResModel.d.ts +16 -16
  109. package/dist/libs/crud-pro/models/ResModel.js +2 -2
  110. package/dist/libs/crud-pro/models/ServiceHub.d.ts +20 -20
  111. package/dist/libs/crud-pro/models/ServiceHub.js +2 -2
  112. package/dist/libs/crud-pro/models/SqlCfgModel.d.ts +22 -22
  113. package/dist/libs/crud-pro/models/SqlCfgModel.js +40 -40
  114. package/dist/libs/crud-pro/models/SqlSegArg.d.ts +6 -6
  115. package/dist/libs/crud-pro/models/SqlSegArg.js +12 -12
  116. package/dist/libs/crud-pro/models/Transaction.d.ts +30 -30
  117. package/dist/libs/crud-pro/models/Transaction.js +74 -74
  118. package/dist/libs/crud-pro/models/TransactionMySQL.d.ts +28 -28
  119. package/dist/libs/crud-pro/models/TransactionMySQL.js +76 -76
  120. package/dist/libs/crud-pro/models/TransactionPostgres.d.ts +28 -28
  121. package/dist/libs/crud-pro/models/TransactionPostgres.js +85 -85
  122. package/dist/libs/crud-pro/models/TransactionSqlServer.d.ts +34 -34
  123. package/dist/libs/crud-pro/models/TransactionSqlServer.js +92 -92
  124. package/dist/libs/crud-pro/models/keys.d.ts +110 -110
  125. package/dist/libs/crud-pro/models/keys.js +154 -154
  126. package/dist/libs/crud-pro/services/CrudProCachedCfgService.d.ts +11 -11
  127. package/dist/libs/crud-pro/services/CrudProCachedCfgService.js +73 -73
  128. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.d.ts +9 -9
  129. package/dist/libs/crud-pro/services/CrudProExecuteFuncService.js +125 -125
  130. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.d.ts +17 -17
  131. package/dist/libs/crud-pro/services/CrudProExecuteSqlService.js +225 -225
  132. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.d.ts +9 -9
  133. package/dist/libs/crud-pro/services/CrudProFieldUpdateService.js +51 -51
  134. package/dist/libs/crud-pro/services/CrudProFieldValidateService.d.ts +13 -13
  135. package/dist/libs/crud-pro/services/CrudProFieldValidateService.js +148 -148
  136. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.d.ts +24 -24
  137. package/dist/libs/crud-pro/services/CrudProGenSqlCondition.js +355 -355
  138. package/dist/libs/crud-pro/services/CrudProGenSqlService.d.ts +25 -25
  139. package/dist/libs/crud-pro/services/CrudProGenSqlService.js +165 -165
  140. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.d.ts +32 -32
  141. package/dist/libs/crud-pro/services/CrudProOriginToExecuteSql.js +339 -334
  142. package/dist/libs/crud-pro/services/CrudProServiceBase.d.ts +24 -24
  143. package/dist/libs/crud-pro/services/CrudProServiceBase.js +90 -90
  144. package/dist/libs/crud-pro/services/CrudProTableMetaService.d.ts +9 -9
  145. package/dist/libs/crud-pro/services/CrudProTableMetaService.js +72 -72
  146. package/dist/libs/crud-pro/services/CurdProServiceHub.d.ts +32 -32
  147. package/dist/libs/crud-pro/services/CurdProServiceHub.js +64 -64
  148. package/dist/libs/crud-pro/utils/CompareUtils.d.ts +9 -9
  149. package/dist/libs/crud-pro/utils/CompareUtils.js +25 -25
  150. package/dist/libs/crud-pro/utils/DatabaseName.d.ts +9 -9
  151. package/dist/libs/crud-pro/utils/DatabaseName.js +50 -50
  152. package/dist/libs/crud-pro/utils/DateTimeUtils.d.ts +7 -7
  153. package/dist/libs/crud-pro/utils/DateTimeUtils.js +21 -21
  154. package/dist/libs/crud-pro/utils/MemoryRefreshCache.d.ts +19 -19
  155. package/dist/libs/crud-pro/utils/MemoryRefreshCache.js +47 -47
  156. package/dist/libs/crud-pro/utils/MessageParseUtils.d.ts +5 -5
  157. package/dist/libs/crud-pro/utils/MessageParseUtils.js +33 -33
  158. package/dist/libs/crud-pro/utils/MixinUtils.d.ts +39 -39
  159. package/dist/libs/crud-pro/utils/MixinUtils.js +255 -255
  160. package/dist/libs/crud-pro/utils/ModelUtils.d.ts +11 -11
  161. package/dist/libs/crud-pro/utils/ModelUtils.js +54 -54
  162. package/dist/libs/crud-pro/utils/MultiKeyMap.d.ts +11 -11
  163. package/dist/libs/crud-pro/utils/MultiKeyMap.js +63 -63
  164. package/dist/libs/crud-pro/utils/SqlFuncUtils.d.ts +5 -5
  165. package/dist/libs/crud-pro/utils/SqlFuncUtils.js +29 -29
  166. package/dist/libs/crud-pro/utils/TypeUtils.d.ts +40 -40
  167. package/dist/libs/crud-pro/utils/TypeUtils.js +166 -166
  168. package/dist/libs/crud-pro/utils/ValidateUtils.d.ts +3 -3
  169. package/dist/libs/crud-pro/utils/ValidateUtils.js +165 -165
  170. package/dist/libs/crud-pro/utils/pool/MySQLUtils.d.ts +3 -3
  171. package/dist/libs/crud-pro/utils/pool/MySQLUtils.js +19 -19
  172. package/dist/libs/crud-pro/utils/pool/PostgresUtils.d.ts +3 -3
  173. package/dist/libs/crud-pro/utils/pool/PostgresUtils.js +20 -20
  174. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.d.ts +3 -3
  175. package/dist/libs/crud-pro/utils/pool/SqlServerUtils.js +20 -20
  176. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.d.ts +4 -4
  177. package/dist/libs/crud-pro/utils/sqlConvert/convertColumnName.js +35 -21
  178. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.d.ts +3 -3
  179. package/dist/libs/crud-pro/utils/sqlConvert/convertMix.js +22 -22
  180. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.d.ts +2 -2
  181. package/dist/libs/crud-pro/utils/sqlConvert/convertMsSql.js +11 -11
  182. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.d.ts +2 -2
  183. package/dist/libs/crud-pro/utils/sqlConvert/convertPgSql.js +11 -11
  184. package/dist/libs/crud-pro/utils/sqlConvert/convertPgType.d.ts +2 -2
  185. package/dist/libs/crud-pro/utils/sqlConvert/convertPgType.js +128 -128
  186. package/dist/libs/global-config/global-config.d.ts +69 -69
  187. package/dist/libs/global-config/global-config.js +36 -36
  188. package/dist/libs/utils/AsymmetricCrypto.d.ts +76 -0
  189. package/dist/libs/utils/AsymmetricCrypto.js +261 -0
  190. package/dist/libs/utils/base64.d.ts +9 -9
  191. package/dist/libs/utils/base64.js +42 -42
  192. package/dist/libs/utils/common-dto.d.ts +18 -18
  193. package/dist/libs/utils/common-dto.js +40 -40
  194. package/dist/libs/utils/crypto-utils.d.ts +3 -3
  195. package/dist/libs/utils/crypto-utils.js +46 -46
  196. package/dist/libs/utils/errorToString.d.ts +2 -2
  197. package/dist/libs/utils/errorToString.js +57 -57
  198. package/dist/libs/utils/fatcms-request.d.ts +30 -30
  199. package/dist/libs/utils/fatcms-request.js +104 -104
  200. package/dist/libs/utils/format-url.d.ts +2 -0
  201. package/dist/libs/utils/format-url.js +13 -0
  202. package/dist/libs/utils/functions.d.ts +5 -5
  203. package/dist/libs/utils/functions.js +72 -72
  204. package/dist/libs/utils/ordernum-utils.d.ts +2 -2
  205. package/dist/libs/utils/ordernum-utils.js +13 -13
  206. package/dist/libs/utils/parseConfig.d.ts +8 -8
  207. package/dist/libs/utils/parseConfig.js +47 -47
  208. package/dist/libs/utils/parseCreateSql.d.ts +10 -10
  209. package/dist/libs/utils/parseCreateSql.js +87 -87
  210. package/dist/libs/utils/render-utils.d.ts +37 -28
  211. package/dist/libs/utils/render-utils.js +154 -133
  212. package/dist/middleware/forbidden.middleware.d.ts +10 -10
  213. package/dist/middleware/forbidden.middleware.js +54 -54
  214. package/dist/middleware/global.middleware.d.ts +10 -10
  215. package/dist/middleware/global.middleware.js +273 -266
  216. package/dist/middleware/permission.middleware.d.ts +18 -18
  217. package/dist/middleware/permission.middleware.js +74 -74
  218. package/dist/middleware/rediscache.middleware.d.ts +3 -3
  219. package/dist/middleware/rediscache.middleware.js +77 -77
  220. package/dist/middleware/redislock.middleware.d.ts +7 -7
  221. package/dist/middleware/redislock.middleware.js +72 -72
  222. package/dist/middleware/tx.middleware.d.ts +9 -9
  223. package/dist/middleware/tx.middleware.js +40 -40
  224. package/dist/models/AsyncTaskModel.d.ts +74 -74
  225. package/dist/models/AsyncTaskModel.js +31 -31
  226. package/dist/models/RedisKeys.d.ts +15 -15
  227. package/dist/models/RedisKeys.js +18 -18
  228. package/dist/models/SystemEntities.d.ts +139 -105
  229. package/dist/models/SystemEntities.js +30 -9
  230. package/dist/models/SystemPerm.d.ts +95 -95
  231. package/dist/models/SystemPerm.js +100 -100
  232. package/dist/models/SystemTables.d.ts +25 -25
  233. package/dist/models/SystemTables.js +28 -28
  234. package/dist/models/WorkbenchInfoTools.d.ts +7 -0
  235. package/dist/models/WorkbenchInfoTools.js +20 -0
  236. package/dist/models/bizmodels.d.ts +113 -104
  237. package/dist/models/bizmodels.js +39 -39
  238. package/dist/models/contextLogger.d.ts +27 -25
  239. package/dist/models/contextLogger.js +119 -112
  240. package/dist/models/devops.d.ts +12 -12
  241. package/dist/models/devops.js +19 -19
  242. package/dist/models/userSession.d.ts +64 -62
  243. package/dist/models/userSession.js +167 -165
  244. package/dist/schedule/anonymousContext.d.ts +14 -14
  245. package/dist/schedule/anonymousContext.js +61 -59
  246. package/dist/schedule/index.d.ts +4 -4
  247. package/dist/schedule/index.js +10 -10
  248. package/dist/schedule/runSchedule.d.ts +12 -12
  249. package/dist/schedule/runSchedule.js +68 -68
  250. package/dist/schedule/scheduleNames.d.ts +13 -13
  251. package/dist/schedule/scheduleNames.js +17 -17
  252. package/dist/service/AuthService.d.ts +71 -71
  253. package/dist/service/AuthService.js +270 -263
  254. package/dist/service/EnumInfoService.d.ts +30 -30
  255. package/dist/service/EnumInfoService.js +133 -127
  256. package/dist/service/FileCenterService.d.ts +43 -43
  257. package/dist/service/FileCenterService.js +351 -351
  258. package/dist/service/SysConfigService.d.ts +7 -7
  259. package/dist/service/SysConfigService.js +47 -47
  260. package/dist/service/UserAccountService.d.ts +23 -23
  261. package/dist/service/UserAccountService.js +107 -107
  262. package/dist/service/UserSessionService.d.ts +43 -38
  263. package/dist/service/UserSessionService.js +166 -157
  264. package/dist/service/VisitStatService.d.ts +14 -14
  265. package/dist/service/VisitStatService.js +158 -158
  266. package/dist/service/WorkbenchService.d.ts +54 -53
  267. package/dist/service/WorkbenchService.js +237 -211
  268. package/dist/service/anyapi/AnyApiSandboxService.d.ts +15 -15
  269. package/dist/service/anyapi/AnyApiSandboxService.js +110 -110
  270. package/dist/service/anyapi/AnyApiService.d.ts +27 -27
  271. package/dist/service/anyapi/AnyApiService.js +181 -181
  272. package/dist/service/asyncTask/AsyncTaskRunnerService.d.ts +50 -50
  273. package/dist/service/asyncTask/AsyncTaskRunnerService.js +287 -287
  274. package/dist/service/asyncTask/AsyncTaskService.d.ts +7 -7
  275. package/dist/service/asyncTask/AsyncTaskService.js +34 -34
  276. package/dist/service/asyncTask/handler/ExcelInfoModel.d.ts +10 -10
  277. package/dist/service/asyncTask/handler/ExcelInfoModel.js +2 -2
  278. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.d.ts +7 -7
  279. package/dist/service/asyncTask/handler/ExportExcelAsyncTaskHandler.js +216 -216
  280. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.d.ts +36 -36
  281. package/dist/service/asyncTask/handler/ExportExcelByInnerHttpHandler.js +141 -141
  282. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.d.ts +46 -46
  283. package/dist/service/asyncTask/handler/ExportExcelByStdCrudHandler.js +135 -135
  284. package/dist/service/base/ApiBaseService.d.ts +15 -15
  285. package/dist/service/base/ApiBaseService.js +50 -50
  286. package/dist/service/base/ApiRateLimiter.d.ts +10 -10
  287. package/dist/service/base/ApiRateLimiter.js +51 -51
  288. package/dist/service/base/BaseService.d.ts +41 -41
  289. package/dist/service/base/BaseService.js +101 -101
  290. package/dist/service/base/cache/CacheServiceFactory.d.ts +20 -0
  291. package/dist/service/base/cache/CacheServiceFactory.js +67 -0
  292. package/dist/service/base/cache/FatcmsBaseCtxCache.d.ts +19 -0
  293. package/dist/service/base/cache/FatcmsBaseCtxCache.js +38 -0
  294. package/dist/service/base/cache/FatcmsBaseDiskCache.d.ts +24 -0
  295. package/dist/service/base/cache/FatcmsBaseDiskCache.js +81 -0
  296. package/dist/service/base/cache/FatcmsBaseMemoryCache.d.ts +18 -0
  297. package/dist/service/base/cache/FatcmsBaseMemoryCache.js +66 -0
  298. package/dist/service/base/cache/FatcmsBaseNoneCache.d.ts +10 -0
  299. package/dist/service/base/cache/FatcmsBaseNoneCache.js +19 -0
  300. package/dist/service/base/{RedisCacheService.d.ts → cache/FatcmsBaseRedisCache.d.ts} +20 -20
  301. package/dist/service/base/cache/FatcmsBaseRedisCache.js +39 -0
  302. package/dist/service/crudstd/CrudStdActionService.d.ts +17 -17
  303. package/dist/service/crudstd/CrudStdActionService.js +32 -32
  304. package/dist/service/crudstd/CrudStdConstant.d.ts +58 -58
  305. package/dist/service/crudstd/CrudStdConstant.js +64 -64
  306. package/dist/service/crudstd/CrudStdRelationService.d.ts +10 -10
  307. package/dist/service/crudstd/CrudStdRelationService.js +121 -121
  308. package/dist/service/crudstd/CrudStdService.d.ts +72 -70
  309. package/dist/service/crudstd/CrudStdService.js +417 -403
  310. package/dist/service/curd/CrudProQuick.d.ts +44 -44
  311. package/dist/service/curd/CrudProQuick.js +147 -147
  312. package/dist/service/curd/CurdMixByAccountService.d.ts +9 -9
  313. package/dist/service/curd/CurdMixByAccountService.js +113 -113
  314. package/dist/service/curd/CurdMixByDictService.d.ts +12 -13
  315. package/dist/service/curd/CurdMixByDictService.js +118 -114
  316. package/dist/service/curd/CurdMixByLinkToCustomService.d.ts +30 -31
  317. package/dist/service/curd/CurdMixByLinkToCustomService.js +207 -203
  318. package/dist/service/curd/CurdMixBySysConfigService.d.ts +13 -9
  319. package/dist/service/curd/CurdMixBySysConfigService.js +120 -80
  320. package/dist/service/curd/CurdMixByWorkbenchService.d.ts +11 -10
  321. package/dist/service/curd/CurdMixByWorkbenchService.js +86 -78
  322. package/dist/service/curd/CurdMixService.d.ts +28 -28
  323. package/dist/service/curd/CurdMixService.js +100 -100
  324. package/dist/service/curd/CurdMixUtils.d.ts +57 -57
  325. package/dist/service/curd/CurdMixUtils.js +331 -331
  326. package/dist/service/curd/CurdProService.d.ts +32 -32
  327. package/dist/service/curd/CurdProService.js +212 -212
  328. package/dist/service/curd/fixCfgModel.d.ts +3 -3
  329. package/dist/service/curd/fixCfgModel.js +104 -104
  330. package/dist/service/proxyapi/ProxyApiLoadService.d.ts +21 -21
  331. package/dist/service/proxyapi/ProxyApiLoadService.js +167 -167
  332. package/dist/service/proxyapi/ProxyApiService.d.ts +61 -61
  333. package/dist/service/proxyapi/ProxyApiService.js +294 -294
  334. package/dist/service/proxyapi/ProxyApiUtils.d.ts +15 -15
  335. package/dist/service/proxyapi/ProxyApiUtils.js +34 -34
  336. package/dist/service/proxyapi/RouteHandler.d.ts +5 -5
  337. package/dist/service/proxyapi/RouteHandler.js +9 -9
  338. package/dist/service/proxyapi/RouteTrie.d.ts +12 -12
  339. package/dist/service/proxyapi/RouteTrie.js +63 -63
  340. package/dist/service/proxyapi/WeightedRandom.d.ts +9 -9
  341. package/dist/service/proxyapi/WeightedRandom.js +31 -31
  342. package/dist/service/proxyapi/WeightedRoundRobin.d.ts +8 -8
  343. package/dist/service/proxyapi/WeightedRoundRobin.js +32 -32
  344. package/index.d.ts +10 -10
  345. package/package.json +87 -87
  346. package/src/config/config.default.ts +8 -0
  347. package/src/controller/base/BaseApiController.ts +39 -0
  348. package/src/controller/gateway/CrudStdGatewayController.ts +42 -10
  349. package/src/controller/gateway/FileController.ts +2 -2
  350. package/src/controller/gateway/PublicApiController.ts +72 -28
  351. package/src/index.ts +1 -1
  352. package/src/interface.ts +2 -0
  353. package/src/libs/crud-pro/exceptions.ts +2 -0
  354. package/src/libs/crud-pro/models/keys.ts +6 -6
  355. package/src/libs/crud-pro/services/CrudProOriginToExecuteSql.ts +7 -1
  356. package/src/libs/crud-pro/utils/sqlConvert/convertColumnName.ts +18 -0
  357. package/src/libs/utils/AsymmetricCrypto.ts +310 -0
  358. package/src/libs/utils/format-url.ts +16 -0
  359. package/src/libs/utils/render-utils.ts +56 -15
  360. package/src/middleware/global.middleware.ts +8 -0
  361. package/src/models/SystemEntities.ts +43 -0
  362. package/src/models/WorkbenchInfoTools.ts +18 -0
  363. package/src/models/bizmodels.ts +12 -0
  364. package/src/models/contextLogger.ts +10 -1
  365. package/src/models/userSession.ts +4 -0
  366. package/src/schedule/anonymousContext.ts +2 -0
  367. package/src/service/AuthService.ts +11 -0
  368. package/src/service/EnumInfoService.ts +35 -22
  369. package/src/service/UserSessionService.ts +29 -18
  370. package/src/service/WorkbenchService.ts +42 -2
  371. package/src/service/base/cache/CacheServiceFactory.ts +66 -0
  372. package/src/service/base/cache/FatcmsBaseCtxCache.ts +47 -0
  373. package/src/service/base/cache/FatcmsBaseDiskCache.ts +87 -0
  374. package/src/service/base/cache/FatcmsBaseMemoryCache.ts +74 -0
  375. package/src/service/base/cache/FatcmsBaseNoneCache.ts +24 -0
  376. package/src/service/base/cache/FatcmsBaseRedisCache.ts +48 -0
  377. package/src/service/crudstd/CrudStdService.ts +28 -12
  378. package/src/service/curd/CurdMixByAccountService.ts +1 -0
  379. package/src/service/curd/CurdMixByDictService.ts +14 -8
  380. package/src/service/curd/CurdMixByLinkToCustomService.ts +21 -12
  381. package/src/service/curd/CurdMixBySysConfigService.ts +60 -11
  382. package/src/service/curd/CurdMixByWorkbenchService.ts +31 -24
  383. package/tsconfig.json +32 -32
  384. package/dist/service/base/RedisCacheService.js +0 -57
  385. package/src/service/base/RedisCacheService.ts +0 -42
@@ -10,6 +10,9 @@ import { BaseService } from '@/service/base/BaseService';
10
10
  import * as moment from 'moment';
11
11
  import { CommonException } from '@/libs/crud-pro/exceptions';
12
12
  import { RedisKeys } from '@/models/RedisKeys';
13
+ import { Aes128CBC } from 'aes-128-cbc';
14
+ import * as md5 from 'md5';
15
+ import { AsymmetricCrypto } from '@/libs/utils/AsymmetricCrypto';
13
16
 
14
17
  export interface IExecuteSimpleSqlParams {
15
18
  updateCfg?: Record<string, IFuncCfgModel>;
@@ -19,6 +22,11 @@ export interface IExecuteSimpleSqlParams {
19
22
  columns?: string | string[]; // ..."columns": "id,name,age,sex,addr",
20
23
  }
21
24
 
25
+ export interface ISecretBody {
26
+ secretPayload: string;
27
+ secretKey: string; // 使用RSA公钥加密的AES密钥
28
+ }
29
+
22
30
  @Controller('/api/BaseApiController')
23
31
  export class BaseApiController extends BaseService {
24
32
  @Inject()
@@ -167,4 +175,35 @@ export class BaseApiController extends BaseService {
167
175
  columnsRelation.push(createdByRelation2);
168
176
  }
169
177
  }
178
+
179
+
180
+ protected async decodeBodyBySession<T>(body: any): Promise<any> {
181
+ const sessionInfo = this.getUserSessionInfo();
182
+ const sessionId = sessionInfo?.sessionId;
183
+ if (!sessionId) {
184
+ throw new Error('[decodeBodyBySessionId] sessionId is null');
185
+ }
186
+
187
+ const secretBody = body as ISecretBody;
188
+
189
+ if (!secretBody.secretPayload || !secretBody.secretKey) {
190
+ return body;
191
+ }
192
+
193
+ const { privateKey } = sessionInfo;
194
+
195
+ const secretPayload: string = secretBody.secretPayload;
196
+ const secretKey: string = secretBody.secretKey; // 使用RSA加密的AES密钥
197
+ const aesKey = await AsymmetricCrypto.decrypt(privateKey, secretKey); // 解密AES密钥
198
+
199
+ const createAes128 = () => {
200
+ const iv = md5(aesKey + sessionId);
201
+ return new Aes128CBC(aesKey, iv);
202
+ }
203
+ const aes128 = createAes128();
204
+ const decryptedPayload = await aes128.time_decrypt_base64_utf8(secretPayload);
205
+ return JSON.parse(decryptedPayload);
206
+ }
207
+
208
+
170
209
  }
@@ -4,13 +4,16 @@ import { BaseApiController } from '../base/BaseApiController';
4
4
  import { CrudStdService, SPECIAL_SETTING_KEY, ICrudStdActionParams, IRequestModelCrudProExt } from '@/service/crudstd/CrudStdService';
5
5
  import { KeysOfSimpleSQL } from '@/libs/crud-pro/models/keys';
6
6
  import { CommonResult } from '@/libs/utils/common-dto';
7
+ import { checkLogin } from '@/middleware/permission.middleware';
7
8
 
8
9
  type ICrudStdParams = { stdAction: ICrudStdActionParams } & IRequestModelCrudProExt;
9
10
 
11
+
12
+
10
13
  /**
11
- * 零代码配置的界面,相关的接口的执行
14
+ * 零代码配置的界面,相关的接口的执行。这里的接口都需要登录。
12
15
  */
13
- @Controller('/ns/gw/api/crudStd')
16
+ @Controller('/ns/gw/api/crudStd', { middleware: [checkLogin()] })
14
17
  export class CrudStdGatewayController extends BaseApiController {
15
18
  @Inject()
16
19
  protected ctx: Context;
@@ -23,18 +26,36 @@ export class CrudStdGatewayController extends BaseApiController {
23
26
  */
24
27
  @Post('/getParsedCrudStdAppInfo')
25
28
  async getParsedCrudStdAppInfo(): Promise<CommonResult> {
26
- const body = this.ctx.request.body as ICrudStdParams;
29
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
30
+ const body = decodeBody as ICrudStdParams;
27
31
  const appCode = body.stdAction.appCode;
28
32
  const parsedAppInfo = await this.crudStdService.getParsedCrudStdAppInfo(appCode);
29
- return CommonResult.successNotNull(parsedAppInfo);
33
+ if (parsedAppInfo) {
34
+ const parsedAppInfo2: any = { ...parsedAppInfo };
35
+ delete parsedAppInfo2.created_at;
36
+ delete parsedAppInfo2.created_by;
37
+ delete parsedAppInfo2.workbench_code_array;
38
+ delete parsedAppInfo2.modified_at;
39
+ delete parsedAppInfo2.modified_by;
40
+ delete parsedAppInfo2.modified_desc;
41
+ delete parsedAppInfo2.std_crud_db;
42
+ delete parsedAppInfo2.std_crud_tbl;
43
+ return CommonResult.successNotNull(parsedAppInfo2);
44
+ }
45
+ return CommonResult.successNotNull(null);
30
46
  }
31
47
 
48
+
32
49
  /**
33
50
  * 列表查询: 分页查询
34
51
  */
35
52
  @Post('/getObjectList')
36
53
  async getObjectList() {
37
- const { stdAction, ...otherParams } = this.ctx.request.body as ICrudStdParams;
54
+
55
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
56
+ const body = decodeBody as ICrudStdParams;
57
+
58
+ const { stdAction, ...otherParams } = body;
38
59
  stdAction.settingKey = SPECIAL_SETTING_KEY.QUERY_LIST;
39
60
  return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_QUERY_PAGE);
40
61
  }
@@ -44,7 +65,10 @@ export class CrudStdGatewayController extends BaseApiController {
44
65
  */
45
66
  @Post('/getObjectOne')
46
67
  async getObjectOne() {
47
- const { stdAction, ...otherParams } = this.ctx.request.body as ICrudStdParams;
68
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
69
+ const body = decodeBody as ICrudStdParams;
70
+
71
+ const { stdAction, ...otherParams } = body;
48
72
  stdAction.settingKey = SPECIAL_SETTING_KEY.QUERY_ONE;
49
73
  return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_QUERY_ONE);
50
74
  }
@@ -54,7 +78,9 @@ export class CrudStdGatewayController extends BaseApiController {
54
78
  */
55
79
  @Post('/deleteObject')
56
80
  async deleteObject() {
57
- const { stdAction, ...otherParams } = this.ctx.request.body as ICrudStdParams;
81
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
82
+ const body = decodeBody as ICrudStdParams;
83
+ const { stdAction, ...otherParams } = body;
58
84
  return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_DELETE);
59
85
  }
60
86
 
@@ -63,7 +89,9 @@ export class CrudStdGatewayController extends BaseApiController {
63
89
  */
64
90
  @Post('/createObject')
65
91
  async createObject() {
66
- const { stdAction, ...otherParams } = this.ctx.request.body as ICrudStdParams;
92
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
93
+ const body = decodeBody as ICrudStdParams;
94
+ const { stdAction, ...otherParams } = body;
67
95
  return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_INSERT);
68
96
  }
69
97
 
@@ -72,7 +100,9 @@ export class CrudStdGatewayController extends BaseApiController {
72
100
  */
73
101
  @Post('/updateObject')
74
102
  async updateObject() {
75
- const { stdAction, ...otherParams } = this.ctx.request.body as ICrudStdParams;
103
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
104
+ const body = decodeBody as ICrudStdParams;
105
+ const { stdAction, ...otherParams } = body;
76
106
  return this.crudStdService.executeStdQuery(stdAction, otherParams, KeysOfSimpleSQL.SIMPLE_UPDATE);
77
107
  }
78
108
 
@@ -81,7 +111,9 @@ export class CrudStdGatewayController extends BaseApiController {
81
111
  */
82
112
  @Post('/executeStdAction')
83
113
  async executeStdAction() {
84
- const { stdAction, ...otherParams } = this.ctx.request.body as ICrudStdParams;
114
+ const decodeBody = await this.decodeBodyBySession(this.ctx.request.body);
115
+ const body = decodeBody as ICrudStdParams;
116
+ const { stdAction, ...otherParams } = body;
85
117
  return await this.crudStdService.executeStdActionByReq(stdAction, otherParams);
86
118
  }
87
119
  }
@@ -8,6 +8,7 @@ import { FileCenterService, PATH_PREFIX, toDownloadPaths, isImageFile } from '@/
8
8
  import { checkLogin, checkPermission } from '@/middleware/permission.middleware';
9
9
  import { CommonResult } from '@/libs/utils/common-dto';
10
10
  import { SystemFuncCode } from '@/models/SystemPerm';
11
+ import { formatHost } from '@/libs/utils/format-url';
11
12
 
12
13
  function isTrue(obj: any) {
13
14
  return obj === true || obj === 'true';
@@ -55,8 +56,7 @@ export class FileController extends BaseApiController {
55
56
 
56
57
  const { fileKey, filename, storageUrl } = await this.fileCenterService.uploadFileToOSS(files, accessType, referer);
57
58
 
58
- const origin = this.ctx.request.origin;
59
-
59
+ const origin = formatHost(this.ctx.request.origin);
60
60
  const downloadUrls = toDownloadPaths(origin, fileKey);
61
61
 
62
62
  const data = {
@@ -10,6 +10,14 @@ import { parseJsonObject } from '@/libs/utils/functions';
10
10
  import { WorkbenchService } from '@/service/WorkbenchService';
11
11
  import { SystemRoleCode } from '@/models/SystemPerm';
12
12
  import { KeysOfAuthType } from '@/libs/crud-pro/models/keys';
13
+ import { CacheServiceFactory } from '@/service/base/cache/CacheServiceFactory';
14
+ import md5 = require('md5');
15
+ import { CacheLevelEnum, CacheNameEnum } from '@/models/SystemEntities';
16
+
17
+
18
+ const DEFAULT_CACHE_LEVEL = CacheLevelEnum.MEMORY;
19
+ const DEFAULT_CACHE_SECOND = 60 * 5;
20
+
13
21
 
14
22
  /**
15
23
  * 公开的API,无需鉴权,所有人可以直接访问
@@ -25,6 +33,9 @@ export class PublicApiController extends BaseApiController {
25
33
  @Inject()
26
34
  private workbenchService: WorkbenchService;
27
35
 
36
+ @Inject()
37
+ private cacheServiceFactory: CacheServiceFactory;
38
+
28
39
  /**
29
40
  * 获取所有站点列表
30
41
  */
@@ -53,39 +64,51 @@ export class PublicApiController extends BaseApiController {
53
64
  return CommonResult.errorRes('param workbenchMenuCode is null');
54
65
  }
55
66
 
56
- const workbenchMenuCodeStr = '' + workbenchMenuCode;
57
- const workbenchMenuCodeArray = workbenchMenuCodeStr.split(',');
67
+ const { publicApiMenuCacheLevel, publicApiMenuCacheSecond } = this.ctx.workbenchInfoTools.getWorkbenchConfig();
68
+
69
+ const mapResult = await this.cacheServiceFactory.getJsonObjectCache({
70
+ cacheLevel: publicApiMenuCacheLevel || DEFAULT_CACHE_LEVEL,
71
+ cacheKey: "" + workbenchMenuCode,
72
+ cacheSecond: publicApiMenuCacheSecond || DEFAULT_CACHE_SECOND,
73
+ cacheName: CacheNameEnum.GetWorkbenchMenu,
74
+ getter: async () => {
75
+
76
+ const workbenchMenuCodeStr = '' + workbenchMenuCode;
77
+ const workbenchMenuCodeArray = workbenchMenuCodeStr.split(',');
78
+ const condition = {
79
+ menu_code: {
80
+ $in: workbenchMenuCodeArray,
81
+ },
82
+ };
58
83
 
59
- const condition = {
60
- menu_code: {
61
- $in: workbenchMenuCodeArray,
62
- },
63
- };
84
+ const rows = await this.sysDBUtil.getList({ condition }, SystemTables.sys_menus);
64
85
 
65
- const rows = await this.sysDBUtil.getList({ condition }, SystemTables.sys_menus);
86
+ const map = {};
87
+ for (let i = 0; i < rows.length; i++) {
88
+ const rowElement = rows[i];
89
+ const menu_code = rowElement.menu_code;
90
+ const view_auth_config = rowElement.view_auth_config;
91
+ const view_auth_type = rowElement.view_auth_type;
66
92
 
67
- const map = {};
68
- for (let i = 0; i < rows.length; i++) {
69
- const rowElement = rows[i];
70
- const menu_code = rowElement.menu_code;
71
- const view_auth_config = rowElement.view_auth_config;
72
- const view_auth_type = rowElement.view_auth_type;
93
+ const hasPermission = this.ctx.userSession.isAuthPass(view_auth_type, view_auth_config);
73
94
 
74
- const hasPermission = this.ctx.userSession.isAuthPass(view_auth_type, view_auth_config);
95
+ const menu_config_content = rowElement.menu_config_content;
96
+ delete rowElement.menu_config_content;
97
+ const menu_list = parseJsonObject(menu_config_content) || [];
98
+ map[menu_code] = { ...rowElement, menu_list, hasPermission };
99
+ }
75
100
 
76
- const menu_config_content = rowElement.menu_config_content;
77
- delete rowElement.menu_config_content;
78
- const menu_list = parseJsonObject(menu_config_content) || [];
79
- map[menu_code] = { ...rowElement, menu_list, hasPermission };
80
- }
101
+ // 特殊的devops菜单
102
+ map['devops'] = {
103
+ menu_list: [], // 这个特殊的菜单在前端写死。
104
+ hasPermission: this.ctx.userSession.isAuthPass(KeysOfAuthType.byRoleCode, [SystemRoleCode.DevOpsWriter, SystemRoleCode.DevOpsViewer, SystemRoleCode.SuperAdmin]),
105
+ };
81
106
 
82
- // 特殊的devops菜单
83
- map['devops'] = {
84
- menu_list: [], // 这个特殊的菜单在前端写死。
85
- hasPermission: this.ctx.userSession.isAuthPass(KeysOfAuthType.byRoleCode, [SystemRoleCode.DevOpsWriter, SystemRoleCode.DevOpsViewer, SystemRoleCode.SuperAdmin]),
86
- };
107
+ return map;
108
+ }
109
+ })
87
110
 
88
- return CommonResult.successRes(map);
111
+ return CommonResult.successRes(mapResult);
89
112
  }
90
113
 
91
114
  /**
@@ -96,14 +119,35 @@ export class PublicApiController extends BaseApiController {
96
119
  const body = this.ctx.request.body as any;
97
120
  const { workbenchCode, appCode, pathname } = body;
98
121
  const resultData: any = {};
99
- const getOne = async (condition: any, tablenName: string, key: string) => {
122
+
123
+ const getOneImpl = async (condition: any, tableName: string) => {
100
124
  const values = Object.values(condition).filter(Boolean);
101
125
  // 查询条件不能为空
102
126
  if (values.length > 0) {
103
- const oneData = await this.sysDBUtil.getOne({ condition }, tablenName);
127
+ const oneData = await this.sysDBUtil.getOne({ condition }, tableName);
104
128
  if (oneData && oneData['app_schema']) {
105
129
  oneData['app_schema'] = parseJsonObject(oneData['app_schema']);
106
130
  }
131
+ return oneData;
132
+ }
133
+ return null;
134
+ };
135
+
136
+
137
+ const { publicApiNavPageInfoCacheLevel, publicApiNavPageInfoCacheSecond } = this.ctx.workbenchInfoTools.getWorkbenchConfig();
138
+
139
+ const getOne = async (condition: any, tableName: string, key: string) => {
140
+ const cacheKey = md5(tableName + ':' + JSON.stringify(condition) + ":" + key);
141
+ const oneData = await this.cacheServiceFactory.getJsonObjectCache({
142
+ cacheLevel: publicApiNavPageInfoCacheLevel || DEFAULT_CACHE_LEVEL,
143
+ cacheSecond: publicApiNavPageInfoCacheSecond || DEFAULT_CACHE_SECOND,
144
+ cacheKey,
145
+ cacheName: CacheNameEnum.GetNavPageInfo,
146
+ getter: async () => {
147
+ return await getOneImpl(condition, tableName);
148
+ },
149
+ });
150
+ if (oneData) {
107
151
  resultData[key] = oneData;
108
152
  }
109
153
  };
package/src/index.ts CHANGED
@@ -54,7 +54,7 @@ export * from './service/anyapi/AnyApiSandboxService';
54
54
  export * from './service/anyapi/AnyApiService';
55
55
  export * from './service/base/ApiBaseService';
56
56
  export * from './service/base/BaseService';
57
- export * from './service/base/RedisCacheService';
57
+ export * from './service/base/cache/FatcmsBaseRedisCache';
58
58
  export * from './service/crudstd/CrudStdActionService';
59
59
  export * from './service/crudstd/CrudStdRelationService';
60
60
  export * from './service/crudstd/CrudStdService';
package/src/interface.ts CHANGED
@@ -3,12 +3,14 @@ import { Transaction } from './libs/crud-pro/models/Transaction';
3
3
  import { UserSessionInfo } from './models/userSession';
4
4
  import { ContextLogger } from './models/contextLogger';
5
5
  import { IWorkbenchEntity } from './models/SystemEntities';
6
+ import { WorkbenchInfoTools } from './models/WorkbenchInfoTools';
6
7
 
7
8
  declare module '@midwayjs/core' {
8
9
  interface Context {
9
10
  transaction: Transaction;
10
11
  userSession: UserSessionInfo;
11
12
  workbenchInfo: IWorkbenchEntity;
13
+ workbenchInfoTools: WorkbenchInfoTools;
12
14
  contextLogger: ContextLogger;
13
15
  }
14
16
  }
@@ -47,6 +47,8 @@ export enum Exceptions {
47
47
  CFG_PARSE_ERROR = 'CFG_PARSE_ERROR',
48
48
  CFG_ERROR_POSTGRES_UNIQUE_COLUMNS_NULL = 'CFG_ERROR_POSTGRES_UNIQUE_COLUMNS_NULL',
49
49
  CFG_UNIQUE_COLUMN_COUNT_MUST_ONE = 'CFG_UNIQUE_COLUMN_COUNT_MUST_ONE',
50
+ CFG_ORDER_BY_TYPE_ERROR = 'CFG_ORDER_BY_TYPE_ERROR',
51
+ CFG_ERROR_POSTGRES_COLUMN_NAME_INVALID = 'CFG_ERROR_POSTGRES_COLUMN_NAME_INVALID',
50
52
 
51
53
  /**
52
54
  * 数据传错
@@ -112,19 +112,19 @@ export const KeysOfConditions = {
112
112
  $NOT_NULL: '$notNull', // is not null
113
113
  $NULL: '$null', // is null
114
114
  $RANGE: '$range', // between 1 and 2
115
- $LIKE: '$like', // A% 以A开头 {age:1, name:{"$like":"张"} }
116
- $NOT_LIKE: '$notLike', // A% 以A开头 {age:1, name:{"$notLike":"张"} }
115
+ $LIKE: '$like', //前缀匹配, A% 以A开头 {age:1, name:{"$like":"张"} }
116
+ $NOT_LIKE: '$notLike', // 前缀匹配 A% 以A开头 {age:1, name:{"$notLike":"张"} }
117
117
 
118
118
  $LIKE_INCLUDE: '$likeInclude', // %A% 包含A {age:1, name:{"$like":"张"} }
119
119
  $NOT_LIKE_INCLUDE: '$notLikeInclude', // %A% 包含A {age:1, name:{"$notLike":"张"} }
120
120
 
121
- $MATCH: '$match', // 全文索引 {age:1, name:{"$match":"张"} }
122
- $MATCH_BOOL: '$matchBool', // 全文索引 {age:1, name:{"$matchBool":"张"} }
121
+ $MATCH: '$match', // MYSQL 全文索引 {age:1, name:{"$match":"张"} }
122
+ $MATCH_BOOL: '$matchBool', // MYSQL 全文索引 {age:1, name:{"$matchBool":"张"} }
123
123
 
124
124
  /**
125
- * SELECT * FROM tms_biz.表 WHERE JSON_CONTAINS(`related_user1`, JSON_ARRAY('2512274'), '$');
125
+ * SELECT * FROM table WHERE JSON_CONTAINS(`related_user1`, JSON_ARRAY('aaaaa'), '$');
126
126
  */
127
- $JSON_ARRAY_CONTAINS: '$jsonArrayContains', // 全文索引 { related_user1:{"$jsonArrayContains":"2512274"} }
127
+ $JSON_ARRAY_CONTAINS: '$jsonArrayContains', // 全文索引 { related_user1:{"$jsonArrayContains":"aaaaa"} }
128
128
 
129
129
  COMPARE_KEYS: new Set<string>([]),
130
130
  ALL_KEYS: new Set<string>([]),
@@ -238,8 +238,14 @@ class CrudProOriginToExecuteSql extends CrudProServiceBase {
238
238
  if (MixinUtils.isEmpty(orderBys)) {
239
239
  return null;
240
240
  }
241
+ const ORDER_BY_TYPE_ARR = ['asc', 'desc'];
242
+
241
243
  const orderByArr = orderBys.map(orderBy => {
242
- return toSqlColumnName(orderBy.fieldName, sqlCfgModel) + ' ' + orderBy.orderType;
244
+ const orderType = (orderBy.orderType || 'asc').toLowerCase();
245
+ if (!ORDER_BY_TYPE_ARR.includes(orderType)) {
246
+ throw new CommonException(Exceptions.CFG_ORDER_BY_TYPE_ERROR, 'orderType must be asc or desc : ' + orderType);
247
+ }
248
+ return toSqlColumnName(orderBy.fieldName, sqlCfgModel) + ' ' + orderType;
243
249
  });
244
250
  const sql = 'order by ' + orderByArr.join(',');
245
251
  return new SqlSegArg(sql);
@@ -1,7 +1,25 @@
1
+ import { CommonException, Exceptions } from '../../exceptions';
1
2
  import { SqlCfgModel } from '../../models/SqlCfgModel';
2
3
  import { SqlDbType } from '../../models/keys';
3
4
 
5
+ const COLUMN_NAME_REGEX = /^[a-zA-Z0-9_]+$/;
6
+ function isColumnNameValid(str: string): boolean {
7
+ if (typeof str !== 'string') {
8
+ return false;
9
+ }
10
+ if (str === '') {
11
+ return false;
12
+ }
13
+ return COLUMN_NAME_REGEX.test(str);
14
+ }
15
+
16
+
4
17
  function toSqlColumnName(columnName: string, sqlCfgModel: SqlCfgModel): string {
18
+
19
+ if (!isColumnNameValid(columnName)) {
20
+ throw new CommonException(Exceptions.CFG_ERROR_POSTGRES_COLUMN_NAME_INVALID, 'column name is invalid : ' + columnName);
21
+ }
22
+
5
23
  if (sqlCfgModel.sqlDbType === SqlDbType.postgres) {
6
24
  return '"' + columnName + '"';
7
25
  }