| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- namespace App\Module\Game\AdminControllers\Actions;
- use App\Module\Game\Models\GameConsumeGroup;
- use App\Module\Game\Models\GameConsumeItem;
- use Dcat\Admin\Grid\RowAction;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- /**
- * 复制消耗组行操作
- */
- class DuplicateConsumeGroupAction 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();
-
- // 查找原消耗组
- $originalGroup = GameConsumeGroup::find($id);
- if (!$originalGroup) {
- return $this->response()->error('消耗组不存在');
- }
-
- // 开启事务
- DB::beginTransaction();
-
- try {
- // 创建新消耗组
- $newGroup = new GameConsumeGroup();
- $newGroup->name = $originalGroup->name . ' (复制)';
- $newGroup->code = $originalGroup->code . '_copy_' . time();
- $newGroup->description = $originalGroup->description;
- $newGroup->save();
-
- // 复制消耗项
- $originalItems = GameConsumeItem::where('group_id', $id)->get();
- foreach ($originalItems as $item) {
- $newItem = new GameConsumeItem();
- $newItem->group_id = $newGroup->id;
- $newItem->consume_type = $item->consume_type;
- $newItem->target_id = $item->target_id;
- $newItem->param1 = $item->param1;
- $newItem->param2 = $item->param2;
- $newItem->quantity = $item->quantity;
- $newItem->extra_data = $item->extra_data;
- $newItem->save();
- }
-
- DB::commit();
-
- return $this->response()
- ->success('复制成功')
- ->refresh();
- } catch (\Exception $e) {
- DB::rollBack();
- return $this->response()->error('复制失败: ' . $e->getMessage());
- }
- }
-
- /**
- * 确认信息
- *
- * @return string
- */
- public function confirm()
- {
- return '确定要复制这个消耗组吗?';
- }
- }
|