Browse Source

闸机管理数据返回

master
wanghongjun 2 days ago
parent
commit
f30254fe6c
  1. 2
      app/Exceptions/Handler.php
  2. 15
      app/Http/Controllers/Admin/ParkingGateControlController.php
  3. 29
      app/Models/ParkingEquipment.php
  4. 4
      app/Models/ParkingGateControl.php
  5. 83
      app/Services/ParkingGateControlService.php
  6. 2
      database/migrations/2026_06_09_143449_create_parking_gate_control_table.php
  7. 3
      resources/lang/en/service.php
  8. 3
      resources/lang/zh-CN/service.php
  9. 3
      resources/lang/zh-TW/service.php
  10. 1
      routes/admin/api.php

2
app/Exceptions/Handler.php

@ -146,7 +146,7 @@ class Handler extends ExceptionHandler
// 其他异常
return app(ApiResponseService::class)->systemError(
__('exception.exception_handler.system') . ':' . $e->getMessage()
__('exception.exception_handler.system') . (env('app_debug') ? ':' . $e->getMessage() : '')
);
}
}

15
app/Http/Controllers/Admin/ParkingGateControlController.php

@ -320,4 +320,19 @@ class ParkingGateControlController extends BaseController
);
}
}
public function getGateControl(Request $request)
{
try {
$parking_id = $request->get('parking_id');
$channel_id = $request->get('channel_id', 0);
$data = $this->service->getGateControl($parking_id, $channel_id);
return $this->responseService->success($data);
} catch (Exception $e) {
$m_prefix = __('exception.exception_handler.resource');
return $this->responseService->systemError(
$m_prefix . ':' . $e->getMessage()
);
}
}
}

29
app/Models/ParkingEquipment.php

@ -2,6 +2,7 @@
namespace App\Models;
use App\Services\AdminTranslationService;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
@ -33,4 +34,32 @@ class ParkingEquipment extends Model
{
return $value ? date("Y-m-d H:i:s", strtotime($value)) : $value;
}
public static function getName($id)
{
$name = self::query()->where('id', $id)->value('name');
return AdminTranslationService::getTranslationTypeName(
$id,
9,
$name
);
}
public static function getFirst($id)
{
$item = self::query()->where('id', $id)->first(
['id', 'name', 'status']
);
if ($item) {
$item = $item->toArray();
$item['name'] = AdminTranslationService::getTranslationTypeName(
$id,
9,
$item['name']
);
return $item;
} else {
return [];
}
}
}

4
app/Models/ParkingGateControl.php

@ -25,7 +25,9 @@ class ParkingGateControl extends Model
'member_id',
'free_passage',
'reservation_id',
'admin_user_id'
'admin_user_id',
'leave_remark',
'equipment_id'
];
protected $hidden

83
app/Services/ParkingGateControlService.php

