@befly-addon/admin 1.1.30 → 1.1.31

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 (111) hide show
  1. package/apis/admin/cacheRefresh.ts +29 -21
  2. package/apis/admin/del.ts +10 -10
  3. package/apis/admin/detail.ts +7 -7
  4. package/apis/admin/ins.ts +11 -11
  5. package/apis/admin/list.ts +10 -10
  6. package/apis/admin/upd.ts +14 -14
  7. package/apis/api/all.ts +8 -8
  8. package/apis/api/list.ts +10 -10
  9. package/apis/auth/login.ts +43 -43
  10. package/apis/auth/sendSmsCode.ts +6 -6
  11. package/apis/dashboard/configStatus.ts +18 -18
  12. package/apis/dashboard/environmentInfo.ts +12 -12
  13. package/apis/dashboard/performanceMetrics.ts +5 -5
  14. package/apis/dashboard/permissionStats.ts +7 -7
  15. package/apis/dashboard/serviceStatus.ts +29 -29
  16. package/apis/dashboard/systemInfo.ts +5 -5
  17. package/apis/dashboard/systemOverview.ts +7 -7
  18. package/apis/dashboard/systemResources.ts +8 -8
  19. package/apis/dict/all.ts +16 -16
  20. package/apis/dict/del.ts +6 -6
  21. package/apis/dict/detail.ts +19 -19
  22. package/apis/dict/ins.ts +9 -9
  23. package/apis/dict/items.ts +8 -8
  24. package/apis/dict/list.ts +22 -22
  25. package/apis/dict/upd.ts +11 -11
  26. package/apis/dictType/all.ts +5 -5
  27. package/apis/dictType/del.ts +8 -8
  28. package/apis/dictType/detail.ts +6 -6
  29. package/apis/dictType/ins.ts +7 -7
  30. package/apis/dictType/list.ts +8 -10
  31. package/apis/dictType/upd.ts +8 -8
  32. package/apis/email/config.ts +4 -4
  33. package/apis/email/logList.ts +8 -8
  34. package/apis/email/send.ts +18 -18
  35. package/apis/email/verify.ts +5 -5
  36. package/apis/loginLog/list.ts +8 -8
  37. package/apis/menu/all.ts +16 -18
  38. package/apis/menu/list.ts +12 -12
  39. package/apis/operateLog/list.ts +8 -8
  40. package/apis/role/all.ts +7 -7
  41. package/apis/role/apiSave.ts +10 -13
  42. package/apis/role/apis.ts +7 -12
  43. package/apis/role/del.ts +14 -14
  44. package/apis/role/detail.ts +6 -6
  45. package/apis/role/ins.ts +10 -10
  46. package/apis/role/list.ts +11 -11
  47. package/apis/role/menuSave.ts +8 -11
  48. package/apis/role/menus.ts +7 -12
  49. package/apis/role/save.ts +12 -12
  50. package/apis/role/upd.ts +10 -10
  51. package/apis/sysConfig/all.ts +5 -5
  52. package/apis/sysConfig/del.ts +9 -9
  53. package/apis/sysConfig/get.ts +9 -9
  54. package/apis/sysConfig/ins.ts +11 -11
  55. package/apis/sysConfig/list.ts +9 -9
  56. package/apis/sysConfig/upd.ts +10 -10
  57. package/libs/emailHelper.ts +7 -7
  58. package/package.json +46 -34
  59. package/plugins/email.ts +9 -9
  60. package/tables/role.json +4 -2
  61. package/views/403_1/index.vue +19 -3
  62. package/views/config/dict/components/edit.vue +26 -28
  63. package/views/config/dict/index.vue +88 -52
  64. package/views/config/dictType/components/edit.vue +22 -23
  65. package/views/config/dictType/index.vue +82 -46
  66. package/views/config/index.vue +12 -0
  67. package/views/config/system/components/edit.vue +36 -36
  68. package/views/config/system/index.vue +79 -50
  69. package/views/index/components/addonList.vue +3 -3
  70. package/views/index/components/environmentInfo.vue +10 -10
  71. package/views/index/components/operationLogs.vue +10 -10
  72. package/views/index/components/performanceMetrics.vue +8 -8
  73. package/views/index/components/quickActions.vue +3 -3
  74. package/views/index/components/serviceStatus.vue +19 -19
  75. package/views/index/components/systemNotifications.vue +12 -12
  76. package/views/index/components/systemOverview.vue +7 -7
  77. package/views/index/components/systemResources.vue +11 -11
  78. package/views/index/components/userInfo.vue +20 -19
  79. package/views/index/index.vue +12 -5
  80. package/views/log/email/index.vue +58 -51
  81. package/views/log/index.vue +12 -0
  82. package/views/log/login/index.vue +45 -38
  83. package/views/log/operate/index.vue +55 -48
  84. package/views/login_1/index.vue +25 -18
  85. package/views/people/admin/components/edit.vue +25 -26
  86. package/views/people/admin/index.vue +76 -40
  87. package/views/people/index.vue +12 -0
  88. package/views/permission/api/index.vue +21 -15
  89. package/views/permission/index.vue +12 -0
  90. package/views/permission/menu/index.vue +31 -16
  91. package/views/permission/role/components/api.vue +21 -21
  92. package/views/permission/role/components/edit.vue +18 -18
  93. package/views/permission/role/components/menu.vue +14 -16
  94. package/views/permission/role/index.vue +84 -49
  95. package/views/403_1/meta.json +0 -4
  96. package/views/config/dict/meta.json +0 -4
  97. package/views/config/dictType/meta.json +0 -4
  98. package/views/config/meta.json +0 -4
  99. package/views/config/system/meta.json +0 -4
  100. package/views/index/meta.json +0 -4
  101. package/views/log/email/meta.json +0 -4
  102. package/views/log/login/meta.json +0 -4
  103. package/views/log/meta.json +0 -4
  104. package/views/log/operate/meta.json +0 -4
  105. package/views/login_1/meta.json +0 -4
  106. package/views/people/admin/meta.json +0 -4
  107. package/views/people/meta.json +0 -4
  108. package/views/permission/api/meta.json +0 -4
  109. package/views/permission/menu/meta.json +0 -4
  110. package/views/permission/meta.json +0 -4
  111. package/views/permission/role/meta.json +0 -4
