2024-08-04 22:28:52 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace app\common\service;
|
|
|
|
|
|
2024-08-04 23:31:50 +08:00
|
|
|
|
use app\common\model\CronJob;
|
|
|
|
|
use app\common\model\Student;
|
2024-08-04 22:28:52 +08:00
|
|
|
|
use app\common\model\TeacherScheduleTime;
|
2024-08-04 23:31:50 +08:00
|
|
|
|
use app\constant\ResponseCode;
|
2024-08-04 22:28:52 +08:00
|
|
|
|
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';
|
|
|
|
|
|
|
|
|
|
public function teacherScheduleTimePublishMsg($teacher_schedule_time_id)
|
|
|
|
|
{
|
|
|
|
|
try {
|
2024-08-04 23:31:50 +08:00
|
|
|
|
$teacher_schedule_time = TeacherScheduleTime::where(['id' => $teacher_schedule_time_id])->with(['teacherAttr', 'subject', 'studentSchedule'])
|
|
|
|
|
->findOrEmpty();
|
2024-08-04 22:28:52 +08:00
|
|
|
|
|
2024-08-04 23:31:50 +08:00
|
|
|
|
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']]);
|
|
|
|
|
}
|
2024-08-04 22:28:52 +08:00
|
|
|
|
|
2024-08-04 23:31:50 +08:00
|
|
|
|
|
|
|
|
|
//给教师发送消息
|
|
|
|
|
$msgInfo = $teacher_schedule_time->toArray();
|
|
|
|
|
$student_name = implode(',',array_column($student_info, 'student_name'));
|
|
|
|
|
$send_teacher_data = [
|
|
|
|
|
'touser' => 'olfLh6o4CG9xb6_tA3y29shOj_Bo',
|
|
|
|
|
'template_id' => 'gTtXWz35mjbtbOZdq6uNBIqy2_W-gu7F4H6s5N-vNAI',
|
2024-08-04 22:28:52 +08:00
|
|
|
|
'data' => [
|
|
|
|
|
'time2' => [//上课时间
|
2024-08-04 23:31:50 +08:00
|
|
|
|
'value' => $teacher_schedule_time->en_start_time,
|
2024-08-04 22:28:52 +08:00
|
|
|
|
'color' => '#000000'
|
|
|
|
|
],
|
|
|
|
|
'thing1' => [//课程名称
|
2024-08-04 23:31:50 +08:00
|
|
|
|
'value' => $teacher_schedule_time->english_name,
|
2024-08-04 22:28:52 +08:00
|
|
|
|
'color' => '#000000'
|
|
|
|
|
],
|
|
|
|
|
'thing5' => [//上课老师
|
2024-08-04 23:31:50 +08:00
|
|
|
|
'value' => $teacher_schedule_time->teacherAttr->teacher_name,
|
2024-08-04 22:28:52 +08:00
|
|
|
|
'color' => '#000000'
|
|
|
|
|
],
|
|
|
|
|
'thing4' => [//学员姓名
|
2024-08-04 23:31:50 +08:00
|
|
|
|
'value' => $student_name,
|
2024-08-04 22:28:52 +08:00
|
|
|
|
'color' => '#000000'
|
|
|
|
|
]
|
|
|
|
|
],
|
|
|
|
|
'miniprogram' => [
|
2024-08-04 23:31:50 +08:00
|
|
|
|
|
2024-08-04 22:28:52 +08:00
|
|
|
|
],
|
|
|
|
|
"lang" => "zh_CN",
|
|
|
|
|
];
|
2024-08-04 23:31:50 +08:00
|
|
|
|
$result = (new WechatSubscriptService())->sendMsg($send_teacher_data);
|
|
|
|
|
|
|
|
|
|
CronJob::create([
|
|
|
|
|
'msg_type' => self::TEACHER_SCHEDULE_TIME_PUBLISH_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'=> 'teacher',
|
|
|
|
|
'send_data'=> json_encode($send_teacher_data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
|
|
|
|
|
'msg_info' => json_encode($msgInfo, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
|
|
|
|
|
'send_result'=> $result['code'] == ResponseCode::SUCCESS ? 1 : 0,
|
|
|
|
|
'send_result_msg'=> $result['msg'],
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
foreach ($student_info as $student) {
|
|
|
|
|
|
|
|
|
|
$send_teacher_data = [
|
|
|
|
|
'touser' => 'olfLh6o4CG9xb6_tA3y29shOj_Bo',//@todo:发送人
|
|
|
|
|
'template_id' => 'gTtXWz35mjbtbOZdq6uNBIqy2_W-gu7F4H6s5N-vNAI',
|
|
|
|
|
'data' => [
|
|
|
|
|
'time2' => [//上课时间
|
|
|
|
|
'value' => $teacher_schedule_time->start_time,
|
|
|
|
|
'color' => '#000000'
|
|
|
|
|
],
|
|
|
|
|
'thing1' => [//课程名称
|
|
|
|
|
'value' => $teacher_schedule_time->subject_name,
|
|
|
|
|
'color' => '#000000'
|
|
|
|
|
],
|
|
|
|
|
'thing5' => [//上课老师
|
|
|
|
|
'value' => $teacher_schedule_time->teacherAttr->teacher_name,
|
|
|
|
|
'color' => '#000000'
|
|
|
|
|
],
|
|
|
|
|
'thing4' => [//学员姓名
|
|
|
|
|
'value' => $student_name,
|
|
|
|
|
'color' => '#000000'
|
|
|
|
|
]
|
|
|
|
|
],
|
|
|
|
|
'miniprogram' => [
|
|
|
|
|
|
|
|
|
|
],
|
|
|
|
|
"lang" => "zh_CN",
|
|
|
|
|
];
|
|
|
|
|
$result = (new WechatSubscriptService())->sendMsg($send_teacher_data);
|
|
|
|
|
|
|
|
|
|
CronJob::create([
|
|
|
|
|
'msg_type' => self::TEACHER_SCHEDULE_TIME_PUBLISH_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($msgInfo, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
|
|
|
|
|
'send_result'=> $result['code'] == ResponseCode::SUCCESS ? 1 : 0,
|
|
|
|
|
'send_result_msg'=> $result['msg'],
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
}
|
2024-08-04 22:28:52 +08:00
|
|
|
|
|
2024-08-04 23:31:50 +08:00
|
|
|
|
} catch (Exception $e) {
|
2024-08-04 22:28:52 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|