| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace App\Module\Game\AdminControllers\Actions;
- use App\Module\Game\Models\GameRewardItem;
- use Dcat\Admin\Grid\RowAction;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- /**
- * 复制奖励项行操作
- */
- class DuplicateRewardItemAction extends RowAction
- {
- /**
- * 按钮标题
- *
- * @var string
- */
- protected $title = '<i class="fa fa-copy"></i> 复制';
- /**
- * 处理请求
- *
- * @param Request $request
- * @return \Dcat\Admin\Actions\Response
- */
- public function handle(Request $request)
- {
- // 获取当前行ID
- $id = $this->getKey();
-
- // 查找原奖励项
- $originalItem = GameRewardItem::find($id);
- if (!$originalItem) {
- return $this->response()->error('奖励项不存在');
- }
-
- // 开启事务
- DB::beginTransaction();
-
- try {
- // 创建新奖励项
- $newItem = new GameRewardItem();
- $newItem->group_id = $originalItem->group_id;
- $newItem->reward_type = $originalItem->reward_type;
- $newItem->target_id = $originalItem->target_id;
- $newItem->param1 = $originalItem->param1;
- $newItem->param2 = $originalItem->param2;
- $newItem->quantity = $originalItem->quantity;
- $newItem->min_quantity = $originalItem->min_quantity;
- $newItem->max_quantity = $originalItem->max_quantity;
- $newItem->weight = $originalItem->weight;
- $newItem->probability = $originalItem->probability;
- $newItem->is_guaranteed = $originalItem->is_guaranteed;
- $newItem->extra_data = $originalItem->extra_data;
- $newItem->save();
-
- DB::commit();
-
- return $this->response()
- ->success("复制成功 [ID: {$newItem->id}]")
- ->refresh();
- } catch (\Exception $e) {
- DB::rollBack();
- return $this->response()->error('复制失败: ' . $e->getMessage());
- }
- }
-
- /**
- * 确认信息
- *
- * @return array
- */
- public function confirm()
- {
- return ['确定要复制这个奖励项吗?', '复制操作将在同一奖励组中创建一个新的奖励项记录'];
- }
- }
|