package/apis/dict/upd.ts CHANGED
@@ -1,31 +1,31 @@
1
- import adminDictTable from '../../tables/dict.json';
1
+ import adminDictTable from "../../tables/dict.json";
2
2
 
3
3
  export default {
4
- name: '更新字典',
4
+ name: "更新字典",
5
5
  fields: {
6
6
  ...adminDictTable,
7
- '@id': true
7
+ "@id": true
8
8
  },
9
- required: ['id'],
9
+ required: ["id"],
10
10
  handler: async (befly, ctx) => {
11
11
  const { id, typeCode, key, label, sort, remark } = ctx.body;
12
12
 
13
13
  // 如果更新了 typeCode,验证其是否存在
14
14
  if (typeCode) {
15
15
  const dictType = await befly.db.getOne({
16
- table: 'addon_admin_dict_type',
16
+ table: "addon_admin_dict_type",
17
17
  where: { code: typeCode }
18
18
  });
19
19
 
20
20
  if (!dictType?.id) {
21
- return befly.tool.No('字典类型不存在');
21
+ return befly.tool.No("字典类型不存在");
22
22
  }
23
23
  }
24
24
 
25
25
  // 如果更新了 typeCode 或 key,检查唯一性
26
26
  if (typeCode || key) {
27
27
  const current = await befly.db.getOne({
28
- table: 'addon_admin_dict',
28
+ table: "addon_admin_dict",
29
29
  where: { id: id }
30
30
  });
31
31
 
@@ -33,7 +33,7 @@ export default {
33
33
  const checkKey = key || current?.key;
34
34
 
35
35
  const existing = await befly.db.getOne({
36
- table: 'addon_admin_dict',
36
+ table: "addon_admin_dict",
37
37
  where: {
38
38
  typeCode: checkTypeCode,
39
39
  key: checkKey,
@@ -42,7 +42,7 @@ export default {
42
42
  });
43
43
 
44
44
  if (existing?.id) {
45
- return befly.tool.No('该类型下已存在相同的键名');
45
+ return befly.tool.No("该类型下已存在相同的键名");
46
46
  }
47
47
  }
48
48
 
@@ -54,11 +54,11 @@ export default {
54
54
  if (remark !== undefined) updateData.remark = remark;
55
55
 
56
56
  await befly.db.updData({
57
- table: 'addon_admin_dict',
57
+ table: "addon_admin_dict",
58
58
  data: updateData,
59
59
  where: { id: id }
60
60
  });
61
61
 
62
- return befly.tool.Yes('更新成功');
62
+ return befly.tool.Yes("更新成功");
63
63
  }
64
64
  };
@@ -1,11 +1,11 @@
1
1
  export default {
2
- name: '获取所有字典类型',
3
- handler: async (befly, ctx) => {
2
+ name: "获取所有字典类型",
3
+ handler: async (befly) => {
4
4
  const result = await befly.db.getAll({
5
- table: 'addon_admin_dict_type',
6
- orderBy: ['sort#ASC', 'id#ASC']
5
+ table: "addon_admin_dict_type",
6
+ orderBy: ["sort#ASC", "id#ASC"]
7
7
  });
8
8
 
9
- return befly.tool.Yes('操作成功', { lists: result.lists });
9
+ return befly.tool.Yes("操作成功", { lists: result.lists });
10
10
  }
11
11
  };
@@ -1,17 +1,17 @@
1
1
  export default {
2
- name: '删除字典类型',
3
- fields: { '@id': true },
4
- required: ['id'],
2
+ name: "删除字典类型",
3
+ fields: { "@id": true },
4
+ required: ["id"],
5
5
  handler: async (befly, ctx) => {
6
6
  const { id } = ctx.body;
7
7
 
8
8
  // 检查是否有字典项引用此类型
9
9
  const dictItems = await befly.db.getOne({
10
- table: 'addon_admin_dict',
10
+ table: "addon_admin_dict",
11
11
  where: {
12
12
  typeCode: (
13
13
  await befly.db.getOne({
14
- table: 'addon_admin_dict_type',
14
+ table: "addon_admin_dict_type",
15
15
  where: { id: id }
16
16
  })
17
17
  )?.code
@@ -19,14 +19,14 @@ export default {
19
19
  });
20
20
 
21
21
  if (dictItems?.id) {
22
- return befly.tool.No('该类型下存在字典项,无法删除');
22
+ return befly.tool.No("该类型下存在字典项,无法删除");
23
23
  }
24
24
 
25
25
  await befly.db.delData({
26
- table: 'addon_admin_dict_type',
26
+ table: "addon_admin_dict_type",
27
27
  where: { id: id }
28
28
  });
29
29
 
30
- return befly.tool.Yes('删除成功');
30
+ return befly.tool.Yes("删除成功");
31
31
  }
32
32
  };
@@ -1,17 +1,17 @@
1
1
  export default {
2
- name: '字典类型详情',
3
- fields: { '@id': true },
4
- required: ['id'],
2
+ name: "字典类型详情",
3
+ fields: { "@id": true },
4
+ required: ["id"],
5
5
  handler: async (befly, ctx) => {
6
6
  const detail = await befly.db.getDetail({
7
- table: 'addon_admin_dict_type',
7
+ table: "addon_admin_dict_type",
8
8
  where: { id: ctx.body.id }
9
9
  });
10
10
 
11
11
  if (!detail?.id) {
12
- return befly.tool.No('字典类型不存在');
12
+ return befly.tool.No("字典类型不存在");
13
13
  }
14
14
 
15
- return befly.tool.Yes('获取成功', detail);
15
+ return befly.tool.Yes("获取成功", detail);
16
16
  }
17
17
  };
@@ -1,22 +1,22 @@
1
- import dictTypeTable from '../../tables/dictType.json';
1
+ import dictTypeTable from "../../tables/dictType.json";
2
2
 
3
3
  export default {
4
- name: '添加字典类型',
4
+ name: "添加字典类型",
5
5
  fields: dictTypeTable,
6
- required: ['code', 'name'],
6
+ required: ["code", "name"],
7
7
  handler: async (befly, ctx) => {
8
8
  // 检查代码是否已存在
9
9
  const existing = await befly.db.getOne({
10
- table: 'addon_admin_dict_type',
10
+ table: "addon_admin_dict_type",
11
11
  where: { code: ctx.body.code }
12
12
  });
13
13
 
14
14
  if (existing?.id) {
15
- return befly.tool.No('类型代码已存在');
15
+ return befly.tool.No("类型代码已存在");
16
16
  }
17
17
 
18
18
  const typeId = await befly.db.insData({
19
- table: 'addon_admin_dict_type',
19
+ table: "addon_admin_dict_type",
20
20
  data: {
21
21
  code: ctx.body.code,
22
22
  name: ctx.body.name,
@@ -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 });
29
29
  }
30
30
  };
@@ -1,24 +1,22 @@
1
- import dictTypeTable from '../../tables/dictType.json';
2
-
3
1
  export default {
4
- name: '获取字典类型列表',
2
+ name: "获取字典类型列表",
5
3
  fields: {
6
- page: '@page',
7
- limit: '@limit',
8
- keyword: '@keyword',
9
- state: '@state'
4
+ page: "@page",
5
+ limit: "@limit",
6
+ keyword: "@keyword",
7
+ state: "@state"
10
8
  },
11
9
  handler: async (befly, ctx) => {
12
10
  const result = await befly.db.getList({
13
- table: 'addon_admin_dict_type',
11
+ table: "addon_admin_dict_type",
14
12
  where: {
15
13
  name$like: ctx.body.keyword ? `%${ctx.body.keyword}%` : undefined
16
14
  },
17
- orderBy: ['sort#ASC', 'id#ASC'],
15
+ orderBy: ["sort#ASC", "id#ASC"],
18
16
  page: ctx.body.page,
19
17
  limit: ctx.body.limit
20
18
  });
21
19
 
22
- return befly.tool.Yes('操作成功', result);
20
+ return befly.tool.Yes("操作成功", result);
23
21
  }
24
22
  };
@@ -1,19 +1,19 @@
1
- import dictTypeTable from '../../tables/dictType.json';
1
+ import dictTypeTable from "../../tables/dictType.json";
2
2
 
3
3
  export default {
4
- name: '更新字典类型',
4
+ name: "更新字典类型",
5
5
  fields: {
6
6
  ...dictTypeTable,
7
- '@id': true
7
+ "@id": true
8
8
  },
9
- required: ['id'],
9
+ required: ["id"],
10
10
  handler: async (befly, ctx) => {
11
11
  const { id, code, name, description, sort } = ctx.body;
12
12
 
13
13
  // 如果更新了 code,需要检查是否已被使用
14
14
  if (code) {
15
15
  const existing = await befly.db.getOne({
16
- table: 'addon_admin_dict_type',
16
+ table: "addon_admin_dict_type",
17
17
  where: {
18
18
  code: code,
19
19
  id$ne: id
@@ -21,7 +21,7 @@ export default {
21
21
  });
22
22
 
23
23
  if (existing?.id) {
24
- return befly.tool.No('类型代码已被使用');
24
+ return befly.tool.No("类型代码已被使用");
25
25
  }
26
26
  }
27
27
 
@@ -32,11 +32,11 @@ export default {
32
32
  if (sort !== undefined) updateData.sort = sort;
33
33
 
34
34
  await befly.db.updData({
35
- table: 'addon_admin_dict_type',
35
+ table: "addon_admin_dict_type",
36
36
  data: updateData,
37
37
  where: { id: id }
38
38
  });
39
39
 
40
- return befly.tool.Yes('更新成功');
40
+ return befly.tool.Yes("更新成功");
41
41
  }
42
42
  };
@@ -1,13 +1,13 @@
1
1
  export default {
2
- name: '获取邮件配置',
3
- handler: async (befly, ctx) => {
2
+ name: "获取邮件配置",
3
+ handler: async (befly) => {
4
4
  if (!(befly as any).addon_admin_email) {
5
- return befly.tool.No('邮件插件未加载,请检查配置');
5
+ return befly.tool.No("邮件插件未加载,请检查配置");
6
6
  }
7
7
 
8
8
  const config = (befly as any).addon_admin_email.getConfig();
9
9
 
10
- return befly.tool.Yes('获取成功', {
10
+ return befly.tool.Yes("获取成功", {
11
11
  host: config.host,
12
12
  port: config.port,
13
13
  secure: config.secure,
@@ -1,19 +1,19 @@
1
1
  export default {
2
- name: '邮件发送日志列表',
2
+ name: "邮件发送日志列表",
3
3
  fields: {
4
- page: '@page',
5
- limit: '@limit',
6
- keyword: '@keyword',
7
- state: '@state'
4
+ page: "@page",
5
+ limit: "@limit",
6
+ keyword: "@keyword",
7
+ state: "@state"
8
8
  },
9
9
  handler: async (befly, ctx) => {
10
10
  const result = await befly.db.getList({
11
- table: 'addon_admin_email_log',
11
+ table: "addon_admin_email_log",
12
12
  page: ctx.body.page,
13
13
  limit: ctx.body.limit,
14
- orderBy: ['sendTime#DESC']
14
+ orderBy: ["sendTime#DESC"]
15
15
  });
16
16
 
17
- return befly.tool.Yes('获取成功', result);
17
+ return befly.tool.Yes("获取成功", result);
18
18
  }
19
19
  };
@@ -1,28 +1,28 @@
1
- import emailLogTable from '../../tables/emailLog.json';
1
+ import emailLogTable from "../../tables/emailLog.json";
2
2
 
3
3
  export default {
4
- name: '发送邮件',
4
+ name: "发送邮件",
5
5
  fields: {
6
6
  to: emailLogTable.toEmail,
7
7
  subject: emailLogTable.subject,
8
8
  content: {
9
- name: '邮件内容',
10
- type: 'string',
9
+ name: "邮件内容",
10
+ type: "string",
11
11
  min: 1,
12
12
  max: 50000
13
13
  },
14
14
  cc: emailLogTable.ccEmail,
15
15
  bcc: emailLogTable.bccEmail,
16
16
  isHtml: {
17
- name: '是否HTML',
18
- type: 'boolean',
17
+ name: "是否HTML",
18
+ type: "boolean",
19
19
  default: true
20
20
  }
21
21
  },
22
- required: ['to', 'subject', 'content'],
22
+ required: ["to", "subject", "content"],
23
23
  handler: async (befly, ctx) => {
24
24
  if (!(befly as any).addon_admin_email) {
25
- return befly.tool.No('邮件插件未加载,请检查配置');
25
+ return befly.tool.No("邮件插件未加载,请检查配置");
26
26
  }
27
27
 
28
28
  const startTime = Date.now();
@@ -40,30 +40,30 @@ export default {
40
40
  // 记录邮件发送日志
41
41
  try {
42
42
  await befly.db.insData({
43
- table: 'addon_admin_email_log',
43
+ table: "addon_admin_email_log",
44
44
  data: {
45
45
  adminId: ctx.user?.id || 0,
46
- username: ctx.user?.username || '',
47
- nickname: ctx.user?.nickname || '',
46
+ username: ctx.user?.username || "",
47
+ nickname: ctx.user?.nickname || "",
48
48
  toEmail: ctx.body.to,
49
49
  subject: ctx.body.subject,
50
50
  content: ctx.body.content,
51
- ccEmail: ctx.body.cc || '',
52
- bccEmail: ctx.body.bcc || '',
51
+ ccEmail: ctx.body.cc || "",
52
+ bccEmail: ctx.body.bcc || "",
53
53
  sendTime: startTime,
54
54
  sendResult: result.success ? 1 : 0,
55
- messageId: result.messageId || '',
56
- failReason: result.error || ''
55
+ messageId: result.messageId || "",
56
+ failReason: result.error || ""
57
57
  }
58
58
  });
59
59
  } catch (logError: any) {
60
- befly.logger.error({ err: logError }, '记录邮件日志失败');
60
+ befly.logger.error({ err: logError }, "记录邮件日志失败");
61
61
  }
62
62
 
63
63
  if (result.success) {
64
- return befly.tool.Yes('发送成功', { messageId: result.messageId });
64
+ return befly.tool.Yes("发送成功", { messageId: result.messageId });
65
65
  }
66
66
 
67
- return befly.tool.No(result.error || '发送失败');
67
+ return befly.tool.No(result.error || "发送失败");
68
68
  }
69
69
  };
@@ -1,16 +1,16 @@
1
1
  export default {
2
- name: '验证邮件配置',
3
- handler: async (befly, ctx) => {
2
+ name: "验证邮件配置",
3
+ handler: async (befly) => {
4
4
  if (!(befly as any).addon_admin_email) {
5
- return befly.tool.No('邮件插件未加载,请检查配置');
5
+ return befly.tool.No("邮件插件未加载,请检查配置");
6
6
  }
7
7
 
8
8
  const isValid = await (befly as any).addon_admin_email.verify();
9
9
 
10
10
  if (isValid) {
11
- return befly.tool.Yes('邮件服务配置正常');
11
+ return befly.tool.Yes("邮件服务配置正常");
12
12
  }
13
13
 
14
- return befly.tool.No('邮件服务配置异常,请检查 SMTP 设置');
14
+ return befly.tool.No("邮件服务配置异常,请检查 SMTP 设置");
15
15
  }
16
16
  };
@@ -1,19 +1,19 @@
1
1
  export default {
2
- name: '获取登录日志列表',
2
+ name: "获取登录日志列表",
3
3
  fields: {
4
- page: '@page',
5
- limit: '@limit',
6
- keyword: '@keyword',
7
- state: '@state'
4
+ page: "@page",
5
+ limit: "@limit",
6
+ keyword: "@keyword",
7
+ state: "@state"
8
8
  },
9
9
  handler: async (befly, ctx) => {
10
10
  const result = await befly.db.getList({
11
- table: 'addon_admin_login_log',
11
+ table: "addon_admin_login_log",
12
12
  page: ctx.body.page,
13
13
  limit: ctx.body.limit,
14
- orderBy: ['loginTime#DESC']
14
+ orderBy: ["loginTime#DESC"]
15
15
  });
16
16
 
17
- return befly.tool.Yes('获取成功', result);
17
+ return befly.tool.Yes("获取成功", result);
18
18
  }
19
19
  };
package/apis/menu/all.ts CHANGED
@@ -1,4 +1,4 @@
1
- /**
1
+ /**
2
2
  * 获取当前用户的菜单权限
3
3
  * 说明:
4
4
  * 1. 从 Redis 缓存读取所有菜单(如果缓存不存在则从数据库查询并缓存)
@@ -8,27 +8,25 @@
8
8
  */
9
9
 
10
10
  export default {
11
- name: '获取用户菜单',
11
+ name: "获取用户菜单",
12
12
  handler: async (befly, ctx) => {
13
13
  try {
14
14
  // 2. 查询角色信息获取菜单权限(使用 roleCode 而非 roleId)
15
15
  const role = await befly.db.getOne({
16
- table: 'addon_admin_role',
16
+ table: "addon_admin_role",
17
17
  where: { code: ctx.user.roleCode }
18
18
  });
19
19
 
20
20
  if (!role?.id) {
21
- return befly.tool.No('角色不存在', { lists: [] });
21
+ return befly.tool.No("角色不存在", { lists: [] });
22
22
  }
23
23
 
24
- // 3. 解析菜单ID列表(逗号分隔的字符串)
25
- const menuIds = role.menus
26
- .split(',')
27
- .map((id: string) => parseInt(id.trim()))
28
- .filter((id: number) => !isNaN(id));
24
+ // 3. 解析菜单ID列表(数组,数据库字段已改为 array 存储)
25
+ const rawMenuIds = Array.isArray(role.menus) ? role.menus : [];
26
+ const menuIds = rawMenuIds.map((id: any) => Number(id)).filter((id: number) => Number.isFinite(id));
29
27
 
30
28
  if (menuIds.length === 0) {
31
- return befly.tool.Yes('菜单为空', { lists: [] });
29
+ return befly.tool.Yes("菜单为空", { lists: [] });
32
30
  }
33
31
 
34
32
  // 4. 从缓存获取所有菜单
@@ -37,25 +35,25 @@ export default {
37
35
  // 如果缓存不存在,从数据库查询
38
36
  if (allMenus.length === 0) {
39
37
  const result = await befly.db.getAll({
40
- table: 'addon_admin_menu',
41
- orderBy: ['sort#ASC', 'id#ASC']
38
+ table: "addon_admin_menu",
39
+ orderBy: ["sort#ASC", "id#ASC"]
42
40
  });
43
41
  allMenus = result.lists;
44
42
  }
45
43
 
46
44
  if (allMenus.length === 0) {
47
- return befly.tool.Yes('菜单为空', { lists: [] });
45
+ return befly.tool.Yes("菜单为空", { lists: [] });
48
46
  }
49
47
 
50
48
  // 5. 根据角色权限过滤菜单
51
- const menuIdSet = new Set(menuIds.map(String)); // 转为字符串 Set 方便比较
52
- const authorizedMenus = allMenus.filter((menu: any) => menuIdSet.has(String(menu.id)));
49
+ const menuIdSet = new Set<number>(menuIds);
50
+ const authorizedMenus = allMenus.filter((menu: any) => menuIdSet.has(Number(menu.id)));
53
51
 
54
52
  // 6. 返回一维数组(由前端构建树形结构)
55
- return befly.tool.Yes('获取菜单成功', { lists: authorizedMenus });
53
+ return befly.tool.Yes("获取菜单成功", { lists: authorizedMenus });
56
54
  } catch (error: any) {
57
- befly.logger.error({ err: error }, '获取用户菜单失败');
58
- return befly.tool.No('获取菜单失败');
55
+ befly.logger.error({ err: error }, "获取用户菜单失败");
56
+ return befly.tool.No("获取菜单失败");
59
57
  }
60
58
  }
61
59
  };
package/apis/menu/list.ts CHANGED
@@ -1,22 +1,22 @@
1
- export default {
2
- name: '获取菜单列表',
1
+ export default {
2
+ name: "获取菜单列表",
3
3
  fields: {
4
- page: '@page',
5
- limit: '@limit',
6
- keyword: '@keyword',
7
- state: '@state'
4
+ page: "@page",
5
+ limit: "@limit",
6
+ keyword: "@keyword",
7
+ state: "@state"
8
8
  },
9
- handler: async (befly, ctx) => {
9
+ handler: async (befly) => {
10
10
  try {
11
11
  const menus = await befly.db.getAll({
12
- table: 'addon_admin_menu',
13
- orderBy: ['sort#ASC', 'id#ASC']
12
+ table: "addon_admin_menu",
13
+ orderBy: ["sort#ASC", "id#ASC"]
14
14
  });
15
15
 
16
- return befly.tool.Yes('操作成功', { lists: menus.lists });
16
+ return befly.tool.Yes("操作成功", { lists: menus.lists });
17
17
  } catch (error) {
18
- befly.logger.error({ err: error }, '获取菜单列表失败');
19
- return befly.tool.No('操作失败');
18
+ befly.logger.error({ err: error }, "获取菜单列表失败");
19
+ return befly.tool.No("操作失败");
20
20
  }
21
21
  }
22
22
  };
@@ -1,19 +1,19 @@
1
1
  export default {
2
- name: '获取操作日志列表',
2
+ name: "获取操作日志列表",
3
3
  fields: {
4
- page: '@page',
5
- limit: '@limit',
6
- keyword: '@keyword',
7
- state: '@state'
4
+ page: "@page",
5
+ limit: "@limit",
6
+ keyword: "@keyword",
7
+ state: "@state"
8
8
  },
9
9
  handler: async (befly, ctx) => {
10
10
  const result = await befly.db.getList({
11
- table: 'addon_admin_operate_log',
11
+ table: "addon_admin_operate_log",
12
12
  page: ctx.body.page,
13
13
  limit: ctx.body.limit,
14
- orderBy: ['operateTime#DESC']
14
+ orderBy: ["operateTime#DESC"]
15
15
  });
16
16
 
17
- return befly.tool.Yes('获取成功', result);
17
+ return befly.tool.Yes("获取成功", result);
18
18
  }
19
19
  };
package/apis/role/all.ts CHANGED
@@ -1,16 +1,16 @@
1
- export default {
2
- name: '获取所有角色',
3
- handler: async (befly, ctx) => {
1
+ export default {
2
+ name: "获取所有角色",
3
+ handler: async (befly) => {
4
4
  const roles = await befly.db.getAll({
5
- table: 'addon_admin_role',
5
+ table: "addon_admin_role",
6
6
  where: {
7
7
  code: {
8
- $ne: 'dev'
8
+ $ne: "dev"
9
9
  }
10
10
  },
11
- orderBy: ['sort#ASC', 'id#ASC']
11
+ orderBy: ["sort#ASC", "id#ASC"]
12
12
  });
13
13
 
14
- return befly.tool.Yes('操作成功', { lists: roles.lists, total: roles.total });
14
+ return befly.tool.Yes("操作成功", { lists: roles.lists, total: roles.total });
15
15
  }
16
16
  };