diff --git a/app/Models/AdminMenu.php b/app/Models/AdminMenu.php index dd45b34..8d87cca 100644 --- a/app/Models/AdminMenu.php +++ b/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); + } + } + } } diff --git a/app/Services/AdminRolesService.php b/app/Services/AdminRolesService.php index 9b736a8..14a0998 100644 --- a/app/Services/AdminRolesService.php +++ b/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(