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
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;
|
|
}
|
|
}
|
|
}
|
|
|