复制'; /** * 处理请求 * * @param Request $request * @return \Dcat\Admin\Actions\Response */ public function handle(Request $request) { try { // 获取当前行ID $id = $this->getKey(); // 查找原宝箱配置 $originalConfig = ItemChestConfig::with(['item'])->find($id); if (!$originalConfig) { return $this->response()->error('宝箱配置不存在'); } // 查找一个未被使用的宝箱物品 $usedItemIds = ItemChestConfig::pluck('item_id')->toArray(); $availableChest = \App\Module\GameItems\Models\Item::where('type', ITEM_TYPE::CHEST) ->whereNotIn('id', $usedItemIds) ->first(); if (!$availableChest) { return $this->response()->error('没有可用的宝箱物品进行复制,所有宝箱都已有配置'); } // 复制配置,使用找到的可用宝箱 $newConfig = $originalConfig->replicate(); $newConfig->item_id = $availableChest->id; // 使用可用的宝箱ID $newConfig->is_active = false; // 复制的配置默认为未激活状态 $newConfig->save(); $chestName = $originalConfig->item ? $originalConfig->item->name : '未知宝箱'; // 跳转到编辑页面,让用户修改配置 return $this->response() ->success("已成功复制宝箱配置 [{$chestName}] 到 [{$availableChest->name}] (ID: {$newConfig->id})") ->redirect(admin_url("game-items-chest-configs/{$newConfig->id}/edit")); } catch (\Exception $e) { return $this->response() ->error('复制失败: ' . $e->getMessage()); } } /** * 确认信息 * * @return array|string|void */ public function confirm() { return ['确定要复制此宝箱配置吗?', '复制操作将创建一个新的宝箱配置记录,并跳转到编辑页面']; } }