logic = $logic; } public function index(Request $request) { if (!$request->ajax()) { return view('admin/system/role/index'); } $roles = Role::query()->orderByDesc('id')->paginate($request->input('pageSize') ?? TABLE_PAGE_SIZE); return response()->json([ 'rows' => $roles->items(), 'total' => $roles->total() ]); } public function save(Request $request, $id) { if (!$request->ajax()) { $record = Role::query()->find($id); return view('admin/system/role/save', [ 'data' => $record ]); } Role::query()->updateOrCreate([ 'id' => $id ], [ 'name' => $request->input('name') ]); return response()->json(['message' => '操作成功']); } public function batchDestroy(Request $request) { $ids = $request->input('ids'); Role::destroy($ids); return response()->json(['message' => '操作成功']); } public function allotPermissions(Request $request) { $roleIds = $request->input('roleIds'); if (!$request->ajax()) { $selects = []; if (count($roleIds) == 1) { $role = Role::query()->where(['id' => $roleIds[0]])->first(); if (!$role) return response()->json(['message' => '参数错误'], 400); $selects = $role->permissions->pluck('id')->toArray(); } $permissions = $this->logic->getRoleCanPermissions($role ?? null); array_walk($permissions, function (&$item) use ($selects) { $item['open'] = true; $item['name'] = $item['name'] . ($item['type'] == 1 ? '【菜单】' : '【功能】'); if (in_array($item['id'], $selects)) { $item['checked'] = true; } }); $trees = list_to_tree($permissions, 'id', 'parent_id', 'children'); return view('admin/system/role/permission', [ 'trees' => $trees, 'roleIds' => $roleIds ]); } $permissionIds = $request->input('permissionIds'); $roles = Role::query()->whereIn('id', $roleIds)->get(); foreach ($roles as $role) { $role->permissions()->sync($permissionIds); } return response()->json(['message' => '操作成功']); } }