DuplicateConsumeItemAction.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace App\Module\Game\AdminControllers\Actions;
  3. use App\Module\Game\Models\GameConsumeItem;
  4. use Dcat\Admin\Grid\RowAction;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\DB;
  7. /**
  8. * 复制消耗项行操作
  9. */
  10. class DuplicateConsumeItemAction extends RowAction
  11. {
  12. /**
  13. * 按钮标题
  14. *
  15. * @var string
  16. */
  17. protected $title = '<i class="fa fa-copy"></i> 复制';
  18. /**
  19. * 处理请求
  20. *
  21. * @param Request $request
  22. * @return \Dcat\Admin\Actions\Response
  23. */
  24. public function handle(Request $request)
  25. {
  26. // 获取当前行ID
  27. $id = $this->getKey();
  28. // 查找原消耗项
  29. $originalItem = GameConsumeItem::find($id);
  30. if (!$originalItem) {
  31. return $this->response()->error('消耗项不存在');
  32. }
  33. // 开启事务
  34. DB::beginTransaction();
  35. try {
  36. // 创建新消耗项
  37. $newItem = new GameConsumeItem();
  38. $newItem->group_id = $originalItem->group_id;
  39. $newItem->consume_type = $originalItem->consume_type;
  40. $newItem->target_id = $originalItem->target_id;
  41. $newItem->param1 = $originalItem->param1;
  42. $newItem->param2 = $originalItem->param2;
  43. $newItem->quantity = $originalItem->quantity;
  44. $newItem->extra_data = $originalItem->extra_data;
  45. $newItem->save();
  46. DB::commit();
  47. return $this->response()
  48. ->success('复制成功')
  49. ->refresh();
  50. } catch (\Exception $e) {
  51. DB::rollBack();
  52. return $this->response()->error('复制失败: ' . $e->getMessage());
  53. }
  54. }
  55. /**
  56. * 确认信息
  57. *
  58. * @return string
  59. */
  60. public function confirm()
  61. {
  62. return '确定要复制这个消耗项吗?';
  63. }
  64. }