DisableConfigAction.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Module\Mex\AdminActions;
  3. use App\Module\Mex\Models\MexConfig;
  4. use App\Module\Mex\Service\MexConfigService;
  5. use Dcat\Admin\Grid\BatchAction;
  6. use Illuminate\Http\Request;
  7. /**
  8. * 禁用配置批量操作
  9. */
  10. class DisableConfigAction extends BatchAction
  11. {
  12. protected $title = '禁用配置';
  13. /**
  14. * 处理批量操作
  15. *
  16. * @param Request $request
  17. * @return \Dcat\Admin\Actions\Response
  18. */
  19. public function handle(Request $request)
  20. {
  21. $keys = $this->getKey();
  22. if (empty($keys)) {
  23. return $this->response()->error('请选择要禁用的配置项');
  24. }
  25. $successCount = 0;
  26. $failedKeys = [];
  27. $configs = MexConfig::whereIn('id', $keys)->get();
  28. foreach ($configs as $config) {
  29. if ($config->is_readonly) {
  30. $failedKeys[] = $config->key . '(只读)';
  31. continue;
  32. }
  33. if (MexConfigService::setEnabled($config->key, false)) {
  34. $successCount++;
  35. } else {
  36. $failedKeys[] = $config->key;
  37. }
  38. }
  39. $message = "成功禁用 {$successCount} 个配置项";
  40. if (!empty($failedKeys)) {
  41. $message .= ",失败:" . implode(', ', $failedKeys);
  42. }
  43. return $this->response()
  44. ->success($message)
  45. ->refresh();
  46. }
  47. /**
  48. * 确认对话框
  49. *
  50. * @return string|array|void
  51. */
  52. public function confirm()
  53. {
  54. return ['确定要禁用选中的配置项吗?', '禁用后配置项将使用默认值'];
  55. }
  56. }