befly 3.17.4 → 3.17.7

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/checks/table.js CHANGED
@@ -29,7 +29,7 @@ function addIssue(context, path, message) {
29
29
 
30
30
  const fieldDefSchema = z
31
31
  .object({
32
- name: z.string().min(1).regex(fieldNameRegex),
32
+ name: z.string().min(1),
33
33
  input: inputSchema,
34
34
  min: z.number().nullable().optional(),
35
35
  max: z.number().nullable().optional()
@@ -16,88 +16,11 @@ export class CacheHelper {
16
16
  this.redis = deps.redis;
17
17
  }
18
18
 
19
- assertApiPathList(value) {
20
- if (isNullable(value)) return [];
21
-
22
- let list = value;
23
-
24
- if (isString(list)) {
25
- const trimmed = list.trim();
26
- if (trimmed === "" || trimmed === "null") {
27
- return [];
28
- }
29
-
30
- if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
31
- try {
32
- list = JSON.parse(trimmed);
33
- } catch {
34
- return [];
35
- }
36
- }
37
- }
38
-
39
- if (!Array.isArray(list)) {
40
- return [];
41
- }
42
-
43
- const out = [];
44
- for (const item of list) {
45
- if (!isString(item)) continue;
46
- const trimmed = item.trim();
47
- if (!isNonEmptyString(trimmed)) continue;
48
- out.push(trimmed);
49
- }
50
-
51
- return out;
52
- }
53
-
54
- assertMenuPathList(value) {
55
- if (isNullable(value)) return [];
56
-
57
- let list = value;
58
-
59
- if (isString(list)) {
60
- const trimmed = list.trim();
61
- if (trimmed === "" || trimmed === "null") {
62
- return [];
63
- }
64
-
65
- if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
66
- try {
67
- list = JSON.parse(trimmed);
68
- } catch {
69
- return [];
70
- }
71
- }
72
- }
73
-
74
- if (!Array.isArray(list)) {
75
- return [];
76
- }
77
-
78
- const out = [];
79
- for (const item of list) {
80
- if (!isString(item)) continue;
81
- const trimmed = item.trim();
82
- if (!isNonEmptyString(trimmed)) continue;
83
- out.push(trimmed);
84
- }
85
-
86
- return out;
87
- }
88
-
89
19
  /**
90
20
  * 缓存所有接口到 Redis
91
21
  */
92
22
  async cacheApis() {
93
23
  try {
94
- // 检查表是否存在
95
- const tableExists = await this.mysql.tableExists("beflyApi");
96
- if (!tableExists.data) {
97
- Logger.warn("⚠️ 接口表不存在,跳过接口缓存");
98
- return;
99
- }
100
-
101
24
  // 从数据库查询所有接口
102
25
  const apiList = await this.mysql.getAll({
103
26
  table: "beflyApi"
@@ -107,10 +30,21 @@ export class CacheHelper {
107
30
  const result = await this.redis.setObject(CacheKeys.apisAll(), apiList.data.lists);
108
31
 
109
32
  if (result === null) {
110
- Logger.warn("⚠️ 接口缓存失败");
33
+ throw new Error("接口缓存失败", {
34
+ cause: null,
35
+ code: "runtime",
36
+ subsystem: "cache",
37
+ operation: "cacheApis"
38
+ });
111
39
  }
112
40
  } catch (error) {
113
41
  Logger.error("⚠️ 接口缓存异常", error);
42
+ throw new Error("接口缓存异常", {
43
+ cause: error,
44
+ code: "runtime",
45
+ subsystem: "cache",
46
+ operation: "cacheApis"
47
+ });
114
48
  }
115
49
  }
116
50
 
@@ -119,13 +53,6 @@ export class CacheHelper {
119
53
  */
120
54
  async cacheMenus() {
121
55
  try {
122
- // 检查表是否存在
123
- const tableExists = await this.mysql.tableExists("beflyMenu");
124
- if (!tableExists.data) {
125
- Logger.warn("⚠️ 菜单表不存在,跳过菜单缓存");
126
- return;
127
- }
128
-
129
56
  // 从数据库查询所有菜单
130
57
  const menus = await this.mysql.getAll({
131
58
  table: "beflyMenu"
@@ -135,10 +62,21 @@ export class CacheHelper {
135
62
  const result = await this.redis.setObject(CacheKeys.menusAll(), menus.data.lists);
136
63
 
137
64
  if (result === null) {
138
- Logger.warn("⚠️ 菜单缓存失败");
65
+ throw new Error("菜单缓存失败", {
66
+ cause: null,
67
+ code: "runtime",
68
+ subsystem: "cache",
69
+ operation: "cacheMenus"
70
+ });
139
71
  }
140
72
  } catch (error) {
141
- Logger.warn("⚠️ 菜单缓存异常", { err: error });
73
+ Logger.error("⚠️ 菜单缓存异常", error);
74
+ throw new Error("菜单缓存异常", {
75
+ cause: error,
76
+ code: "runtime",
77
+ subsystem: "cache",
78
+ operation: "cacheMenus"
79
+ });
142
80
  }
143
81
  }
144
82
 
@@ -149,14 +87,6 @@ export class CacheHelper {
149
87
  */
150
88
  async cacheRoleApis() {
151
89
  try {
152
- // 检查表是否存在
153
- const roleTableExists = await this.mysql.tableExists("beflyRole");
154
-
155
- if (!roleTableExists.data) {
156
- Logger.warn("⚠️ 角色表不存在,跳过角色权限缓存");
157
- return;
158
- }
159
-
160
90
  // 查询所有角色(仅取必要字段)
161
91
  const roles = await this.mysql.getAll({
162
92
  table: "beflyRole",
@@ -167,8 +97,7 @@ export class CacheHelper {
167
97
 
168
98
  for (const role of roles.data.lists) {
169
99
  if (!role?.code) continue;
170
- const apiPaths = this.assertApiPathList(role.apis);
171
- roleApiPathsMap.set(role.code, apiPaths);
100
+ roleApiPathsMap.set(role.code, role.apis);
172
101
  }
173
102
 
174
103
  const roleCodes = Array.from(roleApiPathsMap.keys());
@@ -216,14 +145,6 @@ export class CacheHelper {
216
145
  */
217
146
  async cacheRoleMenus() {
218
147
  try {
219
- // 检查表是否存在
220
- const roleTableExists = await this.mysql.tableExists("beflyRole");
221
-
222
- if (!roleTableExists.data) {
223
- Logger.warn("⚠️ 角色表不存在,跳过角色菜单权限缓存");
224
- return;
225
- }
226
-
227
148
  // 查询所有角色(仅取必要字段)
228
149
  const roles = await this.mysql.getAll({
229
150
  table: "beflyRole",
@@ -234,8 +155,7 @@ export class CacheHelper {
234
155
 
235
156
  for (const role of roles.data.lists) {
236
157
  if (!role?.code) continue;
237
- const menuPaths = this.assertMenuPathList(role.menus);
238
- roleMenuPathsMap.set(role.code, menuPaths);
158
+ roleMenuPathsMap.set(role.code, role.menus);
239
159
  }
240
160
 
241
161
  const roleCodes = Array.from(roleMenuPathsMap.keys());
@@ -281,22 +201,31 @@ export class CacheHelper {
281
201
  */
282
202
  async refreshRoleApiPermissions(roleCode, apiPaths) {
283
203
  if (!isNonEmptyString(roleCode)) {
284
- return;
204
+ throw new Error("roleCode 参数不合法", {
205
+ cause: null,
206
+ code: "validation",
207
+ subsystem: "cache",
208
+ operation: "refreshRoleApiPermissions"
209
+ });
285
210
  }
286
211
  if (!Array.isArray(apiPaths)) {
287
- return;
212
+ throw new Error("apiPaths 参数不合法", {
213
+ cause: null,
214
+ code: "validation",
215
+ subsystem: "cache",
216
+ operation: "refreshRoleApiPermissions"
217
+ });
288
218
  }
289
219
 
290
- const normalizedPaths = this.assertApiPathList(apiPaths);
291
220
  const roleKey = CacheKeys.roleApis(roleCode);
292
221
 
293
222
  // 空数组短路:保证清理残留
294
- if (normalizedPaths.length === 0) {
223
+ if (apiPaths.length === 0) {
295
224
  await this.redis.del(roleKey);
296
225
  return;
297
226
  }
298
227
 
299
- const members = Array.from(new Set(normalizedPaths));
228
+ const members = Array.from(new Set(apiPaths));
300
229
 
301
230
  await this.redis.del(roleKey);
302
231
  if (members.length > 0) {
@@ -311,22 +240,31 @@ export class CacheHelper {
311
240
  */
312
241
  async refreshRoleMenuPermissions(roleCode, menuPaths) {
313
242
  if (!isNonEmptyString(roleCode)) {
314
- return;
243
+ throw new Error("roleCode 参数不合法", {
244
+ cause: null,
245
+ code: "validation",
246
+ subsystem: "cache",
247
+ operation: "refreshRoleMenuPermissions"
248
+ });
315
249
  }
316
250
  if (!Array.isArray(menuPaths)) {
317
- return;
251
+ throw new Error("menuPaths 参数不合法", {
252
+ cause: null,
253
+ code: "validation",
254
+ subsystem: "cache",
255
+ operation: "refreshRoleMenuPermissions"
256
+ });
318
257
  }
319
258
 
320
- const normalizedPaths = this.assertMenuPathList(menuPaths);
321
259
  const roleKey = CacheKeys.roleMenus(roleCode);
322
260
 
323
261
  // 空数组短路:保证清理残留
324
- if (normalizedPaths.length === 0) {
262
+ if (menuPaths.length === 0) {
325
263
  await this.redis.del(roleKey);
326
264
  return;
327
265
  }
328
266
 
329
- const members = Array.from(new Set(normalizedPaths));
267
+ const members = Array.from(new Set(menuPaths));
330
268
 
331
269
  await this.redis.del(roleKey);
332
270
  if (members.length > 0) {
@@ -361,7 +299,12 @@ export class CacheHelper {
361
299
  return apis || [];
362
300
  } catch (error) {
363
301
  Logger.error("获取接口缓存失败", error);
364
- return [];
302
+ throw new Error("获取接口缓存失败", {
303
+ cause: error,
304
+ code: "runtime",
305
+ subsystem: "cache",
306
+ operation: "getApis"
307
+ });
365
308
  }
366
309
  }
367
310
 
@@ -375,7 +318,12 @@ export class CacheHelper {
375
318
  return menus || [];
376
319
  } catch (error) {
377
320
  Logger.error("获取菜单缓存失败", error);
378
- return [];
321
+ throw new Error("获取菜单缓存失败", {
322
+ cause: error,
323
+ code: "runtime",
324
+ subsystem: "cache",
325
+ operation: "getMenus"
326
+ });
379
327
  }
380
328
  }
381
329
 
@@ -390,7 +338,13 @@ export class CacheHelper {
390
338
  return permissions || [];
391
339
  } catch (error) {
392
340
  Logger.error("获取角色权限缓存失败", error, { roleCode: roleCode });
393
- return [];
341
+ throw new Error("获取角色权限缓存失败", {
342
+ cause: error,
343
+ code: "runtime",
344
+ subsystem: "cache",
345
+ operation: "getRolePermissions",
346
+ roleCode: roleCode
347
+ });
394
348
  }
395
349
  }
396
350
 
@@ -405,7 +359,13 @@ export class CacheHelper {
405
359
  return permissions || [];
406
360
  } catch (error) {
407
361
  Logger.error("获取角色菜单权限缓存失败", error, { roleCode: roleCode });
408
- return [];
362
+ throw new Error("获取角色菜单权限缓存失败", {
363
+ cause: error,
364
+ code: "runtime",
365
+ subsystem: "cache",
366
+ operation: "getRoleMenuPermissions",
367
+ roleCode: roleCode
368
+ });
409
369
  }
410
370
  }
411
371
 
@@ -422,7 +382,13 @@ export class CacheHelper {
422
382
  return await this.redis.sismember(CacheKeys.roleApis(roleCode), value);
423
383
  } catch (error) {
424
384
  Logger.error("检查角色权限失败", error, { roleCode: roleCode });
425
- return false;
385
+ throw new Error("检查角色权限失败", {
386
+ cause: error,
387
+ code: "runtime",
388
+ subsystem: "cache",
389
+ operation: "checkRolePermission",
390
+ roleCode: roleCode
391
+ });
426
392
  }
427
393
  }
428
394
 
@@ -439,7 +405,13 @@ export class CacheHelper {
439
405
  return await this.redis.sismember(CacheKeys.roleMenus(roleCode), value);
440
406
  } catch (error) {
441
407
  Logger.error("检查角色菜单权限失败", error, { roleCode: roleCode });
442
- return false;
408
+ throw new Error("检查角色菜单权限失败", {
409
+ cause: error,
410
+ code: "runtime",
411
+ subsystem: "cache",
412
+ operation: "checkRoleMenuPermission",
413
+ roleCode: roleCode
414
+ });
443
415
  }
444
416
  }
445
417
 
@@ -458,7 +430,13 @@ export class CacheHelper {
458
430
  return false;
459
431
  } catch (error) {
460
432
  Logger.error("删除角色权限缓存失败", error, { roleCode: roleCode });
461
- return false;
433
+ throw new Error("删除角色权限缓存失败", {
434
+ cause: error,
435
+ code: "runtime",
436
+ subsystem: "cache",
437
+ operation: "deleteRolePermissions",
438
+ roleCode: roleCode
439
+ });
462
440
  }
463
441
  }
464
442
 
@@ -477,7 +455,13 @@ export class CacheHelper {
477
455
  return false;
478
456
  } catch (error) {
479
457
  Logger.error("删除角色菜单权限缓存失败", error, { roleCode: roleCode });
480
- return false;
458
+ throw new Error("删除角色菜单权限缓存失败", {
459
+ cause: error,
460
+ code: "runtime",
461
+ subsystem: "cache",
462
+ operation: "deleteRoleMenuPermissions",
463
+ roleCode: roleCode
464
+ });
481
465
  }
482
466
  }
483
467
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "befly",
3
- "version": "3.17.4",
4
- "gitHead": "bb2ab272371940036eaa305495c90d29b23fedc5",
3
+ "version": "3.17.7",
4
+ "gitHead": "ca8aa895dc70ae26bf073f62ceba61c52076f066",
5
5
  "private": false,
6
6
  "description": "Befly - 为 Bun 专属打造的 JavaScript API 接口框架核心引擎",
7
7
  "keywords": [
package/sql/befly.sql ADDED
@@ -0,0 +1,173 @@
1
+ CREATE TABLE IF NOT EXISTS `befly_admin` (
2
+ `id` BIGINT NOT NULL,
3
+ `nickname` VARCHAR(50) NOT NULL DEFAULT '',
4
+ `username` VARCHAR(30) NOT NULL DEFAULT '',
5
+ `password` VARCHAR(500) NOT NULL DEFAULT '',
6
+ `email` VARCHAR(100) NOT NULL DEFAULT '',
7
+ `phone` VARCHAR(20) NOT NULL DEFAULT '',
8
+ `avatar` VARCHAR(500) NOT NULL DEFAULT '',
9
+ `role_code` VARCHAR(50) NOT NULL DEFAULT '',
10
+ `role_type` VARCHAR(5) NOT NULL DEFAULT 'user',
11
+ `last_login_time` BIGINT NOT NULL DEFAULT 0,
12
+ `last_login_ip` VARCHAR(50) NOT NULL DEFAULT '',
13
+ `state` TINYINT NOT NULL DEFAULT 1,
14
+ `created_at` BIGINT NOT NULL DEFAULT 0,
15
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
16
+ `deleted_at` BIGINT NULL DEFAULT NULL,
17
+ PRIMARY KEY (`id`)
18
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
19
+
20
+ CREATE TABLE IF NOT EXISTS `befly_api` (
21
+ `id` BIGINT NOT NULL,
22
+ `name` VARCHAR(100) NOT NULL DEFAULT '',
23
+ `auth` VARCHAR(200) NOT NULL DEFAULT '',
24
+ `path` VARCHAR(200) NOT NULL DEFAULT '',
25
+ `parent_path` VARCHAR(200) NOT NULL DEFAULT '',
26
+ `state` TINYINT NOT NULL DEFAULT 1,
27
+ `created_at` BIGINT NOT NULL DEFAULT 0,
28
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
29
+ `deleted_at` BIGINT NULL DEFAULT NULL,
30
+ PRIMARY KEY (`id`)
31
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
32
+
33
+ CREATE TABLE IF NOT EXISTS `befly_dict` (
34
+ `id` BIGINT NOT NULL,
35
+ `type_code` VARCHAR(50) NOT NULL DEFAULT '',
36
+ `key` VARCHAR(50) NOT NULL DEFAULT '',
37
+ `label` VARCHAR(100) NOT NULL DEFAULT '',
38
+ `sort` INT NOT NULL DEFAULT 0,
39
+ `remark` VARCHAR(200) NOT NULL DEFAULT '',
40
+ `state` TINYINT NOT NULL DEFAULT 1,
41
+ `created_at` BIGINT NOT NULL DEFAULT 0,
42
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
43
+ `deleted_at` BIGINT NULL DEFAULT NULL,
44
+ PRIMARY KEY (`id`)
45
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
46
+
47
+ CREATE TABLE IF NOT EXISTS `befly_dict_type` (
48
+ `id` BIGINT NOT NULL,
49
+ `code` VARCHAR(50) NOT NULL DEFAULT '',
50
+ `name` VARCHAR(50) NOT NULL DEFAULT '',
51
+ `description` VARCHAR(200) NOT NULL DEFAULT '',
52
+ `sort` INT NOT NULL DEFAULT 0,
53
+ `state` TINYINT NOT NULL DEFAULT 1,
54
+ `created_at` BIGINT NOT NULL DEFAULT 0,
55
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
56
+ `deleted_at` BIGINT NULL DEFAULT NULL,
57
+ PRIMARY KEY (`id`)
58
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
59
+
60
+ CREATE TABLE IF NOT EXISTS `befly_email_log` (
61
+ `id` BIGINT NOT NULL,
62
+ `admin_id` BIGINT NOT NULL DEFAULT 0,
63
+ `username` VARCHAR(100) NOT NULL DEFAULT '',
64
+ `nickname` VARCHAR(100) NOT NULL DEFAULT '',
65
+ `to_email` VARCHAR(200) NOT NULL DEFAULT '',
66
+ `subject` VARCHAR(200) NOT NULL DEFAULT '',
67
+ `content` TEXT NULL,
68
+ `cc_email` VARCHAR(500) NOT NULL DEFAULT '',
69
+ `bcc_email` VARCHAR(500) NOT NULL DEFAULT '',
70
+ `send_time` BIGINT NOT NULL DEFAULT 0,
71
+ `send_result` TINYINT NOT NULL DEFAULT 0,
72
+ `message_id` VARCHAR(200) NOT NULL DEFAULT '',
73
+ `fail_reason` VARCHAR(500) NOT NULL DEFAULT '',
74
+ `state` TINYINT NOT NULL DEFAULT 1,
75
+ `created_at` BIGINT NOT NULL DEFAULT 0,
76
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
77
+ `deleted_at` BIGINT NULL DEFAULT NULL,
78
+ PRIMARY KEY (`id`)
79
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
80
+
81
+ CREATE TABLE IF NOT EXISTS `befly_login_log` (
82
+ `id` BIGINT NOT NULL,
83
+ `admin_id` BIGINT NOT NULL DEFAULT 0,
84
+ `username` VARCHAR(50) NOT NULL DEFAULT '',
85
+ `nickname` VARCHAR(50) NOT NULL DEFAULT '',
86
+ `ip` VARCHAR(50) NOT NULL DEFAULT '',
87
+ `user_agent` VARCHAR(500) NOT NULL DEFAULT '',
88
+ `browser_name` VARCHAR(50) NOT NULL DEFAULT '',
89
+ `browser_version` VARCHAR(50) NOT NULL DEFAULT '',
90
+ `os_name` VARCHAR(50) NOT NULL DEFAULT '',
91
+ `os_version` VARCHAR(50) NOT NULL DEFAULT '',
92
+ `device_type` VARCHAR(20) NOT NULL DEFAULT '',
93
+ `device_vendor` VARCHAR(50) NOT NULL DEFAULT '',
94
+ `device_model` VARCHAR(50) NOT NULL DEFAULT '',
95
+ `engine_name` VARCHAR(50) NOT NULL DEFAULT '',
96
+ `cpu_architecture` VARCHAR(20) NOT NULL DEFAULT '',
97
+ `login_time` BIGINT NOT NULL DEFAULT 0,
98
+ `login_result` TINYINT NOT NULL DEFAULT 0,
99
+ `fail_reason` VARCHAR(200) NOT NULL DEFAULT '',
100
+ `state` TINYINT NOT NULL DEFAULT 1,
101
+ `created_at` BIGINT NOT NULL DEFAULT 0,
102
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
103
+ `deleted_at` BIGINT NULL DEFAULT NULL,
104
+ PRIMARY KEY (`id`)
105
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
106
+
107
+ CREATE TABLE IF NOT EXISTS `befly_menu` (
108
+ `id` BIGINT NOT NULL,
109
+ `name` VARCHAR(50) NOT NULL DEFAULT '',
110
+ `path` VARCHAR(150) NOT NULL DEFAULT '',
111
+ `sort` INT NOT NULL DEFAULT 0,
112
+ `parent_path` VARCHAR(200) NOT NULL DEFAULT '',
113
+ `state` TINYINT NOT NULL DEFAULT 1,
114
+ `created_at` BIGINT NOT NULL DEFAULT 0,
115
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
116
+ `deleted_at` BIGINT NULL DEFAULT NULL,
117
+ PRIMARY KEY (`id`)
118
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
119
+
120
+ CREATE TABLE IF NOT EXISTS `befly_operate_log` (
121
+ `id` BIGINT NOT NULL,
122
+ `admin_id` BIGINT NOT NULL DEFAULT 0,
123
+ `username` VARCHAR(50) NOT NULL DEFAULT '',
124
+ `nickname` VARCHAR(50) NOT NULL DEFAULT '',
125
+ `ip` VARCHAR(50) NOT NULL DEFAULT '',
126
+ `module` VARCHAR(50) NOT NULL DEFAULT '',
127
+ `action` VARCHAR(50) NOT NULL DEFAULT '',
128
+ `method` VARCHAR(10) NOT NULL DEFAULT '',
129
+ `path` VARCHAR(200) NOT NULL DEFAULT '',
130
+ `params` TEXT NULL,
131
+ `result` TINYINT NOT NULL DEFAULT 0,
132
+ `response` TEXT NULL,
133
+ `duration` BIGINT NOT NULL DEFAULT 0,
134
+ `operate_time` BIGINT NOT NULL DEFAULT 0,
135
+ `remark` VARCHAR(500) NOT NULL DEFAULT '',
136
+ `state` TINYINT NOT NULL DEFAULT 1,
137
+ `created_at` BIGINT NOT NULL DEFAULT 0,
138
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
139
+ `deleted_at` BIGINT NULL DEFAULT NULL,
140
+ PRIMARY KEY (`id`)
141
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
142
+
143
+ CREATE TABLE IF NOT EXISTS `befly_role` (
144
+ `id` BIGINT NOT NULL,
145
+ `name` VARCHAR(50) NOT NULL DEFAULT '',
146
+ `code` VARCHAR(50) NOT NULL DEFAULT '',
147
+ `description` VARCHAR(200) NOT NULL DEFAULT '',
148
+ `menus` JSON NULL,
149
+ `apis` JSON NULL,
150
+ `sort` INT NOT NULL DEFAULT 0,
151
+ `state` TINYINT NOT NULL DEFAULT 1,
152
+ `created_at` BIGINT NOT NULL DEFAULT 0,
153
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
154
+ `deleted_at` BIGINT NULL DEFAULT NULL,
155
+ PRIMARY KEY (`id`)
156
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
157
+
158
+ CREATE TABLE IF NOT EXISTS `befly_sys_config` (
159
+ `id` BIGINT NOT NULL,
160
+ `name` VARCHAR(50) NOT NULL DEFAULT '',
161
+ `code` VARCHAR(100) NOT NULL DEFAULT '',
162
+ `value` TEXT NULL,
163
+ `value_type` VARCHAR(20) NOT NULL DEFAULT '',
164
+ `group` VARCHAR(50) NOT NULL DEFAULT '',
165
+ `sort` INT NOT NULL DEFAULT 0,
166
+ `is_system` TINYINT NOT NULL DEFAULT 0,
167
+ `description` VARCHAR(500) NOT NULL DEFAULT '',
168
+ `state` TINYINT NOT NULL DEFAULT 1,
169
+ `created_at` BIGINT NOT NULL DEFAULT 0,
170
+ `updated_at` BIGINT NOT NULL DEFAULT 0,
171
+ `deleted_at` BIGINT NULL DEFAULT NULL,
172
+ PRIMARY KEY (`id`)
173
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/admin.sql DELETED
@@ -1,18 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `admin` (
2
- `id` BIGINT NOT NULL,
3
- `nickname` VARCHAR(50) NOT NULL DEFAULT '',
4
- `username` VARCHAR(30) NOT NULL DEFAULT '',
5
- `password` VARCHAR(500) NOT NULL DEFAULT '',
6
- `email` VARCHAR(100) NOT NULL DEFAULT '',
7
- `phone` VARCHAR(20) NOT NULL DEFAULT '',
8
- `avatar` VARCHAR(500) NOT NULL DEFAULT '',
9
- `role_code` VARCHAR(50) NOT NULL DEFAULT '',
10
- `role_type` VARCHAR(5) NOT NULL DEFAULT 'user',
11
- `last_login_time` BIGINT NOT NULL DEFAULT 0,
12
- `last_login_ip` VARCHAR(50) NOT NULL DEFAULT '',
13
- `state` TINYINT NOT NULL DEFAULT 1,
14
- `created_at` BIGINT NOT NULL DEFAULT 0,
15
- `updated_at` BIGINT NOT NULL DEFAULT 0,
16
- `deleted_at` BIGINT NULL DEFAULT NULL,
17
- PRIMARY KEY (`id`)
18
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/api.sql DELETED
@@ -1,12 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `api` (
2
- `id` BIGINT NOT NULL,
3
- `name` VARCHAR(100) NOT NULL DEFAULT '',
4
- `auth` VARCHAR(200) NOT NULL DEFAULT '',
5
- `path` VARCHAR(200) NOT NULL DEFAULT '',
6
- `parent_path` VARCHAR(200) NOT NULL DEFAULT '',
7
- `state` TINYINT NOT NULL DEFAULT 1,
8
- `created_at` BIGINT NOT NULL DEFAULT 0,
9
- `updated_at` BIGINT NOT NULL DEFAULT 0,
10
- `deleted_at` BIGINT NULL DEFAULT NULL,
11
- PRIMARY KEY (`id`)
12
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/dict.sql DELETED
@@ -1,13 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `dict` (
2
- `id` BIGINT NOT NULL,
3
- `type_code` VARCHAR(50) NOT NULL DEFAULT '',
4
- `key` VARCHAR(50) NOT NULL DEFAULT '',
5
- `label` VARCHAR(100) NOT NULL DEFAULT '',
6
- `sort` INT NOT NULL DEFAULT 0,
7
- `remark` VARCHAR(200) NOT NULL DEFAULT '',
8
- `state` TINYINT NOT NULL DEFAULT 1,
9
- `created_at` BIGINT NOT NULL DEFAULT 0,
10
- `updated_at` BIGINT NOT NULL DEFAULT 0,
11
- `deleted_at` BIGINT NULL DEFAULT NULL,
12
- PRIMARY KEY (`id`)
13
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/dictType.sql DELETED
@@ -1,12 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `dict_type` (
2
- `id` BIGINT NOT NULL,
3
- `code` VARCHAR(50) NOT NULL DEFAULT '',
4
- `name` VARCHAR(50) NOT NULL DEFAULT '',
5
- `description` VARCHAR(200) NOT NULL DEFAULT '',
6
- `sort` INT NOT NULL DEFAULT 0,
7
- `state` TINYINT NOT NULL DEFAULT 1,
8
- `created_at` BIGINT NOT NULL DEFAULT 0,
9
- `updated_at` BIGINT NOT NULL DEFAULT 0,
10
- `deleted_at` BIGINT NULL DEFAULT NULL,
11
- PRIMARY KEY (`id`)
12
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/emailLog.sql DELETED
@@ -1,20 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `email_log` (
2
- `id` BIGINT NOT NULL,
3
- `admin_id` BIGINT NOT NULL DEFAULT 0,
4
- `username` VARCHAR(100) NOT NULL DEFAULT '',
5
- `nickname` VARCHAR(100) NOT NULL DEFAULT '',
6
- `to_email` VARCHAR(200) NOT NULL DEFAULT '',
7
- `subject` VARCHAR(200) NOT NULL DEFAULT '',
8
- `content` TEXT NULL,
9
- `cc_email` VARCHAR(500) NOT NULL DEFAULT '',
10
- `bcc_email` VARCHAR(500) NOT NULL DEFAULT '',
11
- `send_time` BIGINT NOT NULL DEFAULT 0,
12
- `send_result` TINYINT NOT NULL DEFAULT 0,
13
- `message_id` VARCHAR(200) NOT NULL DEFAULT '',
14
- `fail_reason` VARCHAR(500) NOT NULL DEFAULT '',
15
- `state` TINYINT NOT NULL DEFAULT 1,
16
- `created_at` BIGINT NOT NULL DEFAULT 0,
17
- `updated_at` BIGINT NOT NULL DEFAULT 0,
18
- `deleted_at` BIGINT NULL DEFAULT NULL,
19
- PRIMARY KEY (`id`)
20
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/loginLog.sql DELETED
@@ -1,25 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `login_log` (
2
- `id` BIGINT NOT NULL,
3
- `admin_id` BIGINT NOT NULL DEFAULT 0,
4
- `username` VARCHAR(50) NOT NULL DEFAULT '',
5
- `nickname` VARCHAR(50) NOT NULL DEFAULT '',
6
- `ip` VARCHAR(50) NOT NULL DEFAULT '',
7
- `user_agent` VARCHAR(500) NOT NULL DEFAULT '',
8
- `browser_name` VARCHAR(50) NOT NULL DEFAULT '',
9
- `browser_version` VARCHAR(50) NOT NULL DEFAULT '',
10
- `os_name` VARCHAR(50) NOT NULL DEFAULT '',
11
- `os_version` VARCHAR(50) NOT NULL DEFAULT '',
12
- `device_type` VARCHAR(20) NOT NULL DEFAULT '',
13
- `device_vendor` VARCHAR(50) NOT NULL DEFAULT '',
14
- `device_model` VARCHAR(50) NOT NULL DEFAULT '',
15
- `engine_name` VARCHAR(50) NOT NULL DEFAULT '',
16
- `cpu_architecture` VARCHAR(20) NOT NULL DEFAULT '',
17
- `login_time` BIGINT NOT NULL DEFAULT 0,
18
- `login_result` TINYINT NOT NULL DEFAULT 0,
19
- `fail_reason` VARCHAR(200) NOT NULL DEFAULT '',
20
- `state` TINYINT NOT NULL DEFAULT 1,
21
- `created_at` BIGINT NOT NULL DEFAULT 0,
22
- `updated_at` BIGINT NOT NULL DEFAULT 0,
23
- `deleted_at` BIGINT NULL DEFAULT NULL,
24
- PRIMARY KEY (`id`)
25
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/menu.sql DELETED
@@ -1,12 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `menu` (
2
- `id` BIGINT NOT NULL,
3
- `name` VARCHAR(50) NOT NULL DEFAULT '',
4
- `path` VARCHAR(150) NOT NULL DEFAULT '',
5
- `sort` INT NOT NULL DEFAULT 0,
6
- `parent_path` VARCHAR(200) NOT NULL DEFAULT '',
7
- `state` TINYINT NOT NULL DEFAULT 1,
8
- `created_at` BIGINT NOT NULL DEFAULT 0,
9
- `updated_at` BIGINT NOT NULL DEFAULT 0,
10
- `deleted_at` BIGINT NULL DEFAULT NULL,
11
- PRIMARY KEY (`id`)
12
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
@@ -1,22 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `operate_log` (
2
- `id` BIGINT NOT NULL,
3
- `admin_id` BIGINT NOT NULL DEFAULT 0,
4
- `username` VARCHAR(50) NOT NULL DEFAULT '',
5
- `nickname` VARCHAR(50) NOT NULL DEFAULT '',
6
- `ip` VARCHAR(50) NOT NULL DEFAULT '',
7
- `module` VARCHAR(50) NOT NULL DEFAULT '',
8
- `action` VARCHAR(50) NOT NULL DEFAULT '',
9
- `method` VARCHAR(10) NOT NULL DEFAULT '',
10
- `path` VARCHAR(200) NOT NULL DEFAULT '',
11
- `params` TEXT NULL,
12
- `result` TINYINT NOT NULL DEFAULT 0,
13
- `response` TEXT NULL,
14
- `duration` BIGINT NOT NULL DEFAULT 0,
15
- `operate_time` BIGINT NOT NULL DEFAULT 0,
16
- `remark` VARCHAR(500) NOT NULL DEFAULT '',
17
- `state` TINYINT NOT NULL DEFAULT 1,
18
- `created_at` BIGINT NOT NULL DEFAULT 0,
19
- `updated_at` BIGINT NOT NULL DEFAULT 0,
20
- `deleted_at` BIGINT NULL DEFAULT NULL,
21
- PRIMARY KEY (`id`)
22
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/role.sql DELETED
@@ -1,14 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `role` (
2
- `id` BIGINT NOT NULL,
3
- `name` VARCHAR(50) NOT NULL DEFAULT '',
4
- `code` VARCHAR(50) NOT NULL DEFAULT '',
5
- `description` VARCHAR(200) NOT NULL DEFAULT '',
6
- `menus` JSON NULL,
7
- `apis` JSON NULL,
8
- `sort` INT NOT NULL DEFAULT 0,
9
- `state` TINYINT NOT NULL DEFAULT 1,
10
- `created_at` BIGINT NOT NULL DEFAULT 0,
11
- `updated_at` BIGINT NOT NULL DEFAULT 0,
12
- `deleted_at` BIGINT NULL DEFAULT NULL,
13
- PRIMARY KEY (`id`)
14
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
package/sql/sysConfig.sql DELETED
@@ -1,16 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `sys_config` (
2
- `id` BIGINT NOT NULL,
3
- `name` VARCHAR(50) NOT NULL DEFAULT '',
4
- `code` VARCHAR(100) NOT NULL DEFAULT '',
5
- `value` TEXT NULL,
6
- `value_type` VARCHAR(20) NOT NULL DEFAULT '',
7
- `group` VARCHAR(50) NOT NULL DEFAULT '',
8
- `sort` INT NOT NULL DEFAULT 0,
9
- `is_system` TINYINT NOT NULL DEFAULT 0,
10
- `description` VARCHAR(500) NOT NULL DEFAULT '',
11
- `state` TINYINT NOT NULL DEFAULT 1,
12
- `created_at` BIGINT NOT NULL DEFAULT 0,
13
- `updated_at` BIGINT NOT NULL DEFAULT 0,
14
- `deleted_at` BIGINT NULL DEFAULT NULL,
15
- PRIMARY KEY (`id`)
16
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;