Files
laravel_swoole/database/seeders/SystemSeeder.php
2026-02-08 22:38:13 +08:00

637 lines
21 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace Database\Seeders;
use App\Models\System\Config;
use App\Models\System\Dictionary;
use App\Models\System\DictionaryItem;
use App\Models\Auth\Permission;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class SystemSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// SQLite 不支持 SET FOREIGN_KEY_CHECKS使用 PRAGMA
if (DB::getDriverName() === 'sqlite') {
DB::statement('PRAGMA foreign_keys = OFF;');
} else {
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
}
// 清空表数据
DictionaryItem::truncate();
Dictionary::truncate();
Config::truncate();
$this->createSystemPermissions();
$this->createSystemDictionaries();
$this->createSystemConfigs();
$this->command->info('System module data seeded successfully!');
// 恢复外键约束
if (DB::getDriverName() === 'sqlite') {
DB::statement('PRAGMA foreign_keys = ON;');
} else {
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
}
}
/**
* 创建系统管理权限节点
*/
private function createSystemPermissions(): void
{
$permissions = [
// 系统配置
[
'name' => '系统配置',
'code' => 'system.config',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/config',
'component' => 'system/config/index',
'meta' => json_encode([
'icon' => 'SettingFilled',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 6,
'status' => 1,
],
[
'name' => '查看配置',
'code' => 'system.config.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '创建配置',
'code' => 'system.config.create',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.store',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '编辑配置',
'code' => 'system.config.update',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.update',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '删除配置',
'code' => 'system.config.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.destroy',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
[
'name' => '批量删除配置',
'code' => 'system.config.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.config.batch-delete',
'component' => null,
'meta' => null,
'sort' => 5,
'status' => 1,
],
// 系统日志
[
'name' => '系统日志',
'code' => 'system.logs',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/logs',
'component' => 'system/logs/index',
'meta' => json_encode([
'icon' => 'DocumentCopy',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 7,
'status' => 1,
],
[
'name' => '查看日志',
'code' => 'system.logs.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '删除日志',
'code' => 'system.logs.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.destroy',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '批量删除日志',
'code' => 'system.logs.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.batch-delete',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '导出日志',
'code' => 'system.logs.export',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.logs.export',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
// 数据字典
[
'name' => '数据字典',
'code' => 'system.dictionaries',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/dictionaries',
'component' => 'system/dictionaries/index',
'meta' => json_encode([
'icon' => 'Notebook',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 8,
'status' => 1,
],
[
'name' => '查看字典',
'code' => 'system.dictionaries.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '创建字典',
'code' => 'system.dictionaries.create',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.store',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '编辑字典',
'code' => 'system.dictionaries.update',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.update',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '删除字典',
'code' => 'system.dictionaries.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.destroy',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
[
'name' => '批量删除字典',
'code' => 'system.dictionaries.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.dictionaries.batch-delete',
'component' => null,
'meta' => null,
'sort' => 5,
'status' => 1,
],
// 定时任务
[
'name' => '定时任务',
'code' => 'system.tasks',
'type' => 'menu',
'parent_id' => 0,
'route' => '/system/tasks',
'component' => 'system/tasks/index',
'meta' => json_encode([
'icon' => 'Timer',
'hidden' => false,
'hiddenBreadcrumb' => false,
]),
'sort' => 9,
'status' => 1,
],
[
'name' => '查看任务',
'code' => 'system.tasks.view',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.index',
'component' => null,
'meta' => null,
'sort' => 1,
'status' => 1,
],
[
'name' => '创建任务',
'code' => 'system.tasks.create',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.store',
'component' => null,
'meta' => null,
'sort' => 2,
'status' => 1,
],
[
'name' => '编辑任务',
'code' => 'system.tasks.update',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.update',
'component' => null,
'meta' => null,
'sort' => 3,
'status' => 1,
],
[
'name' => '删除任务',
'code' => 'system.tasks.delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.destroy',
'component' => null,
'meta' => null,
'sort' => 4,
'status' => 1,
],
[
'name' => '批量删除任务',
'code' => 'system.tasks.batch-delete',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.batch-delete',
'component' => null,
'meta' => null,
'sort' => 5,
'status' => 1,
],
[
'name' => '执行任务',
'code' => 'system.tasks.execute',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.execute',
'component' => null,
'meta' => null,
'sort' => 6,
'status' => 1,
],
[
'name' => '启用任务',
'code' => 'system.tasks.enable',
'type' => 'button',
'parent_id' => 0,
'route' => 'admin.tasks.enable',
'component' => null,
'meta' => null,
'sort' => 7,
'status' => 1,
],
[
'name' => '禁用任务',
'code' => 'system.tasks.disable',
'type' => 'button',
'parent_id' => 0,
'route' => '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);
}
}
/**
* 创建系统字典
*/
private function createSystemDictionaries(): void
{
// 创建字典类型
$dictionaries = [
[
'name' => '用户状态',
'code' => 'user_status',
'description' => '用户账号状态',
'sort' => 1,
'status' => 1,
],
[
'name' => '性别',
'code' => 'gender',
'description' => '用户性别',
'sort' => 2,
'status' => 1,
],
[
'name' => '角色状态',
'code' => 'role_status',
'description' => '角色启用状态',
'sort' => 3,
'status' => 1,
],
[
'name' => '字典状态',
'code' => 'dictionary_status',
'description' => '数据字典状态',
'sort' => 4,
'status' => 1,
],
[
'name' => '任务状态',
'code' => 'task_status',
'description' => '定时任务状态',
'sort' => 5,
'status' => 1,
],
[
'name' => '日志类型',
'code' => 'log_type',
'description' => '系统日志类型',
'sort' => 6,
'status' => 1,
],
[
'name' => '是否',
'code' => 'yes_no',
'description' => '是否选项',
'sort' => 7,
'status' => 1,
],
];
foreach ($dictionaries as $dictionary) {
$dict = Dictionary::create($dictionary);
$this->createDictionaryItems($dict);
}
}
/**
* 创建字典项
*/
private function createDictionaryItems(Dictionary $dictionary): void
{
$items = [];
switch ($dictionary->code) {
case 'user_status':
$items = [
['label' => '正常', 'value' => 1, 'sort' => 1, 'status' => 1],
['label' => '禁用', 'value' => 0, 'sort' => 2, 'status' => 1],
];
break;
case 'gender':
$items = [
['label' => '男', 'value' => 1, 'sort' => 1, 'status' => 1],
['label' => '女', 'value' => 2, 'sort' => 2, 'status' => 1],
['label' => '保密', 'value' => 0, 'sort' => 3, 'status' => 1],
];
break;
case 'role_status':
$items = [
['label' => '启用', 'value' => 1, 'sort' => 1, 'status' => 1],
['label' => '禁用', 'value' => 0, 'sort' => 2, 'status' => 1],
];
break;
case 'dictionary_status':
$items = [
['label' => '启用', 'value' => 1, 'sort' => 1, 'status' => 1],
['label' => '禁用', 'value' => 0, 'sort' => 2, 'status' => 1],
];
break;
case 'task_status':
$items = [
['label' => '待执行', 'value' => 0, 'sort' => 1, 'status' => 1],
['label' => '执行中', 'value' => 1, 'sort' => 2, 'status' => 1],
['label' => '已完成', 'value' => 2, 'sort' => 3, 'status' => 1],
['label' => '失败', 'value' => 3, 'sort' => 4, 'status' => 1],
];
break;
case 'log_type':
$items = [
['label' => '登录日志', 'value' => 'login', 'sort' => 1, 'status' => 1],
['label' => '操作日志', 'value' => 'operation', 'sort' => 2, 'status' => 1],
['label' => '异常日志', 'value' => 'error', 'sort' => 3, 'status' => 1],
['label' => '系统日志', 'value' => 'system', 'sort' => 4, 'status' => 1],
];
break;
case 'yes_no':
$items = [
['label' => '是', 'value' => 1, 'sort' => 1, 'status' => 1],
['label' => '否', 'value' => 0, 'sort' => 2, 'status' => 1],
];
break;
}
foreach ($items as $item) {
$dictionary->items()->create($item);
}
}
/**
* 创建系统配置
*/
private function createSystemConfigs(): void
{
$configs = [
[
'group' => 'basic',
'key' => 'site_name',
'name' => '网站名称',
'value' => 'Laravel Swoole 管理系统',
'default_value' => 'Laravel Swoole 管理系统',
'type' => 'input',
'description' => '系统显示的网站名称',
'sort' => 1,
'is_system' => true,
'status' => true,
],
[
'group' => 'basic',
'key' => 'site_logo',
'name' => '网站Logo',
'value' => '',
'default_value' => '',
'type' => 'image',
'description' => '系统Logo图片地址',
'sort' => 2,
'is_system' => true,
'status' => true,
],
[
'group' => 'basic',
'key' => 'site_copyright',
'name' => '版权信息',
'value' => '© 2024 Laravel Swoole Admin',
'default_value' => '© 2024 Laravel Swoole Admin',
'type' => 'input',
'description' => '网站底部版权信息',
'sort' => 3,
'is_system' => true,
'status' => true,
],
[
'group' => 'basic',
'key' => 'site_icp',
'name' => '备案号',
'value' => '',
'default_value' => '',
'type' => 'input',
'description' => '网站备案号',
'sort' => 4,
'is_system' => true,
'status' => true,
],
[
'group' => 'upload',
'key' => 'upload_max_size',
'name' => '上传最大限制',
'value' => '10',
'default_value' => '10',
'type' => 'number',
'description' => '文件上传最大限制MB',
'sort' => 1,
'is_system' => true,
'status' => true,
],
[
'group' => 'upload',
'key' => 'upload_allowed_types',
'name' => '允许上传类型',
'value' => 'jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx',
'default_value' => 'jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx',
'type' => 'input',
'description' => '允许上传的文件扩展名',
'sort' => 2,
'is_system' => true,
'status' => true,
],
[
'group' => 'system',
'key' => 'user_default_avatar',
'name' => '默认头像',
'value' => '',
'default_value' => '',
'type' => 'image',
'description' => '用户默认头像地址',
'sort' => 1,
'is_system' => true,
'status' => true,
],
[
'group' => 'system',
'key' => 'system_timezone',
'name' => '系统时区',
'value' => 'Asia/Shanghai',
'default_value' => 'Asia/Shanghai',
'type' => 'input',
'description' => '系统默认时区',
'sort' => 2,
'is_system' => true,
'status' => true,
],
[
'group' => 'system',
'key' => 'system_language',
'name' => '系统语言',
'value' => 'zh-CN',
'default_value' => 'zh-CN',
'type' => 'input',
'description' => '系统默认语言',
'sort' => 3,
'is_system' => true,
'status' => true,
],
];
foreach ($configs as $config) {
Config::create($config);
}
}
}