@befly-addon/admin 1.1.29 → 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 (123) hide show
  1. package/apis/admin/cacheRefresh.ts +29 -24
  2. package/apis/admin/del.ts +12 -12
  3. package/apis/admin/detail.ts +9 -41
  4. package/apis/admin/ins.ts +28 -21
  5. package/apis/admin/list.ts +12 -12
  6. package/apis/admin/upd.ts +49 -14
  7. package/apis/api/all.ts +14 -10
  8. package/apis/api/list.ts +16 -25
  9. package/apis/auth/login.ts +55 -52
  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 +24 -7
  20. package/apis/dict/del.ts +9 -17
  21. package/apis/dict/detail.ts +30 -16
  22. package/apis/dict/ins.ts +36 -18
  23. package/apis/dict/items.ts +27 -0
  24. package/apis/dict/list.ts +35 -10
  25. package/apis/dict/upd.ts +54 -20
  26. package/apis/dictType/all.ts +11 -0
  27. package/apis/dictType/del.ts +32 -0
  28. package/apis/dictType/detail.ts +17 -0
  29. package/apis/dictType/ins.ts +30 -0
  30. package/apis/dictType/list.ts +22 -0
  31. package/apis/dictType/upd.ts +42 -0
  32. package/apis/email/config.ts +4 -4
  33. package/apis/email/logList.ts +10 -10
  34. package/apis/email/send.ts +18 -18
  35. package/apis/email/verify.ts +5 -5
  36. package/apis/loginLog/list.ts +10 -10
  37. package/apis/menu/all.ts +17 -20
  38. package/apis/menu/list.ts +12 -13
  39. package/apis/operateLog/list.ts +10 -10
  40. package/apis/role/all.ts +7 -7
  41. package/apis/role/apiSave.ts +14 -16
  42. package/apis/role/apis.ts +24 -0
  43. package/apis/role/del.ts +27 -19
  44. package/apis/role/detail.ts +6 -7
  45. package/apis/role/ins.ts +10 -10
  46. package/apis/role/list.ts +11 -11
  47. package/apis/role/menuSave.ts +12 -14
  48. package/apis/role/menus.ts +24 -0
  49. package/apis/role/save.ts +14 -15
  50. package/apis/role/upd.ts +10 -10
  51. package/apis/sysConfig/all.ts +5 -6
  52. package/apis/sysConfig/del.ts +10 -10
  53. package/apis/sysConfig/get.ts +10 -11
  54. package/apis/sysConfig/ins.ts +11 -11
  55. package/apis/sysConfig/list.ts +9 -9
  56. package/apis/sysConfig/upd.ts +11 -11
  57. package/libs/emailHelper.ts +7 -7
  58. package/package.json +46 -34
  59. package/plugins/email.ts +9 -9
  60. package/tables/admin.json +0 -6
  61. package/tables/dict.json +13 -19
  62. package/tables/dictType.json +28 -0
  63. package/tables/role.json +4 -2
  64. package/views/403_1/index.vue +19 -3
  65. package/views/config/dict/components/edit.vue +76 -124
  66. package/views/config/dict/index.vue +142 -84
  67. package/views/config/dictType/components/edit.vue +105 -0
  68. package/views/config/dictType/index.vue +242 -0
  69. package/views/config/index.vue +12 -0
  70. package/views/config/system/components/edit.vue +36 -36
  71. package/views/config/system/index.vue +79 -50
  72. package/views/index/components/addonList.vue +3 -3
  73. package/views/index/components/environmentInfo.vue +10 -10
  74. package/views/index/components/operationLogs.vue +10 -10
  75. package/views/index/components/performanceMetrics.vue +8 -8
  76. package/views/index/components/quickActions.vue +3 -3
  77. package/views/index/components/serviceStatus.vue +19 -19
  78. package/views/index/components/systemNotifications.vue +12 -12
  79. package/views/index/components/systemOverview.vue +7 -7
  80. package/views/index/components/systemResources.vue +11 -11
  81. package/views/index/components/userInfo.vue +20 -19
  82. package/views/index/index.vue +12 -5
  83. package/views/log/email/index.vue +58 -51
  84. package/views/log/index.vue +12 -0
  85. package/views/log/login/index.vue +45 -38
  86. package/views/log/operate/index.vue +55 -48
  87. package/views/login_1/index.vue +191 -2
  88. package/views/people/admin/components/edit.vue +28 -29
  89. package/views/people/admin/index.vue +76 -40
  90. package/views/people/index.vue +12 -0
  91. package/views/permission/api/index.vue +21 -15
  92. package/views/permission/index.vue +12 -0
  93. package/views/permission/menu/index.vue +31 -16
  94. package/views/permission/role/components/api.vue +23 -23
  95. package/views/permission/role/components/edit.vue +18 -18
  96. package/views/permission/role/components/menu.vue +17 -19
  97. package/views/permission/role/index.vue +84 -49
  98. package/apis/admin/roleDetail.ts +0 -29
  99. package/apis/admin/roleSave.ts +0 -39
  100. package/apis/auth/logout.ts +0 -17
  101. package/apis/auth/register.ts +0 -43
  102. package/apis/dashboard/changelog.ts +0 -31
  103. package/apis/role/apiDetail.ts +0 -24
  104. package/apis/role/menuDetail.ts +0 -24
  105. package/views/403_1/meta.json +0 -4
  106. package/views/config/dict/meta.json +0 -4
  107. package/views/config/meta.json +0 -4
  108. package/views/config/system/meta.json +0 -4
  109. package/views/index/meta.json +0 -4
  110. package/views/log/email/meta.json +0 -4
  111. package/views/log/login/meta.json +0 -4
  112. package/views/log/meta.json +0 -4
  113. package/views/log/operate/meta.json +0 -4
  114. package/views/login_1/components/emailLoginForm.vue +0 -174
  115. package/views/login_1/components/registerForm.vue +0 -175
  116. package/views/login_1/components/welcomePanel.vue +0 -61
  117. package/views/login_1/meta.json +0 -4
  118. package/views/people/admin/meta.json +0 -4
  119. package/views/people/meta.json +0 -4
  120. package/views/permission/api/meta.json +0 -4
  121. package/views/permission/menu/meta.json +0 -4
  122. package/views/permission/meta.json +0 -4
  123. package/views/permission/role/meta.json +0 -4
