mm_os 2.9.1 → 2.9.3

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 (241) hide show
  1. package/cache/route/main/config.json +1 -0
  2. package/cache/sys/app_admin/config.json +1 -0
  3. package/cache/sys/mqtt_engine/config.json +1 -0
  4. package/cache/sys/user/config.json +1 -0
  5. package/core/com/api/drive.js +9 -89
  6. package/core/com/api/index.js +3 -31
  7. package/core/com/cmd/drive.js +10 -1
  8. package/core/com/cmd/index.js +15 -1
  9. package/core/com/component/drive.js +1 -1
  10. package/core/com/component/index.js +16 -12
  11. package/core/com/db/drive.js +1 -1
  12. package/core/com/db/index.js +15 -17
  13. package/core/com/event/drive.js +3 -1
  14. package/core/com/event/index.js +74 -61
  15. package/core/com/eventer/com.js +2 -2
  16. package/core/com/middleware/com.js +41 -16
  17. package/core/com/mqtt/drive.js +4 -3
  18. package/core/com/mqtt/index.js +10 -8
  19. package/core/com/nav/drive.js +1 -19
  20. package/core/com/nav/index.js +1 -1
  21. package/core/com/param/drive.js +1 -1
  22. package/core/com/param/index.js +1 -27
  23. package/core/com/plugin/drive.js +18 -19
  24. package/core/com/plugin/index.js +16 -21
  25. package/core/com/plugin/script.js +109 -58
  26. package/core/com/rpc/com.json +4 -0
  27. package/core/com/rpc/drive.js +160 -0
  28. package/core/com/rpc/index.js +87 -0
  29. package/core/com/socket/drive.js +0 -1
  30. package/core/com/socket/index.js +5 -15
  31. package/core/com/sql/drive.js +1 -1
  32. package/core/com/sql/index.js +4 -31
  33. package/core/com/static/drive.js +13 -54
  34. package/core/com/static/index.js +14 -6
  35. package/core/com/task/drive.js +7 -2
  36. package/core/com/task/index.js +16 -36
  37. package/core/com/tpl/com.js +2 -2
  38. package/demo/app/dev/event_api/manage/event.json +19 -0
  39. package/demo/app/dev/event_api/manage/main.js +26 -0
  40. package/demo/app/dev/plugin/doc/static/api_list.html +144 -0
  41. package/demo/app/dev/plugin/doc/static/api_view.html +692 -0
  42. package/demo/app/dev/plugin/doc/static/index.html +138 -0
  43. package/demo/app/dev/plugin/doc/static/request_test.html +311 -0
  44. package/demo/app/dev/plugin/doc/static/static.js +28 -0
  45. package/demo/app/dev/plugin/doc/static/static.json +20 -0
  46. package/demo/app/dev/plugin/main/api_dev_client/app/api.json +13 -0
  47. package/demo/app/dev/plugin/main/api_dev_client/app/index.js +13 -0
  48. package/demo/app/dev/plugin/main/api_dev_client/app/param.json +147 -0
  49. package/demo/app/dev/plugin/main/api_dev_client/app/sql.json +28 -0
  50. package/demo/app/dev/plugin/main/api_dev_client/auto/api.json +37 -0
  51. package/demo/app/dev/plugin/main/api_dev_client/auto/auto_db.js +70 -0
  52. package/demo/app/dev/plugin/main/api_dev_client/auto/auto_file.js +32 -0
  53. package/demo/app/dev/plugin/main/api_dev_client/auto/index.js +51 -0
  54. package/demo/app/dev/plugin/main/api_dev_client/auto/param.json +51 -0
  55. package/demo/app/dev/plugin/main/api_dev_client/db/api.json +10 -0
  56. package/demo/app/dev/plugin/main/api_dev_client/db/index.js +69 -0
  57. package/demo/app/dev/plugin/main/api_dev_client/db/param.json +31 -0
  58. package/demo/app/dev/plugin/main/api_dev_client/dict/api.json +10 -0
  59. package/demo/app/dev/plugin/main/api_dev_client/dict/index.js +49 -0
  60. package/demo/app/dev/plugin/main/api_dev_client/dict/param.json +29 -0
  61. package/demo/app/dev/plugin/main/api_dev_client/help/api.json +10 -0
  62. package/demo/app/dev/plugin/main/api_dev_client/help/index.js +14 -0
  63. package/demo/app/dev/plugin/main/api_dev_client/help/param.json +31 -0
  64. package/demo/app/dev/plugin/main/api_dev_client/nav/api.json +10 -0
  65. package/demo/app/dev/plugin/main/api_dev_client/nav/index.js +36 -0
  66. package/demo/app/dev/plugin/main/api_dev_client/nav/param.json +36 -0
  67. package/demo/app/dev/plugin/main/api_dev_client/plugin/api.json +10 -0
  68. package/demo/app/dev/plugin/main/api_dev_client/plugin/index.js +13 -0
  69. package/demo/app/dev/plugin/main/api_dev_client/plugin/param.json +31 -0
  70. package/demo/app/dev/plugin/main/api_dev_client/source/api.json +10 -0
  71. package/demo/app/dev/plugin/main/api_dev_client/source/index.js +14 -0
  72. package/demo/app/dev/plugin/main/api_dev_client/source/param.json +31 -0
  73. package/demo/app/dev/plugin/main/api_dev_client/sql/api.json +10 -0
  74. package/demo/app/dev/plugin/main/api_dev_client/sql/index.js +13 -0
  75. package/demo/app/dev/plugin/main/api_dev_client/sql/param.json +31 -0
  76. package/demo/app/dev/plugin/main/api_dev_client/task/api.json +16 -0
  77. package/demo/app/dev/plugin/main/api_dev_client/task/index.js +13 -0
  78. package/demo/app/dev/plugin/main/api_dev_client/task/param.json +31 -0
  79. package/demo/app/dev/plugin/main/api_dev_client/translate/api.json +39 -0
  80. package/demo/app/dev/plugin/main/api_dev_client/translate/index.js +43 -0
  81. package/demo/app/dev/plugin/main/api_dev_client/translate/param.json +130 -0
  82. package/demo/app/dev/plugin/main/api_dev_client/translate/sql.json +62 -0
  83. package/demo/app/dev/plugin/main/api_dev_client/ui/api.json +10 -0
  84. package/demo/app/dev/plugin/main/api_dev_client/ui/index.js +146 -0
  85. package/demo/app/dev/plugin/main/api_dev_client/ui/param.json +31 -0
  86. package/demo/app/dev/plugin/main/api_dev_client/view/api.json +10 -0
  87. package/demo/app/dev/plugin/main/api_dev_client/view/index.js +100 -0
  88. package/demo/app/dev/plugin/main/api_dev_client/view/param.json +29 -0
  89. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/nav.vue +12 -0
  90. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/obj.vue +12 -0
  91. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/post.vue +12 -0
  92. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/query.vue +12 -0
  93. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/edit.vue +39 -0
  94. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/list.vue +12 -0
  95. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/search.vue +12 -0
  96. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/table.vue +12 -0
  97. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/type.vue +12 -0
  98. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/view.vue +56 -0
  99. package/demo/app/dev/plugin/main/api_dev_client/view/tpl/view.json +48 -0
  100. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/api.json +37 -0
  101. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/auto_db.js +120 -0
  102. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy/copy.js +101 -0
  103. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy/copy_framework.js +118 -0
  104. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy/copy_template.js +78 -0
  105. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy_file.js +97 -0
  106. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/common.js +198 -0
  107. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/django_server.js +104 -0
  108. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/helper.js +161 -0
  109. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/koa_art_server.js +102 -0
  110. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/mini_app_home.js +415 -0
  111. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/razor.js +0 -0
  112. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/springboot.js +0 -0
  113. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/thinkphp.js +0 -0
  114. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/uni_app_home.js +418 -0
  115. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/vue_cli_admin.js +78 -0
  116. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/vue_cli_home.js +112 -0
  117. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create_file.js +97 -0
  118. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/db/add_data.js +221 -0
  119. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/db/create_table.js +162 -0
  120. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/db/set_auth_table.js +86 -0
  121. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/index.js +524 -0
  122. package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/param.json +37 -0
  123. package/demo/app/route/app.js +131 -0
  124. package/demo/app/route/app.json +11 -0
  125. package/demo/app/route/event_api/client/event.json +10 -0
  126. package/demo/app/route/event_api/client/main.js +19 -0
  127. package/demo/app/route/event_api/manage/event.json +18 -0
  128. package/demo/app/route/event_api/manage/main.js +70 -0
  129. package/demo/app/route/plugin/main/api_route_client/pass/api.json +37 -0
  130. package/demo/app/route/plugin/main/api_route_client/pass/index.js +33 -0
  131. package/demo/app/route/plugin/main/api_route_client/pass/param.json +50 -0
  132. package/demo/app/route/plugin/main/index.js +144 -0
  133. package/demo/app/route/plugin/main/plugin.json +20 -0
  134. package/demo/app/sys/event_api/api/event.json +1 -1
  135. package/demo/app/sys/event_api/doc/event.json +18 -0
  136. package/demo/app/sys/event_api/doc/main.js +67 -0
  137. package/demo/app/sys/event_api/img/event.json +11 -0
  138. package/demo/app/sys/event_api/img/main.js +90 -0
  139. package/demo/app/sys/event_api/web/event.json +4 -4
  140. package/demo/app/sys/plugin/app_admin/index.js +127 -0
  141. package/demo/app/sys/plugin/app_admin/plugin.json +20 -0
  142. package/demo/app/sys/plugin/main/api_client/config/sql.json +70 -0
  143. package/demo/app/sys/plugin/main/api_client/lang/api.json +37 -0
  144. package/demo/app/sys/plugin/main/api_client/lang/index.js +27 -0
  145. package/demo/app/sys/plugin/main/api_client/lang/param.json +22 -0
  146. package/demo/app/sys/plugin/main/api_client/translate/api.json +39 -0
  147. package/demo/app/sys/plugin/main/api_client/translate/index.js +21 -0
  148. package/demo/app/sys/plugin/main/api_client/translate/param.json +130 -0
  149. package/demo/app/sys/plugin/main/api_client/translate/sql.json +62 -0
  150. package/demo/app/sys/plugin/main/static/static.json +1 -1
  151. package/demo/app/sys/plugin/main/task/task_demo/index.js +37 -0
  152. package/demo/app/sys/plugin/main/task/task_demo/task.json +24 -0
  153. package/demo/app/sys/plugin/mqtt_engine/LICENSE +201 -0
  154. package/demo/app/sys/plugin/mqtt_engine/api_sys_client/scheme/api.json +33 -0
  155. package/demo/app/sys/plugin/mqtt_engine/api_sys_client/scheme/index.js +31 -0
  156. package/demo/app/sys/plugin/mqtt_engine/api_sys_client/scheme/param.json +130 -0
  157. package/demo/app/sys/plugin/mqtt_engine/index.js +51 -0
  158. package/demo/app/sys/plugin/mqtt_engine/mqtt/df/index.js +509 -0
  159. package/demo/app/sys/plugin/mqtt_engine/mqtt/df/mqtt.json +24 -0
  160. package/demo/app/sys/plugin/mqtt_engine/mqtt/zs/index.js +622 -0
  161. package/demo/app/sys/plugin/mqtt_engine/mqtt/zs/mqtt.json +36 -0
  162. package/demo/app/sys/plugin/mqtt_engine/plugin.json +21 -0
  163. package/demo/app/sys/plugin/mqtt_engine/static/img/logo.png +0 -0
  164. package/demo/app/sys/plugin/mqtt_engine/static/img/logo1.png +0 -0
  165. package/demo/app/sys/plugin/mqtt_engine/static/static.json +18 -0
  166. package/demo/app/sys/plugin/user/index.js +127 -0
  167. package/demo/app/sys/plugin/user/plugin.json +20 -0
  168. package/demo/app/sys/plugin/user/static/img/logo.png +0 -0
  169. package/demo/app/sys/plugin/user/static/static.js +28 -0
  170. package/demo/app/sys/plugin/user/static/static.json +20 -0
  171. package/demo/app/sys/static/img/avatar_1674484608066.png +0 -0
  172. package/demo/app/sys/static/img/avatar_1674633778171.jpeg +0 -0
  173. package/demo/app/sys/static/img/avatar_1674962702334.jpeg +0 -0
  174. package/demo/app/sys/static/img/avatar_1675075431736.jpeg +0 -0
  175. package/demo/app/sys/static/img/avatar_1675497065533.jpeg +0 -0
  176. package/demo/app/sys/static/img/avatar_1685352550990.jpeg +0 -0
  177. package/demo/app/sys/static/img/avatar_1685353685992.jpeg +0 -0
  178. package/demo/app/sys/static/img/avatar_1685353956587.jpeg +0 -0
  179. package/demo/app/sys/static/img/avatar_1685353971148.jpeg +0 -0
  180. package/demo/app/sys/static/img/avatar_1685353983723.jpeg +0 -0
  181. package/demo/app/sys/static/img/avatar_1685354014745.jpeg +0 -0
  182. package/demo/app/sys/static/img/avatar_1685354122355.jpeg +0 -0
  183. package/demo/app/sys/static/img/avatar_1685357983520.jpeg +0 -0
  184. package/demo/app/sys/static/img/avatar_1685358453383.jpeg +0 -0
  185. package/demo/app/sys/static/img/avatar_1685416570438.jpeg +0 -0
  186. package/demo/app/sys/static/img/avatar_1685512675830.png +0 -0
  187. package/demo/app/sys/static/img/avatar_1685939425608.jpeg +0 -0
  188. package/demo/app/sys/static/img/avatar_1685939886560.jpeg +0 -0
  189. package/demo/app/sys/static/img/avatar_1686106313194.png +0 -0
  190. package/demo/app/sys/static/img/avatar_1686371876175.png +0 -0
  191. package/demo/app/sys/static/img/avatar_1686372033596.png +0 -0
  192. package/demo/app/sys/static/img/avatar_1688215220669.png +0 -0
  193. package/demo/app/sys/static/img/avatar_1688531184690.png +0 -0
  194. package/demo/app/sys/static/img/avatar_1688531233080.png +0 -0
  195. package/demo/app/sys/static/img/avatar_1688548526909.png +0 -0
  196. package/demo/app/sys/static/img/avatar_1688549213411.png +0 -0
  197. package/demo/app/sys/static/img/avatar_1688549511977.png +0 -0
  198. package/demo/app/sys/static/img/avatar_1688549685464.png +0 -0
  199. package/demo/app/sys/static/img/avatar_1688608623049.png +0 -0
  200. package/demo/app/sys/static/img/avatar_1688638500476.png +0 -0
  201. package/demo/app/sys/static/img/avatar_1688638515195.png +0 -0
  202. package/demo/app/sys/static/img/avatar_1688638539928.png +0 -0
  203. package/demo/app/sys/static/img/avatar_1688638557960.png +0 -0
  204. package/demo/app/sys/static/img/avatar_1688638761798.png +0 -0
  205. package/demo/app/sys/static/img/avatar_1688638943140.png +0 -0
  206. package/demo/app/sys/static/img/avatar_1688639068330.png +0 -0
  207. package/demo/app/sys/static/img/image_1685357101273.jpeg +0 -0
  208. package/demo/app/sys/static/img/logo.png +0 -0
  209. package/demo/app/sys/static/static.js +28 -0
  210. package/demo/app/sys/static/static.json +20 -0
  211. package/demo/app/user/plugin/main/api_user_client/core/api.json +20 -0
  212. package/demo/app/user/plugin/main/api_user_client/core/forgot.js +14 -0
  213. package/demo/app/user/plugin/main/api_user_client/core/password.js +14 -0
  214. package/demo/app/user/plugin/main/api_user_client/core/sign_out.js +26 -0
  215. package/demo/app/user/plugin/main/api_user_client/core/state.js +21 -0
  216. package/demo/app/user/plugin/main/api_user_client/forgot/index - /345/211/257/346/234/254.jsbat" +41 -0
  217. package/demo/app/user/plugin/main/api_user_client/phone_code/index.js_ +230 -0
  218. package/demo/app/user/plugin/main/api_user_manage/account_base/api.json +37 -0
  219. package/demo/app/user/plugin/main/api_user_manage/account_base/index.js +40 -0
  220. package/demo/app/user/plugin/main/api_user_manage/account_base/param.json +130 -0
  221. package/demo/app/user/plugin/main/api_user_manage/invitation_code/api.json +37 -0
  222. package/demo/app/user/plugin/main/api_user_manage/invitation_code/index.js +106 -0
  223. package/demo/app/user/plugin/main/api_user_manage/invitation_code/param.json +130 -0
  224. package/demo/app/user/plugin/main/api_user_manage/update_team/api.json +35 -0
  225. package/demo/app/user/plugin/main/api_user_manage/update_team/index.js +218 -0
  226. package/demo/app/user/plugin/main/api_user_manage/update_team/param.json +130 -0
  227. package/demo/app/user/static/img/logo.png +0 -0
  228. package/demo/app/user/static/static.js +28 -0
  229. package/demo/app/user/static/static.json +20 -0
  230. package/demo/app/ws/app.js +122 -0
  231. package/demo/app/ws/app.json +11 -0
  232. package/demo/app/ws/event_api/client/event.json +10 -0
  233. package/demo/app/ws/event_api/client/main.js +17 -0
  234. package/demo/app/ws/socket/ws/index.js +43 -0
  235. package/demo/app/ws/socket/ws/socket.json +14 -0
  236. package/demo/config/face.sql +3824 -0
  237. package/demo/config/local.json +2 -2
  238. package/demo/config/test.json +2 -2
  239. package/index.js +2 -2
  240. package/package.json +2 -2
  241. /package/core/com/{api → rpc}/rpc.js +0 -0
