get('page', 1); $limit = (int)$request->get('limit', 15); $query = Role::with('permissions'); if ($name = $request->get('name')) { $query->where('name', 'like', "%{$name}%"); } $total = $query->count(); $list = $query->offset(($page - 1) * $limit) ->limit($limit) ->orderBy('id', 'desc') ->get(); return jsonResponse([ 'total' => $total, 'list' => $list ]); } public function all(Request $request) { $roles = Role::all(); return jsonResponse($roles); } public function create(Request $request) { $name = trim($request->post('name', '')); $code = trim($request->post('code', '')); $description = trim($request->post('description', '')); $permissionIds = $request->post('permission_ids', []); if (!$name || !$code) { return jsonResponse(null, '角色名称和编码必填', 400); } if (Role::where('name', $name)->exists()) { return jsonResponse(null, '角色名称已存在', 400); } if (Role::where('code', $code)->exists()) { return jsonResponse(null, '角色编码已存在', 400); } DB::beginTransaction(); try { $role = Role::create([ 'name' => $name, 'code' => $code, 'description' => $description, ]); if (!empty($permissionIds)) { $role->permissions()->sync($permissionIds); } DB::commit(); return jsonResponse(null, '创建成功'); } catch (\Exception $e) { DB::rollBack(); return jsonResponse(null, '创建失败: ' . $e->getMessage(), 500); } } public function update(Request $request) { $id = (int)$request->post('id'); $role = Role::find($id); if (!$role) { return jsonResponse(null, '角色不存在', 404); } $name = trim($request->post('name', '')); if ($name && $name !== $role->name) { if (Role::where('name', $name)->exists()) { return jsonResponse(null, '角色名称已存在', 400); } $role->name = $name; } $code = trim($request->post('code', '')); if ($code && $code !== $role->code) { if (Role::where('code', $code)->exists()) { return jsonResponse(null, '角色编码已存在', 400); } $role->code = $code; } if ($request->post('description') !== null) { $role->description = trim($request->post('description')); } $permissionIds = $request->post('permission_ids'); DB::beginTransaction(); try { $role->save(); if (is_array($permissionIds)) { $role->permissions()->sync($permissionIds); } DB::commit(); return jsonResponse(null, '更新成功'); } catch (\Exception $e) { DB::rollBack(); return jsonResponse(null, '更新失败: ' . $e->getMessage(), 500); } } public function delete(Request $request) { $id = (int)$request->post('id'); $role = Role::find($id); if (!$role) { return jsonResponse(null, '角色不存在', 404); } DB::beginTransaction(); try { $role->permissions()->detach(); $role->delete(); DB::table('admin_roles')->where('role_id', $id)->delete(); DB::commit(); return jsonResponse(null, '删除成功'); } catch (\Exception $e) { DB::rollBack(); return jsonResponse(null, '删除失败: ' . $e->getMessage(), 500); } } }