getKey(); $restoreMode = $request->input('restore_mode', 'append'); $selectedTables = $request->input('selected_tables', []); // 调用服务恢复备份 $result = CleanupService::restoreBackup($backupId, [ 'restore_mode' => $restoreMode, 'selected_tables' => $selectedTables, ]); if (!$result['success']) { return $this->response() ->error('恢复失败:' . $result['message']); } $data = $result['data']; return $this->response() ->success('数据恢复成功!') ->detail(" 恢复模式:{$data['restore_mode_name']}
恢复表数:{$data['restored_tables']}
恢复记录数:" . number_format($data['restored_records']) . "
执行时间:{$data['execution_time']}秒 "); } catch (\Exception $e) { return $this->response() ->error('恢复失败:' . $e->getMessage()); } } /** * 确认对话框 */ public function confirm() { return [ '确认恢复数据?', '⚠️ 数据恢复操作不可逆,请谨慎操作!', [ 'restore_mode' => [ 'type' => 'select', 'label' => '恢复模式', 'options' => [ 'append' => '追加模式(保留现有数据)', 'replace' => '替换模式(清空后恢复)', 'merge' => '合并模式(智能合并)', ], 'default' => 'append', 'required' => true, ], 'selected_tables' => [ 'type' => 'checkbox', 'label' => '选择表', 'options' => [], // 这里应该动态获取备份中的表列表 'help' => '不选择则恢复所有表', ] ] ]; } /** * 权限检查 */ public function allowed() { $row = $this->row; return $row->backup_status == 2; // 只有已完成的备份可以恢复 } /** * 渲染按钮 */ public function render() { return << {$this->title} HTML; } }