初始化项目

This commit is contained in:
2026-02-08 22:38:13 +08:00
commit 334d2c6312
201 changed files with 32724 additions and 0 deletions
+636
View File
@@ -0,0 +1,636 @@
<?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);
}
}
}