@ -5,6 +5,7 @@ namespace App\Services;
use App\Models\AdminUsers;
use App\Models\Parking;
use App\Models\ParkingChannel;
use App\Models\ParkingEquipment;
use App\Models\ParkingGateControl;
use App\Models\ParkingLicensePlate;
use App\Models\ParkingReservation;
@ -200,5 +201,87 @@ class ParkingGateControlService extends BaseService
}
}
// 获取通道设备 进出记录
public function getGateControl($parking_id, $channel_id = 0)
{
$parking_name = Parking::getName($parking_id);
$channel_ids = [];
if ($channel_id) {
$channel_ids[] = $channel_id;
} else {
$channel_ids = ParkingChannel::getIds($parking_id);
if ($channel_ids) {
$channel_ids = $channel_ids->toArray();
}
}
return [
'enter_item' => $this->getGateControlItem($parking_name, $channel_ids),
'leave_item' => $this->getGateControlItem(
$parking_name,
$channel_ids,
'leave'
)
];
}
protected function getGateControlItem(
$parking_name,
$channel_ids = [],
$key = 'enter'
) {
$time_key = $key . '_at';
$type_key = $key . '_type';
$typeArr = $this->getType();
$data = [
'channel_name' => '', // 车道名称
'equipment_name' => '', // 设备名称
'equipment_status' => 0, // 设备状态
'type' => '', // 出/入类型(状态)
'type_str' => '', // 出/入类型
'license_plate' => '', // 车牌号码
'parking' => $parking_name, // 停车场
'member_type' => '', // 客户类型
'time' => '' // 出/入时间
];
$model = ParkingGateControl::query();
if ($channel_ids) {
$model->whereIn('channel_id', $channel_ids);
}
if ($key == 'leave') {
$model->where('leave_type', '>', 0);
}
$item = $model->orderBy($time_key, 'desc')->first();
if ($item) {
$item = $item->toArray();
if ($item) {
$data['channel_name'] = ParkingChannel::getName(
$item['channel_id']
);
if ($item['equipment_id']) {
$equipment_item = ParkingEquipment::getFirst(
$item['equipment_id']
);
$data['equipment_name'] = $equipment_item['name'];
$data['equipment_status'] = $equipment_item['status'];
}
$data['type'] = $item[$type_key];
if ($data['type'] == 1) {
$data['type_str'] == __service('gate_control.admission1');
} else {
$data['type_str'] = $typeArr[$data['type']];
}
$data['license_plate'] = ParkingLicensePlate::getNumber(
$item['license_plate_id']
);
if ($item['member_type']) {
$data['member_type'] = ParkingSpaceType::getName(
$item['member_type']
);
}
$data['time'] = $item[$time_key];
}
}
return $data;
}
}

2
database/migrations/2026_06_09_143449_create_parking_gate_control_table.php

@ -27,6 +27,8 @@ return new class extends Migration
$table->tinyInteger('free_passage')->default(0)->comment('免费放行');
$table->integer('reservation_id')->default(0)->comment('预约id');
$table->integer('admin_user_id')->nullable()->comment('操作员');
$table->tinyInteger('leave_remark')->default(0)->comment('放行原因');
$table->integer('equipment_id')->default(0)->comment('设备id');
$table->timestamps();
$table->innoDb();
$table->comment('停车场闸机进出记录');

3
resources/lang/en/service.php

@ -180,7 +180,8 @@ return [
'get_error' => 'Failed to obtain',
'leave_remark1' => 'Large lifting vehicles',
'leave_remark2' => 'The vehicle has been paid for',
'leave_remark3' => 'Special homework vehicles'
'leave_remark3' => 'Special homework vehicles',
'admission1' => 'Standard Admission'
],
'prohibited_passage' => [
'remark1' => 'No appointment, no entry allowed',

3
resources/lang/zh-CN/service.php

@ -180,7 +180,8 @@ return [
'get_error' => '获取失败',
'leave_remark1' => '大型起重车辆',
'leave_remark2' => '车辆已缴费',
'leave_remark3' => '特殊作业车辆'
'leave_remark3' => '特殊作业车辆',
'admission1' => '正常入场'
],
'prohibited_passage' => [
'remark1' => '无预约,不可进场',

3
resources/lang/zh-TW/service.php

@ -180,7 +180,8 @@ return [
'get_error' => '獲取失敗',
'leave_remark1' => '大型起重車輛',
'leave_remark2' => '車輛已繳費',
'leave_remark3' => '特殊工作車輛'
'leave_remark3' => '特殊工作車輛',
'admission1' => '正常入場'
],
'prohibited_passage' => [
'remark1' => '無預約,不可進場',

1
routes/admin/api.php

@ -272,6 +272,7 @@ Route::group(['prefix' => 'admin'], function () {
Route::get('/gateControl/getScreenshot', [ParkingGateControlController::class, 'getScreenshot']);
Route::post('/gateControl/enter', [ParkingGateControlController::class, 'enter']);
Route::post('/gateControl/leave', [ParkingGateControlController::class, 'leave']);
Route::get('/gateControl/index', [ParkingGateControlController::class, 'getGateControl']);
// 违禁通行记录
Route::get('/prohibitedPassage', [ProhibitedPassageController::class, 'index']);
// 系统总配置

Loading…
Cancel
Save