refactor: 修改角色权限新增/更新接口

This commit is contained in:
2025-02-28 13:41:31 +08:00
parent a1125a2668
commit 5ed8e3d205
2 changed files with 21 additions and 15 deletions

View File

@@ -93,13 +93,16 @@ class Role
if (!empty($post['menu_permission'])) { if (!empty($post['menu_permission'])) {
$permissions = []; $permissions = [];
foreach ($post['menu_permission'] as $menu) { foreach ($post['menu_permission'] as $menu) {
$permissions[] = [ if (!isset($menu['permissions'])) {
'role_id' => $role->id, continue;
'menu_id' => $menu['menu_id'], }
'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) { foreach ($post['permissions'] as $permission) {
return $v1 | $v2; $permissions[] = [
}) 'role_id' => $role->id,
]; 'menu_id' => $menu['menu_id'],
'permission' => $permission
];
}
} }
$authority = (new SysRoleAuthorityModel)->saveAll($permissions); $authority = (new SysRoleAuthorityModel)->saveAll($permissions);
if ($authority->isEmpty()) { if ($authority->isEmpty()) {
@@ -151,13 +154,16 @@ class Role
if (!empty($put['menu_permission'])) { if (!empty($put['menu_permission'])) {
$permissions = []; $permissions = [];
foreach ($put['menu_permission'] as $menu) { foreach ($put['menu_permission'] as $menu) {
$permissions[] = [ if (!isset($menu['permissions'])) {
'role_id' => $role->id, continue;
'menu_id' => $menu['menu_id'], }
'permission' => array_reduce($menu['permissions']??[], function($v1, $v2) { foreach ($menu['permissions'] as $permission) {
return $v1 | $v2; $permissions[] = [
}) 'role_id' => $role->id,
]; 'menu_id' => $menu['menu_id'],
'permission' => $permission
];
}
} }
SysRoleAuthorityModel::roleId($role->id)->delete(); SysRoleAuthorityModel::roleId($role->id)->delete();

View File

@@ -30,7 +30,7 @@ class CreateSysRoleAuthority extends Migrator
$table = $this->table('sys_role_authority', ['id' => false, 'engine' => 'InnoDB', 'comment' => '系统角色权限表']); $table = $this->table('sys_role_authority', ['id' => false, 'engine' => 'InnoDB', 'comment' => '系统角色权限表']);
$table->addColumn('role_id', 'integer', ['null' => false, 'comment' => '角色ID']) $table->addColumn('role_id', 'integer', ['null' => false, 'comment' => '角色ID'])
->addColumn('menu_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(); ->create();
} }
} }