BatchRandomRewardAction.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace App\Module\Game\AdminControllers\Actions;
  3. use App\Module\Game\AdminControllers\LazyRenderable\RandomRewardResultLazyRenderable;
  4. use App\Module\Game\Models\GameRewardGroup;
  5. use Dcat\Admin\Grid\RowAction;
  6. use Dcat\Admin\Widgets\Modal;
  7. use Illuminate\Http\Request;
  8. /**
  9. * 批量随机奖励操作
  10. */
  11. class BatchRandomRewardAction extends RowAction
  12. {
  13. /**
  14. * 模拟次数
  15. *
  16. * @var int
  17. */
  18. protected int $count;
  19. /**
  20. * 构造函数
  21. *
  22. * @param int $count 模拟次数
  23. */
  24. public function __construct(int $count = 10)
  25. {
  26. $this->count = $count;
  27. $this->title = "<i class=\"fa fa-gift\"></i> {$count}次随机奖励";
  28. }
  29. /**
  30. * 渲染操作按钮
  31. *
  32. * @return string
  33. */
  34. public function render()
  35. {
  36. $group = GameRewardGroup::find($this->getKey());
  37. if (!$group) {
  38. return '<span class="text-muted">奖励组不存在</span>';
  39. }
  40. // 创建弹窗表格
  41. $modal = Modal::make()
  42. ->xl()
  43. ->title("{$this->count}次随机奖励模拟结果 - {$group->name}")
  44. ->body(RandomRewardResultLazyRenderable::make()->payload([
  45. 'group_id' => $this->getKey(),
  46. 'count' => $this->count
  47. ]))
  48. ->button($this->title);
  49. return $modal->render();
  50. }
  51. /**
  52. * 处理请求(这个方法在使用Modal时不会被调用)
  53. *
  54. * @param Request $request
  55. * @return mixed
  56. */
  57. public function handle(Request $request)
  58. {
  59. // 使用Modal时此方法不会被调用
  60. return $this->response()->success('操作完成');
  61. }
  62. }