优化更新

This commit is contained in:
2026-02-09 22:51:11 +08:00
parent 9939680942
commit adf7457502
12 changed files with 695 additions and 298 deletions

View File

@@ -48,72 +48,88 @@ class SystemSeeder extends Seeder
private function createSystemPermissions(): void
{
$permissions = [
// 系统配置
// 系统顶级菜单
[
'name' => '系统配置',
'code' => 'system.config',
'title' => '系统',
'name' => 'system',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/config',
'path' => '/system',
'component' => null,
'meta' => json_encode([
'icon' => 'Setting',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 3,
'status' => 1,
],
// 系统配置
[
'title' => '系统配置',
'name' => 'system.config',
'type' => 'menu',
'parent_id' => 0, // 稍后更新为系统菜单的ID
'path' => '/system/config',
'component' => 'system/config/index',
'meta' => json_encode([
'icon' => 'SettingFilled',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 6,
'sort' => 1,
'status' => 1,
],
[
'name' => '查看配置',
'code' => 'system.config.view',
'title' => '查看配置',
'name' => 'system.config.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.index',
'parent_id' => 0, // 稍后更新为系统配置菜单的ID
'path' => 'admin.config.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '创建配置',
'code' => 'system.config.create',
'title' => '创建配置',
'name' => 'system.config.create',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.store',
'parent_id' => 0, // 稍后更新为系统配置菜单的ID
'path' => 'admin.config.store',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '编辑配置',
'code' => 'system.config.update',
'title' => '编辑配置',
'name' => 'system.config.update',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.update',
'parent_id' => 0, // 稍后更新为系统配置菜单的ID
'path' => 'admin.config.update',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '删除配置',
'code' => 'system.config.delete',
'title' => '删除配置',
'name' => 'system.config.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.destroy',
'parent_id' => 0, // 稍后更新为系统配置菜单的ID
'path' => 'admin.config.destroy',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
[
'name' => '批量删除配置',
'code' => 'system.config.batch-delete',
'title' => '批量删除配置',
'name' => 'system.config.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.batch-delete',
'parent_id' => 0, // 稍后更新为系统配置菜单的ID
'path' => 'admin.config.batch-delete',
'component' => null,
'meta' => null,
'sort' => 5,
@@ -122,59 +138,59 @@ class SystemSeeder extends Seeder
// 系统日志
[
'name' => '系统日志',
'code' => 'system.logs',
'title' => '系统日志',
'name' => 'system.logs',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/logs',
'parent_id' => 0, // 稍后更新为系统菜单的ID
'path' => '/system/logs',
'component' => 'system/logs/index',
'meta' => json_encode([
'icon' => 'DocumentCopy',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 7,
'sort' => 2,
'status' => 1,
],
[
'name' => '查看日志',
'code' => 'system.logs.view',
'title' => '查看日志',
'name' => 'system.logs.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.index',
'parent_id' => 0, // 稍后更新为系统日志菜单的ID
'path' => 'admin.logs.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '删除日志',
'code' => 'system.logs.delete',
'title' => '删除日志',
'name' => 'system.logs.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.destroy',
'parent_id' => 0, // 稍后更新为系统日志菜单的ID
'path' => 'admin.logs.destroy',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '批量删除日志',
'code' => 'system.logs.batch-delete',
'title' => '批量删除日志',
'name' => 'system.logs.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.batch-delete',
'parent_id' => 0, // 稍后更新为系统日志菜单的ID
'path' => 'admin.logs.batch-delete',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '导出日志',
'code' => 'system.logs.export',
'title' => '导出日志',
'name' => 'system.logs.export',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.export',
'parent_id' => 0, // 稍后更新为系统日志菜单的ID
'path' => 'admin.logs.export',
'component' => null,
'meta' => null,
'sort' => 4,
@@ -183,70 +199,70 @@ class SystemSeeder extends Seeder
// 数据字典
[
'name' => '数据字典',
'code' => 'system.dictionaries',
'title' => '数据字典',
'name' => 'system.dictionaries',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/dictionaries',
'parent_id' => 0, // 稍后更新为系统菜单的ID
'path' => '/system/dictionaries',
'component' => 'system/dictionaries/index',
'meta' => json_encode([
'icon' => 'Notebook',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 8,
'sort' => 3,
'status' => 1,
],
[
'name' => '查看字典',
'code' => 'system.dictionaries.view',
'title' => '查看字典',
'name' => 'system.dictionaries.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.index',
'parent_id' => 0, // 稍后更新为数据字典菜单的ID
'path' => 'admin.dictionaries.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '创建字典',
'code' => 'system.dictionaries.create',
'title' => '创建字典',
'name' => 'system.dictionaries.create',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.store',
'parent_id' => 0, // 稍后更新为数据字典菜单的ID
'path' => 'admin.dictionaries.store',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '编辑字典',
'code' => 'system.dictionaries.update',
'title' => '编辑字典',
'name' => 'system.dictionaries.update',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.update',
'parent_id' => 0, // 稍后更新为数据字典菜单的ID
'path' => 'admin.dictionaries.update',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '删除字典',
'code' => 'system.dictionaries.delete',
'title' => '删除字典',
'name' => 'system.dictionaries.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.destroy',
'parent_id' => 0, // 稍后更新为数据字典菜单的ID
'path' => 'admin.dictionaries.destroy',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
[
'name' => '批量删除字典',
'code' => 'system.dictionaries.batch-delete',
'title' => '批量删除字典',
'name' => 'system.dictionaries.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.batch-delete',
'parent_id' => 0, // 稍后更新为数据字典菜单的ID
'path' => 'admin.dictionaries.batch-delete',
'component' => null,
'meta' => null,
'sort' => 5,
@@ -255,130 +271,253 @@ class SystemSeeder extends Seeder
// 定时任务
[
'name' => '定时任务',
'code' => 'system.tasks',
'title' => '定时任务',
'name' => 'system.tasks',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/tasks',
'parent_id' => 0, // 稍后更新为系统菜单的ID
'path' => '/system/tasks',
'component' => 'system/tasks/index',
'meta' => json_encode([
'icon' => 'Timer',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 9,
'sort' => 4,
'status' => 1,
],
[
'name' => '查看任务',
'code' => 'system.tasks.view',
'title' => '查看任务',
'name' => 'system.tasks.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.index',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '创建任务',
'code' => 'system.tasks.create',
'title' => '创建任务',
'name' => 'system.tasks.create',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.store',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.store',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '编辑任务',
'code' => 'system.tasks.update',
'title' => '编辑任务',
'name' => 'system.tasks.update',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.update',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.update',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '删除任务',
'code' => 'system.tasks.delete',
'title' => '删除任务',
'name' => 'system.tasks.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.destroy',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.destroy',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
[
'name' => '批量删除任务',
'code' => 'system.tasks.batch-delete',
'title' => '批量删除任务',
'name' => 'system.tasks.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.batch-delete',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.batch-delete',
'component' => null,
'meta' => null,
'sort' => 5,
'status' => 1,
],
[
'name' => '执行任务',
'code' => 'system.tasks.execute',
'title' => '执行任务',
'name' => 'system.tasks.execute',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.execute',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.execute',
'component' => null,
'meta' => null,
'sort' => 6,
'status' => 1,
],
[
'name' => '启用任务',
'code' => 'system.tasks.enable',
'title' => '启用任务',
'name' => 'system.tasks.enable',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.enable',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.enable',
'component' => null,
'meta' => null,
'sort' => 7,
'status' => 1,
],
[
'name' => '禁用任务',
'code' => 'system.tasks.disable',
'title' => '禁用任务',
'name' => 'system.tasks.disable',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.disable',
'parent_id' => 0, // 稍后更新为定时任务菜单的ID
'path' => 'admin.tasks.disable',
'component' => null,
'meta' => null,
'sort' => 8,
'status' => 1,
],
// 个人中心
[
'name' => '个人中心',
'code' => 'system.profile',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/profile',
'component' => 'system/profile/index',
'meta' => json_encode([
'icon' => 'UserFilled',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 10,
'status' => 1,
],
];
foreach ($permissions as $permission) {
Permission::create($permission);
}
// 更新parent_id
$this->updateParentIds();
}
/**
* 更新parent_id建立层级关系
*/
private function updateParentIds(): void
{
$permissions = Permission::all();
// 获取系统顶级菜单ID
$systemMenu = $permissions->where('name', 'system')->first();
// 获取系统子菜单ID
$configMenu = $permissions->where('name', 'system.config')->first();
$logsMenu = $permissions->where('name', 'system.logs')->first();
$dictionariesMenu = $permissions->where('name', 'system.dictionaries')->first();
$tasksMenu = $permissions->where('name', 'system.tasks')->first();
// 更新系统子菜单的parent_id
if ($systemMenu) {
if ($configMenu) {
$configMenu->update(['parent_id' => $systemMenu->id]);
}
if ($logsMenu) {
$logsMenu->update(['parent_id' => $systemMenu->id]);
}
if ($dictionariesMenu) {
$dictionariesMenu->update(['parent_id' => $systemMenu->id]);
}
if ($tasksMenu) {
$tasksMenu->update(['parent_id' => $systemMenu->id]);
}
}
// 更新按钮权限的parent_id - 系统配置
$configViewBtn = $permissions->where('name', 'system.config.view')->first();
$configCreateBtn = $permissions->where('name', 'system.config.create')->first();
$configUpdateBtn = $permissions->where('name', 'system.config.update')->first();
$configDeleteBtn = $permissions->where('name', 'system.config.delete')->first();
$configBatchDeleteBtn = $permissions->where('name', 'system.config.batch-delete')->first();
if ($configMenu) {
if ($configViewBtn) {
$configViewBtn->update(['parent_id' => $configMenu->id]);
}
if ($configCreateBtn) {
$configCreateBtn->update(['parent_id' => $configMenu->id]);
}
if ($configUpdateBtn) {
$configUpdateBtn->update(['parent_id' => $configMenu->id]);
}
if ($configDeleteBtn) {
$configDeleteBtn->update(['parent_id' => $configMenu->id]);
}
if ($configBatchDeleteBtn) {
$configBatchDeleteBtn->update(['parent_id' => $configMenu->id]);
}
}
// 更新按钮权限的parent_id - 系统日志
$logsViewBtn = $permissions->where('name', 'system.logs.view')->first();
$logsDeleteBtn = $permissions->where('name', 'system.logs.delete')->first();
$logsBatchDeleteBtn = $permissions->where('name', 'system.logs.batch-delete')->first();
$logsExportBtn = $permissions->where('name', 'system.logs.export')->first();
if ($logsMenu) {
if ($logsViewBtn) {
$logsViewBtn->update(['parent_id' => $logsMenu->id]);
}
if ($logsDeleteBtn) {
$logsDeleteBtn->update(['parent_id' => $logsMenu->id]);
}
if ($logsBatchDeleteBtn) {
$logsBatchDeleteBtn->update(['parent_id' => $logsMenu->id]);
}
if ($logsExportBtn) {
$logsExportBtn->update(['parent_id' => $logsMenu->id]);
}
}
// 更新按钮权限的parent_id - 数据字典
$dictViewBtn = $permissions->where('name', 'system.dictionaries.view')->first();
$dictCreateBtn = $permissions->where('name', 'system.dictionaries.create')->first();
$dictUpdateBtn = $permissions->where('name', 'system.dictionaries.update')->first();
$dictDeleteBtn = $permissions->where('name', 'system.dictionaries.delete')->first();
$dictBatchDeleteBtn = $permissions->where('name', 'system.dictionaries.batch-delete')->first();
if ($dictionariesMenu) {
if ($dictViewBtn) {
$dictViewBtn->update(['parent_id' => $dictionariesMenu->id]);
}
if ($dictCreateBtn) {
$dictCreateBtn->update(['parent_id' => $dictionariesMenu->id]);
}
if ($dictUpdateBtn) {
$dictUpdateBtn->update(['parent_id' => $dictionariesMenu->id]);
}
if ($dictDeleteBtn) {
$dictDeleteBtn->update(['parent_id' => $dictionariesMenu->id]);
}
if ($dictBatchDeleteBtn) {
$dictBatchDeleteBtn->update(['parent_id' => $dictionariesMenu->id]);
}
}
// 更新按钮权限的parent_id - 定时任务
$taskViewBtn = $permissions->where('name', 'system.tasks.view')->first();
$taskCreateBtn = $permissions->where('name', 'system.tasks.create')->first();
$taskUpdateBtn = $permissions->where('name', 'system.tasks.update')->first();
$taskDeleteBtn = $permissions->where('name', 'system.tasks.delete')->first();
$taskBatchDeleteBtn = $permissions->where('name', 'system.tasks.batch-delete')->first();
$taskExecuteBtn = $permissions->where('name', 'system.tasks.execute')->first();
$taskEnableBtn = $permissions->where('name', 'system.tasks.enable')->first();
$taskDisableBtn = $permissions->where('name', 'system.tasks.disable')->first();
if ($tasksMenu) {
if ($taskViewBtn) {
$taskViewBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskCreateBtn) {
$taskCreateBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskUpdateBtn) {
$taskUpdateBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskDeleteBtn) {
$taskDeleteBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskBatchDeleteBtn) {
$taskBatchDeleteBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskExecuteBtn) {
$taskExecuteBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskEnableBtn) {
$taskEnableBtn->update(['parent_id' => $tasksMenu->id]);
}
if ($taskDisableBtn) {
$taskDisableBtn->update(['parent_id' => $tasksMenu->id]);
}
}
}
/**