@@ -0,0 +1,524 @@
1
+ var fs = require("fs");
2
+
3
+ const copy_file = require("./copy_file.js");
4
+
5
+ const create_file = require("./create_file.js");
6
+
7
+ const create_db = require("./auto_db.js");
8
+
9
+ const save_dir = "/app/dev/static/".fullname();
10
+
11
+ /**
12
+ * 转为公式
13
+ * @param {Object} o 对象
14
+ * @param {Object} fields 字段
15
+ * @param {Object} tables 表名
16
+ */
17
+ function to_formula(compute, fields, tables) {
18
+ if (compute) {
19
+ compute = compute.replace(/:/g, ":").replace(/。/g, ".").replace(/;/g, ";");
20
+ if (tables) {
21
+ for (var i = 0; i < tables.length; i++) {
22
+ var o = tables[i];
23
+ compute = compute.replaceAll(o.title + ".", o.name + ".");
24
+ var _fields = o.fields_sort;
25
+ for (var n = 0; n < _fields.length; n++) {
26
+ var f = _fields[n];
27
+ compute = compute.replaceAll("." + f.title, "." + f.name);
28
+ }
29
+ }
30
+ }
31
+ if (fields) {
32
+ for (var i = 0; i < fields.length; i++) {
33
+ var o = fields[i];
34
+ compute = compute.replaceAll(o.title, o.name);
35
+ }
36
+ }
37
+ }
38
+ return compute;
39
+ }
40
+
41
+ /**
42
+ * 转为表ID
43
+ * @param {String} table 表名
44
+ */
45
+ function to_table_id(table) {
46
+ var arr = table.split('_');
47
+ return arr[arr.length - 1] + "_id";
48
+ }
49
+
50
+ /**
51
+ * 转为sql语句
52
+ * @param {Object} formula 公式
53
+ * @return {Array} 返回sql语句数组
54
+ */
55
+ function to_sql(formula, table) {
56
+ var arr_sql = [];
57
+ if (formula) {
58
+ var arr = formula.split("\n");
59
+ for (var i = 0; i < arr.length; i++) {
60
+ var str = arr[i].trim();
61
+ if (str) {
62
+ var ar = str.split(":");
63
+ if (ar.length > 1) {
64
+ var set_str = ar[1].trim();
65
+ var table_name = set_str.left(".");
66
+ if (table_name === table) {
67
+ table_name = where_str.between("=", ".").trim();
68
+ }
69
+ var where_str = table + "." + to_table_id(table);
70
+ var field = ar[0];
71
+ if (field.indexOf(table_name) !== -1) {
72
+ field = to_table_id(table_name);
73
+ }
74
+ var on_str = table_name + "." + field + "=" + table + "." + ar[0];
75
+ var sql = "UPDATE `" + table_name + "`" + " INNER JOIN `" + table + "` ON " + on_str + " SET " +
76
+ set_str +
77
+ " WHERE " + where_str + "=";
78
+ arr_sql.push(sql);
79
+ }
80
+ }
81
+ }
82
+ }
83
+ return arr_sql;
84
+ }
85
+
86
+ /**
87
+ * 转为sql查询语句
88
+ * @param {Object} formula 公式
89
+ * @return {Array} 返回sql语句数组
90
+ */
91
+ function to_sql_if(formula, table) {
92
+ var arr_sql = [];
93
+ if (formula) {
94
+ formula = formula.replace(/;/g, ";")
95
+ var arr = formula.split("\n");
96
+ for (var i = 0; i < arr.length; i++) {
97
+ var text = arr[i];
98
+ if (text) {
99
+ var tip = text.right(";");
100
+ if (tip) {
101
+ var str = text.left(";");
102
+ var ar = str.split(":");
103
+ if (ar.length > 1) {
104
+ var where_str = ar[1].trim();
105
+ var table_name = where_str.left(".");
106
+ if (table_name === table) {
107
+ table_name = where_str.between("=", ".").trim();
108
+ }
109
+ var field = ar[0];
110
+ if (field.indexOf(table_name) !== -1) {
111
+ field = to_table_id(table_name);
112
+ }
113
+ var on_str = table_name + "." + field + "=" + table + "." + ar[0];
114
+ var sql = "SELECT count(*) count FROM `" + table_name + "` WHERE " + on_str + " AND " +
115
+ where_str + ";";
116
+ arr_sql.push({
117
+ table,
118
+ sql,
119
+ tip
120
+ });
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ return arr_sql;
127
+ }
128
+
129
+ /**
130
+ * 转为Vue计算语法
131
+ * @param {String} name 名称
132
+ * @param {String} formula 公式
133
+ * @return {Object} vue
134
+ */
135
+ function to_vue_compute(name, formula) {
136
+ var arr = formula.split(" ");
137
+ var str = "";
138
+ for (var i = 0; i < arr.length; i++) {
139
+ var f = arr[i];
140
+ if (f == "+" || f == "-" || f == "*" || f == "/") {
141
+ str += " " + f + " "
142
+ } else {
143
+ str += "this.form." + arr[i];
144
+ }
145
+ }
146
+ return {
147
+ name,
148
+ formula: str
149
+ };
150
+ }
151
+
152
+ /**
153
+ * 转为Vue计算语法
154
+ * @param {String} name 名称
155
+ * @param {String} formula 公式
156
+ * @return {Object} vue
157
+ */
158
+ function to_check(name, formula) {
159
+ var arr = formula.split(" ");
160
+ var str = "";
161
+ for (var i = 0; i < arr.length; i++) {
162
+ var f = arr[i];
163
+ if (f == "+" || f == "-" || f == "*" || f == "/") {
164
+ str += " " + f + " "
165
+ } else {
166
+ str += "this.form." + arr[i];
167
+ }
168
+ }
169
+ return {
170
+ name,
171
+ formula: str
172
+ };
173
+ }
174
+
175
+ /**
176
+ * 转为表名
177
+ * @param {String} title 表标题
178
+ * @param {Array} tables 表集
179
+ * @return {String} 返回表名
180
+ */
181
+ function to_name(title, tables) {
182
+ var name = title;
183
+ for (var i = 0; i < tables.length; i++) {
184
+ var o = tables[i];
185
+ name = name.replace(o.title, o.name);
186
+ }
187
+ return name;
188
+ }
189
+
190
+ /**
191
+ * 补全配置
192
+ * @param {Object} field 字段
193
+ * @param {Array} tables 表格集合
194
+ */
195
+ function full_config(obj, tables) {
196
+ for (var i = 0; i < tables.length; i++) {
197
+ var o = tables[i];
198
+ if (obj.drop_down_table === o.title) {
199
+ obj.dropdown_table = o.name;
200
+ obj.drop_down_field = obj.drop_down_field.trim();
201
+ for (var n = 0; n < o.fields_sort.length; n++) {
202
+ var oj = o.fields_sort[n];
203
+ if (obj.drop_down_field === oj.title) {
204
+ obj.dropdown_field = oj.name;
205
+ break;
206
+ }
207
+ }
208
+ break;
209
+ }
210
+ }
211
+ }
212
+
213
+
214
+ /**
215
+ * 过滤
216
+ * @param {Object} model 模型
217
+ * @return {Object} 成功返回null, 失败返回错误信息
218
+ */
219
+ function add_filter(model) {
220
+ var filter = {};
221
+
222
+ // 获取模型 订单 和 表
223
+ var {
224
+ order,
225
+ tables,
226
+ } = model;
227
+
228
+ if (!order) {
229
+ return false;
230
+ }
231
+
232
+ var {
233
+ config,
234
+ tpl_home
235
+ } = order;
236
+
237
+ // 获取订单 配置
238
+ var {
239
+ bbs_name,
240
+ cms,
241
+ mall,
242
+ training
243
+ } = config;
244
+
245
+ // 判断是否有论坛
246
+ filter.forum = bbs_name;
247
+
248
+ // 内容管理
249
+ filter.cms = cms;
250
+
251
+ // 商城
252
+ filter.mall = mall;
253
+
254
+ // 培训教育
255
+ filter.training = training;
256
+
257
+ // 获取其他模块
258
+ var other = config.order;
259
+
260
+ if (other) {
261
+ // 公告
262
+ filter.notice = other.indexOf("公告") !== -1;
263
+
264
+ // 留言板
265
+ filter.message = other.indexOf("留言板") !== -1;
266
+
267
+ // 客服聊天
268
+ filter.chat = other.indexOf("客服聊天") !== -1;
269
+
270
+ filter.tpl_home = other.tpl_home;
271
+ }
272
+
273
+ // 表内容过滤
274
+ for (var i = 0; i < tables.length; i++) {
275
+ var cg = tables[i].config;
276
+
277
+ // 是否带购物车
278
+ if (cg.cart_page != "无") {
279
+ filter.cart = true;
280
+ }
281
+
282
+ // 是否带评论页
283
+ if (cg.comment) {
284
+ filter.comment = true;
285
+ }
286
+
287
+ // 是否带收藏
288
+ if (cg.collect) {
289
+ filter.collect = true;
290
+ }
291
+
292
+ // 是否带点赞
293
+ if (cg.praise) {
294
+ filter.praise = true;
295
+ }
296
+
297
+ // 是否带注册
298
+ if (cg.register == "前后注") {
299
+ // 过滤注册
300
+ filter.home_register = true;
301
+ filter.admin_register = true;
302
+ } else if (cg.register == "前注册") {
303
+ // 过滤注册
304
+ filter.home_register = true;
305
+ } else if (cg.register == "后注册") {
306
+ filter.admin_register = true;
307
+ }
308
+ }
309
+
310
+ var arr = [];
311
+ // 获取其他模块
312
+ var other = config.order;
313
+
314
+ // 公告
315
+ if (!filter.notice) {
316
+ arr.push("notice");
317
+ }
318
+
319
+ // 留言板
320
+ if (!filter.message) {
321
+ arr.push("message");
322
+ }
323
+
324
+ // 客服聊天
325
+ if (!filter.chat) {
326
+ arr.push("chat");
327
+ }
328
+
329
+ // 过滤购物车
330
+ if (!filter.has_cart) {
331
+ arr.push("cart");
332
+ }
333
+
334
+ // 过滤评论
335
+ if (!filter.has_comment) {
336
+ arr.push("comment");
337
+ }
338
+
339
+ // 过滤收藏
340
+ if (!filter.has_collect) {
341
+ arr.push("collect");
342
+ }
343
+
344
+ // 过滤点赞
345
+ if (!filter.has_praise) {
346
+ arr.push("praise");
347
+ }
348
+
349
+ model.filter = filter;
350
+ model.filter_home = arr;
351
+ model.filter_admin = [...arr];
352
+
353
+ // 过滤注册页
354
+ if (!filter.home_register) {
355
+ model.filter_home.push("register");
356
+ } else if (!filter.admin_register) {
357
+ model.filter_admin.push("register");
358
+ }
359
+ };
360
+
361
+ /**
362
+ * 接口主函数
363
+ * @param {Object} ctx HTTP上下文
364
+ * @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
365
+ * @return {Object} 执行结果
366
+ */
367
+ async function main(ctx, db) {
368
+ $.log.info("******** 开始创建项目 ********");
369
+ // console.log("创建项目");
370
+
371
+ // 获取请求参数
372
+ var req = ctx.request;
373
+ var q = req.query;
374
+ var order_id = q["order_id"];
375
+ var ret;
376
+
377
+ // 查询配置
378
+ db.table = "dev_order";
379
+ var order = await db.getObj({
380
+ order_id
381
+ });
382
+
383
+ if (order) {
384
+ if (order.config) {
385
+ order.config = JSON.parse(order.config);
386
+ } else {
387
+ order.config = {};
388
+ }
389
+
390
+ // 压缩后的文件路径
391
+ var zip_file = save_dir + order.order_number + '.zip';
392
+ if (zip_file.hasFile()) {
393
+ fs.unlinkSync(zip_file);
394
+ }
395
+
396
+ // 查询相关表
397
+ db.table = "dev_order_table";
398
+ db.page = 0;
399
+ var tables = await db.get({
400
+ order_id
401
+ });
402
+
403
+ // 查询相关字段
404
+ db.table = "dev_order_field";
405
+
406
+ for (var i = 0; i < tables.length; i++) {
407
+ var o = tables[i];
408
+ o.id = to_table_id(o.name);
409
+ o.config = o.config ? o.config.toJson() : null;
410
+ o.fields = await db.get({
411
+ table_id: o.table_id
412
+ });
413
+ // 创建字段标题名称转换用的键值对
414
+ o.fields_sort = o.fields.map(item => {
415
+ return {
416
+ title: item.title,
417
+ name: item.name
418
+ }
419
+ }).sort(function(o1, o2) {
420
+ return o2.title.length - o1.title.length;
421
+ });
422
+ }
423
+
424
+ // 创建表格标题名称转换用的键值对
425
+ var tables_sort = tables.map(item => {
426
+ return {
427
+ title: item.title,
428
+ name: item.name,
429
+ fields_sort: item.fields_sort
430
+ }
431
+ }).sort(function(o1, o2) {
432
+ return o2.title.length - o1.title.length;
433
+ });
434
+
435
+ for (var i = 0; i < tables.length; i++) {
436
+ var o = tables[i];
437
+
438
+ // 存跨表计算式
439
+ var arr_vue_compute = [];
440
+
441
+ var table = o.config.table;
442
+ if (table) {
443
+ var name = to_name(table, tables_sort);
444
+ o.config.table_name = name;
445
+ var nav = [];
446
+ var arr_table = name.split(' ');
447
+
448
+ // 跨表操作转换(开始)
449
+ var arr_name = o.config.table_nav_name.split(' ');
450
+ for (var n = 0; n < arr_table.length; n++) {
451
+ if (arr_name.length > n) {
452
+ nav.push({
453
+ table: arr_table[n],
454
+ name: arr_name[n]
455
+ });
456
+ }
457
+ }
458
+ o.config.nav = nav;
459
+ // 跨表操作转换(结束)
460
+ }
461
+ o.fields = o.fields.map(item => {
462
+ full_config(item, tables_sort);
463
+ item.formula = to_formula(item.compute, o.fields_sort);
464
+ if (item.formula) {
465
+ var vue_compute = to_vue_compute(item.name, item.formula);
466
+ arr_vue_compute.push(vue_compute);
467
+ }
468
+ return item;
469
+ });
470
+ o.arr_vue_compute = arr_vue_compute;
471
+
472
+ // 跨表计算转换(开始)
473
+ o.formula = to_formula(o.config.compute, o.fields_sort, tables_sort);
474
+ o.arr_sql = to_sql(o.formula, o.name);
475
+ // 跨表计算转换(结束)
476
+
477
+ // 条件转换(开始)
478
+ o.formula_if = to_formula(o.config.if, o.fields_sort, tables_sort);
479
+ o.arr_check = to_sql_if(o.formula_if, o.name);
480
+ // 条件校验转换(结束)
481
+ }
482
+
483
+ // 查询相关权限
484
+ db.table = "dev_order_auth";
485
+ var auth = await db.get({
486
+ order_id
487
+ });
488
+
489
+ // 模型
490
+ var model = {
491
+ order,
492
+ tables,
493
+ auth
494
+ };
495
+
496
+ // 添加过滤条件
497
+ add_filter(model);
498
+
499
+ // 第一步,创建数据库
500
+ var message = await create_db(db, model);
501
+
502
+ if (!message) {
503
+ // 第二步,复制文件
504
+ message = await copy_file(db, model);
505
+ if (!message) {
506
+ // 第三步,创建文件
507
+ message = await create_file(db, model);
508
+ }
509
+ }
510
+
511
+ if (message) {
512
+ ret = $.ret.error(10000, message);
513
+ } else {
514
+ ret = $.ret.bl(true, "部署成功!");
515
+ }
516
+ } else {
517
+ ret = $.ret.error(10000, "订单不存在!");
518
+ }
519
+
520
+ $.log.info("******** 结束创建项目 ********");
521
+ return ret;
522
+ };
523
+
524
+ exports.main = main;
@@ -0,0 +1,37 @@
1
+ {
2
+ // 是否启用过滤, 启用过滤后, 不符合的参数会被过滤掉
3
+ "filter": true,
4
+ // 校验脚本文件, 可以使用脚本的方式加一步进行校验, 让传参更加安全
5
+ "func_file": "",
6
+ // get请求
7
+ "get": {
8
+ // 查询参数校验项
9
+ "query": [],
10
+ // 查询必填参数
11
+ "query_required": ["order_id"]
12
+ },
13
+ // post请求
14
+ "post": {
15
+ // 正文参数校验项
16
+ "body": [],
17
+ // 正文必填参数
18
+ "body_required": ["order_id"]
19
+ },
20
+ // 校验列表
21
+ "list": [{
22
+ // 参数key名
23
+ "name": "order_id",
24
+ // 参数中文名
25
+ "title": "订单ID",
26
+ // 数据类型
27
+ "type": "number",
28
+ // 数字类型时设置
29
+ "number": {
30
+ // 最小数值
31
+ "min": 1
32
+ },
33
+ // 分隔参数,允许传多个值,为空则限制1个值
34
+ "splitter": "|"
35
+ }
36
+ ]
37
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @fileOverview route
3
+ * @author <a href="作者主页地址">应用作者</a>
4
+ * @version 1.0
5
+ */
6
+
7
+ /**
8
+ * 应用对象
9
+ */
10
+ module.exports = {
11
+ /**
12
+ * 初始化
13
+ * @param {Object} option 配置参数
14
+ * @return {String} 成功返回null, 否则返回错误提示
15
+ */
16
+ init(option) {
17
+ // 创建插件
18
+ this.plugin = $.plugin_admin('route');
19
+ this.plugin.update(__dirname);
20
+ var msg = null;
21
+ return msg;
22
+ },
23
+
24
+ /**
25
+ * 销毁
26
+ * @param {Object} opiton 配置参数
27
+ * @return {String} 成功返回null,否则返回错误提示
28
+ */
29
+ destroy(option) {
30
+ var msg = null;
31
+ return msg;
32
+ },
33
+
34
+ /**
35
+ * 安装
36
+ * @param {Object} option 配置参数
37
+ * @return {String} 成功返回null,否则返回错误提示
38
+ */
39
+ install(option) {
40
+ var msg = null;
41
+ return msg;
42
+ },
43
+
44
+ /**
45
+ * 卸载
46
+ * @param {Object} option 配置参数
47
+ * @return {String} 成功返回null,否则返回错误提示
48
+ */
49
+ uninstall(option) {
50
+ var msg = null;
51
+ return msg;
52
+ },
53
+
54
+ /**
55
+ * 更新
56
+ * @param {Object} option 配置参数
57
+ * @return {String} 成功返回null, 否则返回错误提示
58
+ */
59
+ update(option) {
60
+ var msg = null;
61
+ return msg;
62
+ },
63
+
64
+ /**
65
+ * 启动
66
+ * @param {Object} opiton 配置参数
67
+ * @return {String} 成功返回null,否则返回错误提示
68
+ */
69
+ start(option) {
70
+ this.plugin.init();
71
+ var msg = null;
72
+ return msg;
73
+ },
74
+
75
+ /**
76
+ * 暂停
77
+ * @param {Object} opiton 配置参数
78
+ * @return {String} 成功返回null,否则返回错误提示
79
+ */
80
+ stop(option) {
81
+ var msg = null;
82
+ return msg;
83
+ },
84
+
85
+ /**
86
+ * 结束
87
+ * @param {Object} opiton 配置参数
88
+ * @return {String} 成功返回null,否则返回错误提示
89
+ */
90
+ end(option) {
91
+ var msg = null;
92
+ return msg;
93
+ },
94
+
95
+ /**
96
+ * 插件
97
+ * @param {String} item 插件项
98
+ * @return {Object} 旗下插件和信息
99
+ */
100
+ help(item) {
101
+ var tip = "";
102
+ switch (item) {
103
+ case "run":
104
+ break;
105
+ default:
106
+ break;
107
+ }
108
+ return tip;
109
+ },
110
+
111
+ /**
112
+ * 主程序
113
+ * @param {Object} param1 参数1
114
+ * @param {Object} param2 参数2
115
+ * @return {Object} 返回执行结果
116
+ */
117
+ main(param1, param2) {
118
+ var ret = null;
119
+ return ret;
120
+ },
121
+
122
+ /**
123
+ * 指令(类似命令提示符)
124
+ * @param {String} content 指令内容
125
+ * @return {String} 执行结果
126
+ */
127
+ cmd(content) {
128
+ var ret = "";
129
+ return ret;
130
+ }
131
+ };
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "route",
3
+ "title": "路由管理",
4
+ "description": "用于连接路由",
5
+ "version": "1.0",
6
+ "lang_path": "/route/lang/",
7
+ "icon": "/route/img/logo.png",
8
+ "script": "./app.js",
9
+ "sort": 10,
10
+ "state": 1
11
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "target": "/api/route/*",
3
+ "name": "route_client",
4
+ "title": "路由管理接口",
5
+ "description": "用于匹配用户访问的路由",
6
+ "stage": "main",
7
+ "func_file": "./main.js",
8
+ "sort": 99,
9
+ "end": true
10
+ }