Browse Source

停车历史接口优化6

master
wanghongjun 4 weeks ago
parent
commit
5d294a72f0
  1. 40
      app/Http/Controllers/Admin/ParkingAccessRecordController.php
  2. 12
      app/Services/ParkingAccessRecordService.php
  3. 30
      app/common.php

40
app/Http/Controllers/Admin/ParkingAccessRecordController.php

@ -115,6 +115,12 @@ class ParkingAccessRecordController extends BaseController
}
}
$is_enter = 0;
$is_leave = 0;
$start_leave_times = '';
$end_leave_times = '';
$start_enter_times = '';
$end_enter_times = '';
if ($request->has('start_enter_time')
&& $request->has(
'end_enter_time'
@ -123,12 +129,9 @@ class ParkingAccessRecordController extends BaseController
$start_enter_time = $request->input('start_enter_time');
$end_enter_time = $request->input('end_enter_time');
if ($start_enter_time && $end_enter_time) {
$start_enter_times = strtotime($start_enter_time . ' 00:00:00');
$end_enter_times = strtotime($end_enter_time . ' 23:59:59');
$query->whereBetween(
'enter_time',
[$start_enter_times, $end_enter_times]
);
$is_enter = $start_enter_time != $end_enter_time ? 1 : 2;
$start_leave_times = strtotime($start_enter_time . ' 00:00:00');
$end_leave_times = strtotime($end_enter_time . ' 23:59:59');
}
}
@ -140,12 +143,25 @@ class ParkingAccessRecordController extends BaseController
$start_leave_time = $request->input('start_leave_time');
$end_leave_time = $request->input('end_leave_time');
if ($start_leave_time && $end_leave_time) {
$start_leave_times = strtotime($start_leave_time . ' 00:00:00');
$end_leave_times = strtotime($end_leave_time . ' 23:59:59');
$query->whereBetween(
'enter_time',
[$start_leave_times, $end_leave_times]
);
$is_leave = $start_leave_time != $end_leave_time ? 1 : 2;
$start_enter_times = strtotime($start_leave_time . ' 00:00:00');
$end_enter_times = strtotime($end_leave_time . ' 23:59:59');
}
}
if ($is_enter == 2 && $is_leave == 2) {
$query->where(
'enter_time','>=', $start_leave_times
);
$query->where(
'leave_time','<=', $end_enter_times
);
} else {
if ($is_enter) {
$query->whereBetween('enter_time', [$start_leave_times, $end_leave_times]);
}
if ($is_leave) {
$query->whereBetween('leave_time', [$start_enter_times, $end_enter_times]);
}
}

12
app/Services/ParkingAccessRecordService.php

@ -254,14 +254,10 @@ class ParkingAccessRecordService extends BaseService
public function getOptionItem($item)
{
$item['duration'] = '';
if ($item['leave_time']) {
$enter_times = strtotime($item['enter_time']);
$leave_times = strtotime($item['leave_time']);
$item['duration'] = ceil(($leave_times - $enter_times) / 60);
} else {
$item['leave_time'] = '';
}
$leave_time = $item['leave_time'] ?? time();
$enter_times = strtotime($item['enter_time']);
$leave_times = strtotime($leave_time);
$item['duration'] = get_diff_in_minutes($enter_times, $leave_times);
$item['license_plate'] = ParkingLicensePlate::getNumber(
$item['license_plate_id']

30
app/common.php

@ -1,4 +1,5 @@
<?php
use Carbon\Carbon;
if (!function_exists('generate_tree')) {
function generate_tree(
@ -174,6 +175,35 @@ if (!function_exists('get_time_difference_str')) {
}
}
if (!function_exists('get_diff_in_minutes')) {
function get_diff_in_minutes($start_date, $end_date): string
{
$start = Carbon::parse($start_date);
$end = Carbon::parse($end_date);
// 1. 计算总秒数差
$totalSeconds = $start->diffInSeconds($end);
// 2. 根据规则计算分钟数:超过1秒按1分钟算,即向上取整
$minutes = (int) ceil($totalSeconds / 60);
// 3. 判断并格式化输出
if (!$minutes) {
return 0;
} else if ($minutes < 60) {
// 不足一小时,只显示分钟
return $minutes;
} else {
// 超过一小时,显示X小时X分钟
$hours = intdiv($minutes, 60);
$remainingMinutes = $minutes % 60;
$minutesStr = $remainingMinutes . __('controller.parking_space.minutes');
$hoursStr = $hours . __('controller.parking_space.hours');
return $hoursStr . $minutesStr;
}
}
}
if (!function_exists('get_image_url')) {
function get_image_url($image_url): string
{

Loading…
Cancel
Save