stationTaskChildService=null; } function create(int $amountToCreate):Collection { $stationTasks=collect(); for ($i=0;$i<$amountToCreate;$i++){ $stationTasks->push(StationTask::query()->create(['status'=>'待处理'])); } return $stationTasks; } /** * 两个列表一一对应,每个task注册一组子任务: [task,task...],[[subTask,subTask],[subTask,subTask]....] * @param Collection $tasks * @param Collection $subTaskLists 二维数组,第一维是对应注册的任务 */ function registerSubTasks(Collection $tasks, iterable $subTaskLists) { $this->instant($this->stationTaskChildService,'StationTaskChildService'); $taskChildren_toInsert=collect(); foreach ($subTaskLists as $i=>$subTaskList){ foreach ($subTaskList as $subTask){ $paramToInsert = [ 'station_task_id' => $tasks[$i]['id'], 'station_taskable_type' => get_class($subTask), 'station_taskable_id' => $subTask['id'], ]; $taskChild_existed=$this->stationTaskChildService->get($paramToInsert)->first(); if(!$taskChild_existed){ $taskChildren_toInsert->push($paramToInsert); $subTask['station_task_id']=$tasks[$i]['id']; $subTask->save(); } } } $this->stationTaskChildService->insert($taskChildren_toInsert->toArray()); } function markProcessing_byIds($ids) { if(!$ids)$ids=[]; if(!is_array($ids))$ids=[$ids]; StationTask::query() ->whereIn('id',$ids) ->update(['status'=>'处理中']); } function markProcessing($stationTask_orCollection) { if (get_class($stationTask_orCollection)==StationTask::class){ $stationTask_orCollection = collect([$stationTask_orCollection]); } $this->markProcessing_byIds( data_get($stationTask_orCollection, '*.station_id') ); } }