ScanTablesAction.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Module\Cleanup\AdminControllers\Actions;
  3. use App\Module\Cleanup\Services\CleanupService;
  4. use Dcat\Admin\Grid\Tools\AbstractTool;
  5. use Dcat\Admin\Actions\Response;
  6. use Illuminate\Http\Request;
  7. /**
  8. * 扫描表格Action
  9. *
  10. * 用于在配置管理页面扫描数据库表格
  11. */
  12. class ScanTablesAction extends AbstractTool
  13. {
  14. /**
  15. * 按钮标题
  16. */
  17. protected $title = '扫描表格';
  18. /**
  19. * 处理请求
  20. */
  21. public function handle(Request $request)
  22. {
  23. try {
  24. // 调用扫描服务
  25. $result = CleanupService::scanTables(true); // 强制刷新
  26. return $this->response()
  27. ->success('扫描完成!')
  28. ->detail("成功扫描 {$result['scanned_count']} 个表,创建/更新了 {$result['created_count']} 个配置")
  29. ->refresh();
  30. } catch (\Exception $e) {
  31. return $this->response()
  32. ->error('扫描失败:' . $e->getMessage());
  33. }
  34. }
  35. /**
  36. * 确认对话框
  37. */
  38. public function confirm()
  39. {
  40. return [
  41. '确认扫描表格?',
  42. '此操作将扫描所有 kku_ 开头的数据表并创建/更新清理配置。'
  43. ];
  44. }
  45. /**
  46. * 渲染按钮
  47. */
  48. public function render()
  49. {
  50. return <<<HTML
  51. <a href="javascript:void(0);" class="btn btn-primary btn-sm" data-action="{$this->getHandleRoute()}">
  52. <i class="fa fa-search"></i> {$this->title}
  53. </a>
  54. HTML;
  55. }
  56. }