Browse Source

权限选择自动勾选菜单权限

master
wanghongjun 1 month ago
parent
commit
610f8748ca
  1. 20
      app/Models/AdminMenu.php
  2. 10
      app/Services/AdminRolesService.php

20
app/Models/AdminMenu.php

@ -34,9 +34,8 @@ class AdminMenu extends Model
if ($menu_ids) {
$model->whereIn('id', $menu_ids);
}
$list = $model->where('parent_id', $parent_id)->whereNull(
'deleted_at'
)->select(['id', 'title'])->get()->toArray();
$list = $model->where('parent_id', $parent_id)->select(['id', 'title'])
->get()->toArray();
foreach ($list as &$item) {
$item['title'] = empty($item['title'])
? ''
@ -111,4 +110,19 @@ class AdminMenu extends Model
'role_id'
);
}
public static function getParentIds(&$data, $menu_ids)
{
$parent_ids = self::query()->where('status', 1)->whereIn(
'id',
$menu_ids
)->pluck('parent_id');
if ($parent_ids) {
$parent_ids = $parent_ids->toArray();
if (!in_array('0', $parent_ids)) {
$data = array_merge($data, $parent_ids);
self::getParentIds($data, $parent_ids);
}
}
}
}

10
app/Services/AdminRolesService.php

@ -2,11 +2,10 @@
namespace App\Services;
use App\Models\AdminMenu;
use App\Models\AdminRoleMenu;
use App\Models\AdminRoles;
use Exception;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
final class AdminRolesService
@ -115,6 +114,13 @@ final class AdminRolesService
*/
private function addAdminRoleMenu(int $role_id, array $menu_ids): void
{
$parent_ids = [];
AdminMenu::getParentIds($parent_ids, $menu_ids);
if ($parent_ids) {
$parent_ids = array_unique($parent_ids);
$menu_ids = array_merge($menu_ids,$parent_ids);
$menu_ids = array_unique($menu_ids);
}
AdminRoleMenu::createModel($menu_ids, $role_id);
$AdminRoleMenuData = AdminRoleMenu::getMenuData($role_id);
$this->logService->logCreatedData(

Loading…
Cancel
Save