fix 学生课程作业发布,同步发送给家长和教师

This commit is contained in:
Dai 2024-09-29 15:55:45 +08:00
parent 1f50016717
commit 2af0578094
4 changed files with 243 additions and 22 deletions

View File

@ -5,6 +5,7 @@ namespace app\common\service;
use app\common\model\CronJob; use app\common\model\CronJob;
use app\common\model\Student; use app\common\model\Student;
use app\common\model\StudentHomework; use app\common\model\StudentHomework;
use app\common\model\StudentParent;
use app\common\model\StudentSchedule; use app\common\model\StudentSchedule;
use app\common\model\SubjectHomework; use app\common\model\SubjectHomework;
use app\common\model\Teacher; use app\common\model\Teacher;
@ -17,6 +18,9 @@ class SendMsgCronJobService
const TEACHER_SCHEDULE_TIME_PUBLISH_TEACHER = 'teacher_schedule_time_publish_to_teacher'; const TEACHER_SCHEDULE_TIME_PUBLISH_TEACHER = 'teacher_schedule_time_publish_to_teacher';
const TEACHER_SCHEDULE_TIME_PUBLISH_STUDENT = 'teacher_schedule_time_publish_to_student'; const TEACHER_SCHEDULE_TIME_PUBLISH_STUDENT = 'teacher_schedule_time_publish_to_student';
const TEACHER_SCHEDULE_TIME_PUBLISH_PARENTS = 'teacher_schedule_time_publish_to_parent';
// const TEACHER_SCHEDULE_TIME_PUBLISH_TEACHER = 'teacher_schedule_time_publish_to_teacher';
/** /**
* 通知类型 * 通知类型
@ -208,6 +212,112 @@ class SendMsgCronJobService
'send_result_msg' => $result['msg'], 'send_result_msg' => $result['msg'],
]); ]);
//查找学生家长,同步发送消息给家长
$parents = StudentParent::where(['id' => $student['parent_id']])->findOrEmpty();
if (!$parents->isEmpty()) {
$send_teacher_data = [
'touser' => $parents['openid'],
'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' => SendMsgCronJobService::TEACHER_SCHEDULE_TIME_PUBLISH_PARENTS,
'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' => 'parent',
'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'],
]);
}
if (isset($teacher_schedule_time['teacherAttr']) && !empty($teacher_schedule_time['teacherAttr']['openid'])) {
//发送给教师
$send_teacher_data = [
'touser' => $teacher_schedule_time['teacherAttr']['openid'],
'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' => SendMsgCronJobService::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($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) { } catch (Exception $e) {

View File

@ -157,6 +157,7 @@ class StudentScheduleController extends Crud
$data = $request->post(); $data = $request->post();
if (isset($data['is_publish']) && $data['is_publish']) { if (isset($data['is_publish']) && $data['is_publish']) {
//发送消息给学生
$student_schedule = \app\common\model\StudentSchedule::where(['id' => $data['id']])->find(); $student_schedule = \app\common\model\StudentSchedule::where(['id' => $data['id']])->find();
(new SendMsgCronJobService())->teacherScheduleTimePublishMsgToStudent($student_schedule->teacher_schedule_time_id); (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToStudent($student_schedule->teacher_schedule_time_id);
} }

View File

@ -4,6 +4,7 @@ namespace plugin\admin\app\controller;
use app\common\model\CronJob; use app\common\model\CronJob;
use app\common\model\Student; use app\common\model\Student;
use app\common\model\StudentParent;
use app\common\model\TeacherScheduleTime; use app\common\model\TeacherScheduleTime;
use app\common\service\SendMsgCronJobService; use app\common\service\SendMsgCronJobService;
use app\common\service\WechatSubscriptService; use app\common\service\WechatSubscriptService;
@ -35,6 +36,7 @@ class sendMsgNotifyController extends Crud
throw new Exception('未找到课程分配的学生'); throw new Exception('未找到课程分配的学生');
} }
$student_info = []; $student_info = [];
foreach ($studentSchedule as $student) { foreach ($studentSchedule as $student) {
if (!$student['is_publish']) { if (!$student['is_publish']) {
@ -42,7 +44,7 @@ class sendMsgNotifyController extends Crud
} }
$student = Student::where(['id' => $student['student_id']])->findOrEmpty(); $student = Student::where(['id' => $student['student_id']])->findOrEmpty();
array_push($student_info, ['id' => $student['id'], 'student_name' => $student['student_name'], 'openid' => $student['openid']]); array_push($student_info, ['id' => $student['id'], 'student_name' => $student['student_name'], 'openid' => $student['openid'], 'parent_id' => $student['parent_id']]);
} }
$student_name = implode(',', array_column($student_info, 'student_name')); $student_name = implode(',', array_column($student_info, 'student_name'));
@ -97,6 +99,110 @@ class sendMsgNotifyController extends Crud
'send_result_msg' => $result['msg'], 'send_result_msg' => $result['msg'],
]); ]);
//查找学生家长,同步发送消息给家长
$parents = StudentParent::where(['id' => $student['parent_id']])->findOrEmpty();
if (!$parents->isEmpty()) {
$send_teacher_data = [
'touser' => $parents['openid'],
'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' => SendMsgCronJobService::TEACHER_SCHEDULE_TIME_PUBLISH_PARENTS,
'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' => 'parent',
'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'],
]);
}
if (isset($teacher_schedule_time['teacherAttr']) && !empty($teacher_schedule_time['teacherAttr']['openid'])) {
//发送给教师
$send_teacher_data = [
'touser' => $student['openid'],
'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' => SendMsgCronJobService::TEACHER_SCHEDULE_TIME_PUBLISH_STUDENT,
'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'],
]);
}
} }
return json([ return json([

View File

@ -112,6 +112,8 @@
<span class="layui-badge layui-bg-green">排课结果通知教师</span> <span class="layui-badge layui-bg-green">排课结果通知教师</span>
{{# }else if(d.msg_type == 'teacher_schedule_time_publish_to_student'){ }} {{# }else if(d.msg_type == 'teacher_schedule_time_publish_to_student'){ }}
<span class="layui-badge layui-bg-blue">排课结果通知学生</span> <span class="layui-badge layui-bg-blue">排课结果通知学生</span>
{{# }else if(d.msg_type == 'teacher_schedule_time_publish_to_parent'){ }}
<span class="layui-badge layui-bg-blue">排课结果通知家长</span>
{{# }else if(d.msg_type == 'class_begin_notify_teacher'){ }} {{# }else if(d.msg_type == 'class_begin_notify_teacher'){ }}
<span class="layui-badge layui-bg-green">课程开始提醒教师</span> <span class="layui-badge layui-bg-green">课程开始提醒教师</span>
{{# }else if(d.msg_type == 'subject_upload_notify_admin'){ }} {{# }else if(d.msg_type == 'subject_upload_notify_admin'){ }}
@ -137,6 +139,8 @@
<span class="layui-badge layui-bg-blue">学生</span> <span class="layui-badge layui-bg-blue">学生</span>
{{# }else if(d.send_role == 'admin'){ }} {{# }else if(d.send_role == 'admin'){ }}
<span class="layui-badge layui-bg-red">管理员</span> <span class="layui-badge layui-bg-red">管理员</span>
{{# }else if(d.send_role == 'parent'){ }}
<span class="layui-badge layui-bg-red">家长</span>
{{# }else{ }} {{# }else{ }}
<span class="layui-badge layui-bg-red">未知</span> <span class="layui-badge layui-bg-red">未知</span>
{{# } }} {{# } }}