@befly-addon/admin 1.6.2 → 1.7.0
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/adminViews/config/dict/components/edit.vue +1 -1
- package/adminViews/config/dict/index.vue +22 -8
- package/adminViews/config/dictType/components/edit.vue +1 -1
- package/adminViews/config/dictType/index.vue +19 -6
- package/adminViews/config/system/components/edit.vue +1 -1
- package/adminViews/config/system/index.vue +19 -5
- package/adminViews/index/components/addonList.vue +9 -2
- package/adminViews/index/components/environmentInfo.vue +7 -1
- package/adminViews/index/components/performanceMetrics.vue +7 -1
- package/adminViews/index/components/serviceStatus.vue +7 -1
- package/adminViews/index/components/systemOverview.vue +7 -1
- package/adminViews/index/components/systemResources.vue +7 -1
- package/adminViews/index/components/userInfo.vue +8 -2
- package/adminViews/log/email/index.vue +12 -6
- package/adminViews/log/login/index.vue +10 -4
- package/adminViews/log/operate/index.vue +17 -4
- package/adminViews/login_1/index.vue +1 -1
- package/adminViews/people/admin/components/edit.vue +8 -2
- package/adminViews/people/admin/index.vue +13 -5
- package/adminViews/permission/api/index.vue +7 -1
- package/adminViews/permission/menu/index.vue +7 -1
- package/adminViews/permission/role/components/api.vue +17 -5
- package/adminViews/permission/role/components/edit.vue +1 -1
- package/adminViews/permission/role/components/menu.vue +17 -5
- package/adminViews/permission/role/index.vue +13 -5
- package/adminViews/utils/cleanParams.ts +39 -0
- package/apis/admin/cacheRefresh.ts +5 -1
- package/apis/api/all.ts +12 -5
- package/apis/auth/sendSmsCode.ts +5 -1
- package/apis/dashboard/configStatus.ts +5 -1
- package/apis/dashboard/environmentInfo.ts +5 -1
- package/apis/dashboard/performanceMetrics.ts +5 -1
- package/apis/dashboard/permissionStats.ts +5 -1
- package/apis/dashboard/serviceStatus.ts +6 -2
- package/apis/dashboard/systemInfo.ts +5 -1
- package/apis/dashboard/systemOverview.ts +5 -1
- package/apis/dashboard/systemResources.ts +5 -1
- package/apis/dict/all.ts +7 -2
- package/apis/dict/ins.ts +4 -2
- package/apis/dict/items.ts +6 -3
- package/apis/dictType/all.ts +7 -2
- package/apis/dictType/ins.ts +5 -1
- package/apis/email/_emailPlugin.ts +21 -0
- package/apis/email/config.ts +10 -3
- package/apis/email/send.ts +10 -4
- package/apis/email/verify.ts +10 -3
- package/apis/menu/all.ts +14 -11
- package/apis/role/all.ts +7 -2
- package/apis/role/apiSave.ts +4 -2
- package/apis/role/apis.ts +7 -2
- package/apis/role/ins.ts +5 -1
- package/apis/role/menuSave.ts +5 -1
- package/apis/role/menus.ts +5 -1
- package/apis/role/save.ts +5 -1
- package/apis/role/upd.ts +5 -1
- package/apis/sysConfig/all.ts +5 -1
- package/apis/sysConfig/get.ts +4 -2
- package/apis/sysConfig/ins.ts +4 -2
- package/libs/emailHelper.ts +3 -2
- package/package.json +3 -3
- package/utils/dbJsonRow.ts +3 -0
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
* - 缓存出现异常需要重建
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
import type { ApiRoute } from "befly/types/api";
|
|
16
|
+
|
|
17
|
+
const route: ApiRoute = {
|
|
16
18
|
name: "刷新全部缓存",
|
|
17
19
|
handler: async (befly, _ctx) => {
|
|
18
20
|
try {
|
|
@@ -101,3 +103,5 @@ export default {
|
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
105
|
};
|
|
106
|
+
|
|
107
|
+
export default route;
|
package/apis/api/all.ts
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DbJsonRow } from "../../utils/dbJsonRow";
|
|
2
|
+
import type { ApiRoute } from "befly/types/api";
|
|
3
|
+
|
|
4
|
+
const route: ApiRoute = {
|
|
2
5
|
name: "获取所有接口",
|
|
3
6
|
handler: async (befly) => {
|
|
4
7
|
try {
|
|
5
8
|
// 从缓存获取所有接口
|
|
6
|
-
let allApis = await befly.cache.getApis();
|
|
9
|
+
let allApis: unknown[] = await befly.cache.getApis();
|
|
7
10
|
|
|
8
11
|
// 如果缓存不存在,从数据库查询并缓存
|
|
9
12
|
if (allApis.length === 0) {
|
|
10
|
-
const result = await befly.db.getAll({
|
|
13
|
+
const result = await befly.db.getAll<DbJsonRow>({
|
|
11
14
|
table: "addon_admin_api",
|
|
12
15
|
orderBy: ["id#ASC"]
|
|
13
16
|
});
|
|
@@ -19,10 +22,14 @@ export default {
|
|
|
19
22
|
}
|
|
20
23
|
}
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
const lists = allApis.filter((api): api is Record<string, unknown> => typeof api === "object" && api !== null).map((api) => api as DbJsonRow);
|
|
26
|
+
|
|
27
|
+
return befly.tool.Yes("操作成功", { lists: lists });
|
|
28
|
+
} catch (error: unknown) {
|
|
24
29
|
befly.logger.error({ err: error, msg: "获取接口列表失败" });
|
|
25
30
|
return befly.tool.No("获取接口列表失败");
|
|
26
31
|
}
|
|
27
32
|
}
|
|
28
33
|
};
|
|
34
|
+
|
|
35
|
+
export default route;
|
package/apis/auth/sendSmsCode.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import adminTable from "../../tables/admin.json";
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
4
6
|
name: "发送短信验证码",
|
|
5
7
|
auth: false,
|
|
6
8
|
fields: {
|
|
@@ -28,3 +30,5 @@ export default {
|
|
|
28
30
|
return befly.tool.Yes("验证码已发送", isDev ? { code } : null);
|
|
29
31
|
}
|
|
30
32
|
};
|
|
33
|
+
|
|
34
|
+
export default route;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
3
|
+
const route: ApiRoute = {
|
|
2
4
|
name: "获取配置状态",
|
|
3
5
|
handler: async (befly) => {
|
|
4
6
|
const status = {
|
|
@@ -34,3 +36,5 @@ export default {
|
|
|
34
36
|
return befly.tool.Yes("获取成功", status);
|
|
35
37
|
}
|
|
36
38
|
};
|
|
39
|
+
|
|
40
|
+
export default route;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import os from "node:os";
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
4
6
|
name: "获取运行环境信息",
|
|
5
7
|
handler: async (befly) => {
|
|
6
8
|
// 获取数据库版本
|
|
@@ -36,3 +38,5 @@ export default {
|
|
|
36
38
|
});
|
|
37
39
|
}
|
|
38
40
|
};
|
|
41
|
+
|
|
42
|
+
export default route;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
3
|
+
const route: ApiRoute = {
|
|
2
4
|
name: "获取性能指标",
|
|
3
5
|
handler: async (befly) => {
|
|
4
6
|
// 实际项目中,这些数据应该从监控系统或日志中获取
|
|
@@ -15,3 +17,5 @@ export default {
|
|
|
15
17
|
});
|
|
16
18
|
}
|
|
17
19
|
};
|
|
20
|
+
|
|
21
|
+
export default route;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
3
|
+
const route: ApiRoute = {
|
|
2
4
|
name: "获取服务状态",
|
|
3
5
|
handler: async (befly) => {
|
|
4
|
-
const services = [];
|
|
6
|
+
const services: Array<{ name: string; status: string; responseTime: string }> = [];
|
|
5
7
|
|
|
6
8
|
// 数据库状态
|
|
7
9
|
try {
|
|
@@ -73,3 +75,5 @@ export default {
|
|
|
73
75
|
return befly.tool.Yes("获取成功", { services });
|
|
74
76
|
}
|
|
75
77
|
};
|
|
78
|
+
|
|
79
|
+
export default route;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import fs from "node:fs";
|
|
2
4
|
import os from "node:os";
|
|
3
5
|
import { promisify } from "node:util";
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
const route: ApiRoute = {
|
|
6
8
|
name: "获取系统资源",
|
|
7
9
|
auth: true,
|
|
8
10
|
fields: {},
|
|
@@ -112,3 +114,5 @@ export default {
|
|
|
112
114
|
});
|
|
113
115
|
}
|
|
114
116
|
};
|
|
117
|
+
|
|
118
|
+
export default route;
|
package/apis/dict/all.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DbJsonRow } from "../../utils/dbJsonRow";
|
|
2
|
+
import type { ApiRoute } from "befly/types/api";
|
|
3
|
+
|
|
4
|
+
const route: ApiRoute = {
|
|
2
5
|
name: "获取所有字典",
|
|
3
6
|
handler: async (befly) => {
|
|
4
|
-
const result = await befly.db.getAll({
|
|
7
|
+
const result = await befly.db.getAll<DbJsonRow>({
|
|
5
8
|
table: "addon_admin_dict",
|
|
6
9
|
joins: [
|
|
7
10
|
{
|
|
@@ -27,3 +30,5 @@ export default {
|
|
|
27
30
|
return befly.tool.Yes("获取成功", result.data);
|
|
28
31
|
}
|
|
29
32
|
};
|
|
33
|
+
|
|
34
|
+
export default route;
|
package/apis/dict/ins.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { ApiRoute } from "befly/types/api";
|
|
|
2
2
|
|
|
3
3
|
import adminDictTable from "../../tables/dict.json";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
6
6
|
name: "添加字典",
|
|
7
7
|
fields: adminDictTable,
|
|
8
8
|
required: ["typeCode", "key", "label"],
|
|
@@ -43,4 +43,6 @@ export default {
|
|
|
43
43
|
|
|
44
44
|
return befly.tool.Yes("添加成功", { id: dictId.data });
|
|
45
45
|
}
|
|
46
|
-
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default route;
|
package/apis/dict/items.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { DbJsonRow } from "../../utils/dbJsonRow";
|
|
1
2
|
import type { ApiRoute } from "befly/types/api";
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
const route: ApiRoute = {
|
|
4
5
|
name: "获取字典项列表",
|
|
5
6
|
fields: {
|
|
6
7
|
typeCode: { type: "string", label: "类型代码", required: true }
|
|
@@ -18,7 +19,7 @@ export default {
|
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
// 获取该类型下的所有字典项
|
|
21
|
-
const items = await befly.db.getAll({
|
|
22
|
+
const items = await befly.db.getAll<DbJsonRow>({
|
|
22
23
|
table: "addon_admin_dict",
|
|
23
24
|
where: { typeCode: ctx.body.typeCode },
|
|
24
25
|
orderBy: ["sort#ASC", "id#ASC"]
|
|
@@ -26,4 +27,6 @@ export default {
|
|
|
26
27
|
|
|
27
28
|
return befly.tool.Yes("获取成功", items.data);
|
|
28
29
|
}
|
|
29
|
-
}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export default route;
|
package/apis/dictType/all.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DbJsonRow } from "../../utils/dbJsonRow";
|
|
2
|
+
import type { ApiRoute } from "befly/types/api";
|
|
3
|
+
|
|
4
|
+
const route: ApiRoute = {
|
|
2
5
|
name: "获取所有字典类型",
|
|
3
6
|
handler: async (befly) => {
|
|
4
|
-
const result = await befly.db.getAll({
|
|
7
|
+
const result = await befly.db.getAll<DbJsonRow>({
|
|
5
8
|
table: "addon_admin_dict_type",
|
|
6
9
|
orderBy: ["sort#ASC", "id#ASC"]
|
|
7
10
|
});
|
|
@@ -9,3 +12,5 @@ export default {
|
|
|
9
12
|
return befly.tool.Yes("操作成功", { lists: result.data.lists });
|
|
10
13
|
}
|
|
11
14
|
};
|
|
15
|
+
|
|
16
|
+
export default route;
|
package/apis/dictType/ins.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import dictTypeTable from "../../tables/dictType.json";
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
4
6
|
name: "添加字典类型",
|
|
5
7
|
fields: dictTypeTable,
|
|
6
8
|
required: ["code", "name"],
|
|
@@ -28,3 +30,5 @@ export default {
|
|
|
28
30
|
return befly.tool.Yes("添加成功", { id: typeId.data });
|
|
29
31
|
}
|
|
30
32
|
};
|
|
33
|
+
|
|
34
|
+
export default route;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EmailConfig, SendEmailOptions, SendEmailResult } from "../../libs/emailHelper";
|
|
2
|
+
import type { BeflyContext } from "befly/types/befly";
|
|
3
|
+
|
|
4
|
+
export type AddonAdminEmailPlugin = {
|
|
5
|
+
send: (options: SendEmailOptions) => Promise<SendEmailResult>;
|
|
6
|
+
verify: () => Promise<boolean>;
|
|
7
|
+
getConfig: () => Omit<EmailConfig, "pass"> & { pass: string };
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export function getAddonAdminEmailPlugin(befly: BeflyContext): AddonAdminEmailPlugin | null {
|
|
11
|
+
const plugin = befly["addon_admin_email"];
|
|
12
|
+
if (typeof plugin !== "object" || plugin === null) return null;
|
|
13
|
+
|
|
14
|
+
const record = plugin as Record<string, unknown>;
|
|
15
|
+
|
|
16
|
+
if (typeof record["send"] !== "function") return null;
|
|
17
|
+
if (typeof record["verify"] !== "function") return null;
|
|
18
|
+
if (typeof record["getConfig"] !== "function") return null;
|
|
19
|
+
|
|
20
|
+
return plugin as AddonAdminEmailPlugin;
|
|
21
|
+
}
|
package/apis/email/config.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
3
|
+
import { getAddonAdminEmailPlugin } from "./_emailPlugin";
|
|
4
|
+
|
|
5
|
+
const route: ApiRoute = {
|
|
2
6
|
name: "获取邮件配置",
|
|
3
7
|
handler: async (befly) => {
|
|
4
|
-
|
|
8
|
+
const emailPlugin = getAddonAdminEmailPlugin(befly);
|
|
9
|
+
if (!emailPlugin) {
|
|
5
10
|
return befly.tool.No("邮件插件未加载,请检查配置");
|
|
6
11
|
}
|
|
7
12
|
|
|
8
|
-
const config =
|
|
13
|
+
const config = emailPlugin.getConfig();
|
|
9
14
|
|
|
10
15
|
return befly.tool.Yes("获取成功", {
|
|
11
16
|
host: config.host,
|
|
@@ -18,3 +23,5 @@ export default {
|
|
|
18
23
|
});
|
|
19
24
|
}
|
|
20
25
|
};
|
|
26
|
+
|
|
27
|
+
export default route;
|
package/apis/email/send.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import emailLogTable from "../../tables/emailLog.json";
|
|
4
|
+
import { getAddonAdminEmailPlugin } from "./_emailPlugin";
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
const route: ApiRoute = {
|
|
4
7
|
name: "发送邮件",
|
|
5
8
|
fields: {
|
|
6
9
|
to: emailLogTable.toEmail,
|
|
@@ -21,14 +24,15 @@ export default {
|
|
|
21
24
|
},
|
|
22
25
|
required: ["to", "subject", "content"],
|
|
23
26
|
handler: async (befly, ctx) => {
|
|
24
|
-
|
|
27
|
+
const emailPlugin = getAddonAdminEmailPlugin(befly);
|
|
28
|
+
if (!emailPlugin) {
|
|
25
29
|
return befly.tool.No("邮件插件未加载,请检查配置");
|
|
26
30
|
}
|
|
27
31
|
|
|
28
32
|
const startTime = Date.now();
|
|
29
33
|
|
|
30
34
|
// 发送邮件
|
|
31
|
-
const result = await
|
|
35
|
+
const result = await emailPlugin.send({
|
|
32
36
|
to: ctx.body.to,
|
|
33
37
|
subject: ctx.body.subject,
|
|
34
38
|
html: ctx.body.isHtml ? ctx.body.content : undefined,
|
|
@@ -56,7 +60,7 @@ export default {
|
|
|
56
60
|
failReason: result.error || ""
|
|
57
61
|
}
|
|
58
62
|
});
|
|
59
|
-
} catch (logError:
|
|
63
|
+
} catch (logError: unknown) {
|
|
60
64
|
befly.logger.error({ err: logError, msg: "记录邮件日志失败" });
|
|
61
65
|
}
|
|
62
66
|
|
|
@@ -67,3 +71,5 @@ export default {
|
|
|
67
71
|
return befly.tool.No(result.error || "发送失败");
|
|
68
72
|
}
|
|
69
73
|
};
|
|
74
|
+
|
|
75
|
+
export default route;
|
package/apis/email/verify.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
3
|
+
import { getAddonAdminEmailPlugin } from "./_emailPlugin";
|
|
4
|
+
|
|
5
|
+
const route: ApiRoute = {
|
|
2
6
|
name: "验证邮件配置",
|
|
3
7
|
handler: async (befly) => {
|
|
4
|
-
|
|
8
|
+
const emailPlugin = getAddonAdminEmailPlugin(befly);
|
|
9
|
+
if (!emailPlugin) {
|
|
5
10
|
return befly.tool.No("邮件插件未加载,请检查配置");
|
|
6
11
|
}
|
|
7
12
|
|
|
8
|
-
const isValid = await
|
|
13
|
+
const isValid = await emailPlugin.verify();
|
|
9
14
|
|
|
10
15
|
if (isValid) {
|
|
11
16
|
return befly.tool.Yes("邮件服务配置正常");
|
|
@@ -14,3 +19,5 @@ export default {
|
|
|
14
19
|
return befly.tool.No("邮件服务配置异常,请检查 SMTP 设置");
|
|
15
20
|
}
|
|
16
21
|
};
|
|
22
|
+
|
|
23
|
+
export default route;
|
package/apis/menu/all.ts
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
* 4. 仅返回状态为启用的菜单
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import type { DbJsonRow } from "../../utils/dbJsonRow";
|
|
10
11
|
import type { ApiRoute } from "befly/types/api";
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
const route: ApiRoute = {
|
|
13
14
|
name: "获取用户菜单",
|
|
14
15
|
handler: async (befly, ctx) => {
|
|
15
16
|
try {
|
|
@@ -32,11 +33,11 @@ export default {
|
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
// 4. 从缓存获取所有菜单
|
|
35
|
-
let allMenus = await befly.cache.getMenus();
|
|
36
|
+
let allMenus: unknown[] = await befly.cache.getMenus();
|
|
36
37
|
|
|
37
38
|
// 如果缓存不存在,从数据库查询
|
|
38
39
|
if (allMenus.length === 0) {
|
|
39
|
-
const result = await befly.db.getAll({
|
|
40
|
+
const result = await befly.db.getAll<DbJsonRow>({
|
|
40
41
|
table: "addon_admin_menu"
|
|
41
42
|
});
|
|
42
43
|
allMenus = result.data.lists;
|
|
@@ -48,13 +49,13 @@ export default {
|
|
|
48
49
|
|
|
49
50
|
// 5. 根据角色权限过滤菜单(按 menu.path)
|
|
50
51
|
const menuPathSet = new Set<string>(menuPaths);
|
|
51
|
-
const authorizedMenus = allMenus
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
52
|
+
const authorizedMenus = allMenus
|
|
53
|
+
.filter((menu): menu is Record<string, unknown> => typeof menu === "object" && menu !== null)
|
|
54
|
+
.filter((menu) => {
|
|
55
|
+
const path = menu["path"];
|
|
56
|
+
return typeof path === "string" && menuPathSet.has(path);
|
|
57
|
+
})
|
|
58
|
+
.map((menu) => menu as DbJsonRow);
|
|
58
59
|
|
|
59
60
|
// 6. 返回一维数组(由前端构建树形结构)
|
|
60
61
|
return befly.tool.Yes("获取菜单成功", { lists: authorizedMenus });
|
|
@@ -63,4 +64,6 @@ export default {
|
|
|
63
64
|
return befly.tool.No("获取菜单失败");
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default route;
|
package/apis/role/all.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import type { DbJsonRow } from "../../utils/dbJsonRow";
|
|
2
|
+
import type { ApiRoute } from "befly/types/api";
|
|
3
|
+
|
|
4
|
+
const route: ApiRoute = {
|
|
2
5
|
name: "获取所有角色",
|
|
3
6
|
handler: async (befly) => {
|
|
4
|
-
const roles = await befly.db.getAll({
|
|
7
|
+
const roles = await befly.db.getAll<DbJsonRow>({
|
|
5
8
|
table: "addon_admin_role",
|
|
6
9
|
where: {
|
|
7
10
|
code: {
|
|
@@ -14,3 +17,5 @@ export default {
|
|
|
14
17
|
return befly.tool.Yes("操作成功", { lists: roles.data.lists, total: roles.data.total });
|
|
15
18
|
}
|
|
16
19
|
};
|
|
20
|
+
|
|
21
|
+
export default route;
|
package/apis/role/apiSave.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ApiRoute } from "befly/types/api";
|
|
|
3
3
|
import adminRoleTable from "../../tables/role.json";
|
|
4
4
|
import { normalizePathnameListInput } from "../../utils/normalizePathnameListInput";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const route: ApiRoute = {
|
|
7
7
|
name: "保存角色接口权限",
|
|
8
8
|
fields: {
|
|
9
9
|
roleCode: adminRoleTable.code,
|
|
@@ -47,4 +47,6 @@ export default {
|
|
|
47
47
|
|
|
48
48
|
return befly.tool.Yes("操作成功");
|
|
49
49
|
}
|
|
50
|
-
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export default route;
|
package/apis/role/apis.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import adminRoleTable from "../../tables/role.json";
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
4
6
|
name: "获取角色接口权限",
|
|
5
7
|
fields: {
|
|
6
8
|
roleCode: adminRoleTable.code
|
|
@@ -17,8 +19,11 @@ export default {
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
// 数据库自动将 array_text 转换为数组
|
|
20
|
-
const
|
|
22
|
+
const rawApiPaths = Array.isArray(role.data.apis) ? role.data.apis : [];
|
|
23
|
+
const apiPaths = rawApiPaths.map((p: unknown) => (typeof p === "string" ? p.trim() : "")).filter((p: string) => p.length > 0);
|
|
21
24
|
|
|
22
25
|
return befly.tool.Yes("操作成功", { apiPaths: apiPaths });
|
|
23
26
|
}
|
|
24
27
|
};
|
|
28
|
+
|
|
29
|
+
export default route;
|
package/apis/role/ins.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import adminRoleTable from "../../tables/role.json";
|
|
2
4
|
import { normalizePathnameListInput } from "../../utils/normalizePathnameListInput";
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
const route: ApiRoute = {
|
|
5
7
|
name: "创建角色",
|
|
6
8
|
fields: adminRoleTable,
|
|
7
9
|
handler: async (befly, ctx) => {
|
|
@@ -45,3 +47,5 @@ export default {
|
|
|
45
47
|
return befly.tool.Yes("操作成功", { id: roleId.data });
|
|
46
48
|
}
|
|
47
49
|
};
|
|
50
|
+
|
|
51
|
+
export default route;
|
package/apis/role/menuSave.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import adminRoleTable from "../../tables/role.json";
|
|
2
4
|
import { normalizePathnameListInput } from "../../utils/normalizePathnameListInput";
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
const route: ApiRoute = {
|
|
5
7
|
name: "保存角色菜单权限",
|
|
6
8
|
fields: {
|
|
7
9
|
roleCode: adminRoleTable.code,
|
|
@@ -37,3 +39,5 @@ export default {
|
|
|
37
39
|
return befly.tool.Yes("操作成功");
|
|
38
40
|
}
|
|
39
41
|
};
|
|
42
|
+
|
|
43
|
+
export default route;
|
package/apis/role/menus.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import adminRoleTable from "../../tables/role.json";
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
4
6
|
name: "获取角色菜单权限",
|
|
5
7
|
fields: {
|
|
6
8
|
roleCode: adminRoleTable.code
|
|
@@ -22,3 +24,5 @@ export default {
|
|
|
22
24
|
return befly.tool.Yes("操作成功", menuPaths);
|
|
23
25
|
}
|
|
24
26
|
};
|
|
27
|
+
|
|
28
|
+
export default route;
|
package/apis/role/save.ts
CHANGED
package/apis/role/upd.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
1
3
|
import adminRoleTable from "../../tables/role.json";
|
|
2
4
|
import { normalizePathnameListInput } from "../../utils/normalizePathnameListInput";
|
|
3
5
|
|
|
4
|
-
|
|
6
|
+
const route: ApiRoute = {
|
|
5
7
|
name: "更新角色",
|
|
6
8
|
fields: adminRoleTable,
|
|
7
9
|
handler: async (befly, ctx) => {
|
|
@@ -49,3 +51,5 @@ export default {
|
|
|
49
51
|
return befly.tool.Yes("操作成功");
|
|
50
52
|
}
|
|
51
53
|
};
|
|
54
|
+
|
|
55
|
+
export default route;
|
package/apis/sysConfig/all.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import type { ApiRoute } from "befly/types/api";
|
|
2
|
+
|
|
3
|
+
const route: ApiRoute = {
|
|
2
4
|
name: "获取所有系统配置",
|
|
3
5
|
handler: async (befly) => {
|
|
4
6
|
const result = await befly.db.getAll({
|
|
@@ -9,3 +11,5 @@ export default {
|
|
|
9
11
|
return befly.tool.Yes("操作成功", { lists: result.data.lists });
|
|
10
12
|
}
|
|
11
13
|
};
|
|
14
|
+
|
|
15
|
+
export default route;
|
package/apis/sysConfig/get.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ApiRoute } from "befly/types/api";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const route: ApiRoute = {
|
|
4
4
|
name: "根据代码获取配置值",
|
|
5
5
|
auth: false,
|
|
6
6
|
fields: {
|
|
@@ -48,4 +48,6 @@ export default {
|
|
|
48
48
|
|
|
49
49
|
return befly.tool.Yes("操作成功", { code: code, value: value });
|
|
50
50
|
}
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export default route;
|
package/apis/sysConfig/ins.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { ApiRoute } from "befly/types/api";
|
|
|
2
2
|
|
|
3
3
|
import sysConfigTable from "../../tables/sysConfig.json";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const route: ApiRoute = {
|
|
6
6
|
name: "添加系统配置",
|
|
7
7
|
fields: sysConfigTable,
|
|
8
8
|
handler: async (befly, ctx) => {
|
|
@@ -37,4 +37,6 @@ export default {
|
|
|
37
37
|
return befly.tool.No("操作失败");
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export default route;
|