91 lines
3.0 KiB
PHP
91 lines
3.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();
|
||
|
|
||
|
$free_time = json_decode($data['free_time'], true);
|
||
|
|
||
|
if (empty($free_time)) {
|
||
|
throw new Exception('请选择时间段之后再提交');
|
||
|
}
|
||
|
$total_count = 0;
|
||
|
$exit_count = 0;
|
||
|
$err_free_count = 0;
|
||
|
|
||
|
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()
|
||
|
];
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|