get('page', 1); $limit = (int)$request->get('limit', 15); $query = AdminUser::with('roles'); if ($username = $request->get('username')) { $query->where('username', 'like', "%{$username}%"); } $total = $query->count(); $list = $query->offset(($page - 1) * $limit) ->limit($limit) ->orderBy('id', 'desc') ->get(); return jsonResponse([ 'total' => $total, 'list' => $list ]); } public function create(Request $request) { $username = trim($request->post('username', '')); $password = $request->post('password', ''); $roleIds = $request->post('role_ids', []); if (!$username || !$password) { return jsonResponse(null, '用户名和密码必填', 400); } if (AdminUser::where('username', $username)->exists()) { return jsonResponse(null, '用户名已存在', 400); } DB::beginTransaction(); try { $admin = AdminUser::create([ 'username' => $username, 'password_hash' => password_hash($password, PASSWORD_DEFAULT), 'status' => (int)$request->post('status', 1), 'is_super' => (int)$request->post('is_super', 0), ]); if (!empty($roleIds)) { $admin->roles()->sync($roleIds); } 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'); $admin = AdminUser::find($id); if (!$admin) { return jsonResponse(null, '用户不存在', 404); } $username = trim($request->post('username', '')); if ($username && $username !== $admin->username) { if (AdminUser::where('username', $username)->exists()) { return jsonResponse(null, '用户名已存在', 400); } $admin->username = $username; } $password = $request->post('password'); if ($password) { $admin->password_hash = password_hash($password, PASSWORD_DEFAULT); } if ($request->post('status') !== null) { $admin->status = (int)$request->post('status'); } if ($request->post('is_super') !== null) { $admin->is_super = (int)$request->post('is_super'); } $roleIds = $request->post('role_ids'); DB::beginTransaction(); try { $admin->save(); if (is_array($roleIds)) { $admin->roles()->sync($roleIds); } 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'); if ($id === 1) { return jsonResponse(null, '超级管理员不可删除', 403); } $admin = AdminUser::find($id); if (!$admin) { return jsonResponse(null, '用户不存在', 404); } DB::beginTransaction(); try { $admin->roles()->detach(); $admin->delete(); DB::commit(); return jsonResponse(null, '删除成功'); } catch (\Exception $e) { DB::rollBack(); return jsonResponse(null, '删除失败: ' . $e->getMessage(), 500); } } }