course/app/common/service/SendMsgCronJobService.php
2024-08-04 23:31:50 +08:00

147 lines
6.5 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\common\service;
use app\common\model\CronJob;
use app\common\model\Student;
use app\common\model\TeacherScheduleTime;
use app\constant\ResponseCode;
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 {
$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']]);
}
//给教师发送消息
$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',
'data' => [
'time2' => [//上课时间
'value' => $teacher_schedule_time->en_start_time,
'color' => '#000000'
],
'thing1' => [//课程名称
'value' => $teacher_schedule_time->english_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'=> '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'],
]);
}
} catch (Exception $e) {
}
}
}