id; $inputs = $request->validated(); $inputs['admin_id'] = $id; $role = $model->create($inputs); if (!empty($perms = $inputs['permissions'] ?? [])) { $role->permissions()->attach($perms); } // 添加菜单权限 if (!empty($vue_routers = $inputs['menu'] ?? [])) { $vue_routers = setlist(object_array($vue_routers)); $role->vue_routers()->attach(array_column($vue_routers,'id')); } return $this->created(AdminRoleResource::make($role)); } public function edit(AdminRole $adminRole) { $adminRole->load(['permissions','vue_routers']); return $this->ok(AdminRoleResource::make($adminRole)); } public function update(AdminRoleRequest $request, AdminRole $adminRole) { $inputs = $request->validated(); //Log::info(json_encode($inputs)); $adminRole->update($inputs); if (isset($inputs['permissions'])) { $adminRole->permissions()->sync($inputs['permissions']); } //更新菜单权限 if (!empty($inputs['menu'])) { $vue_routeres = setlist(object_array($inputs['menu'])); // Log::info($vue_routeres); // $vue_routeres = $inputs['vue_routers']; $adminRole->vue_routers()->sync(array_column($vue_routeres,'id')); } return $this->created(AdminRoleResource::make($adminRole)); } public function destroy(AdminRole $adminRole) { $adminRole->delete(); return $this->noContent(); } public function index(Request $request, AdminRoleFilter $filter) { $id = Admin::user()->id; if (Admin::isAdministrator()) { $roles = AdminRole::query() ->with(['permissions']) ->filter($filter) // ->where('id','>',1) ->orderByDesc('id'); $roles = $request->get('all') ? $roles->get() : $roles->paginate(); } elseif (Admin::isNormalAdministrator()) { $roles = AdminRole::query() ->with(['permissions']) ->filter($filter) // ->where('id','>',1) ->where('id', '>', 1) ->orderByDesc('id'); $roles = $request->get('all') ? $roles->get() : $roles->paginate(); } else { $roles = AdminRole::query() ->with(['permissions']) ->filter($filter) ->where('id', '>', 2) ->where('admin_id', $id) ->orderByDesc('id'); $roles = $request->get('all') ? $roles->get() : $roles->paginate(); } return $this->ok(AdminRoleResource::collection($roles)); } }