复制'; /** * 处理请求 * * @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 '确定要复制这个消耗组吗?'; } }