eloquentClass::findOrFail($id); $newTask = $task->replicate(); $newTask->name = $task->name . ' (复制)'; $newTask->save(); // 复制任务奖励 foreach ($task->rewards as $reward) { $newReward = $reward->replicate(); $newReward->task_id = $newTask->id; $newReward->save(); } // 复制任务消耗 foreach ($task->costs as $cost) { $newCost = $cost->replicate(); $newCost->task_id = $newTask->id; $newCost->save(); } // 复制任务达成条件 foreach ($task->achievementConditions as $condition) { $newCondition = $condition->replicate(); $newCondition->task_id = $newTask->id; $newCondition->save(); } return $newTask; } /** * 获取可用任务列表 * * @param int $userId 用户ID * @param string|null $type 任务类型 * @param int $userLevel 用户等级 * @return array 可用任务列表 */ public function getAvailableTasks(int $userId, ?string $type = null, int $userLevel = 0): array { $query = $this->eloquentClass::query() ->where('is_active', true) ->where('level_required', '<=', $userLevel) ->where(function ($query) { $query->whereNull('start_time') ->orWhere('start_time', '<=', now()); }) ->where(function ($query) { $query->whereNull('end_time') ->orWhere('end_time', '>=', now()); }); if ($type) { $query->where('type', $type); } return $query->get()->toArray(); } }