@befly-addon/admin 1.2.13 → 1.2.14
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/apis/admin/cacheRefresh.ts +7 -7
- package/apis/admin/del.ts +2 -2
- package/apis/admin/detail.ts +2 -2
- package/apis/admin/ins.ts +4 -4
- package/apis/admin/list.ts +1 -1
- package/apis/admin/upd.ts +7 -7
- package/apis/api/all.ts +1 -1
- package/apis/api/list.ts +1 -1
- package/apis/auth/login.ts +11 -11
- package/apis/dashboard/environmentInfo.ts +1 -1
- package/apis/dashboard/permissionStats.ts +3 -3
- package/apis/dashboard/systemOverview.ts +3 -3
- package/apis/dict/all.ts +1 -1
- package/apis/dict/detail.ts +2 -2
- package/apis/dict/ins.ts +3 -3
- package/apis/dict/items.ts +2 -2
- package/apis/dict/list.ts +1 -1
- package/apis/dict/upd.ts +4 -4
- package/apis/dictType/all.ts +1 -1
- package/apis/dictType/del.ts +11 -7
- package/apis/dictType/detail.ts +3 -3
- package/apis/dictType/ins.ts +2 -2
- package/apis/dictType/list.ts +1 -1
- package/apis/dictType/upd.ts +1 -1
- package/apis/email/logList.ts +1 -1
- package/apis/loginLog/list.ts +1 -1
- package/apis/menu/all.ts +3 -3
- package/apis/menu/list.ts +1 -1
- package/apis/operateLog/list.ts +1 -1
- package/apis/role/all.ts +1 -1
- package/apis/role/apiSave.ts +2 -2
- package/apis/role/apis.ts +2 -2
- package/apis/role/del.ts +6 -6
- package/apis/role/detail.ts +3 -1
- package/apis/role/ins.ts +2 -2
- package/apis/role/list.ts +1 -1
- package/apis/role/menuSave.ts +1 -1
- package/apis/role/menus.ts +2 -2
- package/apis/role/save.ts +3 -3
- package/apis/role/upd.ts +1 -1
- package/apis/sysConfig/all.ts +1 -1
- package/apis/sysConfig/del.ts +3 -3
- package/apis/sysConfig/get.ts +11 -11
- package/apis/sysConfig/ins.ts +3 -3
- package/apis/sysConfig/list.ts +1 -1
- package/apis/sysConfig/upd.ts +3 -3
- package/package.json +3 -3
|
@@ -31,8 +31,8 @@ export default {
|
|
|
31
31
|
table: "addon_admin_api"
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
await befly.redis.setObject(CacheKeys.apisAll(), apis.lists);
|
|
35
|
-
results.apis = { success: true, count: apis.lists.length };
|
|
34
|
+
await befly.redis.setObject(CacheKeys.apisAll(), apis.data.lists);
|
|
35
|
+
results.apis = { success: true, count: apis.data.lists.length };
|
|
36
36
|
} catch (error: any) {
|
|
37
37
|
befly.logger.error({ err: error }, "刷新接口缓存失败");
|
|
38
38
|
results.apis = { success: false, error: error.message };
|
|
@@ -44,14 +44,14 @@ export default {
|
|
|
44
44
|
table: "addon_admin_menu"
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
await befly.redis.setObject(CacheKeys.menusAll(), menus.lists);
|
|
47
|
+
await befly.redis.setObject(CacheKeys.menusAll(), menus.data.lists);
|
|
48
48
|
|
|
49
|
-
const parentCount = menus.lists.filter((m: any) => typeof m.parentPath !== "string" || m.parentPath.length === 0).length;
|
|
50
|
-
const childCount = menus.lists.filter((m: any) => typeof m.parentPath === "string" && m.parentPath.length > 0).length;
|
|
49
|
+
const parentCount = menus.data.lists.filter((m: any) => typeof m.parentPath !== "string" || m.parentPath.length === 0).length;
|
|
50
|
+
const childCount = menus.data.lists.filter((m: any) => typeof m.parentPath === "string" && m.parentPath.length > 0).length;
|
|
51
51
|
|
|
52
52
|
results.menus = {
|
|
53
53
|
success: true,
|
|
54
|
-
count: menus.lists.length,
|
|
54
|
+
count: menus.data.lists.length,
|
|
55
55
|
parentCount: parentCount,
|
|
56
56
|
childCount: childCount
|
|
57
57
|
};
|
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
|
|
69
69
|
// 使用 setBatch 批量缓存所有角色
|
|
70
70
|
const count = await befly.redis.setBatch(
|
|
71
|
-
roles.lists.map((role: any) => ({
|
|
71
|
+
roles.data.lists.map((role: any) => ({
|
|
72
72
|
key: CacheKeys.roleInfo(role.code),
|
|
73
73
|
value: role
|
|
74
74
|
}))
|
package/apis/admin/del.ts
CHANGED
|
@@ -11,12 +11,12 @@ export default {
|
|
|
11
11
|
where: { id: ctx.body.id }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (!adminData?.id) {
|
|
14
|
+
if (!adminData.data?.id) {
|
|
15
15
|
return befly.tool.No("管理员不存在");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// 不能删除 dev 角色的管理员
|
|
19
|
-
if (adminData.roleCode === "dev") {
|
|
19
|
+
if (adminData.data.roleCode === "dev") {
|
|
20
20
|
return befly.tool.No("不能删除开发管理员");
|
|
21
21
|
}
|
|
22
22
|
|
package/apis/admin/detail.ts
CHANGED
|
@@ -10,10 +10,10 @@ export default {
|
|
|
10
10
|
where: { id: ctx.user?.id }
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
-
if (!adminData?.id) {
|
|
13
|
+
if (!adminData.data?.id) {
|
|
14
14
|
return befly.tool.No("管理员不存在");
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
return befly.tool.Yes("查询成功", adminData);
|
|
17
|
+
return befly.tool.Yes("查询成功", adminData.data);
|
|
18
18
|
}
|
|
19
19
|
};
|
package/apis/admin/ins.ts
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
where: { username: ctx.body.username }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (existingByUsername?.id) {
|
|
14
|
+
if (existingByUsername.data?.id) {
|
|
15
15
|
return befly.tool.No("用户名已被使用");
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -22,7 +22,7 @@ export default {
|
|
|
22
22
|
where: { nickname: ctx.body.nickname }
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
if (existingByNickname?.id) {
|
|
25
|
+
if (existingByNickname.data?.id) {
|
|
26
26
|
return befly.tool.No("昵称已被使用");
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -33,7 +33,7 @@ export default {
|
|
|
33
33
|
where: { code: ctx.body.roleCode }
|
|
34
34
|
});
|
|
35
35
|
|
|
36
|
-
if (!roleData?.id) {
|
|
36
|
+
if (!roleData.data?.id) {
|
|
37
37
|
return befly.tool.No("角色不存在");
|
|
38
38
|
}
|
|
39
39
|
|
|
@@ -52,7 +52,7 @@ export default {
|
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
return befly.tool.Yes("添加成功", {
|
|
55
|
-
id: adminId
|
|
55
|
+
id: adminId.data
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
};
|
package/apis/admin/list.ts
CHANGED
package/apis/admin/upd.ts
CHANGED
|
@@ -13,39 +13,39 @@ export default {
|
|
|
13
13
|
where: { id }
|
|
14
14
|
});
|
|
15
15
|
|
|
16
|
-
if (!admin?.id) {
|
|
16
|
+
if (!admin.data?.id) {
|
|
17
17
|
return befly.tool.No("管理员不存在");
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
// 检查用户名是否已被其他管理员使用
|
|
21
|
-
if (username && username !== admin.username) {
|
|
21
|
+
if (username && username !== admin.data.username) {
|
|
22
22
|
const existingUsername = await befly.db.getOne({
|
|
23
23
|
table: "addon_admin_admin",
|
|
24
24
|
where: { username, id: { $ne: id } }
|
|
25
25
|
});
|
|
26
|
-
if (existingUsername?.id) {
|
|
26
|
+
if (existingUsername.data?.id) {
|
|
27
27
|
return befly.tool.No("用户名已被使用");
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
// 检查昵称是否已被其他管理员使用
|
|
32
|
-
if (nickname && nickname !== admin.nickname) {
|
|
32
|
+
if (nickname && nickname !== admin.data.nickname) {
|
|
33
33
|
const existingNickname = await befly.db.getOne({
|
|
34
34
|
table: "addon_admin_admin",
|
|
35
35
|
where: { nickname, id: { $ne: id } }
|
|
36
36
|
});
|
|
37
|
-
if (existingNickname?.id) {
|
|
37
|
+
if (existingNickname.data?.id) {
|
|
38
38
|
return befly.tool.No("昵称已被使用");
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
// 检查角色是否存在
|
|
43
|
-
if (roleCode && roleCode !== admin.roleCode) {
|
|
43
|
+
if (roleCode && roleCode !== admin.data.roleCode) {
|
|
44
44
|
const role = await befly.db.getOne({
|
|
45
45
|
table: "addon_admin_role",
|
|
46
46
|
where: { code: roleCode }
|
|
47
47
|
});
|
|
48
|
-
if (!role?.id) {
|
|
48
|
+
if (!role.data?.id) {
|
|
49
49
|
return befly.tool.No("角色不存在");
|
|
50
50
|
}
|
|
51
51
|
}
|
package/apis/api/all.ts
CHANGED
package/apis/api/list.ts
CHANGED
package/apis/auth/login.ts
CHANGED
|
@@ -62,20 +62,20 @@ export default {
|
|
|
62
62
|
where: whereCondition
|
|
63
63
|
});
|
|
64
64
|
|
|
65
|
-
if (!admin?.id) {
|
|
65
|
+
if (!admin.data?.id) {
|
|
66
66
|
logData.failReason = "账号不存在";
|
|
67
67
|
await befly.db.insData({ table: "addon_admin_login_log", data: logData });
|
|
68
68
|
return befly.tool.No("账号或密码错误");
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
// 更新日志数据(已找到用户)
|
|
72
|
-
logData.adminId = admin.id;
|
|
73
|
-
logData.username = admin.username;
|
|
74
|
-
logData.nickname = admin.nickname || "";
|
|
72
|
+
logData.adminId = admin.data.id;
|
|
73
|
+
logData.username = admin.data.username;
|
|
74
|
+
logData.nickname = admin.data.nickname || "";
|
|
75
75
|
|
|
76
76
|
// 验证密码
|
|
77
77
|
try {
|
|
78
|
-
const isValid = await befly.cipher.verifyPassword(ctx.body.password, admin.password);
|
|
78
|
+
const isValid = await befly.cipher.verifyPassword(ctx.body.password, admin.data.password);
|
|
79
79
|
if (!isValid) {
|
|
80
80
|
logData.failReason = "密码错误";
|
|
81
81
|
await befly.db.insData({ table: "addon_admin_login_log", data: logData });
|
|
@@ -89,7 +89,7 @@ export default {
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
// 检查账号状态(state=1 表示正常,state=2 表示禁用)
|
|
92
|
-
if (admin.state === 2) {
|
|
92
|
+
if (admin.data.state === 2) {
|
|
93
93
|
logData.failReason = "账号已被禁用";
|
|
94
94
|
await befly.db.insData({ table: "addon_admin_login_log", data: logData });
|
|
95
95
|
return befly.tool.No("账号已被禁用");
|
|
@@ -102,10 +102,10 @@ export default {
|
|
|
102
102
|
// 生成 JWT Token(包含核心身份信息)
|
|
103
103
|
const token = await befly.jwt.sign(
|
|
104
104
|
{
|
|
105
|
-
id: admin.id,
|
|
106
|
-
nickname: admin.nickname,
|
|
107
|
-
roleCode: admin.roleCode,
|
|
108
|
-
roleType: admin.roleType
|
|
105
|
+
id: admin.data.id,
|
|
106
|
+
nickname: admin.data.nickname,
|
|
107
|
+
roleCode: admin.data.roleCode,
|
|
108
|
+
roleType: admin.data.roleType
|
|
109
109
|
},
|
|
110
110
|
{
|
|
111
111
|
expiresIn: "30d"
|
|
@@ -113,7 +113,7 @@ export default {
|
|
|
113
113
|
);
|
|
114
114
|
|
|
115
115
|
// 返回用户信息(不包含密码)
|
|
116
|
-
const { password: _, ...userWithoutPassword } = admin;
|
|
116
|
+
const { password: _, ...userWithoutPassword } = admin.data;
|
|
117
117
|
|
|
118
118
|
return befly.tool.Yes("登录成功", {
|
|
119
119
|
token: token,
|
|
@@ -7,7 +7,7 @@ export default {
|
|
|
7
7
|
let databaseVersion = "Unknown";
|
|
8
8
|
try {
|
|
9
9
|
const versionResult = await befly.db.query("SELECT VERSION() as version");
|
|
10
|
-
databaseVersion = versionResult?.[0]?.version || "Unknown";
|
|
10
|
+
databaseVersion = versionResult.data?.[0]?.version || "Unknown";
|
|
11
11
|
} catch {
|
|
12
12
|
// 忽略错误
|
|
13
13
|
}
|
package/apis/dict/all.ts
CHANGED
package/apis/dict/detail.ts
CHANGED
|
@@ -27,10 +27,10 @@ export default {
|
|
|
27
27
|
where: { "addon_admin_dict.id": ctx.body.id }
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
if (!dict?.id) {
|
|
30
|
+
if (!dict.data?.id) {
|
|
31
31
|
return befly.tool.No("字典项不存在");
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
return befly.tool.Yes("获取成功", dict);
|
|
34
|
+
return befly.tool.Yes("获取成功", dict.data);
|
|
35
35
|
}
|
|
36
36
|
};
|
package/apis/dict/ins.ts
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
where: { code: ctx.body.typeCode }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (!dictType?.id) {
|
|
14
|
+
if (!dictType.data?.id) {
|
|
15
15
|
return befly.tool.No("字典类型不存在");
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -24,7 +24,7 @@ export default {
|
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
26
|
|
|
27
|
-
if (existing?.id) {
|
|
27
|
+
if (existing.data?.id) {
|
|
28
28
|
return befly.tool.No("该类型下已存在相同的键名");
|
|
29
29
|
}
|
|
30
30
|
|
|
@@ -39,6 +39,6 @@ export default {
|
|
|
39
39
|
}
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
return befly.tool.Yes("添加成功", { id: dictId });
|
|
42
|
+
return befly.tool.Yes("添加成功", { id: dictId.data });
|
|
43
43
|
}
|
|
44
44
|
};
|
package/apis/dict/items.ts
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
where: { code: ctx.body.typeCode }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (!dictType?.id) {
|
|
14
|
+
if (!dictType.data?.id) {
|
|
15
15
|
return befly.tool.No("字典类型不存在");
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -22,6 +22,6 @@ export default {
|
|
|
22
22
|
orderBy: ["sort#ASC", "id#ASC"]
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
return befly.tool.Yes("获取成功", items);
|
|
25
|
+
return befly.tool.Yes("获取成功", items.data);
|
|
26
26
|
}
|
|
27
27
|
};
|
package/apis/dict/list.ts
CHANGED
package/apis/dict/upd.ts
CHANGED
|
@@ -17,7 +17,7 @@ export default {
|
|
|
17
17
|
where: { code: typeCode }
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
if (!dictType?.id) {
|
|
20
|
+
if (!dictType.data?.id) {
|
|
21
21
|
return befly.tool.No("字典类型不存在");
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -29,8 +29,8 @@ export default {
|
|
|
29
29
|
where: { id: id }
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
const checkTypeCode = typeCode || current?.typeCode;
|
|
33
|
-
const checkKey = key || current?.key;
|
|
32
|
+
const checkTypeCode = typeCode || current.data?.typeCode;
|
|
33
|
+
const checkKey = key || current.data?.key;
|
|
34
34
|
|
|
35
35
|
const existing = await befly.db.getOne({
|
|
36
36
|
table: "addon_admin_dict",
|
|
@@ -41,7 +41,7 @@ export default {
|
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
if (existing?.id) {
|
|
44
|
+
if (existing.data?.id) {
|
|
45
45
|
return befly.tool.No("该类型下已存在相同的键名");
|
|
46
46
|
}
|
|
47
47
|
}
|
package/apis/dictType/all.ts
CHANGED
package/apis/dictType/del.ts
CHANGED
|
@@ -5,20 +5,24 @@ export default {
|
|
|
5
5
|
handler: async (befly, ctx) => {
|
|
6
6
|
const { id } = ctx.body;
|
|
7
7
|
|
|
8
|
+
const dictType = await befly.db.getOne({
|
|
9
|
+
table: "addon_admin_dict_type",
|
|
10
|
+
where: { id: id }
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
if (!dictType.data?.code) {
|
|
14
|
+
return befly.tool.No("字典类型不存在");
|
|
15
|
+
}
|
|
16
|
+
|
|
8
17
|
// 检查是否有字典项引用此类型
|
|
9
18
|
const dictItems = await befly.db.getOne({
|
|
10
19
|
table: "addon_admin_dict",
|
|
11
20
|
where: {
|
|
12
|
-
typeCode:
|
|
13
|
-
await befly.db.getOne({
|
|
14
|
-
table: "addon_admin_dict_type",
|
|
15
|
-
where: { id: id }
|
|
16
|
-
})
|
|
17
|
-
)?.code
|
|
21
|
+
typeCode: dictType.data.code
|
|
18
22
|
}
|
|
19
23
|
});
|
|
20
24
|
|
|
21
|
-
if (dictItems?.id) {
|
|
25
|
+
if (dictItems.data?.id) {
|
|
22
26
|
return befly.tool.No("该类型下存在字典项,无法删除");
|
|
23
27
|
}
|
|
24
28
|
|
package/apis/dictType/detail.ts
CHANGED
|
@@ -3,15 +3,15 @@ export default {
|
|
|
3
3
|
fields: { "@id": true },
|
|
4
4
|
required: ["id"],
|
|
5
5
|
handler: async (befly, ctx) => {
|
|
6
|
-
const detail = await befly.db.
|
|
6
|
+
const detail = await befly.db.getOne({
|
|
7
7
|
table: "addon_admin_dict_type",
|
|
8
8
|
where: { id: ctx.body.id }
|
|
9
9
|
});
|
|
10
10
|
|
|
11
|
-
if (!detail?.id) {
|
|
11
|
+
if (!detail.data?.id) {
|
|
12
12
|
return befly.tool.No("字典类型不存在");
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
return befly.tool.Yes("获取成功", detail);
|
|
15
|
+
return befly.tool.Yes("获取成功", detail.data);
|
|
16
16
|
}
|
|
17
17
|
};
|
package/apis/dictType/ins.ts
CHANGED
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
where: { code: ctx.body.code }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (existing?.id) {
|
|
14
|
+
if (existing.data?.id) {
|
|
15
15
|
return befly.tool.No("类型代码已存在");
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -25,6 +25,6 @@ export default {
|
|
|
25
25
|
}
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
return befly.tool.Yes("添加成功", { id: typeId });
|
|
28
|
+
return befly.tool.Yes("添加成功", { id: typeId.data });
|
|
29
29
|
}
|
|
30
30
|
};
|
package/apis/dictType/list.ts
CHANGED
package/apis/dictType/upd.ts
CHANGED
package/apis/email/logList.ts
CHANGED
package/apis/loginLog/list.ts
CHANGED
package/apis/menu/all.ts
CHANGED
|
@@ -17,12 +17,12 @@ export default {
|
|
|
17
17
|
where: { code: ctx.user.roleCode }
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
if (!role?.id) {
|
|
20
|
+
if (!role.data?.id) {
|
|
21
21
|
return befly.tool.No("角色不存在", { lists: [] });
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// 3. 解析菜单路径列表(menu.path 数组,array_text)
|
|
25
|
-
const rawMenuPaths = Array.isArray(role.menus) ? role.menus : [];
|
|
25
|
+
const rawMenuPaths = Array.isArray(role.data.menus) ? role.data.menus : [];
|
|
26
26
|
const menuPaths = rawMenuPaths.map((p: any) => (typeof p === "string" ? p.trim() : "")).filter((p: string) => p.length > 0);
|
|
27
27
|
|
|
28
28
|
if (menuPaths.length === 0) {
|
|
@@ -37,7 +37,7 @@ export default {
|
|
|
37
37
|
const result = await befly.db.getAll({
|
|
38
38
|
table: "addon_admin_menu"
|
|
39
39
|
});
|
|
40
|
-
allMenus = result.lists;
|
|
40
|
+
allMenus = result.data.lists;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
if (allMenus.length === 0) {
|
package/apis/menu/list.ts
CHANGED
|
@@ -12,7 +12,7 @@ export default {
|
|
|
12
12
|
table: "addon_admin_menu"
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
return befly.tool.Yes("操作成功", { lists: menus.lists });
|
|
15
|
+
return befly.tool.Yes("操作成功", { lists: menus.data.lists });
|
|
16
16
|
} catch (error) {
|
|
17
17
|
befly.logger.error({ err: error }, "获取菜单列表失败");
|
|
18
18
|
return befly.tool.No("操作失败");
|
package/apis/operateLog/list.ts
CHANGED
package/apis/role/all.ts
CHANGED
package/apis/role/apiSave.ts
CHANGED
|
@@ -22,7 +22,7 @@ export default {
|
|
|
22
22
|
where: { code: ctx.body.roleCode }
|
|
23
23
|
});
|
|
24
24
|
|
|
25
|
-
if (!role?.id) {
|
|
25
|
+
if (!role.data?.id) {
|
|
26
26
|
return befly.tool.No("角色不存在");
|
|
27
27
|
}
|
|
28
28
|
|
|
@@ -36,7 +36,7 @@ export default {
|
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
// 增量刷新 Redis 权限缓存
|
|
39
|
-
await befly.cache.refreshRoleApiPermissions(role.code, apiPaths);
|
|
39
|
+
await befly.cache.refreshRoleApiPermissions(role.data.code, apiPaths);
|
|
40
40
|
|
|
41
41
|
return befly.tool.Yes("操作成功");
|
|
42
42
|
}
|
package/apis/role/apis.ts
CHANGED
|
@@ -12,12 +12,12 @@ export default {
|
|
|
12
12
|
where: { code: ctx.body.roleCode }
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
if (!role?.id) {
|
|
15
|
+
if (!role.data?.id) {
|
|
16
16
|
return befly.tool.No("角色不存在");
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// 数据库自动将 array_text 转换为数组
|
|
20
|
-
const apiPaths = Array.isArray(role.apis) ? role.apis : [];
|
|
20
|
+
const apiPaths = Array.isArray(role.data.apis) ? role.data.apis : [];
|
|
21
21
|
|
|
22
22
|
return befly.tool.Yes("操作成功", { apiPaths: apiPaths });
|
|
23
23
|
}
|
package/apis/role/del.ts
CHANGED
|
@@ -12,22 +12,22 @@ export default {
|
|
|
12
12
|
fields: ["code"]
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
if (!role?.code) {
|
|
15
|
+
if (!role.data?.code) {
|
|
16
16
|
return befly.tool.No("角色不存在");
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// 禁止删除系统角色
|
|
20
20
|
const systemRoles = ["dev", "user", "admin", "guest"];
|
|
21
|
-
if (systemRoles.includes(role.code)) {
|
|
22
|
-
return befly.tool.No(`系统角色 [${role.code}] 不允许删除`);
|
|
21
|
+
if (systemRoles.includes(role.data.code)) {
|
|
22
|
+
return befly.tool.No(`系统角色 [${role.data.code}] 不允许删除`);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
const adminList = await befly.db.getList({
|
|
26
26
|
table: "addon_admin_admin",
|
|
27
|
-
where: { roleCode: role.code }
|
|
27
|
+
where: { roleCode: role.data.code }
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
if (adminList.total > 0) {
|
|
30
|
+
if (adminList.data.total > 0) {
|
|
31
31
|
return befly.tool.No("该角色已分配给用户,无法删除");
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -38,7 +38,7 @@ export default {
|
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
// 删除角色权限缓存
|
|
41
|
-
await befly.cache.deleteRolePermissions(role.code);
|
|
41
|
+
await befly.cache.deleteRolePermissions(role.data.code);
|
|
42
42
|
|
|
43
43
|
return befly.tool.Yes("操作成功");
|
|
44
44
|
} catch (error: any) {
|
package/apis/role/detail.ts
CHANGED
|
@@ -6,10 +6,12 @@ export default {
|
|
|
6
6
|
handler: async (befly, ctx) => {
|
|
7
7
|
let roleInfo = null;
|
|
8
8
|
if (ctx.body.id && ctx.user.roleType === "admin") {
|
|
9
|
-
|
|
9
|
+
const roleInfoResult = await befly.db.getOne({
|
|
10
10
|
table: "addon_admin_role",
|
|
11
11
|
where: { code: ctx.body.id }
|
|
12
12
|
});
|
|
13
|
+
|
|
14
|
+
roleInfo = roleInfoResult.data;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
return befly.tool.Yes("操作成功", {
|
package/apis/role/ins.ts
CHANGED
|
@@ -23,7 +23,7 @@ export default {
|
|
|
23
23
|
where: { code: ctx.body.code }
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
-
if (existing) {
|
|
26
|
+
if (existing.data?.id) {
|
|
27
27
|
return befly.tool.No("角色代码已存在");
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -43,6 +43,6 @@ export default {
|
|
|
43
43
|
// 增量刷新角色权限缓存
|
|
44
44
|
await befly.cache.refreshRoleApiPermissions(ctx.body.code, apiPaths);
|
|
45
45
|
|
|
46
|
-
return befly.tool.Yes("操作成功", { id: roleId });
|
|
46
|
+
return befly.tool.Yes("操作成功", { id: roleId.data });
|
|
47
47
|
}
|
|
48
48
|
};
|
package/apis/role/list.ts
CHANGED
package/apis/role/menuSave.ts
CHANGED
package/apis/role/menus.ts
CHANGED
|
@@ -12,12 +12,12 @@ export default {
|
|
|
12
12
|
where: { code: ctx.body.roleCode }
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
-
if (!role?.id) {
|
|
15
|
+
if (!role.data?.id) {
|
|
16
16
|
return befly.tool.No("角色不存在");
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
// 数据库自动将 array_text 转换为数组
|
|
20
|
-
const menuPaths = Array.isArray(role.menus) ? role.menus : [];
|
|
20
|
+
const menuPaths = Array.isArray(role.data.menus) ? role.data.menus : [];
|
|
21
21
|
|
|
22
22
|
return befly.tool.Yes("操作成功", menuPaths);
|
|
23
23
|
}
|
package/apis/role/save.ts
CHANGED
|
@@ -17,19 +17,19 @@ export default {
|
|
|
17
17
|
where: { code: ctx.body.roleCode }
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
if (!role?.id) {
|
|
20
|
+
if (!role.data?.id) {
|
|
21
21
|
return befly.tool.No("角色不存在");
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// 根据角色编码判断角色类型(硬编码规则)
|
|
25
|
-
const roleType = role.code === "dev" || role.code === "admin" ? "admin" : "user";
|
|
25
|
+
const roleType = role.data.code === "dev" || role.data.code === "admin" ? "admin" : "user";
|
|
26
26
|
|
|
27
27
|
// 更新管理员的角色编码和角色类型
|
|
28
28
|
await befly.db.updData({
|
|
29
29
|
table: "addon_admin_admin",
|
|
30
30
|
where: { id: ctx.body.adminId },
|
|
31
31
|
data: {
|
|
32
|
-
roleCode: role.code,
|
|
32
|
+
roleCode: role.data.code,
|
|
33
33
|
roleType: roleType
|
|
34
34
|
}
|
|
35
35
|
});
|
package/apis/role/upd.ts
CHANGED
package/apis/sysConfig/all.ts
CHANGED
package/apis/sysConfig/del.ts
CHANGED
|
@@ -6,16 +6,16 @@ export default {
|
|
|
6
6
|
handler: async (befly, ctx) => {
|
|
7
7
|
try {
|
|
8
8
|
// 检查是否为系统配置
|
|
9
|
-
const config = await befly.db.
|
|
9
|
+
const config = await befly.db.getOne({
|
|
10
10
|
table: "addon_admin_sys_config",
|
|
11
11
|
where: { id: ctx.body.id }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (!config?.id) {
|
|
14
|
+
if (!config.data?.id) {
|
|
15
15
|
return befly.tool.No("配置不存在");
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
if (config.isSystem === 1) {
|
|
18
|
+
if (config.data.isSystem === 1) {
|
|
19
19
|
return befly.tool.No("系统配置不允许删除");
|
|
20
20
|
}
|
|
21
21
|
|
package/apis/sysConfig/get.ts
CHANGED
|
@@ -5,29 +5,29 @@ export default {
|
|
|
5
5
|
code: { name: "配置代码", type: "string", min: 1, max: 50 }
|
|
6
6
|
},
|
|
7
7
|
handler: async (befly, ctx) => {
|
|
8
|
-
const config = await befly.db.
|
|
8
|
+
const config = await befly.db.getOne({
|
|
9
9
|
table: "addon_admin_sys_config",
|
|
10
10
|
where: { code: ctx.body.code }
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
-
if (!config?.id) {
|
|
13
|
+
if (!config.data?.id) {
|
|
14
14
|
return befly.tool.No("配置不存在");
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
// 根据类型转换值
|
|
18
|
-
let value = config.value;
|
|
19
|
-
if (config.valueType === "number") {
|
|
20
|
-
value = Number(config.value);
|
|
21
|
-
} else if (config.valueType === "boolean") {
|
|
22
|
-
value = config.value === "true" || config.value === "1";
|
|
23
|
-
} else if (config.valueType === "json") {
|
|
18
|
+
let value = config.data.value;
|
|
19
|
+
if (config.data.valueType === "number") {
|
|
20
|
+
value = Number(config.data.value);
|
|
21
|
+
} else if (config.data.valueType === "boolean") {
|
|
22
|
+
value = config.data.value === "true" || config.data.value === "1";
|
|
23
|
+
} else if (config.data.valueType === "json") {
|
|
24
24
|
try {
|
|
25
|
-
value = JSON.parse(config.value);
|
|
25
|
+
value = JSON.parse(config.data.value);
|
|
26
26
|
} catch {
|
|
27
|
-
value = config.value;
|
|
27
|
+
value = config.data.value;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
return befly.tool.Yes("操作成功", { code: config.code, value: value });
|
|
31
|
+
return befly.tool.Yes("操作成功", { code: config.data.code, value: value });
|
|
32
32
|
}
|
|
33
33
|
};
|
package/apis/sysConfig/ins.ts
CHANGED
|
@@ -6,12 +6,12 @@ export default {
|
|
|
6
6
|
handler: async (befly, ctx) => {
|
|
7
7
|
try {
|
|
8
8
|
// 检查 code 是否已存在
|
|
9
|
-
const existing = await befly.db.
|
|
9
|
+
const existing = await befly.db.getOne({
|
|
10
10
|
table: "addon_admin_sys_config",
|
|
11
11
|
where: { code: ctx.body.code }
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
if (existing) {
|
|
14
|
+
if (existing.data) {
|
|
15
15
|
return befly.tool.No("配置代码已存在");
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -29,7 +29,7 @@ export default {
|
|
|
29
29
|
}
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
return befly.tool.Yes("操作成功", { id: configId });
|
|
32
|
+
return befly.tool.Yes("操作成功", { id: configId.data });
|
|
33
33
|
} catch (error) {
|
|
34
34
|
befly.logger.error({ err: error }, "添加系统配置失败");
|
|
35
35
|
return befly.tool.No("操作失败");
|
package/apis/sysConfig/list.ts
CHANGED
package/apis/sysConfig/upd.ts
CHANGED
|
@@ -9,17 +9,17 @@ export default {
|
|
|
9
9
|
handler: async (befly, ctx) => {
|
|
10
10
|
try {
|
|
11
11
|
// 检查是否为系统配置
|
|
12
|
-
const config = await befly.db.
|
|
12
|
+
const config = await befly.db.getOne({
|
|
13
13
|
table: "addon_admin_sys_config",
|
|
14
14
|
where: { id: ctx.body.id }
|
|
15
15
|
});
|
|
16
16
|
|
|
17
|
-
if (!config?.id) {
|
|
17
|
+
if (!config.data?.id) {
|
|
18
18
|
return befly.tool.No("配置不存在");
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// 系统配置只能修改 value
|
|
22
|
-
if (config.isSystem === 1) {
|
|
22
|
+
if (config.data.isSystem === 1) {
|
|
23
23
|
await befly.db.updData({
|
|
24
24
|
table: "addon_admin_sys_config",
|
|
25
25
|
data: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@befly-addon/admin",
|
|
3
|
-
"version": "1.2.
|
|
4
|
-
"gitHead": "
|
|
3
|
+
"version": "1.2.14",
|
|
4
|
+
"gitHead": "c758a3e8a78966ac35043989fd80cf377ad96006",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Befly - 管理后台功能组件",
|
|
7
7
|
"keywords": [
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"preview": "vite preview"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"befly": "^3.10.
|
|
50
|
+
"befly": "^3.10.14",
|
|
51
51
|
"befly-shared": "^1.3.8",
|
|
52
52
|
"befly-vite": "^1.2.9",
|
|
53
53
|
"nodemailer": "^7.0.12",
|