Files
hyperf_rbac_framework_serve…/seeders/admin_menu_seeder.php
2025-09-12 15:23:08 +08:00

474 lines
21 KiB
PHP

<?php
declare(strict_types=1);
use App\Model\AdminMenu;
use App\Model\Meta\AdminUserMeta;
use Hyperf\Database\Seeders\Seeder;
use Hyperf\DbConnection\Db;
use function Hyperf\Support\env;
class AdminMenuSeeder extends Seeder
{
public const array BASE_DATA = [
'name' => '',
'path' => '',
'component' => '',
'redirect' => '',
'created_by' => 0,
'updated_by' => 0,
'remark' => '',
];
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
AdminMenu::truncate();
if (env('DB_DRIVER') === 'odbc-sql-server') {
Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] ON;');
}
$this->create($this->data());
if (env('DB_DRIVER') === 'odbc-sql-server') {
Db::unprepared('SET IDENTITY_INSERT [' . AdminMenu::getModel()->getTable() . '] OFF;');
}
}
/**
* @param array $data
* @param int $parentId
* @return void
*/
private function create(array $data, int $parentId = 0): void
{
foreach ($data as $item) {
$_item = $item;
if (isset($item['children'])) unset($_item['children']);
$_item['parent_id'] = $parentId;
$insert = AdminMenu::create(array_merge(self::BASE_DATA, $_item));
if (isset($item['children']) && count($item['children'])) $this->create($item['children'], $insert->id);
}
}
private function data(): array
{
return [
[
'name' => 'permission',
'path' => '/permission',
'meta' => new AdminUserMeta([
'title' => '权限管理',
'i18n' => 'baseMenu.permission.index',
'icon' => 'ri:git-repository-private-line',
'type' => 'M',
'hidden' => 0,
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:user',
'path' => '/permission/user',
'component' => 'base/views/permission/user/index',
'meta' => new AdminUserMeta([
'type' => 'M',
'title' => '用户管理',
'i18n' => 'baseMenu.permission.user',
'icon' => 'material-symbols:manage-accounts-outline',
'hidden' => 0,
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:user:index',
'meta' => new AdminUserMeta([
'title' => '用户列表',
'type' => 'B',
'i18n' => 'baseMenu.permission.userList',
]),
],
[
'name' => 'permission:user:save',
'meta' => new AdminUserMeta([
'title' => '用户保存',
'type' => 'B',
'i18n' => 'baseMenu.permission.userSave',
]),
],
[
'name' => 'permission:user:update',
'meta' => new AdminUserMeta([
'title' => '用户更新',
'type' => 'B',
'i18n' => 'baseMenu.permission.userUpdate',
]),
],
[
'name' => 'permission:user:delete',
'meta' => new AdminUserMeta([
'title' => '用户删除',
'type' => 'B',
'i18n' => 'baseMenu.permission.userDelete',
]),
],
[
'name' => 'permission:user:password',
'meta' => new AdminUserMeta([
'title' => '用户初始化密码',
'type' => 'B',
'i18n' => 'baseMenu.permission.userPassword',
]),
],
[
'name' => 'user:get:roles',
'meta' => new AdminUserMeta([
'title' => '获取用户角色',
'type' => 'B',
'i18n' => 'baseMenu.permission.getUserRole',
]),
],
[
'name' => 'user:set:roles',
'meta' => new AdminUserMeta([
'title' => '用户角色赋予',
'type' => 'B',
'i18n' => 'baseMenu.permission.setUserRole',
]),
],
],
],
[
'name' => 'permission:menu',
'path' => '/permission/menu',
'component' => 'base/views/permission/menu/index',
'meta' => new AdminUserMeta([
'title' => '菜单管理',
'i18n' => 'baseMenu.permission.menu',
'icon' => 'ph:list-bold',
'hidden' => 0,
'type' => 'M',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:menu:index',
'meta' => new AdminUserMeta([
'title' => '菜单列表',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuList',
]),
],
[
'name' => 'permission:menu:create',
'meta' => new AdminUserMeta([
'title' => '菜单保存',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuSave',
]),
],
[
'name' => 'permission:menu:save',
'meta' => new AdminUserMeta([
'title' => '菜单更新',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuUpdate',
]),
],
[
'name' => 'permission:menu:delete',
'meta' => new AdminUserMeta([
'title' => '菜单删除',
'type' => 'B',
'i18n' => 'baseMenu.permission.menuDelete',
]),
],
],
],
[
'name' => 'permission:role',
'path' => '/permission/role',
'component' => 'base/views/permission/role/index',
'meta' => new AdminUserMeta([
'title' => '角色管理',
'i18n' => 'baseMenu.permission.role',
'icon' => 'material-symbols:supervisor-account-outline-rounded',
'hidden' => 0,
'type' => 'M',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'permission:role:index',
'meta' => new AdminUserMeta([
'title' => '角色列表',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleList',
]),
],
[
'name' => 'permission:role:save',
'meta' => new AdminUserMeta([
'title' => '角色保存',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleSave',
]),
],
[
'name' => 'permission:role:update',
'meta' => new AdminUserMeta([
'title' => '角色更新',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleUpdate',
]),
],
[
'name' => 'permission:role:delete',
'meta' => new AdminUserMeta([
'title' => '角色删除',
'type' => 'B',
'i18n' => 'baseMenu.permission.roleDelete',
]),
],
[
'name' => 'permission:get:role',
'meta' => new AdminUserMeta([
'title' => '获取角色权限',
'type' => 'B',
'i18n' => 'baseMenu.permission.getRolePermission',
]),
],
[
'name' => 'permission:set:role',
'meta' => new AdminUserMeta([
'title' => '赋予角色权限',
'type' => 'B',
'i18n' => 'baseMenu.permission.setRolePermission',
]),
],
],
],
],
],
[
'name' => 'log',
'path' => '/log',
'meta' => new AdminUserMeta([
'title' => '日志管理',
'i18n' => 'baseMenu.log.index',
'icon' => 'ph:instagram-logo',
'type' => 'M',
'hidden' => 0,
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'log:userLogin',
'path' => '/log/userLoginLog',
'component' => 'base/views/log/userLogin',
'meta' => new AdminUserMeta([
'title' => '用户登录日志管理',
'type' => 'M',
'hidden' => 0,
'icon' => 'ph:user-list',
'i18n' => 'baseMenu.log.userLoginLog',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'log:userLogin:list',
'path' => '/log/userLoginLog',
'meta' => new AdminUserMeta([
'title' => '用户登录日志列表',
'i18n' => 'baseMenu.log.userLoginLogList',
'type' => 'B',
]),
],
[
'name' => 'log:userLogin:delete',
'meta' => new AdminUserMeta([
'title' => '删除用户登录日志',
'i18n' => 'baseMenu.log.userLoginLogDelete',
'type' => 'B',
]),
],
],
],
[
'name' => 'log:userOperation',
'path' => '/log/operationLog',
'component' => 'base/views/log/userOperation',
'meta' => new AdminUserMeta([
'title' => '操作日志管理',
'type' => 'M',
'hidden' => 0,
'icon' => 'ph:list-magnifying-glass',
'i18n' => 'baseMenu.log.operationLog',
'componentPath' => 'modules/',
'componentSuffix' => '.vue',
'breadcrumbEnable' => 1,
'copyright' => 1,
'cache' => 1,
'affix' => 0,
]),
'children' => [
[
'name' => 'log:userOperation:list',
'meta' => new AdminUserMeta([
'title' => '用户操作日志列表',
'i18n' => 'baseMenu.log.userOperationLog',
'type' => 'B',
]),
],
[
'name' => 'log:userOperation:delete',
'meta' => new AdminUserMeta([
'title' => '删除用户操作日志',
'i18n' => 'baseMenu.log.userOperationLogDelete',
'type' => 'B',
]),
],
],
],
],
],
/* [
'name' => '工具',
'code' => 'devTools',
'icon' => 'ma-icon-tool',
'path' => 'devTools',
'hidden' => '2',
'type' => 'M',
'children' => [
[
'name' => '代码生成器',
'code' => 'setting:code',
'icon' => 'ma-icon-code',
'path' => 'code',
'component' => 'setting/code/index',
'hidden' => '2',
'type' => 'M',
'children' => [
[
'name' => '预览代码',
'code' => 'setting:code:preview',
'type' => 'B',
],
[
'name' => '装载数据表',
'code' => 'setting:code:loadTable',
'type' => 'B',
],
[
'name' => '删除业务表',
'code' => 'setting:code:delete',
'type' => 'B',
],
[
'name' => '同步业务表',
'code' => 'setting:code:sync',
'type' => 'B',
],
[
'name' => '生成代码',
'code' => 'setting:code:generate',
'type' => 'B',
],
],
],
[
'name' => '数据源管理',
'code' => 'setting:datasource',
'icon' => 'icon-storage',
'path' => 'setting/datasource',
'component' => 'setting/datasource/index',
'hidden' => '2',
'type' => 'M',
'children' => [
[
'name' => '数据源管理列表',
'code' => 'setting:datasource:index',
'type' => 'B',
],
[
'name' => '数据源管理保存',
'code' => 'setting:datasource:save',
'type' => 'B',
],
[
'name' => '数据源管理更新',
'code' => 'setting:datasource:update',
'type' => 'B',
],
[
'name' => '数据源管理读取',
'code' => 'setting:datasource:read',
'type' => 'B',
],
[
'name' => '数据源管理删除',
'code' => 'setting:datasource:delete',
'type' => 'B',
],
[
'name' => '数据源管理导入',
'code' => 'setting:datasource:import',
'type' => 'B',
],
[
'name' => '数据源管理导出',
'code' => 'setting:datasource:export',
'type' => 'B',
],
],
],
[
'name' => '系统接口',
'code' => 'systemInterface',
'icon' => 'icon-compass',
'path' => 'systemInterface',
'component' => 'setting/systemInterface/index',
'hidden' => '2',
'type' => 'M',
],
],
],*/
];
}
}