From 5ed8e3d2058f1da925a8b2b5d1ed86d0ba9f784d Mon Sep 17 00:00:00 2001 From: jsasg <735273025@qq.com> Date: Fri, 28 Feb 2025 13:41:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BF=AE=E6=94=B9=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9D=83=E9=99=90=E6=96=B0=E5=A2=9E/=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/v1/Role.php | 34 +++++++++++-------- ...241230063507_create_sys_role_authority.php | 2 +- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/app/admin/controller/v1/Role.php b/app/admin/controller/v1/Role.php index 95a90351..d41bcf95 100644 --- a/app/admin/controller/v1/Role.php +++ b/app/admin/controller/v1/Role.php @@ -93,13 +93,16 @@ class Role if (!empty($post['menu_permission'])) { $permissions = []; foreach ($post['menu_permission'] as $menu) { - $permissions[] = [ - 'role_id' => $role->id, - 'menu_id' => $menu['menu_id'], - 'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) { - return $v1 | $v2; - }) - ]; + if (!isset($menu['permissions'])) { + continue; + } + foreach ($post['permissions'] as $permission) { + $permissions[] = [ + 'role_id' => $role->id, + 'menu_id' => $menu['menu_id'], + 'permission' => $permission + ]; + } } $authority = (new SysRoleAuthorityModel)->saveAll($permissions); if ($authority->isEmpty()) { @@ -151,13 +154,16 @@ class Role if (!empty($put['menu_permission'])) { $permissions = []; foreach ($put['menu_permission'] as $menu) { - $permissions[] = [ - 'role_id' => $role->id, - 'menu_id' => $menu['menu_id'], - 'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) { - return $v1 | $v2; - }) - ]; + if (!isset($menu['permissions'])) { + continue; + } + foreach ($menu['permissions'] as $permission) { + $permissions[] = [ + 'role_id' => $role->id, + 'menu_id' => $menu['menu_id'], + 'permission' => $permission + ]; + } } SysRoleAuthorityModel::roleId($role->id)->delete(); diff --git a/database/migrations/20241230063507_create_sys_role_authority.php b/database/migrations/20241230063507_create_sys_role_authority.php index 4cfa0437..e40bcb33 100644 --- a/database/migrations/20241230063507_create_sys_role_authority.php +++ b/database/migrations/20241230063507_create_sys_role_authority.php @@ -30,7 +30,7 @@ class CreateSysRoleAuthority extends Migrator $table = $this->table('sys_role_authority', ['id' => false, 'engine' => 'InnoDB', 'comment' => '系统角色权限表']); $table->addColumn('role_id', 'integer', ['null' => false, 'comment' => '角色ID']) ->addColumn('menu_id', 'integer', ['null' => false, 'comment' => '菜单ID']) - ->addColumn('permission', 'integer', ['null' => true, 'default' => null, 'comment' => '权限许可']) + ->addColumn('permission', 'string', ['limit' => 128, 'null' => true, 'default' => null, 'comment' => '菜单能力权限标志']) ->create(); } }