From 3a8b3f9e9a272fe43df5bd4a721af183408f07d0 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Fri, 26 Sep 2025 17:24:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(app):=20=E4=BC=98=E5=8C=96=E9=82=AE?= =?UTF-8?q?=E4=BB=B6=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Repositories/MeetRepository.php | 107 ++++++++++++++++++---------- 1 file changed, 71 insertions(+), 36 deletions(-) diff --git a/app/Repositories/MeetRepository.php b/app/Repositories/MeetRepository.php index ce4feaa..c1c3a98 100755 --- a/app/Repositories/MeetRepository.php +++ b/app/Repositories/MeetRepository.php @@ -85,48 +85,83 @@ class MeetRepository */ public function appointment($model, $appointmentConfig, &$out) { + $startDateTime = new \DateTime($model->start_time); + $endDateTime = new \DateTime($model->end_time); + $meetOther = json_decode($appointmentConfig->room, true); $url = $this->baseUrl . '/services/api/BookingService.aspx'; $header[] = 'Content-Type: application/json'; - $params = [ - 'account' => $this->account, - 'password' => md5($this->password), - 'roomName' => $appointmentConfig->name, - 'roomCode' => $meetOther['code'], - 'roomAddress' => $meetOther['address'], - 'beginTime' => $model->start_time, - 'endTime' => $model->end_time, - 'speaker' => $model->name, - 'subject' => empty($model->content) ? '预约会议室' : $model->content, - 'booker' => "{$model->name};{$model->mobile};", - 'attendance' => "{$model->name};{$model->mobile};", - 'signUrl' => '' - ]; - $result = []; - $finally = 0; - try { - $resultJson = httpCurl($url, 'GET', $params, $header); - $out = $resultJson; - $result = json_decode($resultJson, true); - if ($result['success']) { - $finally = 1; - $meetIds = explode(',', $model->meet_id); - array_push($meetIds, $result['data']); - $meetIds = array_filter($meetIds); - $model->meet_id = implode(',', $meetIds); - $model->save(); - ThirdAppointmentLog::add($model->id, 0, $model->user_id, $url, $params, $result, $finally, '会议室预约'); - return true; - } else { - $out = $resultJson; - ThirdAppointmentLog::add($model->id, 0, $model->user_id, $url, $params, $result, $finally, '会议室预约'); + + $allMeetIds = []; + $allResults = []; + $currentDate = clone $startDateTime; + + while ($currentDate->format('Y-m-d') <= $endDateTime->format('Y-m-d')) { + $dayStart = clone $currentDate; + $dayEnd = clone $currentDate; + $dayEnd->setTime(23, 59, 59); + + if ($currentDate->format('Y-m-d') === $startDateTime->format('Y-m-d')) { + $dayStart = clone $startDateTime; + } + + if ($currentDate->format('Y-m-d') === $endDateTime->format('Y-m-d')) { + $dayEnd = clone $endDateTime; + } + + $params = [ + 'account' => $this->account, + 'password' => md5($this->password), + 'roomName' => $appointmentConfig->name, + 'roomCode' => $meetOther['code'], + 'roomAddress' => $meetOther['address'], + 'beginTime' => $dayStart->format('Y-m-d H:i:s'), + 'endTime' => $dayEnd->format('Y-m-d H:i:s'), + 'speaker' => $model->name, + 'subject' => empty($model->content) ? '预约会议室' : $model->content, + 'booker' => "{$model->name};{$model->mobile};", + 'attendance' => "{$model->name};{$model->mobile};", + 'signUrl' => '' + ]; + + $result = []; + $finally = 0; + + try { + $resultJson = httpCurl($url, 'GET', $params, $header); + $result = json_decode($resultJson, true); + + if ($result['success']) { + $finally = 1; + $allMeetIds[] = $result['data']; + $allResults[] = $result; + ThirdAppointmentLog::add($model->id, 0, $model->user_id, $url, $params, $result, $finally, '会议室预约-' . $currentDate->format('Y-m-d')); + } else { + $out = $resultJson; + ThirdAppointmentLog::add($model->id, 0, $model->user_id, $url, $params, $result, $finally, '会议室预约-' . $currentDate->format('Y-m-d')); + return false; + } + } catch (\Exception $e) { + $out = $e->getMessage(); + ThirdAppointmentLog::add($model->id, 0, $model->user_id, $url, $params, $result, $finally, '会议室预约-' . $currentDate->format('Y-m-d')); return false; } - } catch (\Exception $e) { - $out = $e->getMessage(); - ThirdAppointmentLog::add($model->id, 0, $model->user_id, $url, $params, $result, $finally, '会议室预约'); - return false; + + $currentDate->modify('+1 day'); } + + if (!empty($allMeetIds)) { + $meetIds = explode(',', $model->meet_id); + $meetIds = array_merge($meetIds, $allMeetIds); + $meetIds = array_filter($meetIds); + $model->meet_id = implode(',', $meetIds); + $model->save(); + + $out = json_encode($allResults, JSON_UNESCAPED_UNICODE); + return true; + } + + return false; } /**