TestCleanupAction.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace App\Module\Cleanup\AdminControllers\Actions;
  3. use App\Module\Cleanup\Services\CleanupService;
  4. use Dcat\Admin\Grid\RowAction;
  5. use Dcat\Admin\Actions\Response;
  6. use Illuminate\Http\Request;
  7. /**
  8. * 测试清理Action
  9. *
  10. * 用于测试单个配置的清理效果,不实际删除数据
  11. */
  12. class TestCleanupAction extends RowAction
  13. {
  14. /**
  15. * 按钮标题
  16. */
  17. protected $title = '测试清理';
  18. /**
  19. * 处理请求
  20. */
  21. public function handle(Request $request)
  22. {
  23. try {
  24. $configId = $this->getKey();
  25. // 调用预览服务
  26. $result = CleanupService::previewCleanup($configId);
  27. if (!$result['success']) {
  28. return $this->response()
  29. ->error('测试失败:' . $result['message']);
  30. }
  31. $data = $result['data'];
  32. return $this->response()
  33. ->success('测试完成!')
  34. ->detail("
  35. 表名:{$data['table_name']}<br>
  36. 清理类型:{$data['cleanup_type_name']}<br>
  37. 当前记录数:" . number_format($data['current_count']) . "<br>
  38. 预计删除:" . number_format($data['estimated_delete']) . "<br>
  39. 预计保留:" . number_format($data['estimated_remain']) . "<br>
  40. 删除比例:{$data['delete_percentage']}%
  41. ");
  42. } catch (\Exception $e) {
  43. return $this->response()
  44. ->error('测试失败:' . $e->getMessage());
  45. }
  46. }
  47. /**
  48. * 确认对话框
  49. */
  50. public function confirm()
  51. {
  52. return [
  53. '确认测试清理?',
  54. '此操作只会预览清理效果,不会实际删除数据。'
  55. ];
  56. }
  57. }