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.
- package/cache/route/main/config.json +1 -0
- package/cache/sys/app_admin/config.json +1 -0
- package/cache/sys/mqtt_engine/config.json +1 -0
- package/cache/sys/user/config.json +1 -0
- package/core/com/api/drive.js +9 -89
- package/core/com/api/index.js +3 -31
- package/core/com/cmd/drive.js +10 -1
- package/core/com/cmd/index.js +15 -1
- package/core/com/component/drive.js +1 -1
- package/core/com/component/index.js +16 -12
- package/core/com/db/drive.js +1 -1
- package/core/com/db/index.js +15 -17
- package/core/com/event/drive.js +3 -1
- package/core/com/event/index.js +74 -61
- package/core/com/eventer/com.js +2 -2
- package/core/com/middleware/com.js +41 -16
- package/core/com/mqtt/drive.js +4 -3
- package/core/com/mqtt/index.js +10 -8
- package/core/com/nav/drive.js +1 -19
- package/core/com/nav/index.js +1 -1
- package/core/com/param/drive.js +1 -1
- package/core/com/param/index.js +1 -27
- package/core/com/plugin/drive.js +18 -19
- package/core/com/plugin/index.js +16 -21
- package/core/com/plugin/script.js +109 -58
- package/core/com/rpc/com.json +4 -0
- package/core/com/rpc/drive.js +160 -0
- package/core/com/rpc/index.js +87 -0
- package/core/com/socket/drive.js +0 -1
- package/core/com/socket/index.js +5 -15
- package/core/com/sql/drive.js +1 -1
- package/core/com/sql/index.js +4 -31
- package/core/com/static/drive.js +13 -54
- package/core/com/static/index.js +14 -6
- package/core/com/task/drive.js +7 -2
- package/core/com/task/index.js +16 -36
- package/core/com/tpl/com.js +2 -2
- package/demo/app/dev/event_api/manage/event.json +19 -0
- package/demo/app/dev/event_api/manage/main.js +26 -0
- package/demo/app/dev/plugin/doc/static/api_list.html +144 -0
- package/demo/app/dev/plugin/doc/static/api_view.html +692 -0
- package/demo/app/dev/plugin/doc/static/index.html +138 -0
- package/demo/app/dev/plugin/doc/static/request_test.html +311 -0
- package/demo/app/dev/plugin/doc/static/static.js +28 -0
- package/demo/app/dev/plugin/doc/static/static.json +20 -0
- package/demo/app/dev/plugin/main/api_dev_client/app/api.json +13 -0
- package/demo/app/dev/plugin/main/api_dev_client/app/index.js +13 -0
- package/demo/app/dev/plugin/main/api_dev_client/app/param.json +147 -0
- package/demo/app/dev/plugin/main/api_dev_client/app/sql.json +28 -0
- package/demo/app/dev/plugin/main/api_dev_client/auto/api.json +37 -0
- package/demo/app/dev/plugin/main/api_dev_client/auto/auto_db.js +70 -0
- package/demo/app/dev/plugin/main/api_dev_client/auto/auto_file.js +32 -0
- package/demo/app/dev/plugin/main/api_dev_client/auto/index.js +51 -0
- package/demo/app/dev/plugin/main/api_dev_client/auto/param.json +51 -0
- package/demo/app/dev/plugin/main/api_dev_client/db/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/db/index.js +69 -0
- package/demo/app/dev/plugin/main/api_dev_client/db/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/dict/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/dict/index.js +49 -0
- package/demo/app/dev/plugin/main/api_dev_client/dict/param.json +29 -0
- package/demo/app/dev/plugin/main/api_dev_client/help/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/help/index.js +14 -0
- package/demo/app/dev/plugin/main/api_dev_client/help/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/nav/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/nav/index.js +36 -0
- package/demo/app/dev/plugin/main/api_dev_client/nav/param.json +36 -0
- package/demo/app/dev/plugin/main/api_dev_client/plugin/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/plugin/index.js +13 -0
- package/demo/app/dev/plugin/main/api_dev_client/plugin/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/source/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/source/index.js +14 -0
- package/demo/app/dev/plugin/main/api_dev_client/source/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/sql/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/sql/index.js +13 -0
- package/demo/app/dev/plugin/main/api_dev_client/sql/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/task/api.json +16 -0
- package/demo/app/dev/plugin/main/api_dev_client/task/index.js +13 -0
- package/demo/app/dev/plugin/main/api_dev_client/task/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/translate/api.json +39 -0
- package/demo/app/dev/plugin/main/api_dev_client/translate/index.js +43 -0
- package/demo/app/dev/plugin/main/api_dev_client/translate/param.json +130 -0
- package/demo/app/dev/plugin/main/api_dev_client/translate/sql.json +62 -0
- package/demo/app/dev/plugin/main/api_dev_client/ui/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/ui/index.js +146 -0
- package/demo/app/dev/plugin/main/api_dev_client/ui/param.json +31 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/api.json +10 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/index.js +100 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/param.json +29 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/nav.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/obj.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/post.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/block/query.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/edit.vue +39 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/list.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/search.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/table.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/type.vue +12 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/page/view.vue +56 -0
- package/demo/app/dev/plugin/main/api_dev_client/view/tpl/view.json +48 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/api.json +37 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/auto_db.js +120 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy/copy.js +101 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy/copy_framework.js +118 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy/copy_template.js +78 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/copy_file.js +97 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/common.js +198 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/django_server.js +104 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/helper.js +161 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/koa_art_server.js +102 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/mini_app_home.js +415 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/razor.js +0 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/springboot.js +0 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/thinkphp.js +0 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/uni_app_home.js +418 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/vue_cli_admin.js +78 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create/vue_cli_home.js +112 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/create_file.js +97 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/db/add_data.js +221 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/db/create_table.js +162 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/db/set_auth_table.js +86 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/index.js +524 -0
- package/demo/app/dev/plugin/main/api_dev_manage/auto_subject/param.json +37 -0
- package/demo/app/route/app.js +131 -0
- package/demo/app/route/app.json +11 -0
- package/demo/app/route/event_api/client/event.json +10 -0
- package/demo/app/route/event_api/client/main.js +19 -0
- package/demo/app/route/event_api/manage/event.json +18 -0
- package/demo/app/route/event_api/manage/main.js +70 -0
- package/demo/app/route/plugin/main/api_route_client/pass/api.json +37 -0
- package/demo/app/route/plugin/main/api_route_client/pass/index.js +33 -0
- package/demo/app/route/plugin/main/api_route_client/pass/param.json +50 -0
- package/demo/app/route/plugin/main/index.js +144 -0
- package/demo/app/route/plugin/main/plugin.json +20 -0
- package/demo/app/sys/event_api/api/event.json +1 -1
- package/demo/app/sys/event_api/doc/event.json +18 -0
- package/demo/app/sys/event_api/doc/main.js +67 -0
- package/demo/app/sys/event_api/img/event.json +11 -0
- package/demo/app/sys/event_api/img/main.js +90 -0
- package/demo/app/sys/event_api/web/event.json +4 -4
- package/demo/app/sys/plugin/app_admin/index.js +127 -0
- package/demo/app/sys/plugin/app_admin/plugin.json +20 -0
- package/demo/app/sys/plugin/main/api_client/config/sql.json +70 -0
- package/demo/app/sys/plugin/main/api_client/lang/api.json +37 -0
- package/demo/app/sys/plugin/main/api_client/lang/index.js +27 -0
- package/demo/app/sys/plugin/main/api_client/lang/param.json +22 -0
- package/demo/app/sys/plugin/main/api_client/translate/api.json +39 -0
- package/demo/app/sys/plugin/main/api_client/translate/index.js +21 -0
- package/demo/app/sys/plugin/main/api_client/translate/param.json +130 -0
- package/demo/app/sys/plugin/main/api_client/translate/sql.json +62 -0
- package/demo/app/sys/plugin/main/static/static.json +1 -1
- package/demo/app/sys/plugin/main/task/task_demo/index.js +37 -0
- package/demo/app/sys/plugin/main/task/task_demo/task.json +24 -0
- package/demo/app/sys/plugin/mqtt_engine/LICENSE +201 -0
- package/demo/app/sys/plugin/mqtt_engine/api_sys_client/scheme/api.json +33 -0
- package/demo/app/sys/plugin/mqtt_engine/api_sys_client/scheme/index.js +31 -0
- package/demo/app/sys/plugin/mqtt_engine/api_sys_client/scheme/param.json +130 -0
- package/demo/app/sys/plugin/mqtt_engine/index.js +51 -0
- package/demo/app/sys/plugin/mqtt_engine/mqtt/df/index.js +509 -0
- package/demo/app/sys/plugin/mqtt_engine/mqtt/df/mqtt.json +24 -0
- package/demo/app/sys/plugin/mqtt_engine/mqtt/zs/index.js +622 -0
- package/demo/app/sys/plugin/mqtt_engine/mqtt/zs/mqtt.json +36 -0
- package/demo/app/sys/plugin/mqtt_engine/plugin.json +21 -0
- package/demo/app/sys/plugin/mqtt_engine/static/img/logo.png +0 -0
- package/demo/app/sys/plugin/mqtt_engine/static/img/logo1.png +0 -0
- package/demo/app/sys/plugin/mqtt_engine/static/static.json +18 -0
- package/demo/app/sys/plugin/user/index.js +127 -0
- package/demo/app/sys/plugin/user/plugin.json +20 -0
- package/demo/app/sys/plugin/user/static/img/logo.png +0 -0
- package/demo/app/sys/plugin/user/static/static.js +28 -0
- package/demo/app/sys/plugin/user/static/static.json +20 -0
- package/demo/app/sys/static/img/avatar_1674484608066.png +0 -0
- package/demo/app/sys/static/img/avatar_1674633778171.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1674962702334.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1675075431736.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1675497065533.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685352550990.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685353685992.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685353956587.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685353971148.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685353983723.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685354014745.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685354122355.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685357983520.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685358453383.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685416570438.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685512675830.png +0 -0
- package/demo/app/sys/static/img/avatar_1685939425608.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1685939886560.jpeg +0 -0
- package/demo/app/sys/static/img/avatar_1686106313194.png +0 -0
- package/demo/app/sys/static/img/avatar_1686371876175.png +0 -0
- package/demo/app/sys/static/img/avatar_1686372033596.png +0 -0
- package/demo/app/sys/static/img/avatar_1688215220669.png +0 -0
- package/demo/app/sys/static/img/avatar_1688531184690.png +0 -0
- package/demo/app/sys/static/img/avatar_1688531233080.png +0 -0
- package/demo/app/sys/static/img/avatar_1688548526909.png +0 -0
- package/demo/app/sys/static/img/avatar_1688549213411.png +0 -0
- package/demo/app/sys/static/img/avatar_1688549511977.png +0 -0
- package/demo/app/sys/static/img/avatar_1688549685464.png +0 -0
- package/demo/app/sys/static/img/avatar_1688608623049.png +0 -0
- package/demo/app/sys/static/img/avatar_1688638500476.png +0 -0
- package/demo/app/sys/static/img/avatar_1688638515195.png +0 -0
- package/demo/app/sys/static/img/avatar_1688638539928.png +0 -0
- package/demo/app/sys/static/img/avatar_1688638557960.png +0 -0
- package/demo/app/sys/static/img/avatar_1688638761798.png +0 -0
- package/demo/app/sys/static/img/avatar_1688638943140.png +0 -0
- package/demo/app/sys/static/img/avatar_1688639068330.png +0 -0
- package/demo/app/sys/static/img/image_1685357101273.jpeg +0 -0
- package/demo/app/sys/static/img/logo.png +0 -0
- package/demo/app/sys/static/static.js +28 -0
- package/demo/app/sys/static/static.json +20 -0
- package/demo/app/user/plugin/main/api_user_client/core/api.json +20 -0
- package/demo/app/user/plugin/main/api_user_client/core/forgot.js +14 -0
- package/demo/app/user/plugin/main/api_user_client/core/password.js +14 -0
- package/demo/app/user/plugin/main/api_user_client/core/sign_out.js +26 -0
- package/demo/app/user/plugin/main/api_user_client/core/state.js +21 -0
- package/demo/app/user/plugin/main/api_user_client/forgot/index - /345/211/257/346/234/254.jsbat" +41 -0
- package/demo/app/user/plugin/main/api_user_client/phone_code/index.js_ +230 -0
- package/demo/app/user/plugin/main/api_user_manage/account_base/api.json +37 -0
- package/demo/app/user/plugin/main/api_user_manage/account_base/index.js +40 -0
- package/demo/app/user/plugin/main/api_user_manage/account_base/param.json +130 -0
- package/demo/app/user/plugin/main/api_user_manage/invitation_code/api.json +37 -0
- package/demo/app/user/plugin/main/api_user_manage/invitation_code/index.js +106 -0
- package/demo/app/user/plugin/main/api_user_manage/invitation_code/param.json +130 -0
- package/demo/app/user/plugin/main/api_user_manage/update_team/api.json +35 -0
- package/demo/app/user/plugin/main/api_user_manage/update_team/index.js +218 -0
- package/demo/app/user/plugin/main/api_user_manage/update_team/param.json +130 -0
- package/demo/app/user/static/img/logo.png +0 -0
- package/demo/app/user/static/static.js +28 -0
- package/demo/app/user/static/static.json +20 -0
- package/demo/app/ws/app.js +122 -0
- package/demo/app/ws/app.json +11 -0
- package/demo/app/ws/event_api/client/event.json +10 -0
- package/demo/app/ws/event_api/client/main.js +17 -0
- package/demo/app/ws/socket/ws/index.js +43 -0
- package/demo/app/ws/socket/ws/socket.json +14 -0
- package/demo/config/face.sql +3824 -0
- package/demo/config/local.json +2 -2
- package/demo/config/test.json +2 -2
- package/index.js +2 -2
- package/package.json +2 -2
- /package/core/com/{api → rpc}/rpc.js +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var api = $.api_admin('route_client', '路由客户端');
|
|
2
|
+
// 首次启动更新api接口;
|
|
3
|
+
api.update('route/');
|
|
4
|
+
|
|
5
|
+
var sql = $.mysql_admin('sys', __dirname);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @description 接口主函数
|
|
9
|
+
* @param {Object} ctx HTTP上下文
|
|
10
|
+
* @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
|
|
11
|
+
* @return {Object} 执行结果
|
|
12
|
+
*/
|
|
13
|
+
async function main(ctx, db) {
|
|
14
|
+
// 在这定义要访问的数据库 (分布式开发时设置不同的数据库名)
|
|
15
|
+
$.push(db, sql.db(), true);
|
|
16
|
+
return api.run(ctx, db);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.main = main;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[{
|
|
2
|
+
// 目标对象
|
|
3
|
+
"target": "/apis/route*",
|
|
4
|
+
// 事件名称, 用于动态增删改
|
|
5
|
+
"name": "route_manage",
|
|
6
|
+
// 标题, 用于开发者查看事件
|
|
7
|
+
"title": "示例事件",
|
|
8
|
+
// 描述, 用于介绍该事件是做什么用的
|
|
9
|
+
"description": "描述事件使用方法",
|
|
10
|
+
// 阶段, 分执行前before、验证check、主要main、渲染render、执行后after阶段
|
|
11
|
+
"stage": "main",
|
|
12
|
+
// 响应方法 GET请求、POST请求、ALL所有请求,如果非API事件可自定义
|
|
13
|
+
"method": "ALL",
|
|
14
|
+
// 函数文件, 当事件触发时执行指定的脚本
|
|
15
|
+
"func_file": "./main.js",
|
|
16
|
+
// 执行顺序, 数值越小越优先执行
|
|
17
|
+
"sort": 100
|
|
18
|
+
}]
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
if ($.routes) {
|
|
2
|
+
$.routes = {};
|
|
3
|
+
$.clients = {};
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 订阅路由
|
|
8
|
+
* @param {String} clientId 客户端ID
|
|
9
|
+
* @param {Object} param 参数
|
|
10
|
+
*/
|
|
11
|
+
function subscribe(clientId, param) {
|
|
12
|
+
return $.ret.bl(true, "订阅成功!");
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 退订路由
|
|
17
|
+
* @param {String} clientId 客户端ID
|
|
18
|
+
* @param {Object} param 参数
|
|
19
|
+
*/
|
|
20
|
+
function unsubscribe(clientId, param) {
|
|
21
|
+
return $.ret.bl(true, "退订成功!");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function help() {
|
|
25
|
+
var list = [{
|
|
26
|
+
name: "订阅路由",
|
|
27
|
+
path: "/apis/route/subscribe?clientId=客户端ID",
|
|
28
|
+
param: {
|
|
29
|
+
"path": "路由路径",
|
|
30
|
+
"method": "请求方式",
|
|
31
|
+
"query": "查询参数",
|
|
32
|
+
"body": "提交参数"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "退订路由",
|
|
37
|
+
path: "/apis/route/subsubscribe?clientId=客户端ID",
|
|
38
|
+
param: {
|
|
39
|
+
"path": "路由路径"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
];
|
|
43
|
+
return $.ret.list(list);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @description 接口主函数
|
|
48
|
+
* @param {Object} ctx HTTP上下文
|
|
49
|
+
* @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
|
|
50
|
+
* @return {Object} 执行结果
|
|
51
|
+
*/
|
|
52
|
+
async function main(ctx, db) {
|
|
53
|
+
var req = ctx.request;
|
|
54
|
+
var method = ctx.path.replace("/apis/route/", "");
|
|
55
|
+
var ret;
|
|
56
|
+
switch (method) {
|
|
57
|
+
case "subscribe":
|
|
58
|
+
ret = subscribe(req.query.clientId, req.body);
|
|
59
|
+
break;
|
|
60
|
+
case "unsubscribe":
|
|
61
|
+
ret = unsubscribe(req.query.clientId, req.body);
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
ret = help();
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
return ret;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
exports.main = main;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
// 路由路径
|
|
3
|
+
"path": "/api/route/pass",
|
|
4
|
+
// 名称, 用于动态增删改API配置
|
|
5
|
+
"name": "route_pass",
|
|
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": false,
|
|
26
|
+
// 会员权限级别, 如果小于该值, 则无法访问, 0为不限制
|
|
27
|
+
"vip": 0,
|
|
28
|
+
// 管理员权限级别, 如果小于该值, 则无法访问, 0为不限制
|
|
29
|
+
"gm": 0,
|
|
30
|
+
// 商户/第三方权限级别, 如果小于该值, 则无法访问, 0为不限制
|
|
31
|
+
"mc": 0,
|
|
32
|
+
// 用户组, 允许访问该接口的普通用户群体, 传ID数组,例如: [1,5]
|
|
33
|
+
"user_group": [],
|
|
34
|
+
// 管理组, 允许访问该接口的管理员群体, 传ID数组,例如: [1,5]
|
|
35
|
+
"user_admin": []
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* 接口主函数
|
|
4
|
+
* @param {Object} ctx HTTP上下文
|
|
5
|
+
* @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
|
|
6
|
+
* @return {Object} 执行结果
|
|
7
|
+
*/
|
|
8
|
+
async function main(ctx, db) {
|
|
9
|
+
// 获取请求参数
|
|
10
|
+
var req = ctx.request;
|
|
11
|
+
var {
|
|
12
|
+
query,
|
|
13
|
+
body
|
|
14
|
+
} = req;
|
|
15
|
+
|
|
16
|
+
var { route, password } = body;
|
|
17
|
+
|
|
18
|
+
db.table = "sys_config";
|
|
19
|
+
var obj = await db.getObj({name: "route_pass_" + route}, "", "name, value");
|
|
20
|
+
if(!obj){
|
|
21
|
+
// 路由错误的情况下返回该地址
|
|
22
|
+
var err = await db.getObj({name: "route_error"}, "", "name, value");
|
|
23
|
+
return $.ret.body({ path: err.value });
|
|
24
|
+
}
|
|
25
|
+
else if(obj.value && password === obj.value.md5()){
|
|
26
|
+
// 路由密码正确的情况下返回该地址
|
|
27
|
+
var su = await db.getObj({name: "route_" + route}, "", "name, value");
|
|
28
|
+
return $.ret.body({ path: su.value });
|
|
29
|
+
}
|
|
30
|
+
return $.ret.error(10000, '频道错误');
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.main = main;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
// 是否启用过滤, 启用过滤后, 不符合的参数会被过滤掉
|
|
3
|
+
"filter": true,
|
|
4
|
+
// 校验脚本文件, 可以使用脚本的方式加一步进行校验, 让传参更加安全
|
|
5
|
+
"func_file": "",
|
|
6
|
+
// get请求
|
|
7
|
+
"get": {
|
|
8
|
+
// 查询参数校验项
|
|
9
|
+
"query": [],
|
|
10
|
+
// 查询必填参数
|
|
11
|
+
"query_required": []
|
|
12
|
+
},
|
|
13
|
+
// post请求
|
|
14
|
+
"post": {
|
|
15
|
+
// 查询参数校验项
|
|
16
|
+
"query": [],
|
|
17
|
+
// 查询必填参数
|
|
18
|
+
"query_required": [],
|
|
19
|
+
// 正文参数校验项
|
|
20
|
+
"body": ["route", "password"],
|
|
21
|
+
// 正文必填参数
|
|
22
|
+
"body_required": []
|
|
23
|
+
},
|
|
24
|
+
// 校验列表
|
|
25
|
+
"list": [{
|
|
26
|
+
// 参数key名
|
|
27
|
+
"name": "route",
|
|
28
|
+
// 参数中文名
|
|
29
|
+
"title": "路由线路",
|
|
30
|
+
// 数据类型
|
|
31
|
+
"type": "number",
|
|
32
|
+
// 数字类型时设置
|
|
33
|
+
"number": {
|
|
34
|
+
// 最小数值
|
|
35
|
+
"min": 1,
|
|
36
|
+
"max": 4
|
|
37
|
+
},
|
|
38
|
+
// 分隔参数,允许传多个值,为空则限制1个值
|
|
39
|
+
"splitter": "|"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"name": "password",
|
|
43
|
+
"title": "密码",
|
|
44
|
+
"type": "string",
|
|
45
|
+
"string": {
|
|
46
|
+
"format": "password"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileOverview main
|
|
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
|
+
var msg = null;
|
|
18
|
+
return msg;
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 安装
|
|
23
|
+
* @param {Object} option 配置参数
|
|
24
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
25
|
+
*/
|
|
26
|
+
install(option) {
|
|
27
|
+
var msg = null;
|
|
28
|
+
return msg;
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 卸载
|
|
33
|
+
* @param {Object} option 配置参数
|
|
34
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
35
|
+
*/
|
|
36
|
+
uninstall(option) {
|
|
37
|
+
var msg = null;
|
|
38
|
+
return msg;
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 更新
|
|
43
|
+
* @param {Object} option 配置参数
|
|
44
|
+
* @return {String} 成功返回null, 否则返回错误提示
|
|
45
|
+
*/
|
|
46
|
+
update(option) {
|
|
47
|
+
var msg = null;
|
|
48
|
+
return msg;
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 启动
|
|
53
|
+
* @param {Object} opiton 配置参数
|
|
54
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
55
|
+
*/
|
|
56
|
+
start(option) {
|
|
57
|
+
var msg = null;
|
|
58
|
+
return msg;
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 暂停
|
|
63
|
+
* @param {Object} opiton 配置参数
|
|
64
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
65
|
+
*/
|
|
66
|
+
stop(option) {
|
|
67
|
+
var msg = null;
|
|
68
|
+
return msg;
|
|
69
|
+
},
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 结束
|
|
73
|
+
* @param {Object} opiton 配置参数
|
|
74
|
+
* @return {String} 成功返回null,否则返回错误提示
|
|
75
|
+
*/
|
|
76
|
+
end(option) {
|
|
77
|
+
var msg = null;
|
|
78
|
+
return msg;
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* 插件
|
|
83
|
+
* @param {String} item 插件项
|
|
84
|
+
* @return {Object} 旗下插件和信息
|
|
85
|
+
*/
|
|
86
|
+
help(item) {
|
|
87
|
+
var tip = "";
|
|
88
|
+
switch (item) {
|
|
89
|
+
case "run":
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
return tip;
|
|
95
|
+
},
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* 主程序
|
|
99
|
+
* @param {Object} param1 参数1
|
|
100
|
+
* @param {Object} param2 参数2
|
|
101
|
+
* @return {Object} 返回执行结果
|
|
102
|
+
*/
|
|
103
|
+
main(param1, param2) {
|
|
104
|
+
var ret = null;
|
|
105
|
+
return ret;
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* 指令(类似命令提示符)
|
|
110
|
+
* @param {String} content 指令内容
|
|
111
|
+
* @return {String} 执行结果
|
|
112
|
+
*/
|
|
113
|
+
cmd(content) {
|
|
114
|
+
var ret = "";
|
|
115
|
+
return ret;
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* API接口(用于其他插件调用该插件时)
|
|
120
|
+
* @param {Object} ctx HTTP上下文
|
|
121
|
+
* @param {Object} db 数据库管理器
|
|
122
|
+
* @return {Object} 执行结果
|
|
123
|
+
*/
|
|
124
|
+
api(ctx, db) {
|
|
125
|
+
var ret = "";
|
|
126
|
+
return ret;
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* 聊天(通过聊天的方式驱动插件, 用于机器人开发)
|
|
131
|
+
* @param {String} from_user 发送消息人
|
|
132
|
+
* @param {String} to_user 接收消息人
|
|
133
|
+
* @param {String} content 内容
|
|
134
|
+
* @param {String} group 群组 如果是个人,群组为空
|
|
135
|
+
* @param {Number} type 群类型, 1永久会话/群、2临时会话/群
|
|
136
|
+
* @param {String} msg_type 消息类型, event事件型、message消息型。默认消息型
|
|
137
|
+
* @param {Object} 数据管理器
|
|
138
|
+
* @return {String} 回复内容
|
|
139
|
+
*/
|
|
140
|
+
async chat(from_user, to_user, group, content, type, msg_type, db) {
|
|
141
|
+
var ret = "";
|
|
142
|
+
return ret;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
// 应用名称,表示该插件用在什么应用里的
|
|
3
|
+
"app": "route",
|
|
4
|
+
// 插件名称,插件的唯一标识
|
|
5
|
+
"name": "main",
|
|
6
|
+
// 插件标题,用于检索和识别
|
|
7
|
+
"title": "示例插件",
|
|
8
|
+
// 插件描述,介绍改插件是做什么用的
|
|
9
|
+
"description": "描述该插件是做什么用的",
|
|
10
|
+
// 插件版本号,用于升级迭代
|
|
11
|
+
"version": "1.0",
|
|
12
|
+
// 插件语言包文件路径
|
|
13
|
+
"lang_path": "./lang/",
|
|
14
|
+
// 插件图标
|
|
15
|
+
"icon": "/route/main/img/logo.png",
|
|
16
|
+
// 插件指令,通过指令方式调用插件
|
|
17
|
+
"cmd": "route.main",
|
|
18
|
+
// 排序,表示多个插件时在应用下执行的先后顺序
|
|
19
|
+
"sort": 10
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[{
|
|
2
|
+
// 目标对象
|
|
3
|
+
"target": "/doc*",
|
|
4
|
+
// 事件名称, 用于动态增删改
|
|
5
|
+
"name": "doc",
|
|
6
|
+
// 标题, 用于开发者查看事件
|
|
7
|
+
"title": "文档保存工具",
|
|
8
|
+
// 描述, 用于介绍该事件是做什么用的
|
|
9
|
+
"description": "用于监听上传文档时,保存文档到本地,并返回文档链接",
|
|
10
|
+
// 阶段, 分执行前before、验证check、主要main、渲染render、执行后after阶段
|
|
11
|
+
"stage": "main",
|
|
12
|
+
// 响应方法 GET请求、POST请求、ALL所有请求,如果非API事件可自定义
|
|
13
|
+
"method": "POST",
|
|
14
|
+
// 函数文件, 当事件触发时执行指定的脚本
|
|
15
|
+
"func_file": "./main.js",
|
|
16
|
+
// 执行顺序, 数值越小越优先执行
|
|
17
|
+
"sort": 51
|
|
18
|
+
}]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
var fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
var save_file_dir = "/app/sys/static/doc/".fullname();
|
|
5
|
+
save_file_dir.addDir();
|
|
6
|
+
var file_path = "/sys/doc/";
|
|
7
|
+
|
|
8
|
+
var arr_extensions = ['xls', 'xlsx', 'doc', 'docx', 'txt', 'css', 'js', 'html', 'vue', 'ts', 'ppt', 'pptx'];
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 保存图片
|
|
12
|
+
* @param {String} k 字段名
|
|
13
|
+
* @param {Object} f 文件对象
|
|
14
|
+
* @return {String} 访问路径
|
|
15
|
+
*/
|
|
16
|
+
function saveDoc(k, f) {
|
|
17
|
+
var url;
|
|
18
|
+
// 创建可读流
|
|
19
|
+
const render = fs.createReadStream(f.path);
|
|
20
|
+
var stamp = Date.now();
|
|
21
|
+
var extensions = f.name.split('.').pop();
|
|
22
|
+
if (arr_extensions.indexOf(extensions) === -1) {
|
|
23
|
+
return url;
|
|
24
|
+
}
|
|
25
|
+
var name = k + "_" + stamp + '.' + extensions;
|
|
26
|
+
let file = path.join(save_file_dir, name);
|
|
27
|
+
// 创建写入流
|
|
28
|
+
try {
|
|
29
|
+
const upStream = fs.createWriteStream(file);
|
|
30
|
+
render.pipe(upStream);
|
|
31
|
+
url = file_path + name;
|
|
32
|
+
} catch (e) {
|
|
33
|
+
fs.closeSync(file);
|
|
34
|
+
console.log(e);
|
|
35
|
+
}
|
|
36
|
+
return url;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @description 接口主函数
|
|
41
|
+
* @param {Object} ctx HTTP上下文
|
|
42
|
+
* @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
|
|
43
|
+
* @return {Object} 执行结果
|
|
44
|
+
*/
|
|
45
|
+
async function main(ctx, db) {
|
|
46
|
+
var req = ctx.request;
|
|
47
|
+
var body = req.body;
|
|
48
|
+
if (req.files) {
|
|
49
|
+
var dt = req.files;
|
|
50
|
+
for (var k in dt) {
|
|
51
|
+
if (k === 'file' || arr_extensions.indexOf(k) !== -1 || k.indexOf('file_') !== -1 || k.indexOf(
|
|
52
|
+
'doc_') !== -1 || k.indexOf(
|
|
53
|
+
'xls_') !== -1 || k.indexOf('txt_') !== -1 || k.indexOf('css_') !== -1 || k.indexOf('js_') !== -
|
|
54
|
+
1 ||
|
|
55
|
+
k.indexOf('html_') !== -1 ||
|
|
56
|
+
k.indexOf('vue_') !== -1) {
|
|
57
|
+
var url = saveDoc(k, dt[k]);
|
|
58
|
+
if (url) {
|
|
59
|
+
body[k] = url;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
exports.main = main;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
var fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
|
|
4
|
+
var save_file_dir = "/app/sys/static/img/".fullname();
|
|
5
|
+
save_file_dir.addDir();
|
|
6
|
+
var file_path = "/sys/img/";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var arr_extensions = ['jpg', 'jpeg', 'png', 'gif', 'svg', 'bmp', 'icon', 'ico', 'ts'];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 保存图片
|
|
13
|
+
* @param {String} k 字段名
|
|
14
|
+
* @param {Object} f 文件对象
|
|
15
|
+
* @return {String} 访问路径
|
|
16
|
+
*/
|
|
17
|
+
function saveImg(k, f) {
|
|
18
|
+
var url;
|
|
19
|
+
// 创建可读流
|
|
20
|
+
const render = fs.createReadStream(f.path);
|
|
21
|
+
var stamp = Date.now();
|
|
22
|
+
var extensions = f.name.split('.').pop();
|
|
23
|
+
if (arr_extensions.indexOf(extensions) === -1) {
|
|
24
|
+
return url;
|
|
25
|
+
}
|
|
26
|
+
var name = k + "_" + stamp + '.' + extensions;
|
|
27
|
+
let file = path.join(save_file_dir, name);
|
|
28
|
+
// 创建写入流
|
|
29
|
+
try {
|
|
30
|
+
const upStream = fs.createWriteStream(file);
|
|
31
|
+
render.pipe(upStream);
|
|
32
|
+
url = file_path + name;
|
|
33
|
+
} catch (e) {
|
|
34
|
+
fs.closeSync(file);
|
|
35
|
+
console.log(e);
|
|
36
|
+
}
|
|
37
|
+
return url;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @description 接口主函数
|
|
42
|
+
* @param {Object} ctx HTTP上下文
|
|
43
|
+
* @param {Object} db 数据管理器,如: { next: async function{}, ret: {} }
|
|
44
|
+
* @return {Object} 执行结果
|
|
45
|
+
*/
|
|
46
|
+
async function main(ctx, db) {
|
|
47
|
+
// 在这定义要访问的数据库 (分布式开发时设置不同的数据库名)
|
|
48
|
+
var req = ctx.request;
|
|
49
|
+
var body = req.body;
|
|
50
|
+
for (var k in body) {
|
|
51
|
+
var data = body[k];
|
|
52
|
+
if (data && typeof(data) === 'string') {
|
|
53
|
+
if (k === 'img' || k === 'image' || k === 'icon' || k === 'avatar' || k.indexOf('img_') !== -1 || k
|
|
54
|
+
.indexOf('image_') !== -1 || k.indexOf('icon_') !== -1 || k.indexOf(
|
|
55
|
+
'avatar_') !== -1) {
|
|
56
|
+
if (data.indexOf('data:') === 0 && data.indexOf("+xml") === -1) {
|
|
57
|
+
var extension = data.between('image/', ';');
|
|
58
|
+
data = data.replace(/^data:image\/\w+;base64,/, "");
|
|
59
|
+
var bf = Buffer.from(data, 'base64');
|
|
60
|
+
var stamp = Date.now();
|
|
61
|
+
var name = k + "_" + stamp + "." + extension;
|
|
62
|
+
var file = save_file_dir + name;
|
|
63
|
+
try {
|
|
64
|
+
fs.writeFileSync(file, bf);
|
|
65
|
+
} catch (e) {
|
|
66
|
+
fs.closeSync(file);
|
|
67
|
+
console.log(e);
|
|
68
|
+
}
|
|
69
|
+
body[k] = file_path + name;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (req.files) {
|
|
75
|
+
var dt = req.files;
|
|
76
|
+
for (var k in dt) {
|
|
77
|
+
if (k === 'img' || k === 'image' || k === 'icon' || k === 'avatar' || k.indexOf('img') !== -1 || k
|
|
78
|
+
.indexOf('image_') !== -1 || k.indexOf('icon_') !== -1 || k.indexOf(
|
|
79
|
+
'avatar_') !== -1) {
|
|
80
|
+
var url = saveImg(k, dt[k]);
|
|
81
|
+
if (url) {
|
|
82
|
+
body[k] = url;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
exports.main = main;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// 目标对象
|
|
3
3
|
"target": "/*",
|
|
4
4
|
// 事件名称, 用于动态增删改
|
|
5
|
-
"name": "
|
|
5
|
+
"name": "check_install",
|
|
6
6
|
// 标题, 用于开发者查看事件
|
|
7
|
-
"title": "
|
|
7
|
+
"title": "安装检测",
|
|
8
8
|
// 描述, 用于介绍该事件是做什么用的
|
|
9
|
-
"description": "
|
|
9
|
+
"description": "用于便捷安装,判断网站是否有安装数据库",
|
|
10
10
|
// 阶段, 分执行前before、验证check、主要main、渲染render、执行后after阶段
|
|
11
11
|
"stage": "check",
|
|
12
12
|
// 响应方法 GET请求、POST请求、ALL所有请求,如果非API事件可自定义
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// 如果有结果则结束后面的执行
|
|
17
17
|
"end": true,
|
|
18
18
|
// 执行顺序, 数值越小越优先执行
|
|
19
|
-
"sort":
|
|
19
|
+
"sort": 100
|
|
20
20
|
}, {
|
|
21
21
|
// 目标对象
|
|
22
22
|
"target": "/sys*",
|