student) && empty((array)$request->parent)) { throw new Exception('请登陆后再查看'); } if (!empty((array)$request->student)) { $student = Student::where(['id' => $request->student->id])->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到用户信息'); } } if (!empty((array)$request->parent)) { $student = Student::where(['parent_id' => $request->parent->id])->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到用户信息'); } } $data = $request->post(); $student_schedule = StudentSchedule::where(['id' => $data['subject_homework_id']])->findOrEmpty(); if ($student_schedule->isEmpty()) { throw new Exception('未找到学生排课信息'); } $subject_homework = SubjectHomework::where(['teacher_schedule_time_id' => $student_schedule->teacher_schedule_time_id, 'homework_file_is_publish' => 1])->findOrEmpty(); if ($subject_homework->isEmpty()) { throw new Exception('老师还未布置课程作业'); } $feedback_file_url = ''; if (isset($data['feedback_file_url'])) { if (!empty(json_decode($data['feedback_file_url'], true))) { $feedback_file_url = $data['feedback_file_url']; } } $homework = StudentHomework::where(['student_id' => $student->id, 'subject_homework_id' => $subject_homework->id])->findOrEmpty(); if ($homework->isEmpty()) { $homework = new StudentHomework(); } $homework->save([ 'student_id' => $student->id, 'subject_homework_id' => $subject_homework->id, 'teacher_id' => $subject_homework->teacher_id, 'teacher_schedule_time_id' => $subject_homework->teacher_schedule_time_id, 'subject_id' => $subject_homework->subject_id, 'date' => $subject_homework->date, 'time' => $subject_homework->time, 'en_time' => $subject_homework->en_time, 'hour' => $subject_homework->hour, 'start_time' => $subject_homework->start_time, 'end_time' => $subject_homework->end_time, 'en_start_time' => $subject_homework->start_time, 'en_end_time' => $subject_homework->end_time, 'month' => $subject_homework->month, 'feedback_file_url' => $feedback_file_url, ]); return [ 'code' => ResponseCode::SUCCESS, 'msg' => '操作成功' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 获取学生的课程作业 * @param $request * @return array|void */ public function getStudentSubjectHomework($request) { try { $data = $request->get(); $homework = StudentHomework::where(['teacher_schedule_time_id' => $data['teacher_schedule_time_id']])->order('id asc'); $page = isset($data['page']) ? $data['page'] : 1; $limit = isset($data['limit']) ? $data['limit'] : 10; $total = $homework->count(); $list = $homework->page($page, $limit)->bind(['student', 'subject'])->select(); return [ 'code' => ResponseCode::SUCCESS, 'data' => [ 'list' => $list, 'total' => $total, 'page' => $page, ], 'msg' => 'success' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 获取学生作业 * @param $request * @return array */ public function getStudentHomework($request) { try { if (empty((array)$request->student) && empty((array)$request->parent)) { throw new Exception('请登陆后再查看'); } if (!empty((array)$request->student)) { $student = Student::where(['id' => $request->student->id])->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到用户信息'); } } if (!empty((array)$request->parent)) { $student = Student::where(['parent_id' => $request->parent->id])->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到用户信息'); } } $data = $request->all(); $page = isset($data['page']) ? $data['page'] : 1; $limit = isset($data['limit']) ? $data['limit'] : 10; if ($data['status'] == 0) { //未提交作业的课程 //查找该学生已发布的排课 $publish_student_schedule = StudentSchedule::where(['student_id' => $student->id, 'is_publish' => 1])->column('teacher_schedule_time_id'); //查找排课中发布的课程作业 $publish_subject_homework = SubjectHomework::where(['teacher_schedule_time_id' => $publish_student_schedule, 'homework_file_is_publish' => 1])->column('teacher_schedule_time_id'); //查找课程作业中已提交的课程 $submit_student_homework = StudentHomework::where(['student_id' => $student->id, 'teacher_schedule_time_id' => $publish_subject_homework])->column('teacher_schedule_time_id'); //从已发布的课程中去除已提交的,就是未提交的 $unsubmit_student_homework = array_diff($publish_subject_homework, $submit_student_homework); $model = StudentSchedule::where(['student_id' => $student->id, 'is_publish' => 1, 'teacher_schedule_time_id'=>$unsubmit_student_homework]); $total = $model->count(); $list = $model->with(['student', 'subject', 'teacher']) ->page($page, $limit) ->select()->toArray(); } else { $model = StudentSchedule::order('id desc') ->where(['student_id' => $student->id, 'is_publish' => 1]) ->where('teacher_schedule_time_id', 'in', function ($query) use ($student) { $query->table('wa_student_homework')->where('student_id', $student->id)->field('teacher_schedule_time_id'); }); $total = $model->count(); $list = $model->with(['student', 'subject', 'teacher']) ->page($page, $limit) ->select()->toArray(); } return [ 'code' => ResponseCode::SUCCESS, 'data' => [ 'list' => $list, 'total' => $total, ], 'msg' => 'success', ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } public function getStudentSubjectHomeworkDetail($request) { try { if (empty((array)$request->student) && empty((array)$request->parent)) { throw new Exception('请登陆后再查看'); } if (!empty((array)$request->student)) { $student = Student::where(['id' => $request->student->id])->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到用户信息'); } } if (!empty((array)$request->parent)) { $student = Student::where(['parent_id' => $request->parent->id])->findOrEmpty(); if ($student->isEmpty()) { throw new Exception('未找到用户信息'); } } $homework = StudentHomework::where(['student_id' => $student->id, 'teacher_schedule_time_id' => $request->get('teacher_schedule_time_id')]) ->with(['student', 'teacher', 'subject']) ->findOrEmpty(); if ($homework->feedback_file_url) { $homework->feedback_file_url = json_decode($homework->feedback_file_url, true); } return [ 'code' => ResponseCode::SUCCESS, 'data' => $homework, 'msg' => 'success', ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 获取课程的家庭作业 * @param $request * @return array */ public function checkSubjectHomework($request) { try { $data = $request->get(); $subject_homework = SubjectHomework::where(['teacher_schedule_time_id' => $data['teacher_schedule_time_id'], 'is_publish' => 1]) ->with(['teacher', 'subject']) ->findOrEmpty(); if ($subject_homework->isEmpty()) { throw new Exception('课程作业未布置'); } if ($subject_homework->homework_file_url) { $subject_homework->homework_file_url = json_decode($subject_homework->homework_file_url, true); } else { $subject_homework->homework_file_url = []; } if ($subject_homework->homework_version_file_url) { $subject_homework->homework_version_file_url = json_decode($subject_homework->homework_version_file_url, true); } else { $subject_homework->homework_version_file_url = []; } if ($subject_homework->last_homework_feedback_url) { $subject_homework->last_homework_feedback_url = json_decode($subject_homework->last_homework_feedback_url, true); } else { $subject_homework->last_homework_feedback_url = []; } if ($subject_homework->subject_report_url) { $subject_homework->subject_report_url = json_decode($subject_homework->subject_report_url, true); } else { $subject_homework->subject_report_url = []; } if ($subject_homework->subject_file_url) { $subject_homework->subject_file_url = json_decode($subject_homework->subject_file_url, true); } else { $subject_homework->subject_file_url = []; } $student_homework = StudentHomework::where(['teacher_schedule_time_id' => $data['teacher_schedule_time_id'], 'student_id' => $request->student->id]) ->field('id,student_id,subject_homework_id,teacher_id,teacher_schedule_time_id,feedback_file_url') ->findOrEmpty()->toArray(); if (empty($student_homework)) { $student_homework = [ 'id' => '', 'student_id' => $request->student->id, 'subject_homework_id' => $subject_homework->id, 'teacher_id' => $subject_homework->teacher_id, 'teacher_schedule_time_id' => $subject_homework->teacher_schedule_time_id, 'feedback_file_url' => [], ]; } return [ 'code' => ResponseCode::SUCCESS, 'data' => [ 'subject_homework' => $subject_homework, 'student_homework' => $student_homework, ], 'msg' => 'success' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } }