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,230 @@
1
+ class Phone_code {
2
+ /**
3
+ * 构造函数
4
+ * @param {Object} config 配置参数
5
+ */
6
+ constructor(config) {
7
+ // http://api.smsbao.com/sms?u=USERNAME&p=PASSWORD&m=PHONE&c=CONTENT
8
+ this.config = {
9
+ // 短信发送地址
10
+ url: "https://gyytz.market.alicloudapi.com/sms/smsSend?",
11
+ // 阿里云appcode
12
+ appcode: "51126b682bdb4d12bcb1eb0909fd5ec0",
13
+ // 验证码有效时长
14
+ expires: 15,
15
+ // 修改密码
16
+ model_password: {
17
+ mobile: "18813868813",
18
+ param: "123456",
19
+ smsSignId: "2e65b1bb3d054466b82f0c9d125465e2",
20
+ templateId: "8166a0ae27b7499fa8bdda1ed12a07bd"
21
+ },
22
+ // 重置密码
23
+ model_forgot: {
24
+ mobile: "18813868813",
25
+ param: "123456,15",
26
+ smsSignId: "2e65b1bb3d054466b82f0c9d125465e2",
27
+ templateId: "29833afb9ae94f21a3f66af908d54627"
28
+ },
29
+ // 注册账号
30
+ model_sign_up: {
31
+ mobile: "18813868813",
32
+ param: "123456,15",
33
+ smsSignId: "2e65b1bb3d054466b82f0c9d125465e2",
34
+ templateId: "a09602b817fd47e59e7c6e603d3f088d"
35
+ },
36
+ // 绑定手机
37
+ model_bind: {
38
+ mobile: "18813868813",
39
+ param: "123456,15",
40
+ smsSignId: "2e65b1bb3d054466b82f0c9d125465e2",
41
+ templateId: "ea66d14c664649a69a19a6b47ba028db"
42
+ }
43
+ }
44
+ }
45
+ }
46
+
47
+ /**
48
+ * 新建验证码
49
+ * @param {String} method 请求方法
50
+ * @param {String} phone 手机号码
51
+ * @return {String} 返回验证码
52
+ */
53
+ Phone_code.prototype.new_code = async function(key) {
54
+ var code;
55
+ var num = Math.ceil(Math.random() * 1000);
56
+ if (num < 10) {
57
+ code = "0" + num + "0" + num;
58
+ } else if (num < 100) {
59
+ code = "00" + num;
60
+ } else if (num < 1000) {
61
+ code = "0" + num;
62
+ }
63
+ var obj = {
64
+ time: new Date(),
65
+ code
66
+ };
67
+
68
+ var bl = await $.cache.set(key, JSON.stringify(obj), this.config.expires * 60);
69
+ if (bl) {
70
+ return code;
71
+ } else {
72
+ return null;
73
+ }
74
+ };
75
+
76
+ /**
77
+ * 发送验证码
78
+ * @param {String} method 请求方法
79
+ * @param {String} phone 手机号码
80
+ * @return {Object} 返回发送结果
81
+ */
82
+ Phone_code.prototype.send = async function(method, phone) {
83
+ var config = this.config;
84
+ var model = config["model_" + method];
85
+ var http = new $.Http();
86
+ var key = "code_" + method + "_" + phone;
87
+ var value = await $.cache.get(key);
88
+ var code;
89
+ if (value) {
90
+ var obj = JSON.parse(value);
91
+ if (obj.time.toTime().addSeconds(config.expires * 60) < new Date()) {
92
+ return $.ret.bl(false, "验证码已过期!");
93
+ } else {
94
+ code = obj.code;
95
+ }
96
+ } else {
97
+ code = await this.new_code(key);
98
+ }
99
+ if (code) {
100
+ var param = "**code**:" + code + ",**minute**:" + config.expires;
101
+ var query = Object.assign({}, model, {
102
+ param,
103
+ mobile: phone
104
+ });
105
+ var url = $.toUrl(query, config.url);
106
+ // console.log(url);
107
+ var web = await http.post(url, {}, {
108
+ Authorization: "APPCODE " + config.appcode
109
+ }, "json");
110
+ // console.log(web);
111
+ if (web.body) {
112
+ console.log(web.body);
113
+ var json = web.body.toJson();
114
+ if (json.msg === "成功") {
115
+ return $.ret.bl(true, "发送成功!");
116
+ } else {
117
+ return $.ret.error(Number(json.code), json.msg);
118
+ }
119
+ } else {
120
+ return $.ret.error(10000, "请求短信服务端失败!");
121
+ }
122
+ } else {
123
+ return $.ret.error(10000, "缓存验证码失败!");
124
+ }
125
+ };
126
+
127
+ /**
128
+ * 注册
129
+ * @param {String} phone 手机号码
130
+ * @param {Object} db 数据库管理器
131
+ * @return {Object} 执行结果
132
+ */
133
+ Phone_code.prototype.sign_up = async function(phone, db, username) {
134
+ var user = await db.getObj({
135
+ username
136
+ });
137
+ if (user) {
138
+ return $.ret.bl(false, "用户已存在!");
139
+ } else {
140
+ user = await db.getObj({
141
+ phone
142
+ });
143
+ if (user) {
144
+ return $.ret.bl(false, "该手机号码已绑定其他账户!");
145
+ }
146
+ }
147
+ return await this.send("sign_up", phone);
148
+ };
149
+
150
+ /**
151
+ * 重置密码
152
+ * @param {String} phone 手机号码
153
+ * @param {Object} db 数据库管理器
154
+ * @return {Object} 执行结果
155
+ */
156
+ Phone_code.prototype.forgot = async function(phone, db, username) {
157
+ var user = await db.getObj({
158
+ username
159
+ });
160
+ if (!user) {
161
+ return $.ret.error(10000, "用户不存在!");
162
+ } else {
163
+ if(user.phone !== phone){
164
+ return $.ret.error(10000, "用户所绑定的手机号不一致!");
165
+ }
166
+ phone = user.phone;
167
+ }
168
+ return await this.send("forgot", phone);
169
+ };
170
+
171
+ /**
172
+ * 修改密码
173
+ * @param {String} phone 手机号码
174
+ * @param {Object} db 数据库管理器
175
+ * @return {Object} 执行结果
176
+ */
177
+ Phone_code.prototype.password = async function(phone, db, username) {
178
+ return $.ret.bl(true, "修改密码发送验证码成功!");
179
+ };
180
+
181
+
182
+ /**
183
+ * 绑定手机
184
+ * @param {String} phone 手机号码
185
+ * @param {Object} db 数据库管理器
186
+ * @return {Object} 执行结果
187
+ */
188
+ Phone_code.prototype.bind = async function(phone, db, username) {
189
+ var user = await db.getObj({
190
+ username
191
+ });
192
+ if (!user) {
193
+ return $.ret.error(10000, "用户不存在!");
194
+ } else {
195
+ phone = user.phone;
196
+ }
197
+ return await this.send("bind", phone);
198
+ };
199
+
200
+ /**
201
+ * 执行
202
+ * @param {Object} query
203
+ * @param {Object} db
204
+ */
205
+ Phone_code.prototype.run = async function(query, db) {
206
+ var method = query.method;
207
+ if (this[method]) {
208
+ return await this[method](query.phone, db, query.username);
209
+ } else {
210
+ return $.ret.error(10000, "错误的请求!");
211
+ }
212
+ };
213
+
214
+ var phone_code = new Phone_code();
215
+
216
+ /**
217
+ * 接口主函数
218
+ * @param {Object} ctx HTTP上下文
219
+ * @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
220
+ * @return {Object} 执行结果
221
+ */
222
+ async function main(ctx, db) {
223
+ // 获取请求参数
224
+ var req = ctx.request;
225
+ db.table = "user_account";
226
+ var param = Object.assign({}, req.query, req.body);
227
+ return await phone_code.run(param, db);
228
+ };
229
+
230
+ exports.main = main;
@@ -0,0 +1,37 @@
1
+ {
2
+ // 路由路径
3
+ "path": "/apis/user/account_base",
4
+ // 名称, 用于动态增删改API配置
5
+ "name": "user_account_base_manage",
6
+ // 标题, 用于开发文档显示
7
+ "title": "修改基本信息",
8
+ // 描述, 用于介绍该路由的作用
9
+ "description": "用于修改用户的账户基本信息",
10
+ // 函数文件, 用于驱动脚本, 实现业务
11
+ "func_file": "./index.js",
12
+ // 请求方法, 选填 GET, POST, ALL。 ALL指同时支持GET/POST
13
+ "method": "ALL",
14
+ // 开放域, 如果域未开放, 则只有特定的协议头才能访问该API, 同时API文档不接见
15
+ "scope": true,
16
+ // 缓存时长, 单位: 分钟。使用缓存后, 二次访问API直接从缓存读取, 不重复执行业务脚本
17
+ "cache": 0,
18
+ // 是否客户端缓存, 使用客户端则不再访问服务器, 直接从浏览器中拿; 使用服务端缓存则会访问服务器
19
+ "client_cache": false,
20
+ // 参数配置路径, 用于校验API请求参数是否正确, 同时显示在API文档中
21
+ "param_path": "./param.json",
22
+ /* 授权协议 */
23
+ "oauth": {
24
+ // 是否需要登录, true表示需要登录才能访问该接口
25
+ "signIn": true,
26
+ // 会员权限级别, 如果小于该值, 则无法访问, 0为不限制
27
+ "vip": 0,
28
+ // 管理员权限级别, 如果小于该值, 则无法访问, 0为不限制
29
+ "gm": 2,
30
+ // 商户/第三方权限级别, 如果小于该值, 则无法访问, 0为不限制
31
+ "mc": 0,
32
+ // 用户组, 允许访问该接口的普通用户群体, 传ID数组,例如: [1,5]
33
+ "user_group": [],
34
+ // 管理组, 允许访问该接口的管理员群体, 传ID数组,例如: [1,5]
35
+ "user_admin": []
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ // 集合路由、导航,不开发前端的情况下可以将以下2行注释掉
2
+ // const nav = $.nav_admin('{0}');
3
+ // nav.update();
4
+
5
+ /**
6
+ * 接口主函数
7
+ * @param {Object} ctx HTTP上下文
8
+ * @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
9
+ * @return {Object} 执行结果
10
+ */
11
+ async function main(ctx, db) {
12
+ // 获取请求参数
13
+ var req = ctx.request;
14
+ var method = req.query.method;
15
+
16
+ db.table = "user_account";
17
+ var user = ctx.session.user;
18
+ if (user) {
19
+ var query = {
20
+ user_id: user.user_id
21
+ };
22
+ if (method === "set" || method === "submit") {
23
+ var body = $.push({
24
+ "phone": '',
25
+ "nickname": '',
26
+ "email": '',
27
+ "signature": '',
28
+ "avatar": ''
29
+ }, req.body);
30
+ var bl = await db.set(query, body);
31
+ return $.ret.bl(bl, bl > 0 ? '更新成功!' : '更新失败!原因:' + db.error.message);
32
+ } else {
33
+ db.key = 'user_id';
34
+ var obj = await db.getObj(query);
35
+ return $.ret.obj(obj);
36
+ }
37
+ }
38
+ };
39
+
40
+ exports.main = main;
@@ -0,0 +1,130 @@
1
+ {
2
+ // 是否启用过滤, 启用过滤后, 不符合的参数会被过滤掉
3
+ "filter": true,
4
+ // 校验脚本文件, 可以使用脚本的方式加一步进行校验, 让传参更加安全
5
+ "func_file": "",
6
+ // get请求
7
+ "get": {
8
+ // 查询参数校验项
9
+ "query": ["uid", "username", "phone", "email"],
10
+ // 查询必填参数
11
+ "query_required": []
12
+ },
13
+ // post请求
14
+ "post": {
15
+ // 查询参数校验项
16
+ "query": ["uid", "username", "phone", "email"],
17
+ // 查询必填参数
18
+ "query_required": [],
19
+ // 正文参数校验项
20
+ "body": ["age", "headImg", "birthday", "password", "confirm_password", "pay_password"],
21
+ // 正文必填参数
22
+ "body_required": []
23
+ },
24
+ // 校验列表
25
+ "list": [{
26
+ // 参数key名
27
+ "name": "uid",
28
+ // 参数中文名
29
+ "title": "用户ID",
30
+ // 数据类型
31
+ "type": "number",
32
+ // 数字类型时设置
33
+ "number": {
34
+ // 最小数值
35
+ "min": 1
36
+ },
37
+ // 分隔参数,允许传多个值,为空则限制1个值
38
+ "splitter": "|"
39
+ }, {
40
+ "name": "name",
41
+ "title": "姓名",
42
+ "type": "string",
43
+ // 字符串类型时设置
44
+ "string": {
45
+ // 格式
46
+ "format": "ch",
47
+ // 传值范围,字符串时为限制字符长度
48
+ "range": [2, 6]
49
+ },
50
+ "splitter": "|"
51
+ },
52
+ {
53
+ "name": "age",
54
+ "title": "年龄",
55
+ "type": "number",
56
+ "number": {
57
+ // 传值范围,数字时为最小值和最大值
58
+ "range": [1, 150]
59
+ }
60
+ },
61
+ {
62
+ "name": "headImg",
63
+ "title": "头像",
64
+ "type": "string",
65
+ "string": {
66
+ // 拓展名,用于传媒体(图片、音频、视频)时
67
+ "extension": "png|gif|jpg|jpeg|bmp"
68
+ }
69
+ },
70
+ {
71
+ "name": "birthday",
72
+ "title": "生日",
73
+ "type": "string",
74
+ "string": {
75
+ "format": "dateISO"
76
+ }
77
+ },
78
+ {
79
+ "name": "username",
80
+ "title": "用户名",
81
+ "type": "string",
82
+ "string": {
83
+ "format": "username"
84
+ }
85
+ },
86
+ {
87
+ "name": "password",
88
+ "title": "密码",
89
+ "type": "string",
90
+ "string": {
91
+ "format": "password",
92
+ "different": "username"
93
+ }
94
+ },
95
+ {
96
+ "name": "phone",
97
+ "title": "手机",
98
+ "type": "string",
99
+ "string": {
100
+ "format": "phone"
101
+ }
102
+ },
103
+ {
104
+ "name": "email",
105
+ "title": "邮箱",
106
+ "type": "string",
107
+ "string": {
108
+ "format": "email"
109
+ }
110
+ },
111
+ {
112
+ "name": "pay_password",
113
+ "title": "支付密码",
114
+ "type": "string",
115
+ "string": {
116
+ "format": "num",
117
+ "different": "password"
118
+ }
119
+ },
120
+ {
121
+ "name": "confirm_password",
122
+ "title": "确认密码",
123
+ "type": "string",
124
+ "string": {
125
+ "format": "password",
126
+ "identical": "password"
127
+ }
128
+ }
129
+ ]
130
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ // 路由路径
3
+ "path": "/apis/user/invitation_code",
4
+ // 名称, 用于动态增删改API配置
5
+ "name": "user_invitation_code_manage",
6
+ // 标题, 用于开发文档显示
7
+ "title": "邀请码操作",
8
+ // 描述, 用于介绍该路由的作用
9
+ "description": "用于对邀请码的添加和修改",
10
+ // 函数文件, 用于驱动脚本, 实现业务
11
+ "func_file": "./index.js",
12
+ // 请求方法, 选填 GET, POST, ALL。 ALL指同时支持GET/POST
13
+ "method": "ALL",
14
+ // 开放域, 如果域未开放, 则只有特定的协议头才能访问该API, 同时API文档不接见
15
+ "scope": true,
16
+ // 缓存时长, 单位: 分钟。使用缓存后, 二次访问API直接从缓存读取, 不重复执行业务脚本
17
+ "cache": 0,
18
+ // 是否客户端缓存, 使用客户端则不再访问服务器, 直接从浏览器中拿; 使用服务端缓存则会访问服务器
19
+ "client_cache": false,
20
+ // 参数配置路径, 用于校验API请求参数是否正确, 同时显示在API文档中
21
+ "param_path": "./param.json",
22
+ /* 授权协议 */
23
+ "oauth": {
24
+ // 是否需要登录, true表示需要登录才能访问该接口
25
+ "signIn": true,
26
+ // 会员权限级别, 如果小于该值, 则无法访问, 0为不限制
27
+ "vip": 0,
28
+ // 管理员权限级别, 如果小于该值, 则无法访问, 0为不限制
29
+ "gm": 2,
30
+ // 商户/第三方权限级别, 如果小于该值, 则无法访问, 0为不限制
31
+ "mc": 0,
32
+ // 用户组, 允许访问该接口的普通用户群体, 传ID数组,例如: [1,5]
33
+ "user_group": [],
34
+ // 管理组, 允许访问该接口的管理员群体, 传ID数组,例如: [1,5]
35
+ "user_admin": []
36
+ }
37
+ }
@@ -0,0 +1,106 @@
1
+ // 集合路由、导航,不开发前端的情况下可以将以下2行注释掉
2
+ // const nav = $.nav_admin('{0}');
3
+ // nav.update();
4
+
5
+ /**
6
+ * 接口主函数
7
+ * @param {Object} ctx HTTP上下文
8
+ * @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
9
+ * @return {Object} 执行结果
10
+ */
11
+ async function main(ctx, db) {
12
+ // 初始化返回值
13
+ var ret = $.ret.error(10000, "非法操作");
14
+ // 获取请求参数
15
+ var req = ctx.request;
16
+ // 请求参数
17
+ var query = req.query;
18
+ // 执行方式
19
+ var method = query.method;
20
+
21
+ // 用户表操作
22
+ db.table = "user_account";
23
+ console.log("邀请码操作方式(method)", method);
24
+ // 补全所有邀请码
25
+ if (method == "update") {
26
+ var users = await db.get();
27
+ console.log("邀请码更新 用户列表(users)", users);
28
+ for (var i = 0; i < users.length; i++) {
29
+ var o = users[i];
30
+ if (!o.invite_code) {
31
+ var user_id = o.user_id;
32
+ // 生成邀请码
33
+ var invite_code = createInvitationCode(o.username);
34
+ await db.set({
35
+ user_id
36
+ }, {
37
+ invite_code
38
+ });
39
+ }
40
+ }
41
+ ret = $.ret.bl(true, "补全邀请码成功!");
42
+ }
43
+ // 添加邀请码
44
+ else if (method == "invite_code") {
45
+ var user_id = query.user_id;
46
+ var user = await db.getObj({
47
+ user_id
48
+ });
49
+ // 生成邀请码
50
+ var invite_code = createInvitationCode(user.username);
51
+ // 修改验证码
52
+ await db.set({
53
+ user_id
54
+ }, {
55
+ invite_code
56
+ });
57
+ ret = $.ret.bl(true, "添加邀请码成功!");
58
+ }
59
+ // 绑定邀请对象
60
+ else if (method == "binding") {
61
+ // 创建邀请记录操作
62
+ var db2 = new db();
63
+ db.table = "user_invite";
64
+ // 查询邀请记录
65
+ var invite_code = query.invite_code;
66
+ var user = await db.getObj({
67
+ invite_code
68
+ });
69
+ // 邀请对象不存在
70
+ if (!user) {
71
+ return $.ret.error(10000, "邀请对象不存在!");
72
+ }
73
+ // 被邀请ID和邀请ID
74
+ var invitee_id = ctx.session.user.user_id;
75
+ var inviter_id = user.user_id;
76
+ // 查询邀请记录
77
+ var log = await db2.get({
78
+ invitee_id,
79
+ inviter_id
80
+ });
81
+ // 邀请已存在返回
82
+ if (log) {
83
+ return $.ret.error(10000, "已经进行过邀请了!");
84
+ }
85
+ // 添加邀请记录
86
+ await db2.add({
87
+ invitee_id,
88
+ inviter_id
89
+ });
90
+ ret = $.ret.bl(true, "邀请成功!");
91
+ }
92
+
93
+ return ret;
94
+ };
95
+
96
+ /**
97
+ * 生成邀请码
98
+ * @param {String} str
99
+ */
100
+ function createInvitationCode(str) {
101
+ var date = new Date();
102
+ var timestamp = date.getTime();
103
+ return (str + timestamp).md5().substr(-8);
104
+ }
105
+
106
+ exports.main = main;