checkPersonnelChanges(); // 生成新的服务记录 $this->generateNewServiceLogs(); Log::write('服务记录分发任务完成 ' . date('Y-m-d H:i:s')); } catch (\Exception $e) { Log::write('服务记录分发任务异常: ' . $e->getMessage()); return false; } return true; } /** * 检查人员变更 */ private function checkPersonnelChanges() { $service = new ServiceLogsDistributionService(); $result = $service->checkAndUpdatePersonnelChanges(); if ($result['success']) { Log::write("人员变更检查完成,更新了 {$result['updated_count']} 条记录"); } else { Log::write("人员变更检查失败: {$result['message']}"); } } /** * 生成新的服务记录 */ private function generateNewServiceLogs() { // 获取所有有效的学员课程,但之前没有教练或教务,现在有了的 $courses = Db::table('school_student_courses') ->where('status', 1) ->where(function ($query) { $query->where('main_coach_id', '>', 0) ->whereOr('education_id', '>', 0); }) ->select() ->toArray(); $service = new ServiceLogsDistributionService(); $totalGenerated = 0; foreach ($courses as $course) { // 检查是否已经为这个课程生成过服务记录 $existingLogs = Db::table('school_service_logs') ->where('course_id', $course['id']) ->count(); // 如果没有服务记录,说明是新设置的教练/教务,需要生成服务记录 if ($existingLogs == 0) { $result = $service->generateServiceLogs($course); if ($result['success']) { $totalGenerated += $result['generated_count']; } } } Log::write("本次任务为新课程生成了 {$totalGenerated} 条服务记录"); } /** * 发送服务记录通知 * @param Personnel $staff 接收人员 * @param ServiceLogs $serviceLog 服务记录 * @param string $type 通知类型 (academic|coach) */ private function sendServiceLogNotice($staff, $serviceLog, $type) { // 可以在这里实现通知功能 // 比如发送短信、邮件、站内通知等 } }