@@ -1,4 +1,4 @@
1
- /**
1
+ /**
2
2
  * 刷新全部缓存接口
3
3
  *
4
4
  * 功能:
@@ -12,42 +12,39 @@
12
12
  * - 缓存出现异常需要重建
13
13
  */
14
14
 
15
- import { RedisKeys } from 'befly-shared/redisKeys';
15
+ import { CacheKeys } from "befly/lib/cacheKeys";
16
16
 
17
17
  export default {
18
- name: '刷新全部缓存',
19
- handler: async (befly, ctx) => {
18
+ name: "刷新全部缓存",
19
+ handler: async (befly, _ctx) => {
20
20
  try {
21
21
  const results: Record<string, any> = {
22
22
  apis: { success: false, count: 0 },
23
23
  menus: { success: false, count: 0 },
24
- roles: { success: false, count: 0 }
24
+ roles: { success: false, count: 0 },
25
+ roleApiPermissions: { success: false }
25
26
  };
26
27
 
27
28
  // 1. 刷新接口缓存
28
29
  try {
29
30
  const apis = await befly.db.getAll({
30
- table: 'addon_admin_api',
31
- fields: ['id', 'name', 'path', 'method', 'description', 'addonName', 'addonTitle'],
32
- orderBy: ['addonName#ASC', 'path#ASC']
31
+ table: "addon_admin_api"
33
32
  });
34
33
 
35
- await befly.redis.setObject(RedisKeys.apisAll(), apis.lists);
34
+ await befly.redis.setObject(CacheKeys.apisAll(), apis.lists);
36
35
  results.apis = { success: true, count: apis.lists.length };
37
36
  } catch (error: any) {
38
- befly.logger.error({ err: error }, '刷新接口缓存失败');
37
+ befly.logger.error({ err: error }, "刷新接口缓存失败");
39
38
  results.apis = { success: false, error: error.message };
40
39
  }
41
40
 
42
41
  // 2. 刷新菜单缓存
43
42
  try {
44
43
  const menus = await befly.db.getAll({
45
- table: 'addon_admin_menu',
46
- fields: ['id', 'pid', 'name', 'path', 'icon', 'type', 'sort'],
47
- orderBy: ['sort#ASC', 'id#ASC']
44
+ table: "addon_admin_menu"
48
45
  });
49
46
 
50
- await befly.redis.setObject(RedisKeys.menusAll(), menus.lists);
47
+ await befly.redis.setObject(CacheKeys.menusAll(), menus.lists);
51
48
 
52
49
  const parentCount = menus.lists.filter((m: any) => m.pid === 0).length;
53
50
  const childCount = menus.lists.filter((m: any) => m.pid !== 0).length;
@@ -59,42 +56,50 @@ export default {
59
56
  childCount: childCount
60
57
  };
61
58
  } catch (error: any) {
62
- befly.logger.error({ err: error }, '刷新菜单缓存失败');
59
+ befly.logger.error({ err: error }, "刷新菜单缓存失败");
63
60
  results.menus = { success: false, error: error.message };
64
61
  }
65
62
 
66
63
  // 3. 刷新角色权限缓存
67
64
  try {
68
65
  const roles = await befly.db.getAll({
69
- table: 'addon_admin_role',
70
- fields: ['id', 'name', 'code', 'menus', 'apis']
66
+ table: "addon_admin_role"
71
67
  });
72
68
 
73
69
  // 使用 setBatch 批量缓存所有角色
74
70
  const count = await befly.redis.setBatch(
75
71
  roles.lists.map((role: any) => ({
76
- key: RedisKeys.roleInfo(role.code),
72
+ key: CacheKeys.roleInfo(role.code),
77
73
  value: role
78
74
  }))
79
75
  );
80
76
 
81
77
  results.roles = { success: true, count: count };
82
78
  } catch (error: any) {
83
- befly.logger.error({ err: error }, '刷新角色缓存失败');
79
+ befly.logger.error({ err: error }, "刷新角色缓存失败");
84
80
  results.roles = { success: false, error: error.message };
85
81
  }
86
82
 
83
+ // 4. 重建角色接口权限缓存(版本化 + 原子切换)
84
+ try {
85
+ await befly.cache.rebuildRoleApiPermissions();
86
+ results.roleApiPermissions = { success: true };
87
+ } catch (error: any) {
88
+ befly.logger.error({ err: error }, "重建角色接口权限缓存失败");
89
+ results.roleApiPermissions = { success: false, error: error.message };
90
+ }
91
+
87
92
  // 检查是否全部成功
88
- const allSuccess = results.apis.success && results.menus.success && results.roles.success;
93
+ const allSuccess = results.apis.success && results.menus.success && results.roles.success && results.roleApiPermissions.success;
89
94
 
90
95
  if (allSuccess) {
91
- return befly.tool.Yes('全部缓存刷新成功', results);
96
+ return befly.tool.Yes("全部缓存刷新成功", results);
92
97
  } else {
93
- return befly.tool.No('部分缓存刷新失败', results);
98
+ return befly.tool.No("部分缓存刷新失败", results);
94
99
  }
95
100
  } catch (error: any) {
96
- befly.logger.error({ err: error }, '刷新全部缓存失败');
97
- return befly.tool.No('刷新全部缓存失败', { error: error.message });
101
+ befly.logger.error({ err: error }, "刷新全部缓存失败");
102
+ return befly.tool.No("刷新全部缓存失败", { error: error.message });
98
103
  }
99
104
  }
100
105
  };
package/apis/admin/del.ts CHANGED
@@ -1,31 +1,31 @@
1
- export default {
2
- name: '删除管理员',
1
+ export default {
2
+ name: "删除管理员",
3
3
  fields: {
4
- id: '@id'
4
+ id: "@id"
5
5
  },
6
- required: ['id'],
6
+ required: ["id"],
7
7
  handler: async (befly, ctx) => {
8
8
  // 检查管理员是否存在
9
- const admin = await befly.db.getOne({
10
- table: 'addon_admin_admin',
9
+ const adminData = await befly.db.getOne({
10
+ table: "addon_admin_admin",
11
11
  where: { id: ctx.body.id }
12
12
  });
13
13
 
14
- if (!admin) {
15
- return befly.tool.No('管理员不存在');
14
+ if (!adminData?.id) {
15
+ return befly.tool.No("管理员不存在");
16
16
  }
17
17
 
18
18
  // 不能删除 dev 角色的管理员
19
- if (admin.roleCode === 'dev') {
20
- return befly.tool.No('不能删除开发者账号');
19
+ if (adminData.roleCode === "dev") {
20
+ return befly.tool.No("不能删除开发管理员");
21
21
  }
22
22
 
23
23
  // 删除管理员
24
24
  await befly.db.delData({
25
- table: 'addon_admin_admin',
25
+ table: "addon_admin_admin",
26
26
  where: { id: ctx.body.id }
27
27
  });
28
28
 
29
- return befly.tool.Yes('删除成功');
29
+ return befly.tool.Yes("删除成功");
30
30
  }
31
31
  };
@@ -1,51 +1,19 @@
1
- /**
2
- * 获取用户信息接口
3
- *
4
- * @returns 返回 admin 表的字段(不含 password)以及关联的角色信息(小驼峰格式):
5
- * - id, name, email, phone, roleId, roleCode, state
6
- * - lastLoginTime, lastLoginIp
7
- * - createdAt, updatedAt
8
- * - role: 角色完整信息(包含 menus 和 apis 权限)
9
- */
10
-
11
1
  export default {
12
- name: '获取用户信息',
2
+ name: "获取管理员信息",
13
3
  fields: {
14
- id: '@id'
4
+ id: "@id"
15
5
  },
16
6
  handler: async (befly, ctx) => {
17
- // JWT token 中获取用户ID
18
- const userId = ctx.user?.id;
19
-
20
- if (!userId) {
21
- return befly.tool.No('未授权');
22
- }
23
-
24
- // 查询用户信息(框架自动转换为小驼峰)
25
- const admin = await befly.db.getOne({
26
- table: 'addon_admin_admin',
27
- where: { id: userId }
7
+ const adminData = await befly.db.getOne({
8
+ table: "addon_admin_admin",
9
+ fields: ["!password"],
10
+ where: { id: ctx.user?.id }
28
11
  });
29
12
 
30
- if (!admin) {
31
- return befly.tool.No('用户不存在');
13
+ if (!adminData?.id) {
14
+ return befly.tool.No("管理员不存在");
32
15
  }
33
16
 
34
- // 查询角色信息(使用 roleCode 而非 roleId,框架自动转换为小驼峰)
35
- let roleInfo = null;
36
- if (admin.roleCode) {
37
- roleInfo = await befly.db.getOne({
38
- table: 'addon_admin_role',
39
- where: { code: admin.roleCode }
40
- });
41
- }
42
-
43
- // 返回用户信息(不包含密码,字段已是小驼峰格式)
44
- const { password: _, ...userWithoutPassword } = admin;
45
-
46
- return befly.tool.Yes('获取成功', {
47
- ...userWithoutPassword,
48
- role: roleInfo
49
- });
17
+ return befly.tool.Yes("查询成功", adminData);
50
18
  }
51
19
  };
package/apis/admin/ins.ts CHANGED
@@ -1,31 +1,40 @@
1
- import adminTable from '../../tables/admin.json';
1
+ import adminTable from "../../tables/admin.json";
2
2
 
3
3
  export default {
4
- name: '添加管理员',
4
+ name: "添加管理员",
5
5
  fields: adminTable,
6
- required: ['username', 'password', 'roleId'],
6
+ required: ["username", "password", "roleCode"],
7
7
  handler: async (befly, ctx) => {
8
8
  // 检查用户名是否已存在
9
- if (ctx.body.username) {
10
- const existingByUsername = await befly.db.getOne({
11
- table: 'addon_admin_admin',
12
- where: { username: ctx.body.username }
9
+ const existingByUsername = await befly.db.getOne({
10
+ table: "addon_admin_admin",
11
+ where: { username: ctx.body.username }
12
+ });
13
+
14
+ if (existingByUsername?.id) {
15
+ return befly.tool.No("用户名已被使用");
16
+ }
17
+
18
+ // 检查昵称是否已存在
19
+ if (ctx.body.nickname) {
20
+ const existingByNickname = await befly.db.getOne({
21
+ table: "addon_admin_admin",
22
+ where: { nickname: ctx.body.nickname }
13
23
  });
14
24
 
15
- if (existingByUsername) {
16
- return befly.tool.No('用户名已被使用');
25
+ if (existingByNickname?.id) {
26
+ return befly.tool.No("昵称已被使用");
17
27
  }
18
28
  }
19
29
 
20
30
  // 查询角色信息
21
- const role = await befly.db.getOne({
22
- table: 'addon_admin_role',
23
- where: { id: ctx.body.roleId },
24
- columns: ['code']
31
+ const roleData = await befly.db.getOne({
32
+ table: "addon_admin_role",
33
+ where: { code: ctx.body.roleCode }
25
34
  });
26
35
 
27
- if (!role?.code) {
28
- return befly.tool.No('角色不存在');
36
+ if (!roleData?.id) {
37
+ return befly.tool.No("角色不存在");
29
38
  }
30
39
 
31
40
  // 加密密码
@@ -33,19 +42,17 @@ export default {
33
42
 
34
43
  // 创建管理员
35
44
  const adminId = await befly.db.insData({
36
- table: 'addon_admin_admin',
45
+ table: "addon_admin_admin",
37
46
  data: {
38
47
  username: ctx.body.username,
39
48
  password: hashedPassword,
40
49
  nickname: ctx.body.nickname,
41
- roleId: ctx.body.roleId,
42
- roleCode: role.code
50
+ roleCode: ctx.body.roleCode
43
51
  }
44
52
  });
45
53
 
46
- return befly.tool.Yes('添加成功', {
47
- id: adminId,
48
- username: ctx.body.username
54
+ return befly.tool.Yes("添加成功", {
55
+ id: adminId
49
56
  });
50
57
  }
51
58
  };
@@ -1,24 +1,24 @@
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
9
  handler: async (befly, ctx) => {
10
10
  const result = await befly.db.getList({
11
- table: 'addon_admin_admin',
12
- page: ctx.body.page || 1,
13
- limit: ctx.body.limit || 10,
11
+ table: "addon_admin_admin",
12
+ page: ctx.body.page,
13
+ limit: ctx.body.limit,
14
14
  where: {
15
15
  roleCode: {
16
- $ne: 'dev'
16
+ $ne: "dev"
17
17
  }
18
18
  },
19
- orderBy: ['createdAt#DESC']
19
+ orderBy: ["createdAt#DESC"]
20
20
  });
21
21
 
22
- return befly.tool.Yes('获取成功', result);
22
+ return befly.tool.Yes("获取成功", result);
23
23
  }
24
24
  };
package/apis/admin/upd.ts CHANGED
@@ -1,33 +1,68 @@
1
- /**
2
- * 更新管理员信息
3
- */
4
-
5
- import adminTable from '../../tables/admin.json';
1
+ import adminTable from "../../tables/admin.json";
6
2
 
7
3
  export default {
8
- name: '更新管理员',
9
- fields: adminTable,
10
- required: ['id'],
4
+ name: "更新管理员",
5
+ fields: { id: "@id", ...adminTable },
6
+ required: ["id"],
11
7
  handler: async (befly, ctx) => {
12
- const { id, ...updateData } = ctx.body;
8
+ const { id, username, nickname, roleCode, ...updateData } = ctx.body;
13
9
 
14
10
  // 检查管理员是否存在
15
11
  const admin = await befly.db.getOne({
16
- table: 'addon_admin_admin',
12
+ table: "addon_admin_admin",
17
13
  where: { id }
18
14
  });
19
15
 
20
16
  if (!admin?.id) {
21
- return befly.tool.No('管理员不存在');
17
+ return befly.tool.No("管理员不存在");
18
+ }
19
+
20
+ // 检查用户名是否已被其他管理员使用
21
+ if (username && username !== admin.username) {
22
+ const existingUsername = await befly.db.getOne({
23
+ table: "addon_admin_admin",
24
+ where: { username, id: { $ne: id } }
25
+ });
26
+ if (existingUsername?.id) {
27
+ return befly.tool.No("用户名已被使用");
28
+ }
29
+ }
30
+
31
+ // 检查昵称是否已被其他管理员使用
32
+ if (nickname && nickname !== admin.nickname) {
33
+ const existingNickname = await befly.db.getOne({
34
+ table: "addon_admin_admin",
35
+ where: { nickname, id: { $ne: id } }
36
+ });
37
+ if (existingNickname?.id) {
38
+ return befly.tool.No("昵称已被使用");
39
+ }
40
+ }
41
+
42
+ // 检查角色是否存在
43
+ if (roleCode && roleCode !== admin.roleCode) {
44
+ const role = await befly.db.getOne({
45
+ table: "addon_admin_role",
46
+ where: { code: roleCode }
47
+ });
48
+ if (!role?.id) {
49
+ return befly.tool.No("角色不存在");
50
+ }
22
51
  }
23
52
 
53
+ // 构建更新数据
54
+ const dataToUpdate: Record<string, any> = { ...updateData };
55
+ if (username) dataToUpdate.username = username;
56
+ if (nickname) dataToUpdate.nickname = nickname;
57
+ if (roleCode) dataToUpdate.roleCode = roleCode;
58
+
24
59
  // 更新管理员信息
25
60
  await befly.db.updData({
26
- table: 'addon_admin_admin',
27
- data: updateData,
61
+ table: "addon_admin_admin",
62
+ data: dataToUpdate,
28
63
  where: { id }
29
64
  });
30
65
 
31
- return befly.tool.Yes('更新成功');
66
+ return befly.tool.Yes("更新成功");
32
67
  }
33
68
  };
package/apis/api/all.ts CHANGED
@@ -1,24 +1,28 @@
1
- export default {
2
- name: '获取所有接口',
3
- handler: async (befly, ctx) => {
1
+ export default {
2
+ name: "获取所有接口",
3
+ handler: async (befly) => {
4
4
  try {
5
5
  // 从缓存获取所有接口
6
6
  let allApis = await befly.cache.getApis();
7
7
 
8
- // 如果缓存不存在,从数据库查询
8
+ // 如果缓存不存在,从数据库查询并缓存
9
9
  if (allApis.length === 0) {
10
10
  const result = await befly.db.getAll({
11
- table: 'addon_admin_api',
12
- fields: ['id', 'name', 'path', 'method', 'description', 'addonName', 'addonTitle'],
13
- orderBy: ['addonName#ASC', 'path#ASC']
11
+ table: "addon_admin_api",
12
+ orderBy: ["id#ASC"]
14
13
  });
15
14
  allApis = result.lists;
15
+
16
+ // 缓存到 Redis
17
+ if (allApis.length > 0) {
18
+ await befly.cache.cacheApis();
19
+ }
16
20
  }
17
21
 
18
- return befly.tool.Yes('操作成功', { lists: allApis });
22
+ return befly.tool.Yes("操作成功", { lists: allApis });
19
23
  } catch (error: any) {
20
- befly.logger.error({ err: error }, '获取接口列表失败');
21
- return befly.tool.No('获取接口列表失败');
24
+ befly.logger.error({ err: error }, "获取接口列表失败");
25
+ return befly.tool.No("获取接口列表失败");
22
26
  }
23
27
  }
24
28
  };
package/apis/api/list.ts CHANGED
@@ -1,36 +1,27 @@
1
- import type { ApiRoute } from 'befly';
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
  try {
13
- const { page = 1, limit = 30, keyword = '' } = ctx.body;
14
-
15
- // 构建查询条件
16
- const where: Record<string, any> = {};
17
- if (keyword) {
18
- where.$or = [{ name: { $like: `%${keyword}%` } }, { path: { $like: `%${keyword}%` } }];
19
- }
20
-
21
11
  const result = await befly.db.getList({
22
- table: 'addon_admin_api',
23
- fields: ['id', 'name', 'path', 'method', 'description', 'addon_name', 'addon_title'],
24
- where: where,
25
- orderBy: ['addon_name#ASC', 'path#ASC'],
26
- page: page,
27
- limit: limit
12
+ table: "addon_admin_api",
13
+ where: {
14
+ $or: ctx.body.keyword ? [{ name$like: `%${ctx.body.keyword}%` }, { path$like: `%${ctx.body.keyword}%` }] : undefined
15
+ },
16
+ orderBy: ["id#ASC"],
17
+ page: ctx.body.page,
18
+ limit: ctx.body.limit
28
19
  });
29
20
 
30
- return befly.tool.Yes('操作成功', result);
21
+ return befly.tool.Yes("操作成功", result);
31
22
  } catch (error: any) {
32
- befly.logger.error({ err: error }, '获取接口列表失败');
33
- return befly.tool.No('获取接口列表失败');
23
+ befly.logger.error({ err: error }, "获取接口列表失败");
24
+ return befly.tool.No("获取接口列表失败");
34
25
  }
35
26
  }
36
- } as ApiRoute;
27
+ };