fix 删除排课时删除对应的学生课表 教师排课发布时检测课程和学生

This commit is contained in:
Dai 2024-10-13 21:30:34 +08:00
parent 69819ad9d1
commit 35b02e43e0
4 changed files with 64 additions and 3 deletions

View File

@ -352,6 +352,9 @@ class TeacherFreeTimeController extends Crud
//获取已排课时间 //获取已排课时间
$teacher_schedule_time = TeacherScheduleTime::where(['free_time_id' => $free_time_id])->with(['oneStudentSchedule'])->select()->toArray(); $teacher_schedule_time = TeacherScheduleTime::where(['free_time_id' => $free_time_id])->with(['oneStudentSchedule'])->select()->toArray();
// print '<pre>';
// print_r($teacher_schedule_time);
// die;
// $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $free_time_id])->select()->toArray(); // $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $free_time_id])->select()->toArray();
// $student_schedule_id = []; // $student_schedule_id = [];

View File

@ -3,8 +3,10 @@
namespace plugin\admin\app\controller; namespace plugin\admin\app\controller;
use app\common\model\Student; use app\common\model\Student;
use app\common\model\StudentHomework;
use app\common\model\StudentSchedule; use app\common\model\StudentSchedule;
use app\common\model\Subject; use app\common\model\Subject;
use app\common\model\SubjectHomework;
use app\common\model\Teacher; use app\common\model\Teacher;
use app\common\model\TeacherFreeTime; use app\common\model\TeacherFreeTime;
use app\common\service\SendMsgCronJobService; use app\common\service\SendMsgCronJobService;
@ -130,11 +132,19 @@ class TeacherScheduleTimeController extends Crud
$this->doDelete($ids); $this->doDelete($ids);
//删除排课相关的学生课程 //删除排课相关的学生课程
$student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $ids])->select(); $student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $ids])->select();
//删除课程作业
$subject_homework = SubjectHomework::where(['teacher_schedule_time_id' => $ids])->select();
if (!$student_schedule->isEmpty()) { if (!$student_schedule->isEmpty()) {
$student_schedule->delete(); $student_schedule->delete();
} }
if(!$subject_homework->isEmpty()){
$subject_homework->delete();
//删除学生家庭作业
StudentHomework::where(['teacher_schedule_time_id'=>$ids])->select()->delete();
}
return $this->json(0); return $this->json(0);
} }
@ -167,8 +177,18 @@ class TeacherScheduleTimeController extends Crud
if (isset($data['teacher_schedule_id'])) { if (isset($data['teacher_schedule_id'])) {
$teacher_schedule_id = array_filter($data['teacher_schedule_id']); $teacher_schedule_id = array_filter($data['teacher_schedule_id']);
if ($teacher_schedule_id) { if ($teacher_schedule_id) {
$res = \app\common\model\TeacherScheduleTime::where(['free_time_id' => $free_time->id])->whereNotIn('id', $teacher_schedule_id)->select()->delete(); //查找在空闲时间中却不在已存在提交的排课时间的已被删除的排课时间
$removed_teacher_schedule_time = \app\common\model\TeacherScheduleTime::where(['free_time_id' => $free_time->id])->whereNotIn('id', $teacher_schedule_id)->select();
if(!$removed_teacher_schedule_time->isEmpty()){
//删除对用的学生排课时间
$removed_teacher_schedule_time_ids = array_column($removed_teacher_schedule_time->toArray(), 'id');
StudentSchedule::where(['teacher_schedule_time_id'=>$removed_teacher_schedule_time_ids])->select()->delete();
//删除教师被删除的排课时间
$removed_teacher_schedule_time->delete();
}
} }
} }
@ -288,6 +308,22 @@ class TeacherScheduleTimeController extends Crud
{ {
if ($request->method() === 'POST') { if ($request->method() === 'POST') {
if ($request->post('is_publish')) { if ($request->post('is_publish')) {
//发布检测是否排课和安排学生
$teacher_schedule_time = \app\common\model\TeacherScheduleTime::where(['id'=> $request->post('id')])->findOrEmpty();
if(empty($teacher_schedule_time->subject_id)){
return json([
'code' => ResponseCode::WEB_API_FAIL,
'msg' => '请先选择课程再发布'
]);
}
$student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->select();
if($student_schedule->isEmpty()){
return json([
'code' => ResponseCode::WEB_API_FAIL,
'msg' => '请先安排学生后再发布'
]);
}
(new SendMsgCronJobService())->teacherScheduleTimePublishMsgToTeacher($request->post('id')); (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToTeacher($request->post('id'));
} }
return parent::update($request); return parent::update($request);
@ -416,6 +452,21 @@ class TeacherScheduleTimeController extends Crud
if (isset($data['is_publish'])) { if (isset($data['is_publish'])) {
$teacher_schedule_time->is_publish = $data['is_publish']; $teacher_schedule_time->is_publish = $data['is_publish'];
if(empty($teacher_schedule_time->subject_id)){
return json([
'code' => ResponseCode::WEB_API_FAIL,
'msg' => '请先选择课程再发布'
]);
}
$student_schedule = StudentSchedule::where(['teacher_schedule_time_id' => $teacher_schedule_time->id])->select();
if($student_schedule->isEmpty()){
return json([
'code' => ResponseCode::WEB_API_FAIL,
'msg' => '请先安排学生后再发布'
]);
}
if ($data['is_publish']) { if ($data['is_publish']) {
(new SendMsgCronJobService())->teacherScheduleTimePublishMsgToTeacher($teacher_schedule_time->id); (new SendMsgCronJobService())->teacherScheduleTimePublishMsgToTeacher($teacher_schedule_time->id);
} }

View File

@ -410,7 +410,7 @@
let doRemove = function (ids) { let doRemove = function (ids) {
let data = {}; let data = {};
data[PRIMARY_KEY] = ids; data[PRIMARY_KEY] = ids;
layer.confirm("确定删除?", { layer.confirm("删除教师排课数据将同时删除对应的学生排课数据,确定删除?", {
icon: 3, icon: 3,
title: "提示" title: "提示"
}, function (index) { }, function (index) {

View File

@ -80,9 +80,14 @@
<fieldset class="layui-elem-field"> <fieldset class="layui-elem-field">
<legend>排课时间</legend> <legend>排课时间</legend>
<span style="color: burlywood;padding-left: 30px;font-size: smaller;margin-top: 17px;">如果排课已存在,删除后将删除对应学生排课时间,请谨慎操作</span>
<hr class="layui-border-orange">
<div class="layui-field-box" id="schedule_free_time"> <div class="layui-field-box" id="schedule_free_time">
{if (empty($teacher_schedule_time))} {if (empty($teacher_schedule_time))}
<div class="layui-form-item"> <div class="layui-form-item">
<input type="hidden" name="teacher_schedule_id[]" value="">
<input type="hidden" name="student_schedule_id[]" value="">
<label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label> <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label>
<div class="layui-input-inline" style="width: 120px;"> <div class="layui-input-inline" style="width: 120px;">
<input type="text" name="schedule_en_time[]" lay-verify="required" <input type="text" name="schedule_en_time[]" lay-verify="required"
@ -126,6 +131,7 @@
{foreach $teacher_schedule_time as $index=>$item} {foreach $teacher_schedule_time as $index=>$item}
<div class="layui-form-item"> <div class="layui-form-item">
<input type="hidden" name="teacher_schedule_id[{$index+1}]" value="{$item['id']}"> <input type="hidden" name="teacher_schedule_id[{$index+1}]" value="{$item['id']}">
<input type="hidden" name="student_schedule_id[{$index+1}]" {if isset($item['oneStudentSchedule']) && !empty($item['oneStudentSchedule']['id'])} value="{$item['oneStudentSchedule']['id']}" {else} value="" {/if}>
<label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label> <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label>
<div class="layui-input-inline" style="width: 120px;"> <div class="layui-input-inline" style="width: 120px;">
<input type="text" name="schedule_en_time[{$index+1}]" lay-verify="required" <input type="text" name="schedule_en_time[{$index+1}]" lay-verify="required"
@ -239,7 +245,8 @@
var htmlStr = '<div class="layui-form-item">\n' + var htmlStr = '<div class="layui-form-item">\n' +
' <input type="hidden" name="teacher_schedule_id[' + maxNum + ']" value="">' + ' <input type="hidden" name="teacher_schedule_id[' + maxNum + ']" value="">\n' +
' <input type="hidden" name="student_schedule_id[' + maxNum + ']" value="">\n' +
' <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label>\n' + ' <label class="layui-form-label" style="width: 50px;font-size: 12px;margin-left: -17px;">本地时间</label>\n' +
' <div class="layui-input-inline" style="width: 120px;">\n' + ' <div class="layui-input-inline" style="width: 120px;">\n' +
' <input type="text" name="schedule_en_time[' + maxNum + ']" lay-verify="required"\n' + ' <input type="text" name="schedule_en_time[' + maxNum + ']" lay-verify="required"\n' +