teacher)) { throw new Exception('请教师登陆后再设置'); } $teacher = Teacher::where(['id' => $request->teacher->id])->findOrEmpty(); if ($teacher->isEmpty()) { throw new Exception('未找到教师信息,设置失败'); } $data = $request->post(); if (empty($data['free_time'])) { throw new Exception('请选择时间后提交'); } $free_time = json_decode($data['free_time'], true); $total_count = 0; $exit_count = 0; $err_free_count = 0; $has_msg = false; foreach ($free_time as $item) { $free_date = $item['day']; foreach ($item['times'] as $val) { $time = $val['zh']; $en_time = $val['en']; $time_period = explode('-', $time); $en_time_period = explode('-', $en_time); $firstDate = new DateTime($free_date . ' ' . trim($time_period[0])); $secondDate = new DateTime($free_date . ' ' . trim($time_period[1])); $enFirstDate = new DateTime($free_date . ' ' . trim($en_time_period[0])); $enSecondDate = new DateTime($free_date . ' ' . trim($en_time_period[1])); $diff = $secondDate->diff($firstDate); $h = $diff->h; $m = round($diff->i / 60, 2); $hour = round($h + $m, 2); $time = $time_period[0] . ' - ' . $time_period[1]; $free_data = [ 'teacher_id' => $request->teacher->id, 'date' => $free_date, 'time' => $time, 'en_time' => implode(' - ', $en_time_period), 'hour' => $hour, 'start_time' => date('Y-m-d H:i:s', $firstDate->getTimestamp()), 'end_time' => date('Y-m-d H:i:s', $secondDate->getTimestamp()), 'en_start_time' => date('Y-m-d H:i:s', $enFirstDate->getTimestamp()), 'en_end_time' => date('Y-m-d H:i:s', $enSecondDate->getTimestamp()), 'month' => date('Y-m', strtotime($free_date)), 'time_zone_id' => $teacher['time_zone_id'], 'time_zone_name' => $teacher['time_zone_name'], 'time_zone_offset' => $teacher['time_zone_offset'], ]; //判断是否已经存在 $exit = TeacherFreeTime::where($free_data)->findOrEmpty(); if (!$exit->isEmpty()) { $msg .= '【' + $free_data['en_time'] + '】'; $has_msg = true; continue; } $res = TeacherFreeTime::create($free_data); if (!$res) { throw new Exception('保存失败'); } if ($has_msg) { $msg = $msg + '已存在添加'; } } } // foreach ($free_time as $free_date => $times) { // if ($times) { // foreach ($times as $time) { // $time_period = explode(' - ', $time); // $firstDate = new DateTime($free_date . ' ' . trim($time_period[0])); // $secondDate = new DateTime($free_date . ' ' . trim($time_period[1])); // $diff = $secondDate->diff($firstDate); // $h = $diff->h; // $m = round($diff->i / 60, 2); // $hour = round($h + $m, 2); // $time = $time_period[0] . ' - ' . $time_period[1]; // $free_data = [ // 'teacher_id' => $request->teacher->id, // 'date' => $free_date, // 'time' => $time, // 'hour' => $hour, // 'start_time' => date('Y-m-d H:i:s', $firstDate->getTimestamp()), // 'end_time' => date('Y-m-d H:i:s', $secondDate->getTimestamp()), // 'month' => date('Y-m', strtotime($free_date)), // ]; // // //判断是否已经存在 // $exit = TeacherFreeTime::where($free_data)->findOrEmpty(); // if(!$exit->isEmpty()){ // continue; // } // $res = TeacherFreeTime::create($free_data); // if(!$res){ // throw new Exception('保存失败'); // } // } // } // } return [ 'code' => ResponseCode::SUCCESS, 'msg' => '保存成功' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 获取教师空闲时间 * @param $request * @return array */ public function getFreeTime($request) { try { $free_time = TeacherFreeTime::where(['date' => $request->get('date'), 'teacher_id' => $request->teacher->id])->findOrEmpty(); if ($free_time->isEmpty()) { throw new Exception('未找到数据'); } return [ 'code' => ResponseCode::SUCCESS, 'data' => $free_time, 'msg' => 'success' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 获取教师一个月的空闲时间 * @param $request * @return array */ public function getTeacherFreeTimeOfMonth($request) { try { if (empty((array)$request->teacher)) { throw new Exception('请教师登陆后再设置'); } $free_time = TeacherFreeTime::where(['month' => $request->get('month'), 'teacher_id' => $request->teacher->id])->select(); return [ 'code' => ResponseCode::SUCCESS, 'data' => $free_time, ]; }catch (Exception $e){ return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } public function updateFreeTime($request) { try { $teacher_free_time = TeacherFreeTime::where(['id' => $request->post('free_time_id')])->findOrEmpty(); if ($teacher_free_time->isEmpty()) { throw new Exception('未找到数据'); } $data = $request->post(); if (empty($data['free_time'])) { throw new Exception('请选择时间后提交'); } $free_time = json_decode($data['free_time'], true); $free_time = json_decode($free_time['free_time'], true)[0]; $free_date = $free_time['day']; $time = $free_time['times'][0]['zh']; $en_time = $free_time['times'][0]['en']; $time_period = explode('-', $time); $en_time_period = explode('-', $en_time); $firstDate = new DateTime($free_date . ' ' . trim($time_period[0])); $secondDate = new DateTime($free_date . ' ' . trim($time_period[1])); $diff = $secondDate->diff($firstDate); $h = $diff->h; $m = round($diff->i / 60, 2); $hour = round($h + $m, 2); $time = $time_period[0] . ' - ' . $time_period[1]; $teacher_free_time->save([ 'date' => $free_date, 'time' => $time, 'hour' => $hour, 'en_time' => implode(' - ', $en_time_period), ]); return [ 'code' => ResponseCode::SUCCESS, 'msg' => '操作成功' ]; }catch (Exception $e){ return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } /** * @desc 删除空闲时间 * @param $request * @return array */ public function delete($request) { try { $free_time = TeacherFreeTime::where(['id' => $request->post('free_time_id')])->findOrEmpty(); if ($free_time->isEmpty()) { throw new Exception('未找到数据'); } $free_time->delete(); return [ 'code' => ResponseCode::SUCCESS, 'msg' => '操作成功' ]; } catch (Exception $e) { return [ 'code' => ResponseCode::FAIL, 'msg' => $e->getMessage() ]; } } }