course/app/common/service/TeacherFreeTimeService.php
2024-07-25 22:43:43 +08:00

140 lines
5.0 KiB
PHP

<?php
namespace app\common\service;
use app\common\model\Teacher;
use app\common\model\TeacherFreeTime;
use app\constant\ResponseCode;
use think\Exception;
use DateTime;
class TeacherFreeTimeService
{
/**
* @desc 添加空闲时间
* @param $request
* @return array
* @throws \Exception
*/
public function addFreeTime($request)
{
try {
if (empty($request->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]));
$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()),
'month' => date('Y-m', strtotime($free_date)),
];
//判断是否已经存在
$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()
];
}
}
}