diff --git a/app/api/controller/SendMsgCronJobController.php b/app/api/controller/SendMsgCronJobController.php index d45601e..4356dc7 100644 --- a/app/api/controller/SendMsgCronJobController.php +++ b/app/api/controller/SendMsgCronJobController.php @@ -38,7 +38,9 @@ class SendMsgCronJobController extends BaseController try { // $teacher_schedule_time = TeacherScheduleTime::where('id', $teacher_schedule_time_id)->with(['teacherAttr', 'subject', 'studentSchedule'])->findOrEmpty(); - $res = (new SendMsgCronJobService())->teacherScheduleTimePublishMsg(75); +// $res = (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToTeacher(75); + + $res = (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToStudent(75); return $this->json($res); }catch (Exception $e){ @@ -54,8 +56,29 @@ class SendMsgCronJobController extends BaseController */ public function classBeginMsgToTeacher() { + //@todo: 定时脚本 $res = (new SendMsgCronJobService())->classBeginMsgToTeacher(); + print '
'; + print_r($res); + die; + + return $this->json($res); + } + + /** + * @desc 上课提前通知老师 + * @return void + */ + public function classBeginSingleMsgToTeacher() + { + //@todo: 定时脚本 + $res = (new SendMsgCronJobService())->classBeginSingleMsgToTeacher(79); + + print ''; + print_r($res); + die; + return $this->json($res); } diff --git a/app/common/service/SendMsgCronJobService.php b/app/common/service/SendMsgCronJobService.php index 4ce8c96..067bbac 100644 --- a/app/common/service/SendMsgCronJobService.php +++ b/app/common/service/SendMsgCronJobService.php @@ -14,7 +14,7 @@ use think\Exception; class SendMsgCronJobService { const TEACHER_SCHEDULE_TIME_PUBLISH_TEACHER = 'teacher_schedule_time_publish_to_teacher'; - const TEACHER_SCHEDULE_TIME_PUBLISH_STUDENT = 'teacher_schedule_time_publish_to_teacher'; + const TEACHER_SCHEDULE_TIME_PUBLISH_STUDENT = 'teacher_schedule_time_publish_to_student'; /** @@ -47,7 +47,7 @@ class SendMsgCronJobService * @return void * @throws \GuzzleHttp\Exception\GuzzleException */ - public function teacherScheduleTimePublishMsg($teacher_schedule_time_id) + public function teacherScheduleTimePublishMsgToTeacher($teacher_schedule_time_id) { try { $teacher_schedule_time = TeacherScheduleTime::where(['id' => $teacher_schedule_time_id])->with(['teacherAttr', 'subject', 'studentSchedule']) @@ -71,7 +71,6 @@ class SendMsgCronJobService array_push($student_info, ['id' => $student['id'], 'student_name' => $student['student_name'], 'openid' => $student['openid']]); } - //给教师发送消息 $msgInfo = $teacher_schedule_time->toArray(); $student_name = implode(',', array_column($student_info, 'student_name')); @@ -122,6 +121,43 @@ class SendMsgCronJobService 'send_result_msg' => $result['msg'], ]); + } catch (Exception $e) { + + } + } + + /** + * 排课成功通知 + * @param $teacher_schedule_time_id + * @return void + * @throws \GuzzleHttp\Exception\GuzzleException + */ + public function teacherScheduleTimePublishMsgToStudent($teacher_schedule_time_id) + { + try { + $teacher_schedule_time = TeacherScheduleTime::where(['id' => $teacher_schedule_time_id])->with(['teacherAttr', 'subject', 'studentSchedule']) + ->findOrEmpty(); + + if ($teacher_schedule_time->isEmpty()) { + throw new Exception('教师排课不存在'); + } + $studentSchedule = $teacher_schedule_time->studentSchedule->toArray(); + if (empty($studentSchedule)) { + throw new Exception('未找到课程分配的学生'); + } + + $student_info = []; + foreach ($studentSchedule as $student) { + if (!$student['is_publish']) { +// throw new Exception($student['student_name'] . '的排课未发布'); + } + + $student = Student::where(['id' => $student['student_id']])->findOrEmpty(); + array_push($student_info, ['id' => $student['id'], 'student_name' => $student['student_name'], 'openid' => $student['openid']]); + } + + $student_name = implode(',', array_column($student_info, 'student_name')); + foreach ($student_info as $student) { $send_teacher_data = [ @@ -153,7 +189,7 @@ class SendMsgCronJobService $result = (new WechatSubscriptService())->sendMsg($send_teacher_data); CronJob::create([ - 'msg_type' => self::TEACHER_SCHEDULE_TIME_PUBLISH_TEACHER, + 'msg_type' => self::TEACHER_SCHEDULE_TIME_PUBLISH_STUDENT, 'teacher_id' => $teacher_schedule_time->teacher_id, 'subject_id' => $teacher_schedule_time->subject_id, 'student_id' => '', @@ -166,7 +202,7 @@ class SendMsgCronJobService 'en_end_time' => $teacher_schedule_time->en_end_time, 'send_role' => 'student', 'send_data' => json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), - 'msg_info' => json_encode($msgInfo, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($teacher_schedule_time->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), 'send_result' => $result['code'] == ResponseCode::SUCCESS ? 1 : 0, 'send_result_msg' => $result['msg'], ]); @@ -187,15 +223,32 @@ class SendMsgCronJobService { try { $teacher_schedule_time = TeacherScheduleTime::where(['is_publish' => 1]) - ->whereTime('start_time', '>=', date('Y-m-d 00:00:00', strtotime('+21 day'))) - ->whereTime('start_time', '<=', date('Y-m-d 23:59:59', strtotime('+21 day'))) + ->whereTime('start_time', '>=', date('Y-m-d 00:00:00', strtotime('+1 day'))) + ->whereTime('start_time', '<=', date('Y-m-d 23:59:59', strtotime('+1 day'))) ->with(['teacherAttr', 'subject', 'studentSchedule']) ->select(); foreach ($teacher_schedule_time as $item) { - $studentSchedule = $item->studentSchedule->toArray(); if (empty($studentSchedule)) { + CronJob::create([ + 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, + 'teacher_id' => $item->teacher_id, + 'subject_id' => $item->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $item->id, + 'time' => $item->time, + 'en_time' => $item->en_time, + 'start_time' => $item->start_time, + 'end_time' => $item->end_time, + 'en_start_time' => $item->en_start_time, + 'en_end_time' => $item->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode([], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($item->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => 0, + 'send_result_msg' => '未找到课程分配的学生', + ]); throw new Exception('未找到课程分配的学生'); } @@ -209,6 +262,29 @@ class SendMsgCronJobService array_push($student_info, ['id' => $student['id'], 'student_name' => $student['student_name'], 'openid' => $student['openid']]); } $student_name = implode(',', array_column($student_info, 'student_name')); + + if (empty($student_name)) { + CronJob::create([ + 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, + 'teacher_id' => $item->teacher_id, + 'subject_id' => $item->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $item->id, + 'time' => $item->time, + 'en_time' => $item->en_time, + 'start_time' => $item->start_time, + 'end_time' => $item->end_time, + 'en_start_time' => $item->en_start_time, + 'en_end_time' => $item->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode([], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($item->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => 0, + 'send_result_msg' => '未找到课程分配的学生', + ]); + throw new Exception('未找到课程分配的学生'); + } + $send_teacher_data = [ 'touser' => 'olfLh6o4CG9xb6_tA3y29shOj_Bo',//@todo:发送人 'template_id' => 'yYw0jnlhjnq4AJ_CAlAghgGyV0bvbVHG-eV8TNC3REI', @@ -236,10 +312,157 @@ class SendMsgCronJobService "lang" => "zh_CN", ]; + $result = (new WechatSubscriptService())->sendMsg($send_teacher_data); + + CronJob::create([ + 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, + 'teacher_id' => $item->teacher_id, + 'subject_id' => $item->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $item->id, + 'time' => $item->time, + 'en_time' => $item->en_time, + 'start_time' => $item->start_time, + 'end_time' => $item->end_time, + 'en_start_time' => $item->en_start_time, + 'en_end_time' => $item->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($item->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => $result['code'] == ResponseCode::SUCCESS ? 1 : 0, + 'send_result_msg' => $result['msg'], + ]); } } catch (Exception $e) { + + return [ + 'code' => ResponseCode::FAIL, + 'msg' => $e->getMessage() + ]; + } + } + + /** + * 上课时间 提前一天通知老师 + * @return void + */ + public function classBeginSingleMsgToTeacher($teacher_schedule_time_id) + { + try { + $teacher_schedule_time = TeacherScheduleTime::where(['is_publish' => 1, 'id' => $teacher_schedule_time_id]) + ->with(['teacherAttr', 'subject', 'studentSchedule']) + ->findOrEmpty(); + + $studentSchedule = $teacher_schedule_time->studentSchedule->toArray(); + if (empty($studentSchedule)) { + CronJob::create([ + 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, + 'teacher_id' => $teacher_schedule_time->teacher_id, + 'subject_id' => $teacher_schedule_time->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $teacher_schedule_time->id, + 'time' => $teacher_schedule_time->time, + 'en_time' => $teacher_schedule_time->en_time, + 'start_time' => $teacher_schedule_time->start_time, + 'end_time' => $teacher_schedule_time->end_time, + 'en_start_time' => $teacher_schedule_time->en_start_time, + 'en_end_time' => $teacher_schedule_time->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode([], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($teacher_schedule_time->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => 0, + 'send_result_msg' => '未找到课程分配的学生', + ]); + throw new Exception('未找到课程分配的学生'); + } + + $student_info = []; + foreach ($studentSchedule as $student) { + if (!$student['is_publish']) { +// throw new Exception($student['student_name'] . '的排课未发布'); + } + + $student = Student::where(['id' => $student['student_id']])->findOrEmpty(); + array_push($student_info, ['id' => $student['id'], 'student_name' => $student['student_name'], 'openid' => $student['openid']]); + } + $student_name = implode(',', array_column($student_info, 'student_name')); + + if (empty($student_name)) { + CronJob::create([ + 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, + 'teacher_id' => $teacher_schedule_time->teacher_id, + 'subject_id' => $teacher_schedule_time->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $teacher_schedule_time->id, + 'time' => $teacher_schedule_time->time, + 'en_time' => $teacher_schedule_time->en_time, + 'start_time' => $teacher_schedule_time->start_time, + 'end_time' => $teacher_schedule_time->end_time, + 'en_start_time' => $teacher_schedule_time->en_start_time, + 'en_end_time' => $teacher_schedule_time->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode([], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($teacher_schedule_time->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => 0, + 'send_result_msg' => '未找到课程分配的学生', + ]); + throw new Exception('未找到课程分配的学生'); + } + + $send_teacher_data = [ + 'touser' => 'olfLh6o4CG9xb6_tA3y29shOj_Bo',//@todo:发送人 + 'template_id' => 'yYw0jnlhjnq4AJ_CAlAghgGyV0bvbVHG-eV8TNC3REI', + 'data' => [ + 'thing8' => [//课程名称 + 'value' => $teacher_schedule_time->english_name, + 'color' => '#000000' + ], + 'time5' => [//上课时间 + 'value' => $teacher_schedule_time->end_time, + 'color' => '#000000' + ], + 'thing4' => [//任课教师 + 'value' => $teacher_schedule_time->teacherAttr->teacher_name, + 'color' => '#000000' + ], + 'thing7' => [//学员姓名 + 'value' => $student_name, + 'color' => '#000000' + ] + ], + 'miniprogram' => [ + + ], + "lang" => "zh_CN", + ]; + + + $result = (new WechatSubscriptService())->sendMsg($send_teacher_data); + + CronJob::create([ + 'msg_type' => self::CLASS_BEGIN_NOTIFY_TEACHER, + 'teacher_id' => $teacher_schedule_time->teacher_id, + 'subject_id' => $teacher_schedule_time->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $teacher_schedule_time->id, + 'time' => $teacher_schedule_time->time, + 'en_time' => $teacher_schedule_time->en_time, + 'start_time' => $teacher_schedule_time->start_time, + 'end_time' => $teacher_schedule_time->end_time, + 'en_start_time' => $teacher_schedule_time->en_start_time, + 'en_end_time' => $teacher_schedule_time->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($teacher_schedule_time->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => $result['code'] == ResponseCode::SUCCESS ? 1 : 0, + 'send_result_msg' => $result['msg'], + ]); + + + } catch (Exception $e) { + return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() @@ -264,7 +487,7 @@ class SendMsgCronJobService 'template_id' => 'OKLtn1L12ZrKsJczk1IRn_8kcQ4aKBmMsYsnjgAkkfE', 'data' => [ 'thing1' => [//作业名称 - 'value' => $subject_homework->english_name . '/' . date('m-d H:i', strtotime($subject_homework->start_time)), + 'value' => substr($subject_homework->english_name . '/' . date('m-d H:i', strtotime($subject_homework->start_time)), 0, 18) . '..', 'color' => '#000000' ], 'thing2' => [//教师姓名 @@ -278,9 +501,26 @@ class SendMsgCronJobService "lang" => "zh_CN", ]; - $result = (new WechatSubscriptService())->sendMsg($send_teacher_data); + CronJob::create([ + 'msg_type' => self::SUBJECT_UPLOAD_NOTIFY_ADMIN, + 'teacher_id' => $subject_homework->teacher_id, + 'subject_id' => $subject_homework->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $subject_homework->teacher_schedule_time_id, + 'time' => $subject_homework->time, + 'en_time' => $subject_homework->en_time, + 'start_time' => $subject_homework->start_time, + 'end_time' => $subject_homework->end_time, + 'en_start_time' => $subject_homework->en_start_time, + 'en_end_time' => $subject_homework->en_end_time, + 'send_role' => 'admin', + 'send_data' => json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($subject_homework->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => $result['code'] == ResponseCode::SUCCESS ? 1 : 0, + 'send_result_msg' => $result['msg'], + ]); } catch (Exception $e) { return [ @@ -297,28 +537,25 @@ class SendMsgCronJobService * @return array|void * @throws \GuzzleHttp\Exception\GuzzleException */ - public function uploadVersionSubjectHomeworkNotifyStudent($subject_homework_id) + public function uploadVersionSubjectHomeworkNotifyStudent($student_homework_id) { try { - $subject_homework = SubjectHomework::where(['id' => $subject_homework_id])->with(['teacher', 'subject'])->findOrEmpty(); - + $student_homework = StudentHomework::where(['id' => $student_homework_id])->with(['teacher', 'subject'])->findOrEmpty(); +// $subject_homework = SubjectHomework::where(['id' => $subject_homework_id])->with(['teacher', 'subject'])->findOrEmpty(); //查找相同老师、相同课程、相同学生的下一节课 - $teacher_schedule_time = TeacherScheduleTime::where(['id' => $subject_homework->teacher_schedule_time_id])->with(['studentSchedule'])->findOrEmpty(); - - //查找下次课程开始时间 - $next_teacher_schedule_time = TeacherScheduleTime::where([ - 'teacher_id' => $teacher_schedule_time->teacher_id, - 'subject_id' => $teacher_schedule_time->subject_id, - 'is_publish' => 1 - ]) - ->whereTime('start_time', '>', $teacher_schedule_time->start_time) + $next_student_schedule_time = StudentSchedule::where([ + 'student_id' => $student_homework->student_id, + 'teacher_id' => $student_homework->teacher_id, + 'subject_id' => $student_homework->subject_id + ])->whereTime('start_time', '>', $student_homework->start_time) ->order('id asc') ->limit(1) ->findOrEmpty(); - if (!$next_teacher_schedule_time->isEmpty()) { - $next_time = $next_teacher_schedule_time->start_time; + + if (!$next_student_schedule_time->isEmpty()) { + $next_time = $next_student_schedule_time->start_time; } else { $next_time = '';//不能没有值 } @@ -329,11 +566,11 @@ class SendMsgCronJobService 'template_id' => 'ng-vuuY_hHM3N2fR3VCGdjGldOrwmzVVQzebRgkW4uY', 'data' => [ 'thing6' => [//课程名称 - 'value' => $subject_homework->english_name . '/' . date('m-d H:i', strtotime($subject_homework->start_time)), + 'value' => substr($subject_homework->english_name . '/' . date('m-d H:i', strtotime($subject_homework->start_time)), 0, 18) . '..', 'color' => '#000000' ], 'thing2' => [//作业名称 - 'value' => $subject_homework->english_name . '/' . date('m-d H:i', strtotime($subject_homework->start_time)), + 'value' => substr($subject_homework->english_name . '/' . date('m-d H:i', strtotime($subject_homework->start_time)), 0, 18) . '..', 'color' => '#000000' ], 'thing5' => [//批改老师 @@ -355,6 +592,25 @@ class SendMsgCronJobService $result = (new WechatSubscriptService())->sendMsg($send_teacher_data); //@todo:写入日志中 + CronJob::create([ + 'msg_type' => self::SUBJECT_VERSION_UPLOAD_NOTIFY_STUDENT, + 'teacher_id' => $subject_homework->teacher_id, + 'subject_id' => $subject_homework->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $subject_homework->teacher_schedule_time_id, + 'time' => $subject_homework->time, + 'en_time' => $subject_homework->en_time, + 'start_time' => $subject_homework->start_time, + 'end_time' => $subject_homework->end_time, + 'en_start_time' => $subject_homework->en_start_time, + 'en_end_time' => $subject_homework->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($subject_homework->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => $result['code'] == ResponseCode::SUCCESS ? 1 : 0, + 'send_result_msg' => $result['msg'], + ]); + } @@ -414,6 +670,24 @@ class SendMsgCronJobService $result = (new WechatSubscriptService())->sendMsg($send_teacher_data); + CronJob::create([ + 'msg_type' => self::STUDENT_UPLOAD_HOMEWORK_NOTIFY_TEACHER, + 'teacher_id' => $student_homework->teacher_id, + 'subject_id' => $student_homework->subject_id, + 'student_id' => '', + 'teacher_schedule_time_id' => $student_homework->teacher_schedule_time_id, + 'time' => $student_homework->time, + 'en_time' => $student_homework->en_time, + 'start_time' => $student_homework->start_time, + 'end_time' => $student_homework->end_time, + 'en_start_time' => $student_homework->en_start_time, + 'en_end_time' => $student_homework->en_end_time, + 'send_role' => 'student', + 'send_data' => json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'msg_info' => json_encode($student_homework->toArray(), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), + 'send_result' => $result['code'] == ResponseCode::SUCCESS ? 1 : 0, + 'send_result_msg' => $result['msg'], + ]); return [ 'code' => ResponseCode::SUCCESS, diff --git a/app/utils/WechatUtil.php b/app/utils/WechatUtil.php index d07b04f..edb49e7 100644 --- a/app/utils/WechatUtil.php +++ b/app/utils/WechatUtil.php @@ -21,8 +21,8 @@ class WechatUtil public static function getAccessToken() { try { -// $str = '83_s2360Qbo3QwQgLRYvmeRjBWkLxkP2gbhfc6D-oT31f2oQ5S47rXfTc52dyxBNZ9ZMuVTnEWBxyuAZ-OVZolz5_PDu7wTmzuPT3n8_g6TyeZv__ZliUG5GX3U9LsGQIcAJAVFX'; -// Cache::set(self::GENERAL_ACCESS_TOKEN, $str, 3500); + $str = '83_j5DK2vFkFW10x-ch2B224nQg8ham92nWB84lQ2g9H3mpnGNOt3y222t2bB1sYmHeTGg2rolyPFQ0VKeinV4vBJYiWbaxkZLHuntlpilWNDgVOR8zkr4wXev54ZoQVXeAFAHMO'; + Cache::set(self::GENERAL_ACCESS_TOKEN, $str, 3500); if (Cache::has(self::GENERAL_ACCESS_TOKEN)) { return Cache::get(self::GENERAL_ACCESS_TOKEN); } else { diff --git a/plugin/admin/app/controller/StudentHomeworkController.php b/plugin/admin/app/controller/StudentHomeworkController.php index 3e6dfc9..fee4393 100644 --- a/plugin/admin/app/controller/StudentHomeworkController.php +++ b/plugin/admin/app/controller/StudentHomeworkController.php @@ -5,6 +5,7 @@ namespace plugin\admin\app\controller; use app\common\model\Student; use app\common\model\Subject; use app\common\model\Teacher; +use app\common\service\SendMsgCronJobService; use app\constant\ResponseCode; use support\Request; use support\Response; @@ -153,6 +154,11 @@ class StudentHomeworkController extends Crud 'feedback_version_file_url' => empty($feedback_version_file_url) ? '' : json_encode($feedback_version_file_url, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), ]); + if($homework->is_publish){ + //后台发布学生作业之后通知教师 + (new SendMsgCronJobService())->studentUploadSubjectHomeworkNotifyTeacher($homework->id); + } + return json([ 'code' => ResponseCode::WEB_API_SUCCESS, 'msg' => 'success' diff --git a/plugin/admin/app/controller/StudentScheduleController.php b/plugin/admin/app/controller/StudentScheduleController.php index b937d9f..3c5a73c 100644 --- a/plugin/admin/app/controller/StudentScheduleController.php +++ b/plugin/admin/app/controller/StudentScheduleController.php @@ -6,6 +6,7 @@ use app\common\model\Student; use app\common\model\Subject; use app\common\model\Teacher; use app\common\model\TeacherScheduleTime; +use app\common\service\SendMsgCronJobService; use app\constant\ResponseCode; use support\Request; use support\Response; @@ -323,16 +324,19 @@ class StudentScheduleController extends Crud { try { $data = $request->post(); - $teacher_schedule_time = \app\common\model\StudentSchedule::where(['id' => $data['schedule_time_id']])->findOrEmpty(); - if ($teacher_schedule_time->isEmpty()) { + $student_schedule_time = \app\common\model\StudentSchedule::where(['id' => $data['schedule_time_id']])->findOrEmpty(); + if ($student_schedule_time->isEmpty()) { throw new Exception('未找到排课时间'); } $changeData = []; if(isset($data['is_publish'])){ - $teacher_schedule_time->is_publish = $data['is_publish']; + $student_schedule_time->is_publish = $data['is_publish']; + if($data['is_publish']){ + (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToStudent($student_schedule_time->teacher_schedule_time_id); + } } - $teacher_schedule_time->save(); + $student_schedule_time->save(); return json([ 'code' => ResponseCode::WEB_API_SUCCESS, diff --git a/plugin/admin/app/controller/SubjectHomeworkController.php b/plugin/admin/app/controller/SubjectHomeworkController.php index f0115bd..7ab5de3 100644 --- a/plugin/admin/app/controller/SubjectHomeworkController.php +++ b/plugin/admin/app/controller/SubjectHomeworkController.php @@ -2,6 +2,7 @@ namespace plugin\admin\app\controller; +use app\common\service\SendMsgCronJobService; use app\constant\ResponseCode; use support\Request; use support\Response; @@ -180,6 +181,7 @@ class SubjectHomeworkController extends Crud $subject_homework = \app\common\model\SubjectHomework::where(['id' => $data['id']])->findOrEmpty(); $subject_homework->save([ + 'homework_file_is_publish' => $data['homework_file_is_publish'], 'homework_version_is_publish' => $data['homework_version_is_publish'], 'last_homework_feedback_is_publish' => $data['last_homework_feedback_is_publish'], 'subject_report_version_is_publish' => $data['subject_report_version_is_publish'], @@ -195,6 +197,12 @@ class SubjectHomeworkController extends Crud 'subject_file_version_url' => empty($subject_file_version_url) ? '' : json_encode($subject_file_version_url, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES), ]); + if($subject_homework->homework_file_is_publish){ + //课程作业发布之后通知学生 + (new SendMsgCronJobService())->uploadVersionSubjectHomeworkNotifyStudent($subject_homework->id); + } + + return json([ 'code' => ResponseCode::WEB_API_SUCCESS, 'msg' => 'success' diff --git a/plugin/admin/app/controller/TeacherScheduleTimeController.php b/plugin/admin/app/controller/TeacherScheduleTimeController.php index 329980e..8d23f9a 100644 --- a/plugin/admin/app/controller/TeacherScheduleTimeController.php +++ b/plugin/admin/app/controller/TeacherScheduleTimeController.php @@ -7,6 +7,7 @@ use app\common\model\StudentSchedule; use app\common\model\Subject; use app\common\model\Teacher; use app\common\model\TeacherFreeTime; +use app\common\service\SendMsgCronJobService; use app\constant\ResponseCode; use PhpOffice\PhpSpreadsheet\Cell\Coordinate; use PhpOffice\PhpSpreadsheet\Spreadsheet; @@ -316,6 +317,10 @@ class TeacherScheduleTimeController extends Crud } if (isset($data['is_publish'])) { $teacher_schedule_time->is_publish = $data['is_publish']; + + if($data['is_publish']){ + (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToTeacher($teacher_schedule_time->id); + } } $teacher_schedule_time->save(); diff --git a/plugin/admin/app/view/subject-homework/update.html b/plugin/admin/app/view/subject-homework/update.html index 0a747f6..18cb31c 100644 --- a/plugin/admin/app/view/subject-homework/update.html +++ b/plugin/admin/app/view/subject-homework/update.html @@ -139,10 +139,10 @@@@ -683,6 +683,15 @@ $(this).parent().parent().remove(); }) + // 字段 是否发布 is_publish + layui.use(["form"], function () { + layui.$("#homework_file_is_publish").attr("checked", layui.$('input[name="homework_file_is_publish"]').val() != 0); + layui.form.render(); + layui.form.on("switch(homework_file_is_publish)", function (data) { + layui.$('input[name="homework_file_is_publish"]').val(this.checked ? 1 : 0); + }); + }) + // 字段 是否发布 is_publish layui.use(["form"], function () { layui.$("#homework_version_is_publish").attr("checked", layui.$('input[name="homework_version_is_publish"]').val() != 0); diff --git a/plugin/admin/app/view/test/index.html b/plugin/admin/app/view/test/index.html index 2d4ca97..b6213c6 100644 --- a/plugin/admin/app/view/test/index.html +++ b/plugin/admin/app/view/test/index.html @@ -10,44 +10,7 @@ -- - +-+- --@@ -87,15 +50,6 @@ const INSERT_URL = "/app/admin/test/insert"; const UPDATE_URL = "/app/admin/test/update"; - // 字段 创建时间 created_at - layui.use(["laydate"], function() { - layui.laydate.render({ - elem: "#created_at", - range: ["#created_at-date-start", "#created_at-date-end"], - type: "datetime", - }); - }) - // 表格渲染 layui.use(["table", "form", "common", "popup", "util"], function() { let table = layui.table; @@ -110,43 +64,15 @@ type: "checkbox", align: "center" },{ - title: "主键",align: "center", + title: "id",align: "center", field: "id", + },{ + title: "用户",align: "center", + field: "user_id", sort: true, },{ - title: "服务类型",align: "center", - field: "service_type", - templet: function (d) { - let field = "service_type"; - if (typeof d[field] == "undefined") return ""; - let items = []; - layui.each((d[field] + "").split(","), function (k , v) { - items.push(apiResults[field][v] || v); - }); - return util.escape(items.join(",")); - } - },{ - title: "创建时间",align: "center", - field: "created_at", - sort: true, - },{ - title: "更新时间",align: "center", - field: "updated_at", - },{ - title: "deleted_at",align: "center", - field: "deleted_at", - },{ - title: "用户类型",align: "center", - field: "user_type", - templet: function (d) { - let field = "user_type"; - if (typeof d[field] == "undefined") return ""; - let items = []; - layui.each((d[field] + "").split(","), function (k , v) { - items.push(apiResults[field][v] || v); - }); - return util.escape(items.join(",")); - } + title: "角色",align: "center", + field: "role_id", },{ title: "操作", toolbar: "#table-bar", @@ -157,65 +83,25 @@ ]; // 渲染表格 - function render() - { - table.render({ - elem: "#data-table", - url: SELECT_API, - page: true, - cols: [cols], - skin: "line", - size: "lg", - toolbar: "#table-toolbar", - autoSort: false, - defaultToolbar: [{ - title: "刷新", - layEvent: "refresh", - icon: "layui-icon-refresh", - }, "filter", "print", "exports"], - done: function () { - layer.photos({photos: 'div[lay-id="data-table"]', anim: 5}); - } - }); - } - - // 获取表格中下拉或树形组件数据 - let apis = []; - apis.push(["user_type", "/app/admin/device/getDevice?format=select"]); - let apiResults = {}; - apiResults["service_type"] = {"1":"选项1","2":"选项2","3":"选项3"}; - apiResults["user_type"] = []; - let count = apis.length; - layui.each(apis, function (k, item) { - let [field, url] = item; - $.ajax({ - url: url, - dateType: "json", - success: function (res) { - if (res.code) { - return layui.popup.failure(res.msg); - } - function travel(items) { - for (let k in items) { - let item = items[k]; - apiResults[field][item.value] = item.name; - if (item.children) { - travel(item.children); - } - } - } - travel(res.data); - }, - complete: function () { - if (--count === 0) { - render(); - } - } - }); + table.render({ + elem: "#data-table", + url: SELECT_API, + page: true, + cols: [cols], + skin: "line", + size: "lg", + toolbar: "#table-toolbar", + autoSort: false, + defaultToolbar: [{ + title: "刷新", + layEvent: "refresh", + icon: "layui-icon-refresh", + }, "filter", "print", "exports"], + done: function () { + layer.photos({photos: 'div[lay-id="data-table"]', anim: 5}); + } }); - if (!count) { - render(); - } + // 编辑或删除行事件 table.on("tool(data-table)", function(obj) { diff --git a/plugin/admin/app/view/test/insert.html b/plugin/admin/app/view/test/insert.html index 0992509..c51648f 100644 --- a/plugin/admin/app/view/test/insert.html +++ b/plugin/admin/app/view/test/insert.html @@ -15,23 +15,16 @@- +- +- +- -- --- -@@ -62,51 +55,6 @@ // 相关接口 const INSERT_API = "/app/admin/test/insert"; - // 字段 服务类型 service_type - layui.use(["jquery", "xmSelect"], function() { - let value = layui.$("#service_type").attr("value"); - let initValue = value ? value.split(",") : []; - layui.xmSelect.render({ - el: "#service_type", - name: "service_type", - filterable: true, - initValue: initValue, - data: [{"value":"1","name":"选项1"},{"value":"2","name":"选项2"},{"value":"3","name":"选项3"}], - toolbar: {"show":true,"list":["ALL","CLEAR","REVERSE"]}, - }) - }); - - // 字段 deleted_at deleted_at - layui.use(["laydate"], function() { - layui.laydate.render({ - elem: "#deleted_at", - type: "datetime", - }); - }) - - // 字段 用户类型 user_type - layui.use(["jquery", "xmSelect", "popup"], function() { - layui.$.ajax({ - url: "/app/admin/device/getDevice?format=select", - dataType: "json", - success: function (res) { - let value = layui.$("#user_type").attr("value"); - let initValue = value ? value.split(",") : []; - layui.xmSelect.render({ - el: "#user_type", - name: "user_type", - initValue: initValue, - filterable: true, - data: res.data, - toolbar: {"show":true,"list":["ALL","CLEAR","REVERSE"]}, - }); - if (res.code) { - layui.popup.failure(res.msg); - } - } - }); - }); - //提交事件 layui.use(["form", "popup"], function () { // 字段验证允许为空 diff --git a/plugin/admin/app/view/test/update.html b/plugin/admin/app/view/test/update.html index e86c7dd..d35e875 100644 --- a/plugin/admin/app/view/test/update.html +++ b/plugin/admin/app/view/test/update.html @@ -16,23 +16,16 @@- +- +- +- +- -- --- -@@ -88,51 +81,6 @@ } }); - // 字段 服务类型 service_type - layui.use(["jquery", "xmSelect"], function() { - let value = layui.$("#service_type").attr("value"); - let initValue = value ? value.split(",") : []; - layui.xmSelect.render({ - el: "#service_type", - name: "service_type", - filterable: true, - initValue: initValue, - data: [{"value":"1","name":"选项1"},{"value":"2","name":"选项2"},{"value":"3","name":"选项3"}], - toolbar: {"show":true,"list":["ALL","CLEAR","REVERSE"]}, - }) - }); - - // 字段 deleted_at deleted_at - layui.use(["laydate"], function() { - layui.laydate.render({ - elem: "#deleted_at", - type: "datetime", - }); - }) - - // 字段 用户类型 user_type - layui.use(["jquery", "xmSelect", "popup"], function() { - layui.$.ajax({ - url: "/app/admin/device/getDevice?format=select", - dataType: "json", - success: function (res) { - let value = layui.$("#user_type").attr("value"); - let initValue = value ? value.split(",") : []; - layui.xmSelect.render({ - el: "#user_type", - name: "user_type", - initValue: initValue, - filterable: true, - data: res.data, - toolbar: {"show":true,"list":["ALL","CLEAR","REVERSE"]}, - }); - if (res.code) { - layui.popup.failure(res.msg); - } - } - }); - }); - // ajax返回失败 if (res.code) { diff --git a/process/Task.php b/process/Task.php index f465f27..e3f3de3 100644 --- a/process/Task.php +++ b/process/Task.php @@ -2,6 +2,7 @@ namespace process; +use app\common\service\SendMsgCronJobService; use Workerman\Crontab\Crontab; class Task @@ -11,7 +12,8 @@ class Task // 每天的7点50执行,注意这里省略了秒位 new Crontab('50 7 * * *', function(){ - echo date('Y-m-d H:i:s')."\n"; + //上课前一天提醒教师 + (new SendMsgCronJobService())->classBeginMsgToTeacher(); }); }- +