停车场管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

198 lines
6.0 KiB

<?php
namespace App\Services;
use App\Models\AdminConfigs;
use App\Models\AdminFloor;
use App\Models\AdminNotice;
use App\Models\ParkingCamera;
use App\Models\ParkingLicensePlate;
use App\Models\ParkingPattern;
use App\Models\ParkingSpace;
use Exception;
use Illuminate\Support\Facades\DB;
class AdminNoticeService extends BaseService
{
private static array $alarmTypeArr
= [
1 => 'hint',// 提示信息
2 => 'support'// 支援信息
];
private static array $msgTypeArr
= [
1 => 'touch',// 压线
2 => 'illegal',// 违泊
3 => 'offline',// 设备离线
4 => 'vip',// VIP
5 => 'task'// 任务切换
];
public function __construct(OperationLogService $logService)
{
parent::__construct($logService);
$this->logService->menuTitle = 'alarm_notice';
}
/**
* @return array|string[]
*/
public static function getAlarmType(): array
{
$alarmTypeArr = self::$alarmTypeArr;
foreach ($alarmTypeArr as $key => $value) {
$alarmTypeArr[$key] = __('service.notice.' . $value);
}
return $alarmTypeArr;
}
/**
* @return array|string[]
*/
public static function getMsgType(): array
{
$msgTypeArr = self::$msgTypeArr;
foreach ($msgTypeArr as $key => $value) {
$msgTypeArr[$key] = __('service.notice.' . $value);
}
return $msgTypeArr;
}
public function getItem($item)
{
$alarmTypeArr = self::getAlarmType();
$msgTypeArr = self::getMsgType();
$item['alarm_type'] = $alarmTypeArr[$item['alarm_type']];
$item['msg_type'] = $msgTypeArr[$item['msg_type']];
$item['parking_space_number'] = '';
$item['license_plate'] = '';
$ParkingSpace = ParkingSpace::query()->find(
$item['space_id'],
['number', 'license_plate_id']
);
if ($ParkingSpace) {
$item['parking_space_number'] = $ParkingSpace['number'];
$item['license_plate'] = ParkingLicensePlate::getNumber(
$ParkingSpace['license_plate_id']
);
$item['recognition'] = $ParkingSpace['recognition'];
$item['entry_end_type'] = '';
$item['pic_url'] = get_image_url($ParkingSpace['pic_url']);
}
if (isset($item['floor_id'])) {
$item['floor'] = '';
if ($item['floor_id']) {
$item['floor'] = AdminFloor::getName($item['floor_id']);
}
unset($item['floor_id']);
}
if (isset($item['camera_id'])) {
$item['camera_number'] = '';
if ($item['camera_id']) {
$item['camera_number'] = ParkingCamera::getNumber($item['camera_id']);
}
unset($item['camera_id']);
}
if (isset($item['pattern_id'])) {
$item['pattern_name'] = '';
if ($item['pattern_id']) {
$item['pattern_name'] = ParkingPattern::getName(
$item['pattern_id']
);
}
unset($item['pattern_id']);
}
unset($item['space_id']);
return $item;
}
public function updateConfig($data, $user_id)
{
try {
DB::beginTransaction();
$content = [
'close_alert' => $data['close_alert'],
'close_all_alert' => $data['close_all_alert']
];
$model = AdminConfigs::query()->where('name', 'information_setting')
->first();
$oldValues = $model->toArray();
$model->update([
'content' => $content,
'user_id' => $user_id,
'updated_at' => get_datetime()
]);
$this->logService->logUpdated($model, $oldValues, 'config.update');
DB::commit();
return $model;
} catch (Exception $e) {
DB::rollBack();
throw $e;
}
}
// 添加切换模式消息
public static function addChangeModeNotice($pattern_id, $user_id)
{
$data = ['pattern_id' => $pattern_id];
self::createData(1, 5, $data, $user_id);
}
public static function createData($alarm_type, $msg_type, $data, $user_id)
{
$create = [
'alarm_time' => date("Y-m-d H:i:s", time()),
'alarm_type' => $alarm_type,
'msg_type' => $msg_type,
'is_read' => 0,
'user_id' => $user_id,
'created_at' => date("Y-m-d H:i:s", time())
];
if (isset($data['space_id']) && $data['space_id']) {
$create['space_id'] = $data['space_id'];
}
if (isset($data['floor_id']) && $data['floor_id']) {
$create['floor_id'] = $data['floor_id'];
}
if (isset($data['camera_id']) && $data['camera_id']) {
$create['camera_id'] = $data['camera_id'];
}
if (isset($data['msg_content']) && $data['msg_content']) {
$create['msg_content'] = $data['msg_content'];
}
if (isset($data['pattern_id']) && $data['pattern_id']) {
$create['pattern_id'] = $data['pattern_id'];
}
if (isset($data['camera_ip']) && $data['camera_ip']) {
$create['camera_ip'] = $data['camera_ip'];
}
AdminNotice::query()->create($create);
}
public function readModel($user_id)
{
try {
DB::beginTransaction();
$where = [
'user_id' => $user_id,
'is_read' => 0
];
$ids = AdminNotice::query()->where($where)->pluck('id');
if ($ids) {
$update = [
'is_read' => 1
];
AdminNotice::query()->whereIn('id', $ids)->update($update);
}
DB::commit();
} catch (Exception $e) {
DB::rollBack();
throw $e;
}
}
}